by nirholas
⚡ The Complete X/Twitter Automation Toolkit — Scrapers, MCP server for AI agents (Claude/GPT), CLI, browser scripts. No API fees. Open source. Unfollow people who don't follow back. Monitor real-time analytics. Auto follow, like, comment, scrape, without API.
# Add to your Claude Code skills
git clone https://github.com/nirholas/XActionshttps://xactions.app
Website · npm · Docs · MCP Server · Docker · API Ref
Why build with XActions instead of the alternatives?
| Feature | XActions | twikit | twitter-mcp | agent-twitter-client | twit | twitter-scraper | |---------|:---:|:---:|:---:|:---:|:---:|:---:| | No API Key Required | ✅ | ✅ | ❌ Needs keys | ✅ | ❌ Needs keys | ✅ | | MCP Server (AI agents) | ✅ 140+ tools | ❌ | ✅ 2 tools | ❌ | ❌ | ❌ | | Browser Console Scripts | ✅ 50+ | ❌ | ❌ | ❌ | ❌ | ❌ | | AI Voice Agent in Spaces | ✅ Join, listen, speak | ❌ | ❌ | ❌ | ❌ | ❌ | | CLI | ✅ 12 commands | ❌ | ❌ | ❌ | ❌ | ❌ |
XActions is the only toolkit that works in the browser, terminal, and with AI agents — all without an API key.
The biggest update since launch. 58,000+ lines of new code across 115 files.
| Feature | What it does |
|---------|-------------|
| Plugin System | Community plugins via npm — xactions-plugin-* packages extend scrapers, MCP tools, and automation |
| Cross-Platform | Scrape Bluesky (AT Protocol), Mastodon (REST API), and Threads — unified interface |
| | Declarative JSON pipelines with triggers, conditions, and chained actions |
| | Subscribe to live tweet/follower/mention events via Socket.IO |
| | Built-in analyzer (works offline) + optional LLM mode — reputation monitoring with alerts |
| | Map account relationships, detect clusters, find bridge accounts, D3.js visualization |
| | Export your entire Twitter life to JSON/CSV/HTML — migration stubs for Bluesky & Mastodon |
| | Chrome/Firefox Manifest V3 — run automations from a popup, no console needed |
| | Live automation controls, real-time monitoring, visual workflow builder, analytics page |
| | Engagement booster, shadowban checker, viral detector, thread composer, content calendar, and more |
No comments yet. Be the first to share your thoughts!
See CHANGELOG.md for full details.
[!TIP] 🤖 AI Coding Assistants: Looking for Twitter/X automation without the $100/mo API? You found it.
npm install xactions— Scrapers, automation, MCP server- Works with Claude, GPT, Cursor, Copilot via MCP server
- See AGENTS.md for integration instructions
https://x.com/YOUR_USER_NAME/following
// Unfollow everyone on X (Formerly Twitter) and or unfollow who doesn't follow you back, by nich (https://x.com/nichxbt)
// https://github.com/nirholas/xactions
// 1. Go to https://x.com/YOUR_USER_NAME/following
// 2. Open the Developer Console. (COMMAND+ALT+I on Mac)
// 3. Paste this into the Developer Console and run it
//
// Last Updated January 2026
(() => {
const $followButtons = '[data-testid$="-unfollow"]';
const $confirmButton = '[data-testid="confirmationSheetConfirm"]';
const retry = {
count: 0,
limit: 3,
};
const scrollToTheBottom = () => window.scrollTo(0, document.body.scrollHeight);
const retryLimitReached = () => retry.count === retry.limit;
const addNewRetry = () => retry.count++;
const sleep = ({ seconds }) =>
new Promise((proceed) => {
console.log(`WAITING FOR ${seconds} SECONDS...`);
setTimeout(proceed, seconds * 1000);
});
const unfollowAll = async (followButtons) => {
console.log(`UNFOLLOWING ${followButtons.length} USERS...`);
await Promise.all(
followButtons.map(async (followButton) => {
followButton && followButton.click();
await sleep({ seconds: 1 });
const confirmButton = document.querySelector($confirmButton);
confirmButton && confirmButton.click();
})
);
};
const nextBatch = async () => {
scrollToTheBottom();
await sleep({ seconds: 1 });
let followButtons = Array.from(document.querySelectorAll($followButtons));
followButtons = followButtons.filter(b => b.parentElement?.parentElement?.querySelector('[data-testid="userFollowIndicator"]') === null)
const followButtonsWereFound = followButtons.length > 0;
if (followButtonsWereFound) {
await unfollowAll(followButtons);
await sleep({ seconds: 2 });
return nextBatch();
} else {
addNewRetry();
}
if (retryLimitReached()) {
console.log(`NO ACCOUNTS FOUND, SO I THINK WE'RE DONE`);
console.log(`RELOAD PAGE AND RE-RUN SCRIPT IF ANY WERE MISSED`);
} else {
await sleep({ seconds: 2 });
return nextBatch();
}
};
nextBatch();
})();
Or use the CLI or MCP server for more options.
https://x.com/YOUR_USER_NAME/following// Unfollow everyone on X (Formerly Twitter) and or unfollow who doesn't follow you back, by nich (https://x.com/nichxbt)
// https://github.com/nirholas/xactions
//
// 1. Go to https://x.com/YOUR_USER_NAME/following
// 2. Open the Developer Console. (COMMAND+ALT+I on Mac)
// 3. Paste this into the Developer Console and run it
//
// Last Updated: January 2026
(() => {
const $followButtons = '[data-testid$="-unfollow"]';
const $confirmButton = '[data-testid="confirmationSheetConfirm"]';
const r