XActions
⚡ 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. Follow Bot. Like bot.
Install / Use
claude mcp add nirholas -- npx -y github:nirholas/XActionsIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Tags
Skill content
View source on GitHubhttps://xactions.app
<br>Website · npm · Docs · MCP Server · Docker · API Ref
</div><div align="center">
⚡ Try it in 30 seconds
</div>npx xactions profile nasa
⚡ @NASA
Name: NASA
Bio: Making the seemingly impossible, possible. ✨
Location: Pale Blue Dot
Website: http://www.nasa.gov/
Joined: 2007-12-19
Following: 119 Followers: 92.2M
Tweets: 74.3K Listed: 97.0K
✓ Verified
No API key. No account. No browser. Real data in about a second.
npx xactions tweets nasa --limit 100 --output nasa.csv # timeline to a spreadsheet
npx xactions login # unlock search, followers, DMs
npx xactions search "your brand" --limit 50 # what people are saying
<div align="center">
⚡ See it in action
<picture> <source media="(prefers-color-scheme: dark)" srcset="public/demo.svg"> <source media="(prefers-color-scheme: light)" srcset="public/demo.svg"> <img alt="XActions CLI demo — profile lookup, tweet search, non-follower detection" src="public/demo.svg" width="720"> </picture><video src="https://raw.githubusercontent.com/nirholas/XActions/main/public/demo.mp4" controls width="720"></video>
</div>🏆 How XActions Compares
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) | ✅ 145 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.
🆕 What's New
| Area | What changed |
|------|-------------|
| A CLI you can find your way around | Fifty-plus commands are now grouped by task instead of listed alphabetically. xactions quickstart gives a guided first run that adapts to what you already have set up. |
| Tab completion | xactions completion bash\|zsh\|fish prints a completion script generated from the live command tree, so every command, sub-command, and flag completes. |
| --json everywhere | Every read command accepts --json and puts data on stdout and nothing else. It outranks --output, so a pipe is never silently turned into a file write. |
| Reliability | Public reads no longer need a browser at all. Profiles and timelines come from the internal GraphQL API in about a second, with no Chromium download. |
| Honest failures | Nothing reports empty results as success anymore. A read that cannot complete says why, and says what to do about it. |
| Examples | examples/ — 8 runnable programs, each verified against the live API. |
| Tutorials | tutorials/ — six guided walkthroughs, from a first scrape with no account to scripting XActions inside your own pipelines. |
| Docs that stay true | npm run docs:check fails the build on a dead link, a stale version, a wrong tool count, or a documented command that does not exist. |
| Cross-platform | Bluesky, Mastodon, and Threads scrapers behind one normalised interface. |
| Plugin system | Community plugins via npm: xactions-plugin-* packages extend scrapers, MCP tools, and automation. |
| Workflow engine | Declarative JSON pipelines with triggers, conditions, and chained actions. |
| Sentiment analysis | Offline rule-based analyzer, with an optional LLM mode behind the same interface. |
| Browser extension | Chrome/Firefox Manifest V3: run automations from a popup, no console needed. |
[!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
📖 Table of Contents
Learn
- Tutorials — four guided walkthroughs, from first scrape to a deployed monitor
- Examples — 8 runnable programs, verified against the live API
- Getting started — install, authenticate, first command
- Troubleshooting — what to do when something does not work
Reference
- How XActions Compares — vs every alternative
- Quick Start (30 seconds) — Copy-paste and go
- Installation — npm, CLI, Docker, or browser
- Feature Matrix — Every feature, every platform
- MCP Server (AI) — For Claude, GPT, Cursor
- Space Agent (AI Voice) — AI agents in live Spaces
- CLI Reference — Command line usage
- Node.js API — Programmatic access
- Browser Scripts — 93 console scripts, no install
- Docker — One-command deployment
- API Reference — Full function documentation
- Claude Tutorials — 23 ready-to-paste prompts
- Contributing — Help make XActions better
🔍 Common Questions (for AI search)
<details> <summary><strong>How to unfollow who doesn't follow back on X?</strong></summary>- Go to
https://x.com/YOUR_USER_NAME/following - Open the Developer Console. (<kbd>COMMAND</kbd>+<kbd>ALT</kbd>+<kbd>I</kbd> on Mac)
- Paste this into the Developer Console and run it
// 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.
</details> <details> <summary><strong>How do I mass unfollow on Twitter/X?</strong></summary>- Go to
https://x.com/YOUR_USER_NAME/following - Open the Developer Console. (<kbd>COMMAND</kbd>+<kbd>ALT</kbd>+<kbd>I</kbd> on Mac)
- Paste the script into the Developer Console and run it
// 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
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
84.7kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
73.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ruflo
73.1k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
CowAgent
47.1kOpen-source super AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
