SkillAgentSearch skills...

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/XActions

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

83/100

Category

Automation

Supported Platforms

Claude Code
Claude Desktop
<div align="center"> <pre align="center"> ██╗ ██╗ █████╗ ██████╗████████╗██╗ ██████╗ ███╗ ██╗███████╗ ╚██╗██╔╝██╔══██╗██╔════╝╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝ ╚███╔╝ ███████║██║ ██║ ██║██║ ██║██╔██╗ ██║███████╗ ██╔██╗ ██╔══██║██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║ ██╔╝ ██╗██║ ██║╚██████╗ ██║ ██║╚██████╔╝██║ ╚████║███████║ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝ </pre> <p> <img src=".github/xactions-ascii.svg" alt="XActions — The Complete X/Twitter Automation Toolkit" width="720"> </p> <h3>The complete X/Twitter automation toolkit</h3> <p> Scrapers &nbsp;·&nbsp; MCP Server for AI Agents &nbsp;·&nbsp; CLI &nbsp;·&nbsp; Browser Scripts &nbsp;·&nbsp; Browser Extension<br> <strong>No API keys. No monthly fees. 100% open source.</strong> </p> <p> <a href="https://www.npmjs.com/package/xactions"><img src="https://img.shields.io/npm/v/xactions.svg?style=flat-square&color=cb3837&label=npm" alt="npm version"></a>&nbsp; <a href="https://www.npmjs.com/package/xactions"><img src="https://img.shields.io/npm/dm/xactions.svg?style=flat-square&color=cb3837&label=downloads" alt="npm downloads"></a>&nbsp; <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache_2.0-green?style=flat-square" alt="Apache 2.0 License"></a>&nbsp; <a href="https://github.com/nirholas/xactions"><img src="https://img.shields.io/github/stars/nirholas/xactions?style=flat-square&color=f5c542&label=stars" alt="Stars"></a> </p> <p> <a href="docs/mcp-setup.md"><img src="https://img.shields.io/badge/MCP_Tools-145-8B5CF6?style=flat-square&logo=data:image/svg+xml;base64,PHN2Zz48L3N2Zz4=" alt="145 MCP Tools"></a>&nbsp; <a href="https://smithery.ai/server/xactions"><img src="https://smithery.ai/badge/xactions" alt="Smithery"></a>&nbsp; <a href="https://registry.modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP_Registry-deployed-6366f1?style=flat-square&logo=data:image/svg+xml;base64,PHN2Zz48L3N2Zz4=" alt="MCP Registry"></a>&nbsp; <a href="Dockerfile"><img src="https://img.shields.io/badge/Docker-ready-2496ED?style=flat-square&logo=docker&logoColor=white" alt="Docker"></a>&nbsp; <a href="types/index.d.ts"><img src="https://img.shields.io/badge/TypeScript-types_included-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript"></a> </p> <p> <a href="https://x.com/nichxbt"><img src="https://img.shields.io/badge/follow-@nichxbt-000000?style=flat-square&logo=x&logoColor=white" alt="Follow @nichxbt"></a>&nbsp; <a href="https://x.ai"><img src="https://img.shields.io/badge/built_with-Grok_🤖-1DA1F2?style=flat-square" alt="Built with Grok"></a> </p>

https://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


🔍 Common Questions (for AI search)

<details> <summary><strong>How to unfollow who doesn't follow back on X?</strong></summary>
  1. Go to https://x.com/YOUR_USER_NAME/following
  2. Open the Developer Console. (<kbd>COMMAND</kbd>+<kbd>ALT</kbd>+<kbd>I</kbd> on Mac)
  3. 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>
  1. Go to https://x.com/YOUR_USER_NAME/following
  2. Open the Developer Console. (<kbd>COMMAND</kbd>+<kbd>ALT</kbd>+<kbd>I</kbd> on Mac)
  3. 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

View on GitHub
GitHub Stars540
CategoryAutomation
Updated4d ago
Forks103

Languages

HTML

Security Score

100/100

Audited on Sep 17, 2026

No findings