x-tweet-fetcher — скилл

Читает твиты, ответы, ленты, списки и статьи X без входа и ключей API через команду xtf, три источника с автоматической подменой при сбое

  • 991 ★ репозитория
  • Последний коммит
  • MIT
Скилл

Расширенный доступ

Почему такой уровень

  • Утилита ходит в сторонние шлюзы FxTwitter и Nitter и в браузер
  • Ключ `--ledger` пишет базу SQLite на диск, а монитор хранит кэш в домашней папке
  • Для списков и статей запускается браузерный драйвер, а для ленты может понадобиться контейнер Docker
Все причины и проверки

ythx-101/x-tweet-fetcher

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/x-tweet-fetcher

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Утилита ходит в сторонние шлюзы FxTwitter и Nitter и в браузер
  • Ключ `--ledger` пишет базу SQLite на диск, а монитор хранит кэш в домашней папке
  • Для списков и статей запускается браузерный драйвер, а для ленты может понадобиться контейнер Docker

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

x-tweet-fetcher позволяет агенту получать содержимое X, бывшего Twitter, когда у платформы нет бесплатного API. Утилита `xtf` выбирает один из трех источников. FxTwitter отдает отдельные твиты и профили без зависимостей. Nitter, ваш или публичный, дает ленты, поиск и ответы. Браузерный драйвер Camofox или Playwright добавляет списки и полные статьи X. Автоматический режим сначала пробует Nitter и переходит на браузер, если не вышло. Все ответы приводятся к одной схеме `Tweet`, `Reply`, `Profile` и `Article`, поэтому агенту хватает одного описания формата. У ошибок есть код: `invalid_input`, `not_found`, `rate_limited`, `upstream_down`, `backend_unavailable`, `all_backends_failed`. Режим `--monitor` следит за упоминаниями аккаунта и подходит для cron, а ключ `--ledger` складывает результаты в локальную базу SQLite без дублей и позволяет искать по архиву офлайн. Одиночный твит работает сразу после установки, для остального нужен Nitter или браузер.

Для кого. Для исследователей, маркетологов и разработчиков агентов, которым нужны данные X для мониторинга упоминаний, анализа обсуждений и архивирования без платного API.

Подходит, если

  • Агент должен прочитать твит по ссылке вместе со статистикой, медиа и цитатами, и вставлять текст вручную не хочется
  • Надо снять ленту аккаунта или поиск по теме и сохранить результат в SQLite без повторов
  • Нужен мониторинг упоминаний бренда по расписанию: код выхода 1 сообщает о новых
  • Требуется текст статьи X или содержимое списка, для чего нужен браузерный драйвер
  • Нужны единые поля для разных источников, чтобы агенту хватало одного описания формата

Не подходит, если

  • Нужна публикация или любые действия от аккаунта: утилита только читает
  • Нужны гарантии работы без перебоев: публичные экземпляры Nitter часто недоступны, а для надежности рекомендуют свой
  • Нужен полный текст статьи X без входа: без авторизации приходит заголовок и публичный фрагмент, поле `is_partial` равно `true`
  • Нужна аналитика и разбор китайских площадок: эти скрипты переехали в отдельные репозитории

Пример запроса к агенту

Возьми через `xtf` последние 20 твитов @elonmusk, сохрани их в ~/tweets.db и покажи самые обсуждаемые по просмотрам

Ограничения

Нужен Python 3.10 или новее. Для лент, поиска и ответов нужен экземпляр Nitter, адрес задается переменной `XTF_NITTER`, несколько через запятую. Публичные экземпляры ненадежны, автор советует запускать свой в Docker. Списки и статьи требуют браузер: по умолчанию Camofox на порту 9377, либо Playwright через `XTF_BROWSER`.

Полный текст статей X доступен только после входа в X. Сообщения утилиты по умолчанию на китайском, язык меняет `XTF_LANG=en`. Схема поиска в версии 2 изменилась относительно первой, детали в `MIGRATION.md`. Доступность X из России в репозитории не описана.

Как отключить. Выполните `pip uninstall` для пакета `xtf`, удалите папку скилла из каталога скиллов агента и остановите контейнер `nitter`, если запускали его. Кэш монитора лежит в ~/.x-tweet-fetcher, базы `--ledger` создаются там, куда вы их указали.

Частые вопросы

Как поставить x-tweet-fetcher?

Склонируйте репозиторий, перейдите в папку и выполните `pip install .` Затем `xtf` `--url` с адресом твита сразу вернет JSON. Без установки можно запустить `python3 scripts/fetch_tweet.py` с теми же флагами.

Нужен ли доступ к X или ключ API?

Нет, ни вход, ни ключи не нужны. Это относится к твитам, лентам, поиску и спискам. Полный текст статьи X без входа в X не отдается: приходит заголовок и публичный фрагмент.

Чем отличаются три источника?

`fxtwitter` без зависимостей берет твиты и профили. `nitter` нужен для лент, поиска, ответов и упоминаний. Браузерный драйвер добавляет списки и статьи X. В режиме `auto` сначала идет Nitter, затем браузер.

Как запустить свой Nitter?

Командой `docker run -d -p 8788:8080 --name nitter zedeus/nitter:latest`, затем `export XTF_NITTER=http://127.0.0.1:8788`. Несколько адресов через запятую включают переключение при сбое.

Чем x-tweet-fetcher отличается от Agent-Reach?

Agent-Reach читает много площадок сразу. x-tweet-fetcher занимается только X, но дает ленты, списки, мониторинг упоминаний и локальный архив в SQLite.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы
Нужен VPN

CLI для Twitter/X со скиллом для агентов: ленты, закладки, поиск и профили в терминале, плюс публикация, ответы и лайки без ключей API

CLIШирокий доступ3 тыс.Звезды репозитория

CLI и скилл, через которые агент читает и ищет в Twitter, Reddit, YouTube, GitHub, Bilibili и Xiaohongshu без платных API

CLIРасширенный доступ100,7 тыс.Звезды репозитория

Скилл news-extractor достает из ссылки заголовок, текст, картинки и метаданные статьи с 12 новостных площадок и отдает JSON или Markdown без браузера

СкиллРасширенный доступ631Звезды репозитория

Скилл веб-поиска, поиска по X и чтения страниц для моделей без выхода в сеть: без регистрации и ключа, ответ в JSON со ссылками на источники

СкиллРасширенный доступ808Звезды репозитория

CLI и MCP-сервер, через которые агент управляет вашим настоящим Chrome с сохраненными входами: 103 команды к 36 сайтам и автоматизация браузера

CLIШирокий доступ6,2 тыс.Звезды репозитория
Выбор редакции

Скилл собирает обсуждения темы за последние 30 дней из Reddit, X, YouTube, HN, Polymarket и GitHub и сводит их в бриф

СкиллШирокий доступ65 тыс.Звезды репозитория

Сравнение с похожими

Записи с тем же главным запросом: чем они отличаются.

ЗаписьОфициальныйЗвезды репозиторияГлавное отличие
x-tweet-fetcher (эта запись)нет991
Agent Reachнет100 672читает Twitter, Reddit, YouTube, GitHub и другие площадки одним набором, без архива и мониторинга упоминаний
OpenCLIнет30 510превращает любой сайт в команду через ваш залогиненный браузер, без специализации на X

Коротко о README

Проект исходит из того, что у X нет бесплатного API, а скрапинг блокируют. Решение — маршрутизация по трем источникам с автоматической подменой. Далее быстрый старт, таблица возможностей и кодов выхода, раздел про локальную базу твитов, примеры на Python, переменные окружения, запуск своего Nitter и структура проекта.

Бейдж для README

Исходный 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

Сообщить о проблеме

Foxx AIx-tweet-fetcher
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.