x-tweet-fetcher
让 AI Agent 无需 API Key 也能抓取 X/Twitter 内容,支持零依赖基础模式和
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 AI Agent 无需 API Key 也能抓取 X/Twitter 内容,支持零依赖基础模式和
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:x-tweet-fetcher 三后端路由架构:FxTwitter(单推文)→ Nitter(时间线/搜索)→ Playwright(列表/文章)
你一定见过这样的场景:凌晨三点,你给 AI Agent 下了一道指令——「去看看 @ElonMusk 今天发了什么」。Agent 诚恳地回复:「抱歉,我无法访问 X/Twitter,请手动复制内容。」
这不是 Agent 的错。X/Twitter 在 2023 年关闭了游客 Guest API,随后又对免费 API 层层加码,让所有想在服务端批量读取推文的开发者都望而却步。第三方工具被封、浏览器自动化在无头环境下无法运行、付费 API 每月要烧掉 100 美元。
x-tweet-fetcher 正是为解决这一困境而生:不给 X 交钱、不登录账号、不依赖 API Key,通过智能后端路由,让 AI Agent 也能自由地读取 X/Twitter、微信公众号、微博、Bilibili 的内容。
2023 年,Twitter(现 X)对 API 访问实施了严格限制。原本依赖 Nitter(开源第三方 Twitter 前端)等工具的开发者发现,大量公开实例要么被封禁、要么返回空数据,要么因多用户共享同一账号而被限流。
本项目的作者 ythx-101 同时维护着 Agent Waystation(一个 AI Agent 工具集),在搭建能「看」社交媒体内容的 Agent 时,遭遇了上述困境。他的解法不是抱怨,而是自己搭建 Nitter 实例 + 编写统一的抓取工具,最终沉淀为 x-tweet-fetcher。
项目的核心洞察是:X 的数据访问需求是分层的——有的场景只需一条推文(FxTwitter 即可),有的需要时间线搜索(Nitter),有的必须解析动态页面(Playwright)。用统一的 CLI 封装三层路由,按需调用,体验对用户透明。
x-tweet-fetcher 提供了 20 个脚本,覆盖以下核心场景:
python3 scripts/fetch_tweet.py --url https://x.com/elonmusk/status/123456789
底层调用 FxTwitter 公开 API,无需任何配置、即装即用。返回结构化 JSON,包含正文、统计数据(点赞/转发/浏览量)、引用推文、图片和视频链接。FxTwitter 是 X 的第三方嵌入方案,提供了稳定的数据访问通道。
export NITTER_URL=http://127.0.0.1:8788
python3 scripts/fetch_tweet.py --user elonmusk --limit 20
python3 scripts/nitter_client.py --search "AI Agent"
python3 scripts/fetch_tweet.py --monitor @yourusername
python3 scripts/fetch_tweet.py --url ... --replies
Nitter 是一种自托管的 Twitter 前端。部署后它以自己账号的身份访问 X,不存在公共实例的共享限流问题。项目提供了完整的 5 分钟 Nitter 搭建指南(Ubuntu + Nim + Redis),并详细说明如何获取 auth_token 和 ct0 会话 Cookie。
python3 scripts/fetch_tweet.py --list 1455045069516357634 --backend browser
python3 scripts/fetch_tweet.py --article https://x.com/i/article/123 --backend browser
X 列表(List)和 X 文章(Articles)是动态渲染内容,Nitter 无法解析,必须用浏览器自动化。项目支持 Camofox(OpenClaw 生态的浏览器服务)和标准 Playwright 两种后端。
python3 scripts/sogou_wechat.py --keyword "AI Agent" --limit 5 --json
python3 scripts/fetch_china.py --url "https://weibo.com/..."
python3 scripts/fetch_china.py --url "https://bilibili.com/..."
搜狗微信搜索直连搜狗 HTTP 接口,不依赖任何外部服务,是整个项目中最「干净」的 API 调用。
python3 scripts/tweet_growth_cli.py --add https://x.com/user/status/123 --run --report
python3 scripts/x-profile-analyzer.py --user elonmusk --count 100
追踪特定推文的点赞、转发、浏览量随时间变化,支持突发增长检测;抓取用户近期推文结合 LLM 分析 MBTI 性格类型和话题图谱。
图2:x-tweet-fetcher 功能覆盖矩阵,涵盖 X、微信、微博、B站等平台
scripts/nitter_client.py 是项目中最纯粹的部分:全程只用 Python 标准库(urllib.request、html.parser、re),没有任何第三方 import。核心解析逻辑基于 Python 内置的 html.parser.HTMLParser,用正则表达式提取推文数据。这使得 nitter_client.py 可以在 Termux(Android)、CI/CD 环境、或任何无法安装 pip 包的场景下运行。
scripts/camofox_client.py 封装了与 Camofox 的通信协议。Camofox 是一个独立的浏览器服务进程(默认端口 9377),提供 REST API 来操作标签页和获取页面快照。x-tweet-fetcher 充当其客户端,通过 JSON-over-HTTP 控制浏览器访问需要 JavaScript 渲染的页面。
scripts/config.py 统一管理所有外部服务 URL,通过环境变量注入,不硬编码默认值。这种方式让同一套脚本可以在不同部署环境(本地开发 / VPS / CI)间无缝切换。
所有脚本的输出均为结构化 JSON,支持 --pretty 美化格式。退出码设计为 cron 友好:0 = 无新内容,1 = 发现新内容,2 = 错误。监控类脚本利用这一设计实现增量更新通知,非常适合定时任务场景。
局限性一:公共 Nitter 实例已不可用。 截至 2026 年 3 月,所有公开 Nitter 实例均已失效或极不稳定。必须自行搭建 Nitter 实例才能使用时间线、搜索等功能。这意味着需要注册 X 账号(有封号风险)、获取 Cookie、配置 Redis、编译 Nim 程序,对非技术用户门槛较高。
局限性二:X 列表和文章需要浏览器。 Nitter 不支持这两个功能,只能回退到 Playwright/Camofox 模式,CI/CD 和 Termux 环境下无法使用。
局限性三:微信公众号仅支持搜狗搜索,无法直接抓取正文。 sogou_wechat.py 只能搜索公众号标题和链接,要抓取完整文章内容必须通过 fetch_china.py(依赖 Camofox 浏览器)。
局限性四:会话 Cookie 会过期。 Nitter 的 sessions.jsonl 中的 auth_token 和 ct0 不是永久有效的,X 账号被封禁或触发风控时 Cookie 就会失效,项目未提供自动刷新机制。
随着 AI Agent 应用爆发(OpenClaw、Claude Code Agent、各类 AI 助手),**「让 Agent 读社交媒体」**的需求越来越普遍。x-tweet-fetcher 提供了目前最完整的开源方案,其「三层后端路由」的设计哲学值得借鉴:简单场景用轻量方案,复杂场景才引入重型依赖,最大程度降低最小可行部署的门槛。