The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Twitter X Automation listing page.
██╗ ██╗ █████╗ ██████╗████████╗██╗ ██████╗ ███╗ ██╗███████╗ ╚██╗██╔╝██╔══██╗██╔════╝╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝ ╚███╔╝ ███████║██║ ██║ ██║██║ ██║██╔██╗ ██║███████╗ ██╔██╗ ██╔══██║██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║ ██╔╝ ██╗██║ ██║╚██████╗ ██║ ██║╚██████╔╝██║ ╚████║███████║ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
Scrapers · MCP Server for AI Agents · CLI · Browser Scripts · Browser Extension
No API keys. No monthly fees. 100% open source.
No API key. No account. No browser. Real data in about a second.
Why build with XActions instead of the alternatives?
| Feature | XActions | twikit | twscrape | x-use | xmcp (official) | bird | twitter-cli | Agent-Reach |
|---|---|---|---|---|---|---|---|---|
| No API Key Required | ✅ | ✅ Cookies | ✅ Account pool | ✅ Browser | ❌ X API keys | ✅ Cookies | ❌ X API keys | ✅ |
| MCP Server (AI agents) | ✅ 153 tools | ❌ | ❌ | ✅ (33-tool server) | ✅ (140-tool, metered) | ❌ | ❌ | ❌ Skills, not MCP |
| Browser Console Scripts | ✅ 95 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| AI Voice Agent in Spaces | ✅ Join, listen, speak | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| CLI | ✅ 56 commands | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Human approval gate on writes | ✅ Every write held as a draft | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Daily action caps that survive a restart | ✅ Per account, on disk | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Account pool with rotation | ✅ SQLite, per-operation windows | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Resumable long scrapes | ✅ Cursor checkpoints | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Cookies from your installed browser | ✅ --from-browser, --cookies-file | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Official X archive import | ✅ xactions archive | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Language | JavaScript | Python | Python | TypeScript | TypeScript | TypeScript | Python | Python |
XActions is the only toolkit that works in the browser, terminal, and with AI agents, all without an API key.
Competitor columns come from the competitive audit, which names each project and what it does better than us. Where a rival led, we built it: the approval gate and the daily caps follow x-use, the account pool follows twscrape, cursor resume follows Scweet, and browser cookie import follows bird and twitter-cli.
| Area | What changed |
|---|---|
| Delete every reply you sent one account | scripts/searchSweep.js turns any X search into a bulk action. Open x.com/search?q=from:you @someone&f=live, paste it, and delete, like, repost, or reply to every result, with a floating panel, a dry run, filters that protect posts that did numbers, and multiple passes because X search returns a slice at a time. Deletes only ever touch your own posts. Docs. |
| Sweep a whole profile | scripts/engageProfile.js likes, reposts, and replies to every post on an account from the console, with a floating panel, dry run, resume, undo, and replies from your templates or from an LLM given a one-line brief (Grok works straight from the console; any provider through the extension). xactions engage USERNAME --like --repost --comment --prompt "..." does the same from the terminal with any provider. Docs. |
| A CLI you can find your way around | All 56 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. |
| Log in without touching DevTools | xactions login --from-browser reads x.com cookies straight out of an installed Chrome, Chromium, Brave, Edge, Arc or Firefox profile. --cookies-file imports a Netscape cookies.txt, a Cookie-Editor or EditThisCookie JSON export, or a Playwright / Puppeteer storageState. A full cookie jar beats a bare auth_token, because it carries the ct0 every write needs. |
| Query IDs that heal themselves | X rotates its GraphQL query IDs and every pinned client 404s at once. Ours are discovered from x.com's own bundles and cached, so a rotation is invisible. xactions doctor reports the cache age. |
| Requests signed like the real client | Every GraphQL call carries an x-client-transaction-id header computed the way x.com's own web client computes it, so reads get the answer the browser gets. |
| An account pool, and scrapes that resume | Sessions live in a SQLite database with their own proxy and a per-operation rate-limit window read from X's own headers. The pooled client rotates on a 429 and locks an account on a 401. A checkpoint written after every page means a 50,000-follower scrape that dies at page 400 restarts from its cursor, not from page one. |
| Daily action caps | Every MCP write is charged against a rolling 24 hour per-account budget stored on disk. The cap survives a restart, a crash, and a fresh npx xactions-mcp, and a call that would go over is refused before it reaches X. Defaults follow X's own published limits. |
| Writes a human releases | XACTIONS_MCP_REQUIRE_APPROVAL=1 turns every write tool into a draft. Review with xactions drafts list, release with xactions drafts approve <id>, or use the x_list_drafts / x_approve_draft / x_discard_draft tools. |
| MCP tool groups | The tool list is filterable: --tools read,analytics or XACTIONS_MCP_TOOLS=read advertises only what the session needs, and a filtered tool is neither advertised nor callable. Groups: read, write, dm, lists, spaces, analytics, ai, grok, automation, monitoring, workflows, persona, graph, data, x402, drafts, auth. |
| MCP over HTTP | xactions-mcp --http serves the Streamable HTTP transport on /mcp for remote and hosted clients, with optional bearer auth via XACTIONS_MCP_TOKEN. stdio is still the default. |
| One-drag install for Claude Desktop | The .mcpb bundle carries the server and its dependencies and prompts for the session cookie and tool groups at install time, so nothing is typed into a config file. Attached to every release. |
| Skills you can install | xactions skills install --all copies the 50 bundled skills into Claude Code, Cursor, Codex, Windsurf, or the current project. xactions skills show <name> reads one without installing it. |
| Bring your X archive | xactions archive summary|export|migrate reads the official X data export zip: counts, date range, busiest year and top hashtags; a rewrite to JSON, CSV, Markdown and a browsable HTML viewer; or a migration to Bluesky or Mastodon. Docs. |
| Live event streaming | src/streaming/livePipeline.js reads x.com's own event pipeline: engagement counters, DM updates and typing indicators, pushed rather than polled, with subscriptions changed mid-session. It is a chunked newline-delimited JSON response, not a WebSocket, because x.com never answers that endpoint with a 101. |
| Signed webhooks | Outbound deliveries carry an HMAC-SHA256 signature, a timestamp, an event type and a stable delivery id, retry three times with backoff, and land in a replayable delivery log. Receivers verify with the exported verifyWebhookSignature. |
--compact and --fields | Global on every read command. --compact prints one record per line as tab-separated key=value pairs with no colours or spinners; --fields id,text,likes narrows that to the columns you name. Built for agents and pipes. |
--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. |
| Archive every photo and video | xactions download @nichxbt:all --archive saves a profile's media, avatar and banner with gallery-dl-style filename templates, then re-runs incrementally. Resumes interrupted files with Range, retries rate limits, and hard-links the same photo reached through a retweet instead of storing it twice. Also xactions/media and the x_download_media MCP tool. Docs. |
| Ask XActions | xactions.app/ask answers "how do I..." in plain language from these docs, the skills, the scripts and the repo, and ends every answer with the thing to run: the console script (copied from source), the terminal command, or the MCP tool. Also xactions ask "how do I unfollow everyone?" in a terminal, and x_ask so an agent can read the manual before it acts. Free LLM lanes, three of which need no key. Docs. |
| Examples | examples/: 9 runnable programs, from a first profile lookup to the MCP draft-approval gate. Each one runs as written. |
| 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/Edge 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
| npm | |
| CLI | |
| Browser |
No install needed. Copy-paste scripts into your browser console on x.com |
Learn
Reference
| 1. Paste Copy a script into the x.com DevTools console | 2. Run Use the CLI, MCP server, or browser extension | 3. Done Everything runs locally. No data leaves your machine |
Your x.com tab does all the work. Nothing gets scraped to our servers. You're in control.
Everything is completely free: browser scripts, CLI, Node.js library, MCP server, and API.
No API keys. No subscriptions. No paywalls. Just clone and run.
If you self-host the XActions API for remote AI agent access, you can optionally enable pay-per-request micropayments via the x402 protocol. This is entirely optional and disabled by default.
| Operation | Price |
|---|---|
| Profile scrape | $0.001 |
| Followers/Following | $0.01 |
| Tweet scrape | $0.005 |
| Search tweets | $0.01 |
| Unfollow non-followers | $0.05 |
| Detect unfollowers | $0.02 |
| Auto-like | $0.02 |
| Video download | $0.005 |
This only applies to the hosted remote API. Local mode is always free.
| XActions | Others | |
| Scope | Browser + CLI + Node.js + MCP + Extension | Usually 1 thing |
| API Key | Not needed | Most need Twitter API ($100/mo) |
| MCP Tools | 152 for Claude, GPT, Cursor | 0-2 tools |
| AI Features | Sentiment, Grok, reputation | None |
| Export | JSON, CSV, Markdown, HTML | JSON only (if any) |
| Migration | Bluesky and Mastodon, from a live account or an X archive zip | None |
| Tutorials | 23 Claude prompts | None |
Run XActions anywhere with one command:
Or use Docker Compose:
See Dockerfile for details.
Full TypeScript-compatible API with type declarations included.
Core Functions:
| Function | Description | Returns |
|---|---|---|
createBrowser(options?) | Launch Puppeteer browser | Browser |
createPage(browser) | Create stealth page | Page |
scrapeProfile(page, username) | Get user profile data | Profile |
scrapeFollowers(page, username, options?) | List followers | User[] |
scrapeFollowing(page, username, options?) | List following | User[] |
scrapeTweets(page, username, options?) | Get user tweets | Tweet[] |
searchTweets(page, query, options?) | Search tweets | Tweet[] |
downloadVideo(page, tweetUrl) | Extract video URLs | VideoResult |
exportBookmarks(page, options?) | Export bookmarks | Bookmark[] |
unrollThread(page, tweetUrl) | Unroll a thread | Thread |
See docs/api-reference.md for the complete reference with all parameters and return types.
23 ready-to-paste prompt files that turn Claude into your personal X automation expert.
| Tutorial | What You'll Learn |
|---|---|
| MCP Setup | Install and connect XActions to Claude Desktop |
| Unfollow Cleanup | Remove non-followers, detect unfollowers |
| Growth Suite | Auto-follow, auto-like, keyword targeting |
| Scraping | Extract profiles, tweets, hashtags |
| Content Posting | Tweets, threads, polls, scheduling |
| Analytics | Performance tracking, competitor analysis |
| Autonomous Space Agent | Deploy AI voice agents in live X Spaces |
| Power User Playbook | 10 advanced multi-feature strategies |
https://x.com/YOUR_USER_NAME/followingOr use the CLI or MCP server for more options.
https://x.com/USERNAMEscripts/engageProfile.js and run it. A panel appears: pick like / repost / reply, leave dry run on, press Start, read the log, then turn dry run off.Replies come from your own templates or from an LLM given a brief like "supportive, specific, one honest question". From the terminal: npx xactions engage USERNAME --like --repost --comment --prompt "...". Full guide: docs/engage.md.
https://x.com/YOUR_USER_NAME/followingThis script:
Use src/detectUnfollowers.js - it saves a snapshot of your followers and compares on next run.
Use src/scrapers/videoDownloader.js - extracts MP4 URLs from any tweet.
XActions uses browser automation instead of the API. No API keys needed, no rate limits, no $100/mo fee.
XActions is open-source and completely free for humans. AI agents pay micropayments per request.
[!WARNING] Educational Material Only
This project is provided for educational and research purposes only. The scripts and tools have not been extensively tested on personal accounts.
- Use at your own risk
- We are not responsible for any account restrictions or bans
- Always comply with X/Twitter's Terms of Service
- Start with small batches and test carefully
For X/Twitter: If you have concerns about this project or would like us to modify or remove any functionality, please contact @nichxbt directly. We're happy to work with you.
Acknowledgment: This project was inspired by the innovation happening at X and xAI. We admire Elon Musk's vision for making X the everything app and Grok's approach to AI. XActions aims to help developers and researchers explore the platform's capabilities while respecting its ecosystem.
Most reads work the moment you install. You do not need an X account, an API key, or a browser.
Then log in once, in a real browser, to unlock search, followers, following, likes, bookmarks, and DMs:
Running xactions with no arguments prints all 56 commands grouped by task. xactions completion bash (or zsh, fish) turns on tab completion.
Browser Console: No install required!
CLI:
Node.js:
💡 Don't want to code? Use xactions.app: just login and click!
Browser Console:
CLI:
Node.js:
Browser Console:
CLI:
Node.js:
Browser Console:
CLI:
Browser Console:
⚠️ Go slow! Twitter may rate-limit you. The website version handles this automatically.
Browser Console:
📖 Full documentation: docs/examples/leave-all-communities.md
| Feature | Console Script | CLI | Node.js | Website |
|---|---|---|---|---|
| SCRAPING | ||||
| Scrape Profile | ✅ | ✅ | ✅ | ✅ |
| Scrape Followers | ✅ | ✅ | ✅ | ✅ |
| Scrape Following | ✅ | ✅ | ✅ | ✅ |
| Scrape Tweets | ✅ | ✅ | ✅ | ✅ |
| Search Tweets | ✅ | ✅ | ✅ | ✅ |
| Scrape Thread | ✅ | ✅ | ✅ | ✅ |
| Scrape Hashtag | ✅ | ✅ | ✅ | ✅ |
| Scrape Media | ✅ | ✅ | ✅ | ✅ |
| Scrape List Members | ✅ | ✅ | ✅ | ✅ |
| Scrape Likes | ✅ | ✅ | ✅ | ✅ |
| UNFOLLOW | ||||
| Unfollow Non-Followers | ✅ | ✅ | ✅ | ✅ |
| Unfollow Everyone | ✅ | ✅ | ✅ | ✅ |
| Smart Unfollow (after X days) | ⚠️ | ✅ | ✅ | ✅ |
| Unfollow with Logging | ✅ | ✅ | ✅ | ✅ |
| FOLLOW | ||||
| Follow User | ✅ | ✅ | ✅ | ✅ |
| Keyword Follow | ⚠️ | ✅ | ✅ | ✅ |
| Follow Engagers | ⚠️ | ✅ | ✅ | ✅ |
| Follow Target's Followers | ⚠️ | ✅ | ✅ | ✅ |
| ENGAGEMENT | ||||
| Like Tweet | ✅ | ✅ | ✅ | ✅ |
| Retweet | ✅ | ✅ | ✅ | ✅ |
| Auto-Liker | ⚠️ | ✅ | ✅ | ✅ |
| Auto-Commenter | ⚠️ | ✅ | ✅ | ✅ |
| Post Tweet | ✅ | ✅ | ✅ | ✅ |
| MONITORING | ||||
| Detect Unfollowers | ✅ | ✅ | ✅ | ✅ |
| New Follower Alerts | ✅ | ✅ | ✅ | ✅ |
| Monitor Any Account | ✅ | ✅ | ✅ | ✅ |
| Continuous Monitoring | ⚠️ | ✅ | ✅ | ✅ |
| COMMUNITIES | ||||
| Leave All Communities | ✅ | ⚠️ | ⚠️ | ⚠️ |
| SPACES | ||||
| Discover Live Spaces | ✅ | ✅ | ✅ | ✅ |
| Scrape Space Metadata | ✅ | ✅ | ✅ | ✅ |
| AI Agent Joins Space | ❌ | ✅ | ✅ | ❌ |
| Agent Listens & Speaks | ❌ | ✅ | ✅ | ❌ |
| ADVANCED | ||||
| Multi-Account | ❌ | ✅ | ✅ | ✅ Pro |
| Link Scraper | ✅ | ✅ | ✅ | ✅ |
| Growth Suite | ❌ | ✅ | ✅ | ✅ Pro |
| Customer Service Bot | ❌ | ✅ | ✅ | ✅ Pro |
| MCP Server (AI Agents) | ❌ | ✅ | ✅ | ❌ |
| Export to CSV/JSON | ✅ | ✅ | ✅ | ✅ |
Legend: ✅ Full Support | ⚠️ Basic/Manual | ❌ Not Available
XActions includes the most comprehensive free MCP server for X/Twitter. Works with Claude, Cursor, Windsurf, VS Code, and any MCP client.
Add to your Claude Desktop config (claude_desktop_config.json):
Get your auth_token: x.com → DevTools (F12) → Application → Cookies → copy
auth_tokenvalue
Or auto-generate the config:
| Category | Tools |
|---|---|
| Scraping | x_get_profile, x_get_followers, x_get_following, x_get_tweets, x_search_tweets, x_get_thread, x_download_video, x_get_replies, x_get_hashtag, x_get_likers, x_get_retweeters, x_get_media, x_get_mentions, x_get_quote_tweets, x_get_likes, x_get_recommendations |
| Analysis | x_detect_unfollowers, x_analyze_sentiment, x_best_time_to_post, x_competitor_analysis, x_brand_monitor, x_audience_insights, x_engagement_report, x_crypto_analyze |
| Actions | x_follow, x_unfollow, x_like, x_post_tweet, x_post_thread, x_reply, x_retweet, x_quote_tweet, x_bookmark, x_send_dm, x_create_poll, x_delete_tweet |
| Automation | x_auto_follow, x_follow_engagers, x_unfollow_all, x_smart_unfollow, x_auto_comment, x_auto_retweet, x_auto_like, x_engage, x_unfollow_non_followers |
| AI | x_analyze_voice, x_generate_tweet, x_summarize_thread, x_rewrite_tweet, x_detect_bots, x_find_influencers, x_smart_target, x_grok_analyze_image |
| Monitoring | x_monitor_account, x_monitor_keyword, x_follower_alerts, x_track_engagement, x_monitor_reputation, x_stream_start |
| Workflows | x_workflow_create, x_workflow_run, x_workflow_list, x_workflow_actions |
| Persona | x_persona_create, x_persona_run, x_persona_edit, x_persona_list, x_persona_presets |
| Portability | x_export_account, x_migrate_account, x_diff_exports, x_import_data, x_convert_format |
| Spaces | x_get_spaces, x_scrape_space, x_space_join, x_space_leave, x_space_status, x_space_transcript |
| Graph | x_graph_build, x_graph_analyze, x_graph_recommendations, x_graph_list |
| Drafts | x_list_drafts, x_approve_draft, x_discard_draft, x_draft_status |
Every tool belongs to exactly one group, and the list is filterable, so a client loads only what the session needs:
A filtered tool is neither advertised nor callable. Groups, largest first:
read, analytics, write, monitoring, data, workflows, automation,
ai, persona, spaces, graph, drafts, dm, grok, lists, auth,
plus x402 when the server runs in remote mode.
Every tool that posts, deletes, follows, mutes or sends is then saved as a
draft instead of running. Release or bin them with x_list_drafts,
x_approve_draft and x_discard_draft, or from the shell with
xactions drafts list, xactions drafts approve <id> and
xactions drafts discard <id>.
Independently of that gate, every write is charged against a rolling 24 hour
per-account cap held in a file under ~/.xactions, so it survives a restart
and a call that would exceed it never reaches X.
stdio is the default and is what a local client wants. --http (or
MCP_TRANSPORT=http) is for remote and hosted clients; set
XACTIONS_MCP_TOKEN to require Authorization: Bearer <token> on it.
The .mcpb bundle carries the server and its dependencies and prompts for the
session cookie and the tool groups at install time. Download it from the
latest release and drag it
onto Claude Desktop > Settings > Extensions.
"Analyze @paulg's writing style and generate 3 tweet ideas about startups in his voice" → Scrapes tweets → analyzes voice → generates content with AI
"Find everyone I follow who doesn't follow me back, sorted by follower count" → Uses x_get_following + x_get_followers → computes diff → formats results
"Compare the engagement metrics of @openai, @anthropic, and @google" → Scrapes profiles + recent tweets → computes avg engagement → presents comparison
📖 Full setup guide: docs/mcp-setup.md
AI agents can join live X Spaces, listen to conversations, and speak autonomously using voice AI. Powered by the xspace-agent SDK.
Set your credentials:
MCP (Claude Desktop / Cursor):
"Join this Space as an AI agent: https://x.com/i/spaces/1abc123"
Claude calls x_space_join and your agent enters the Space.
Node.js:
MCP Tools:
| Tool | Description |
|---|---|
x_space_join | Join a Space with an autonomous AI voice agent |
x_space_leave | Leave the active Space and get session summary |
x_space_status | Get agent status (duration, transcription/response counts) |
x_space_transcript | Get recent transcriptions from the active Space |
📖 Full guide: docs/spaces-agent.md: configuration, environment variables, events, multi-agent setup, and examples.
56 commands, grouped by task, with 85 subcommands under them. Run xactions
with no arguments for the grouped screen, xactions help <command> for one
command, and xactions completion bash|zsh|fish for tab completion generated
from the live command tree.
Start here quickstart doctor connect login logout mcp-config skills drafts info
Read an account (no login needed) profile tweets thread media analyze report history snapshot
Followers and audience followers following non-followers audience crm graph
Search and monitor search hashtag scrape platforms monitor sentiment rss stream
Write and grow engage ai optimize hashtags predict variations evergreen persona schedule bulk
Automate workflow agent notify plugin team dataset
Move data export export-data archive import convert migrate diff
Low level client
Global on every read command:
--compact prints tab-separated key=value pairs with no colours or spinners.
--fields narrows that to the columns you name, in the order you name them.
--json prints the full structured object and outranks --output, so a pipe is
never silently turned into a file write. If both --compact and --json are
passed, --compact wins.
Public reads work with no account: profile, tweets, thread, media,
analyze, hashtag. Search, followers, following, non-followers, likes,
bookmarks and DMs need a session. Full reference:
docs/cli-reference.md.
Visit xactions.app for a no-code solution
Use browser scripts · Copy-paste console scripts · View tutorials
100% Free. No API keys, no payments, no limits.
|
Rate Limiting: Built-in 1-3s delays, human-like scrolling, auto-pause on rate limits |
|
Auth Token: |
[!CAUTION] Do: Use 2–5s delays · Mix automated with manual activity · Test with small batches
Don't: Mass-follow thousands/day · Run 24/7 · Spam comments
Every top-level directory, so nothing here is a surprise.
Both python/ and xspace-agents/ are self-contained projects that live in this
repository but build on their own. Start from their READMEs, not this one.
Contributions welcome. See CONTRIBUTING.md, and AGENTS.md for the repository map and the three runtime contexts.
Node.js 20 or newer is required (engines.node is >=20); CI runs the suite on
20, 22 and 24. Three commands before you open a PR, all of which run in CI:
If XActions saved you from paying $100/mo for Twitter's API, star the repo: it's how open source grows.
XActions is 100% free and open source. Visit xactions.app for interactive tutorials.
NEW! Run scripts without any coding knowledge:
No console, no code, no setup!
| Category | Scripts | Tutorial |
|---|---|---|
| Unfollow | Unfollow Everyone, Non-Followers, Smart Unfollow | Tutorial |
| Automation | Auto-Liker, Auto-Commenter, Follow Engagers | Tutorial |
| Scraping | Video Download, Followers, Tweets, Hashtags | Tutorial |
| Monitoring | Detect Unfollowers, Track Accounts, Alerts | Tutorial |
| Communities | Leave All Communities | Tutorial |
| AI/MCP | Claude Desktop, GPT Integration | Tutorial |
| Feature | Documentation |
|---|---|
| Unfollow Everyone | unfollow-everyone.md |
| Unfollow Non-Followers | unfollow-non-followers.md |
| Detect Unfollowers | detect-unfollowers.md |
| Auto-Liker | auto-liker.md |
| Auto-Commenter | auto-commenter.md |
| Follow Engagers | follow-engagers.md |
| Video Downloader | video-downloader.md |
| Followers Scraping | followers-scraping.md |
| Tweet Scraping | tweet-scraping.md |
| Leave Communities | leave-all-communities.md |
| MCP Server | mcp-server.md |
| Monitor Account | monitor-account.md |
| New Follower Alerts | new-follower-alerts.md |
⚡ XActions, the complete X/Twitter automation toolkit
100% Free & Open Source · Apache 2.0 License
xactions.app ·
GitHub ·
@nichxbt
stdio is the default transport and is what a local client wants. For a remote
or hosted client, the same server speaks
MCP Streamable HTTP
on /mcp, with the same 153 tools and the same tool-group filtering:
Require a token on it by setting XACTIONS_MCP_TOKEN; clients then send
Authorization: Bearer <token>.
Deploying it somewhere public? Run it behind TLS with XACTIONS_MCP_TOKEN set,
and prefer a narrow tool set (--tools read,analytics) over the full list.
Dockerfile and docs/deployment.md cover
Railway, Fly.io, Docker and Cloudflare.
Extended feature-by-feature comparison with every alternative.
| Feature | XActions | twikit | twscrape | x-use | xmcp (official) | bird | twitter-cli | Agent-Reach |
|---|---|---|---|---|---|---|---|---|
| Node.js Library | ✅ | ❌ Python | ❌ Python | ✅ | ✅ | ✅ | ❌ Python | ❌ Python |
| Workflow Engine | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Sentiment Analysis | ✅ Built-in | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Real-Time Streaming | ✅ Polling streams + x.com's live event pipeline | ✅ live_pipeline | ❌ | ❌ | ✅ API only | ❌ | ❌ | ❌ |
| Account Export/Migration | ✅ JSON/CSV/HTML, plus the official X archive zip | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Dashboard (No-Code) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Grok AI Integration | ✅ | ✅ Separate pkg | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Docker Support | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| TypeScript Types | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| MCP tool allowlist | ✅ 17 groups | n/a | n/a | ❌ | ✅ | n/a | n/a | n/a |
| MCP over Streamable HTTP | ✅ --http on /mcp | n/a | n/a | ❌ | ✅ | n/a | n/a | n/a |
| Signed outbound webhooks | ✅ HMAC-SHA256, retries, replay | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Claude Tutorials | ✅ 23 prompts | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Multi-platform (X + others) | ✅ Bluesky, Mastodon, Threads | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| Cost | Free | Free | Free | Free | Free + X API plan | Free | Free + X API plan | Free |
Comparison reflects each project's public README at time of writing (August 2026); open an issue if a column is out of date.
Full documentation site: https://nirholas.github.io/XActions/