x-tweet-fetcher skill

Reads X tweets, replies, timelines, lists and articles with no login or API keys through the xtf command, with three backends and automatic fallback

  • 990 ★ on the repository
  • Last commit
  • MIT
Skill

Extended access

Why this level

  • The tool calls third-party gateways FxTwitter and Nitter and a browser
  • The --ledger flag writes a SQLite database to disk and the monitor keeps a cache in the home folder
  • Lists and articles start a browser driver, and timelines may need a Docker container
All reasons and checks

ythx-101/x-tweet-fetcher

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/x-tweet-fetcher

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • The tool calls third-party gateways FxTwitter and Nitter and a browser
  • The --ledger flag writes a SQLite database to disk and the monitor keeps a cache in the home folder
  • Lists and articles start a browser driver, and timelines may need a Docker container

This is third-party code. Review the repository files before installing.

What it does

x-tweet-fetcher lets an agent get X (formerly Twitter) content when the platform has no free API. The xtf utility picks one of three backends. FxTwitter returns single tweets and profiles with no dependencies. Nitter, yours or a public one, serves timelines, search and replies. A browser driver, Camofox or Playwright, adds lists and full X articles. Auto mode tries Nitter first and falls back to the browser if that fails. All answers are normalized into one Tweet, Reply, Profile and Article schema, so an agent needs just one format description. Errors carry a code: invalid_input, not_found, rate_limited, upstream_down, backend_unavailable, all_backends_failed. The --monitor mode watches an account's mentions and suits cron, and the --ledger flag saves results into a local SQLite database without duplicates and lets you search the archive offline. A single tweet works right after install, and everything else needs Nitter or a browser.

Who it is for. For researchers, marketers and agent developers who need X data for mention monitoring, discussion analysis and archiving without a paid API.

Good fit when

  • The agent has to read a tweet by link with stats, media and quotes and you do not want to paste text by hand
  • You want an account timeline or a topic search captured and saved into SQLite without repeats
  • You need brand mention monitoring on a schedule: exit code 1 signals new ones
  • You need the text of an X article or a list's contents, which calls for a browser driver
  • You want uniform fields across sources so the agent needs only one format description

Not a fit when

  • You need to post or take any action from an account: the tool only reads
  • You need uninterrupted operation: public Nitter instances are often down and a self-hosted one is recommended
  • You need a full X article without logging in: without it you get the title and a public preview, with is_partial set to true
  • You need analytics or Chinese platform tooling: those scripts moved to separate repositories

Example request

Use xtf to fetch the latest 20 tweets from @elonmusk, save them to ~/tweets.db and show the most viewed ones

Limitations

Python 3.10 or newer is required. Timelines, search and replies need a Nitter instance, set with the XTF_NITTER variable, several separated by commas. Public instances are unreliable and the author recommends running your own in Docker. Lists and articles require a browser: Camofox on port 9377 by default, or Playwright via XTF_BROWSER.

Full X article text is available only after logging in to X. Tool messages are in Chinese by default, and XTF_LANG=en changes the language. The search schema changed in version 2 compared with the first, with details in MIGRATION.md. Availability of X from Russia is not covered in the repository.

How to disable. Run pip uninstall for the xtf package, delete the skill folder from the agent's skills directory and stop the nitter container if you started one. The monitor cache lives in ~/.x-tweet-fetcher, and --ledger databases sit wherever you pointed them.

FAQ

How do I install x-tweet-fetcher?

Clone the repository, go into the folder and run pip install . Then xtf --url with a tweet address returns JSON right away. Without installing you can run python3 scripts/fetch_tweet.py with the same flags.

Does it need an X account or API key?

No, neither login nor keys are needed. That covers tweets, timelines, search and lists. Full X article text is not returned without logging in to X: you get the title and a public preview.

How do the three backends differ?

fxtwitter takes tweets and profiles with no dependencies. nitter is for timelines, search, replies and mentions. The browser driver adds lists and X articles. In auto mode Nitter goes first, then the browser.

How do I run my own Nitter?

With docker run -d -p 8788:8080 --name nitter zedeus/nitter:latest, then export XTF_NITTER=http://127.0.0.1:8788. Several addresses separated by commas enable failover.

How is x-tweet-fetcher different from Agent-Reach?

Agent-Reach reads many platforms at once. x-tweet-fetcher covers only X, but adds timelines, lists, mention monitoring and a local SQLite archive.

Discussion

No questions or reviews yet.

Skills
Needs a VPN

A Twitter/X CLI with an agent skill: feeds, bookmarks, search and profiles in the terminal, plus posting, replies and likes with no API keys

CLIBroad access3KRepository stars

CLI and skill that let an agent read and search Twitter, Reddit, YouTube, GitHub, Bilibili and Xiaohongshu without paid APIs

CLIExtended access100.7KRepository stars

The news-extractor skill pulls the title, text, images and metadata from a link on 12 news platforms and returns JSON or Markdown, with no browser

SkillExtended access629Repository stars

A skill for web search, X search and page fetching for models without web access: no signup or key, the answer is JSON with source links

SkillExtended access789Repository stars

A CLI and MCP server that lets an agent drive your real Chrome with its logged-in sessions: 103 commands across 36 platforms plus browser automation

CLIBroad access6.2KRepository stars
Editors’ pick

A skill that gathers the last 30 days of discussion on a topic from Reddit, X, YouTube, HN, Polymarket and GitHub into one brief

SkillBroad access65KRepository stars

Comparison with similar tools

Entries that share the main search query, and how they differ.

EntryOfficialRepository starsMain difference
x-tweet-fetcher (this entry)no990
Agent Reachno100,672reads Twitter, Reddit, YouTube, GitHub and other platforms as one set, with no archive or mention monitoring
OpenCLIno30,510turns any site into a command through your logged-in browser, with no specialization in X

README in short

The project starts from the fact that X has no free API and scraping gets blocked. The solution is routing across three backends with automatic fallback. Then come a quick start, a table of features and exit codes, a section on the local tweet database, Python examples, environment variables, running your own Nitter and the project structure.

README badge

Original SKILL.md

---
name: x-tweet-fetcher
description: >
  Fetch tweets, replies, timelines, search results, X Lists, and X Articles
  from X/Twitter without login or API keys. Single tweets: zero dependencies
  (FxTwitter). Timelines/search/replies: a Nitter instance (XTF_NITTER).
  Lists/Articles: a browser driver (Camofox or Playwright). Unified JSON
  schema across all backends; machine-readable error_code for agent branching.
  Field reports and agent-use questions: Agent Waystation #22 Teahouse:
  https://github.com/ythx-101/openclaw-qa/discussions/22
---

# X Tweet Fetcher

Fetch tweets from X/Twitter without authentication. For agent-use stories, failures, and field reports, start from **[#22 Teahouse / 茶座](https://github.com/ythx-101/openclaw-qa/discussions/22)**.

## Feature Overview

| Feature | Command | Dependencies |
|---------|---------|-------------|
| Single tweet | `xtf --url <tweet_url>` | None (zero deps) |
| Reply threads | `xtf --url <tweet_url> --replies` | Nitter or browser |
| User timeline | `xtf --user <username> --limit 50` | Nitter or browser |
| Search | `xtf --search "<query>"` | Nitter |
| User profile | `xtf --user-info <username>` | None (zero deps) |
| X List | `xtf --list <list_url_or_id>` | Browser (Camofox/Playwright) |
| X Article | `xtf --article <url_or_id>` | Browser (Camofox/Playwright) |
| Mentions monitor | `xtf --monitor @<username>` | Nitter or browser |

`python3 scripts/fetch_tweet.py` accepts the same flags (v1-compatible entry point).

## Basic Usage (Zero Dependencies)

```bash
# JSON output (default)
xtf --url https://x.com/user/status/1234567890

# Human-readable
xtf --url https://x.com/user/status/1234567890 --text-only

# Output covers: text, author, stats (likes/retweets/views), media URLs,
# quoted tweets, and full article text for tweet-embedded articles.
```

## Timeline / Search / Replies (Nitter)

```bash
export XTF_NITTER=http://127.0.0.1:8788   # your instance; comma-separate for failover
xtf --user elonmusk --limit 20
xtf --search "openclaw" --limit 10

Report a problem

Foxx AIx-tweet-fetcher
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.