Bookmarklets for Social Media Automation
Streamline your social media workflow with powerful one-click automation tools.
Supercharge Your Social Media Workflow
Social media management can be time-consuming. Bookmarklets offer a lightweight solution to automate repetitive tasks, extract data, and enhance your social media experience across all platforms without installing heavy extensions.
⚡ Quick Benefits
- • One-click sharing to multiple platforms
- • Bulk operations without API limits
- • Cross-platform compatibility
- • No app permissions required
Universal Social Media Bookmarklets
🔗 Universal Share Button
Share current page to any social platform
javascript:(function(){
var url = encodeURIComponent(window.location.href);
var title = encodeURIComponent(document.title);
var platform = prompt('Share to: (t)witter, (f)acebook, (l)inkedin, (r)eddit');
var shareUrls = {
't': 'https://twitter.com/intent/tweet?url=' + url + '&text=' + title,
'f': 'https://www.facebook.com/sharer/sharer.php?u=' + url,
'l': 'https://www.linkedin.com/sharing/share-offsite/?url=' + url,
'r': 'https://reddit.com/submit?url=' + url + '&title=' + title
};
if(shareUrls[platform]) {
window.open(shareUrls[platform], '_blank', 'width=600,height=400');
}
})();
📸 Screenshot & Share
Capture page selection for visual sharing
javascript:(function(){
var selection = window.getSelection().toString();
if(!selection) {
alert('Please select text to share');
return;
}
var shareText = encodeURIComponent('"' + selection + '" - ' + document.title);
var url = encodeURIComponent(window.location.href);
window.open('https://twitter.com/intent/tweet?text=' + shareText + '&url=' + url,
'_blank', 'width=600,height=400');
})();
🏷️ Hashtag Generator
Generate relevant hashtags from page content
javascript:(function(){
var text = document.body.innerText.toLowerCase();
var words = text.match(/\b[a-z]{4,}\b/g);
var frequency = {};
words.forEach(word => {
if(!['the','and','for','with','from','this','that','have','been'].includes(word)) {
frequency[word] = (frequency[word] || 0) + 1;
}
});
var hashtags = Object.entries(frequency)
.sort((a,b) => b[1] - a[1])
.slice(0, 10)
.map(([word]) => '#' + word)
.join(' ');
prompt('Top hashtags for this page:', hashtags);
})();
Twitter/X Specific Bookmarklets
🐦 Tweet Thread Unroller
Convert thread to readable format
javascript:(function(){
var tweets = document.querySelectorAll('[data-testid="tweet"]');
var thread = [];
tweets.forEach(tweet => {
var text = tweet.querySelector('[data-testid="tweetText"]');
if(text) thread.push(text.innerText);
});
var output = thread.join('\n\n---\n\n');
var win = window.open('', 'Thread', 'width=600,height=400');
win.document.write('<pre style="white-space:pre-wrap">' + output + '</pre>');
})();
📊 Engagement Calculator
Calculate engagement rate for visible tweets
javascript:(function(){
var tweets = document.querySelectorAll('[data-testid="tweet"]');
var totalEngagement = 0;
var tweetCount = 0;
tweets.forEach(tweet => {
var likes = tweet.querySelector('[data-testid="like"] span');
var retweets = tweet.querySelector('[data-testid="retweet"] span');
if(likes && retweets) {
totalEngagement += parseInt(likes.innerText || 0) + parseInt(retweets.innerText || 0);
tweetCount++;
}
});
alert('Average engagement: ' + Math.round(totalEngagement / tweetCount) + ' per tweet');
})();
🧹 Timeline Cleaner
Hide tweets with specific keywords
javascript:(function(){
var keyword = prompt('Hide tweets containing:').toLowerCase();
if(!keyword) return;
var tweets = document.querySelectorAll('[data-testid="tweet"]');
var hidden = 0;
tweets.forEach(tweet => {
if(tweet.innerText.toLowerCase().includes(keyword)) {
tweet.style.display = 'none';
hidden++;
}
});
alert('Hidden ' + hidden + ' tweets containing "' + keyword + '"');
})();
LinkedIn Automation
💼 Connection Message Template
Auto-fill connection requests with personalized message
javascript:(function(){
var name = document.querySelector('.pv-top-card--list li')?.innerText || 'there';
var company = document.querySelector('.pv-top-card--experience-list-item')?.innerText || '';
var message = `Hi ${name.split(' ')[0]},\n\nI came across your profile and was impressed by your work${company ? ' at ' + company : ''}. I'd love to connect and learn more about your experience.\n\nBest regards`;
var noteButton = document.querySelector('button[aria-label*="Add a note"]');
if(noteButton) noteButton.click();
setTimeout(() => {
var textarea = document.querySelector('textarea[name="message"]');
if(textarea) textarea.value = message;
}, 500);
})();
📋 Profile Data Extractor
Extract key profile information
javascript:(function(){
var data = {
name: document.querySelector('h1')?.innerText,
headline: document.querySelector('.text-body-medium')?.innerText,
location: document.querySelector('.pv-top-card--list-bullet li')?.innerText,
connections: document.querySelector('.pv-top-card--list-bullet li:nth-child(2)')?.innerText
};
var output = Object.entries(data)
.map(([key, value]) => key + ': ' + (value || 'N/A'))
.join('\n');
prompt('Profile Data:', output);
})();
Instagram Helper Bookmarklets
📷 Download Current Image
Get direct link to Instagram images
javascript:(function(){
var img = document.querySelector('article img[srcset]');
if(!img) {
alert('No image found on this page');
return;
}
var srcset = img.getAttribute('srcset');
var highest = srcset.split(',').pop().trim().split(' ')[0];
window.open(highest, '_blank');
})();
📝 Caption Copier
Copy post caption with formatting
javascript:(function(){
var caption = document.querySelector('h1')?.parentElement?.parentElement?.innerText;
if(caption) {
navigator.clipboard.writeText(caption);
alert('Caption copied to clipboard!');
} else {
alert('No caption found');
}
})();
Multi-Platform Tools
📅 Social Media Scheduler
Generate Buffer/Hootsuite compatible post
javascript:(function(){
var title = document.title;
var url = window.location.href;
var selection = window.getSelection().toString();
var post = {
text: selection || title,
link: url,
platforms: ['twitter', 'facebook', 'linkedin']
};
var bufferUrl = 'https://buffer.com/add?text=' +
encodeURIComponent(post.text) + '&url=' + encodeURIComponent(post.link);
window.open(bufferUrl, '_blank', 'width=600,height=400');
})();
📊 Analytics Dashboard
Quick social metrics overview
javascript:(function(){
var url = encodeURIComponent(window.location.href);
var services = {
'Facebook Shares': 'https://www.facebook.com/sharer/sharer.php?u=' + url,
'Twitter Search': 'https://twitter.com/search?q=' + url,
'LinkedIn Stats': 'https://www.linkedin.com/search/results/content/?keywords=' + url
};
var html = '<h2>Social Stats for this URL</h2><ul>';
for(var service in services) {
html += '<li><a href="' + services[service] + '" target="_blank">' + service + '</a></li>';
}
html += '</ul>';
var win = window.open('', 'Stats', 'width=400,height=300');
win.document.write(html);
})();
Best Practices for Social Media Bookmarklets
✅ Do's
- • Respect rate limits and ToS
- • Test on different page layouts
- • Handle errors gracefully
- • Keep automation ethical
- • Update selectors regularly
❌ Don'ts
- • Don't spam or abuse platforms
- • Avoid storing credentials
- • Don't bypass security features
- • Never automate harassment
- • Don't violate privacy
Advanced Techniques
🚀 Power User Tips
- • Use MutationObserver for dynamic content
- • Implement localStorage for preferences
- • Chain multiple bookmarklets with setTimeout
- • Create keyboard shortcuts for frequent actions
- • Combine with browser automation tools
Platform-Specific Considerations
Twitter/X
Frequently changes DOM structure. Use data-testid attributes when available.
Has anti-automation measures. Add delays between actions and randomize behavior.
Limited web functionality. Many features require mobile app or API access.
Complex React structure. Use React DevTools to understand component hierarchy.
Start Automating!
These bookmarklets are just the beginning. Customize them for your specific workflow or create entirely new ones using our generator.