Agent skill

Twitter X Hub

by OpenMinis in OpenMinis/MinisSkills

Skill for reading and writing Twitter/X data with Python + UV, with zero third-party dependencies (pure standard library), by directly passing the authtoken + ct0 cookies for authentication.

MITAuto-check passedBackend & APIs

Install Twitter X Hub

skills CLI
$ npx skills add OpenMinis/MinisSkills --skill twitter-x-hub -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install OpenMinis/MinisSkills twitter-x-hub --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/OpenMinis/MinisSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/twitter-x-hub .claude/skills/twitter-x-hub && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
twitter-x-hub
GitHub stars
446
Token cost
~2.9k tokens
SKILL.md length
803 words
Files
8 (incl. scripts)
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Skill for reading and writing Twitter/X data with Python + UV, with zero third-party dependencies (pure standard library), by directly passing the authtoken + ct0 cookies for authentication.

  • Works in 3 steps: Use browser_use navigate to open… → Use browser_use get_cookies to retrieve… → Load the file, then use the cookies
  • Mentions scraping Twitter data
  • SKILL.md covers File Structure, Authentication, Quick Start and Core Implementation Principles, plus 3 more sections
  • Runs Python scripts from its folder; calls uv and pip; reaches x.com; needs TWITTER_AUTH_TOKEN and COOKIE_AUTH_TOKEN

What it does

Twitter X Hub is an agent skill from OpenMinis/MinisSkills. Skill for reading and writing Twitter/X data with Python + UV, with zero third-party dependencies (pure standard library), by directly passing the authtoken + ct0 cookies for authentication. In the Minis environment, cookies can be retrieved automatically with the browseruse tool by navigating to x.com and then using the getcookies action, with no manual copying required. Supports scraping the home timeline, following list, bookmarks (including bookmark folders), search, user profiles, user tweets, likes, tweet…

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts (for example `scripts/__init__.py`, `scripts/cli.py` and `scripts/client.py`).

It sits in Backend & APIs, covering Social media posts, Browser automation and Web scraping. It works with X (Twitter), Python and GraphQL. The repository describes itself as: Skills collection for Minis. The licence is MIT.

When your agent uses it

  • Mentions scraping Twitter data
  • Twitter timeline
  • Request Twitter with cookies
  • Twitter GraphQL

Example prompts

  • “scraping Twitter data,”
  • “get X tweets,”
  • “Twitter timeline,”
  • “/twitter-x-hub”

Requirements

  • Python 3
  • A credential in TWITTER_AUTH_TOKEN
  • A credential in COOKIE_AUTH_TOKEN

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Use browser_use navigate to open https://x.com and confirm you are logged in.
  2. Use browser_use get_cookies to retrieve all cookies.
  3. Load the file, then use the cookies

What it can do on your machine

Read from SKILL.md and the folder at commit ae8c5db. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 5 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • uv
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • x.com

    Also links to:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • TWITTER_AUTH_TOKEN
    • COOKIE_AUTH_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Twitter X Hub loads about 2.9k tokens when it runs. Until then it costs about 249 tokens; SKILL.md has 803 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~249
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from OpenMinis/MinisSkills at commit ae8c5db, republished under its MIT licence (© OpenMinis). 803 words, ~2,917 tokens.

Download SKILL.mdSave it as .claude/skills/twitter-x-hub/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
twitter-x-hub
description
Skill for reading and writing Twitter/X data with Python + UV, with zero third-party dependencies (pure standard library), by directly passing the auth_token + ct0 cookies for authentication. In the Minis environment, cookies can be retrieved automatically with the browser_use tool by navigating to x.com and then using the get_cookies action, with no manual copying required. Supports scraping the home timeline, following list, bookmarks (including bookmark folders), search, user profiles, user tweets, likes, tweet details (single tweet or with replies), List timelines, followers/following lists, and write operations such as posting, deleting, liking, retweeting, and bookmarking. This skill must be triggered when the user mentions "scraping Twitter data," "get X tweets," "Twitter timeline," "X bookmarks," "search tweets," "twitter-x-hub," "request Twitter with cookies," "Twitter GraphQL," or any scenario that requires programmatic reading or writing of Twitter/X data.

twitter-x-hub

Modified from: public-clis/twitter-cli (formerly jackwener/twitter-cli) This skill simplifies the original repository as follows: it removes the browser-cookie3/rich/click/PyYAML/curl_cffi/ xclienttransaction/beautifulsoup4 dependencies and replaces them with a pure standard library implementation; authentication now uses directly supplied cookies instead of automatic browser extraction; Twitter Article rendering and image upload functionality have been removed.


File Structure

/var/minis/skills/twitter-x-hub/
├── SKILL.md
├── pyproject.toml              # UV project configuration (zero third-party dependencies)
└── scripts/
    ├── __init__.py
    ├── models.py               # Data models (Tweet, Author, Metrics, UserProfile, BookmarkFolder)
    ├── parser.py               # GraphQL response parsing (split from client.py, synced from upstream v0.8.6)
    ├── client.py               # GraphQL client (core logic)
    └── cli.py                  # Command-line entry point (argparse)

Authentication

The Twitter/X internal GraphQL API uses two cookies for authentication:

CookieDescription
auth_tokenUser login credential (OAuth Session Token)
ct0CSRF Token, also used as the X-Csrf-Token request header
Method 1: Retrieve automatically with the browser_use tool (recommended, preferred in the Minis environment)

In Minis, you can use the browser_use tool to navigate directly to x.com, then use the get_cookies action to read cookies, with no manual copying required. After retrieval, store them in environment variables immediately to avoid exposing plaintext values in the conversation context.

Steps:

  1. Use browser_use navigate to open https://x.com and confirm you are logged in.
  2. Use browser_use get_cookies to retrieve all cookies.
    • The tool returns an offload env file path, such as /var/minis/offloads/env_cookies_xxx.sh.
    • Raw cookie values will not appear in the conversation.
  3. Load the file, then use the cookies:
bash
. /var/minis/offloads/env_cookies_xxx.sh
export TWITTER_AUTH_TOKEN="$COOKIE_AUTH_TOKEN"
export TWITTER_CT0="$COOKIE_CT0"
Method 2: Set environment variables manually

Copy auth_token and ct0 from browser DevTools -> Application -> Cookies -> https://x.com, then store them in Minis environment variables (Settings -> Environments): TWITTER_AUTH_TOKEN + TWITTER_CT0

Passing credentials (three methods, in descending priority)
  1. Environment variables: TWITTER_AUTH_TOKEN + TWITTER_CT0 (recommended)
  2. CLI parameters: --auth-token <value> --ct0 <value>
  3. Pass directly in code: TwitterClient(auth_token=..., ct0=...)

Quick Start

Environment Setup
bash
# Confirm UV is available
which uv || pip install uv

# Enter the skill directory
cd /var/minis/skills/twitter-x-hub
CLI Usage
bash
# Scrape the home For-You timeline (20 items by default)
uv run python -m scripts.cli feed

# Scrape the Following timeline, 30 items, JSON output
uv run python -m scripts.cli feed --type following --max 30 --json

# Search tweets (Top/Latest/Photos/Videos)
uv run python -m scripts.cli search "Claude Code" --tab Latest --max 20

# Bookmarks
uv run python -m scripts.cli bookmarks --max 50

# Bookmark folder list (new)
uv run python -m scripts.cli bookmark-folders

# User profile
uv run python -m scripts.cli user elonmusk

# User tweets
uv run python -m scripts.cli user-posts elonmusk --max 20

# User likes
uv run python -m scripts.cli user-likes elonmusk --max 20

# Tweet details (including reply thread)
uv run python -m scripts.cli tweet 1234567890

# Quickly retrieve a single tweet (new, faster than the tweet command)
uv run python -m scripts.cli tweet-by-id 1234567890

# List timeline
uv run python -m scripts.cli list 1539453138322673664

# Followers / following lists (first use the user command to get user_id)
uv run python -m scripts.cli followers <user_id> --max 50
uv run python -m scripts.cli following <user_id> --max 50

# Post a tweet / reply
uv run python -m scripts.cli post "Hello from twitter-x-hub!"
uv run python -m scripts.cli post "reply text" --reply-to 1234567890

# Like / retweet / bookmark
uv run python -m scripts.cli like 1234567890
uv run python -m scripts.cli retweet 1234567890
uv run python -m scripts.cli bookmark 1234567890
Use environment variables to avoid passing credentials each time
bash
export TWITTER_AUTH_TOKEN="xxxx"
export TWITTER_CT0="yyyy"

uv run python -m scripts.cli feed --max 30 --json
Call as a Python library
python
import os, json, dataclasses
from scripts.client import TwitterClient

client = TwitterClient(
    auth_token=os.environ["TWITTER_AUTH_TOKEN"],
    ct0=os.environ["TWITTER_CT0"],
)

# Scrape the home timeline
tweets = client.fetch_home_timeline(count=20)
for t in tweets:
    print(f"@{t.author.screen_name}: {t.text[:80]}")
    print(f"  ❤️ {t.metrics.likes}  🔁 {t.metrics.retweets}  👁 {t.metrics.views}  🔖 {t.metrics.bookmarks}")

# Search (Latest tab)
results = client.fetch_search("AI agent", count=10, product="Latest")

# Single tweet (quick, no replies)
tweet = client.fetch_tweet_by_id("1234567890")

# Bookmark folders
folders = client.fetch_bookmark_folders()

# User profile
user = client.fetch_user("elonmusk")
print(user.id, user.followers_count)

# JSON serialization
data = [dataclasses.asdict(t) for t in tweets]
print(json.dumps(data, ensure_ascii=False, indent=2))

Core Implementation Principles

Authentication Mechanism

Uses browser cookies (auth_token + ct0) plus a hard-coded public Bearer Token to impersonate a Chrome browser request to Twitter's internal GraphQL API.

Three-level QueryId resolution (automatically handles API changes)
1. In-memory cache (fastest)
2. Hard-coded FALLBACK_QUERY_IDS (constant fallback)
   → If 404, the queryId has expired; proceed to the next level
3. Fetch the latest queryId from github.com/fa0311/twitter-openapi
   → If it is still unavailable, scan the x.com JS Bundle and extract it with a regular expression
URL Optimization (synced from upstream v0.8)
  • Keys with a value of False in the features dictionary are not sent, avoiding overly long URLs (414 errors).
Pagination & Rate Limiting
  • Each response includes a cursor; pages are fetched automatically until the count limit is reached.
  • The default request interval is 1.5 seconds + ±30% random jitter. HTTP 429 triggers exponential backoff and retry.
  • Write operations use a random delay of 1.5 to 4 seconds.
Parser Split (synced from upstream v0.7+)
  • parser.py was split out from client.py and includes independent functions such as parse_tweet_result, parse_timeline_response, and parse_user_result, making unit testing and reuse easier.

CLI Subcommand Quick Reference

SubcommandDescriptionKey Parameters
feedHome timeline--type for-you|following, --max, --json
bookmarksBookmarks--max, --json
bookmark-foldersBookmark folder list ⭐ New--json
searchSearchquery, --tab Top|Latest|Photos|Videos, --max, --json
userUser profilescreen_name, --json
user-postsUser tweetsscreen_name, --max, --json
user-likesUser likesscreen_name, --max, --json
tweetTweet details + repliestweet_id, --max, --json
tweet-by-idSingle tweet (quick) ⭐ Newtweet_id, --json
listList timelinelist_id, --max, --json
followersFollowers listuser_id, --max, --json
followingFollowing listuser_id, --max, --json
postPost a tweettext, --reply-to
deleteDelete a tweettweet_id
like / unlikeLike/unliketweet_id
retweet / unretweetRetweet/unretweettweet_id
bookmark / unbookmarkBookmark/unbookmarktweet_id

All subcommands support the --auth-token / --ct0 parameters, which can also be replaced with environment variables.


Show full SKILL.md (288 more words)Show less

Change Log (synced from upstream)

v0.8.6 Sync (2026-04-08)
  • Full QueryId update: Real-time scanning from the x.com JS bundle (main.0e98bc8a.js) updated all IDs, including HomeTimeline, HomeLatestTimeline, UserTweets, SearchTimeline, Likes, TweetDetail, TweetResultByRestId, ListLatestTweetsTimeline, Followers, Following, CreateTweet, and others.
  • New QueryIds: TweetResultByRestId, BookmarkFoldersSlice, BookmarkFolderTimeline
  • New commands: tweet-by-id (quick single-tweet retrieval), bookmark-folders (bookmark folders)
  • models.py: Added the bookmarks field to Metrics; added the article_title, article_text, and is_subscriber_only fields to Tweet; added the BookmarkFolder dataclass.
  • parser.py: Split from client.py into an independent module; fixed the new API structure (core.name/core.screen_name); parse_tweet_result supports full text from note_tweet (long tweets with "Show more"); added _unwrap_visibility to handle TweetWithVisibilityResults; fixed parse_user_result so the joined date is read from core.created_at.
  • URL optimization: False values in features are not sent, avoiding 414 errors.
  • SearchTimeline restriction: Starting in late 2025, X requires the x-client-transaction-id header. This header is generated by xclienttransaction (a C extension), which cannot be installed in the iSH/Alpine environment. Therefore, the search command is temporarily unavailable in this environment. Alternative: use browser_use to navigate to the search page and extract the DOM.

Notes

  • Cookies are typically valid for several weeks to several months. After they expire, they must be retrieved from the browser again.
  • Use a dedicated secondary account to reduce the risk of your main account being flagged by risk controls.
  • Write operations, such as posting tweets and liking tweets, carry a higher risk of triggering risk controls than read operations. Use them at your discretion.
  • max_count has a hard limit of 500 to prevent accidentally sending a large number of requests.
  • Upstream uses curl_cffi for TLS fingerprint spoofing. This skill uses stdlib urllib instead. If you encounter risk controls, you can try passing the complete cookie string through the cookie_string parameter to strengthen the fingerprint.

© OpenMinis, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 7 other files (scripts) in twitter-x-hub of OpenMinis/MinisSkills.

  • SKILL.md
  • pyproject.toml
  • scripts/__init__.py
  • scripts/cli.py
  • scripts/client.py
  • scripts/models.py
  • scripts/parser.py
  • uv.lock

Open the folder on GitHubat commit ae8c5db

Compare with similar skills

Twitter X Hub next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Twitter X Hub compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Twitter X Hub this skillOpenMinis/MinisSkills446—~2.9kAutomated safety check: PassMIT
Xtwitter Scrapermanagedcode/dotnet-skills486—~1.5kAutomated safety check: PassMIT
X Twitter ScraperLeoYeAI/openclaw-master-skills2.2k—~7.1kAutomated safety check: PassMIT
Neo4ier/neo756—~1.8kAutomated safety check: PassNone
X Twitter Scraperdavila7/claude-code-templates33k—~2.3kAutomated safety check: PassMIT
Spider Kingaoyunyang/spider-king-skill509—~7.3kAutomated safety check: PassMIT

Similar skills

  • Xtwitter Scraper

    managedcode/dotnet-skills

    Use XTwitterScraper when a .NET application needs typed access to Xquik's X automation REST API for tweet search, user lookup, posting workflows, extraction jobs, monitors, webhooks, or giveaway…

    486 GitHub stars~1.5k tokensUpdated today
    Backend & APIsAuto-check passed
  • X Twitter Scraper

    LeoYeAI/openclaw-master-skills

    X API & Twitter automation skill. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~7.1k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed
  • Neo

    4ier/neo

    Browse websites, read web pages, interact with web apps, call website APIs, and automate web tasks.

    756 GitHub stars~1.8k tokensUpdated 5 mo ago
    Productivity & AutomationAuto-check passed
  • X Twitter Scraper

    davila7/claude-code-templates

    A skill your agent uses when the user wants to integrate with the X (Twitter) API via Xquik to search tweets, look up user profiles, extract followers, run giveaway draws, monitor accounts, or…

    33k GitHub stars~2.3k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Spider King

    aoyunyang/spider-king-skill

    Pure-web protocol reverse skill: turn hostile browser clients into browser-free Python collectors.

    509 GitHub stars~7.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Twitterapi Io

    kaitoInfra/twitterapi-io

    Official skill for twitterapi.io — query Twitter/X data (tweets, profiles, followers, advanced search, trends, spaces, communities, lists) and perform authenticated actions (post, reply, like…

    450 GitHub stars~3.1k tokensUpdated 4 mo ago
    Backend & APIsAuto-check passed

More from OpenMinis/MinisSkills

All 49 skills in this repo
  • Android UI Automation

    OpenMinis/MinisSkills

    Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service.

    446 GitHub stars~1.6k tokensUpdated 3 days ago
    Auto-check passed
  • Codex On Ish

    OpenMinis/MinisSkills

    Install and run OpenAI Codex CLI inside the Minis/iSH Alpine sandbox on iOS, where rustls TLS and async sockets are broken.

    446 GitHub stars~1k tokensUpdated 3 days ago
    Auto-check passed
  • Evidence Chain Builder

    OpenMinis/MinisSkills

    Score a claim against the evidence behind it. An agent skill from OpenMinis/MinisSkills.

    446 GitHub stars~2.4k tokensUpdated 3 days ago
    Auto-check passed
  • Hyperframes CLI

    OpenMinis/MinisSkills

    HyperFrames CLI and Minis rendering. An agent skill from OpenMinis/MinisSkills.

    446 GitHub stars~3.5k tokensUpdated 3 days ago
    Auto-check passed
  • Whenpeak

    OpenMinis/MinisSkills

    Predict when a person's brain works best from their sleep, using the WhenPeak performance-intelligence API, and turn it into concrete scheduling advice.

    446 GitHub stars~2.3k tokensUpdated 3 days ago
    Auto-check passed
  • Openstreetmap Marker

    OpenMinis/MinisSkills

    Generate a mobile-first, immersive, Amap(Gaode)-style custom landmark marker HTML map for travel itinerary planning, place showcasing, location sharing, etc.

    446 GitHub stars~1.9k tokensUpdated 3 days ago
    Auto-check passed

Questions about Twitter X Hub

What does Twitter X Hub do?

Skill for reading and writing Twitter/X data with Python + UV, with zero third-party dependencies (pure standard library), by directly passing the authtoken + ct0 cookies for authentication. Twitter X Hub is an agent skill from OpenMinis/MinisSkills. Skill for reading and writing Twitter/X data with Python + UV, with zero third-party dependencies (pure standard library), by directly passing the authtoken + ct0 cookies for authentication.

When should I use Twitter X Hub?

Twitter X Hub fits situations like: mentions scraping Twitter data; twitter timeline; request Twitter with cookies; twitter GraphQL.

How do I install Twitter X Hub in Claude Code?

Run `npx skills add OpenMinis/MinisSkills --skill twitter-x-hub -a claude-code`. Or copy the skill folder (twitter-x-hub in OpenMinis/MinisSkills) into .claude/skills/twitter-x-hub in your project. Claude Code loads it when a task matches its description.

How do I install Twitter X Hub in Codex?

Run `npx skills add OpenMinis/MinisSkills --skill twitter-x-hub -a codex`. Or copy the skill folder (twitter-x-hub in OpenMinis/MinisSkills) into .agents/skills/twitter-x-hub in your project. Codex loads it when a task matches its description.

Can I use Twitter X Hub in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OpenMinis/MinisSkills --skill twitter-x-hub -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/twitter-x-hub, .gemini/skills/twitter-x-hub, .github/skills/twitter-x-hub and .opencode/skills/twitter-x-hub in your project.

What does Twitter X Hub need to run?

Going by SKILL.md and its folder, Twitter X Hub needs Python for the scripts in its folder, the command-line tools its instructions call (uv and pip) and credentials named TWITTER_AUTH_TOKEN and COOKIE_AUTH_TOKEN. Our summary lists: Python 3; A credential in TWITTER_AUTH_TOKEN; A credential in COOKIE_AUTH_TOKEN.

Does Twitter X Hub access the network?

SKILL.md names 2 domains. In commands or code: x.com; the agent is likely to contact it when it follows the instructions. As links in the text: github.com. This is read from the text; nothing was executed.

Is Twitter X Hub safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Twitter X Hub use?

Twitter X Hub is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Twitter X Hub use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Twitter X Hub?

Skills that share tags, products or a category with Twitter X Hub: Xtwitter Scraper (managedcode/dotnet-skills, 486 stars), X Twitter Scraper (LeoYeAI/openclaw-master-skills, 2.2k stars), Neo (4ier/neo, 756 stars) and X Twitter Scraper (davila7/claude-code-templates, 33k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Twitter X Hub?

OpenMinis (a GitHub organization) maintains it in OpenMinis/MinisSkills, which has 446 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 7, 2026.

Source: OpenMinis/MinisSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.