jackwener/twitter-cli

GitHub: jackwener/twitter-cli

一款无需 API Key 的 Twitter/X 终端工具,支持读写操作、智能筛选和反检测机制。

Stars: 933 | Forks: 78

# twitter-cli [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/695991b0f0055240.svg)](https://github.com/jackwener/twitter-cli/actions/workflows/ci.yml) [![PyPI version](https://img.shields.io/pypi/v/twitter-cli.svg)](https://pypi.org/project/twitter-cli/) [![Python versions](https://img.shields.io/pypi/pyversions/twitter-cli.svg)](https://pypi.org/project/twitter-cli/) 一款终端优先的 Twitter/X CLI:无需 API keys 即可读取时间线、书签和用户资料。 ## 更多工具 - [xhs-cli](https://github.com/jackwener/xhs-cli) — 小红书 CLI,用于笔记和账号工作流 - [bilibili-cli](https://github.com/jackwener/bilibili-cli) — Bilibili CLI,用于视频、用户、搜索和动态 [English](#english) | [中文](#中文) ## 英语 ### 功能特性 **读取:** - 时间线:获取 `for-you` 和 `following` 信息流 - 书签:列出你账号中保存的推文 - 搜索:通过关键词查找推文,支持 Top/Latest/Photos/Videos 标签页 - 推文详情:查看推文及其回复 - 列表时间线:获取 Twitter List 中的推文 - 用户查询:获取用户资料、推文、点赞、粉丝和关注 - JSON 输出:导出任意数据用于脚本处理 - 可选评分过滤器:按互动权重对推文进行排名 **写入:** - 发推:创建新推文和回复 - 删除:删除你自己的推文 - 点赞 / 取消点赞:管理推文点赞 - 转推 / 取消转推:管理转推 - 收藏:添加/移除书签 **认证与反检测:** - Cookie 认证:使用浏览器 cookies 或环境变量 - 完整 Cookie 转发:提取所有浏览器 cookies 以实现真实的浏览器指纹 - TLS 指纹模拟:`curl_cffi` 配合动态 Chrome 版本匹配 - `x-client-transaction-id` 请求头生成 - 请求时序抖动以避免模式检测 - 写入操作延迟(1.5–4秒随机)以缓解速率限制 - 通过 `TWITTER_PROXY` 环境变量支持代理 ### 安装 ``` # 推荐:uv tool(快速、隔离) uv tool install twitter-cli # 替代方案:pipx pipx install twitter-cli ``` 从源码安装: ``` git clone git@github.com:jackwener/twitter-cli.git cd twitter-cli uv sync ``` ### 快速开始 ``` # 获取主页时间线 twitter feed # 获取 Following 时间线 twitter feed -t following # 显式启用 ranking filter twitter feed --filter ``` ### 使用方法 ``` # Feed twitter feed --max 50 twitter feed --json > tweets.json twitter feed --input tweets.json # Bookmarks twitter favorites twitter favorites --max 30 --json # 搜索 twitter search "Claude Code" twitter search "AI agent" -t Latest --max 50 twitter search "机器学习" --json twitter search "topic" -o results.json # Save to file twitter search "trending" --filter # Apply ranking filter # Tweet 详情(查看 tweet + 回复) twitter tweet 1234567890 twitter tweet https://x.com/user/status/1234567890 # List 时间线 twitter list 1539453138322673664 # User twitter user elonmusk twitter user-posts elonmusk --max 20 twitter user-posts elonmusk -o tweets.json twitter likes elonmusk --max 30 twitter likes elonmusk -o likes.json twitter followers elonmusk --max 50 twitter following elonmusk --max 50 # 写操作 twitter post "Hello from twitter-cli!" twitter post "reply text" --reply-to 1234567890 twitter delete 1234567890 twitter like 1234567890 twitter unlike 1234567890 twitter retweet 1234567890 twitter unretweet 1234567890 twitter favorite 1234567890 twitter unfavorite 1234567890 ``` ### 认证 twitter-cli 使用以下认证优先级: 1. **环境变量**:`TWITTER_AUTH_TOKEN` + `TWITTER_CT0` 2. **浏览器 cookies**(推荐):从 Chrome/Edge/Firefox/Brave 自动提取 推荐使用浏览器提取方式 —— 它会转发所有 Twitter cookies(不仅仅是 `auth_token` + `ct0`),使请求与真实浏览器流量无法区分。 加载 cookies 后,CLI 会执行轻量级验证。需要账号访问的命令在遇到明确的认证错误(`401/403`)时会快速失败。 ### 代理支持 设置 `TWITTER_PROXY` 以通过代理路由所有请求: ``` # HTTP proxy export TWITTER_PROXY=http://127.0.0.1:7890 # SOCKS5 proxy export TWITTER_PROXY=socks5://127.0.0.1:1080 ``` 使用代理有助于降低基于 IP 的速率限制风险。 ### 配置 在你的工作目录中创建 `config.yaml`: ``` fetch: count: 50 filter: mode: "topN" # "topN" | "score" | "all" topN: 20 minScore: 50 lang: [] excludeRetweets: false weights: likes: 1.0 retweets: 3.0 replies: 2.0 bookmarks: 5.0 views_log: 0.5 rateLimit: requestDelay: 2.5 # base delay between requests (randomized ×0.7–1.5) maxRetries: 3 # retry count on rate limit (429) retryBaseDelay: 5.0 # base delay for exponential backoff maxCount: 200 # hard cap on fetched items ``` 过滤行为: - 默认行为:除非传入 `--filter`,否则不进行排名过滤 - 使用 `--filter`:使用 `config.filter` 对推文进行评分/排序 评分公式: ``` score = likes_w * likes + retweets_w * retweets + replies_w * replies + bookmarks_w * bookmarks + views_log_w * log10(max(views, 1)) ``` 模式行为: - `mode: "topN"`:按分数保留最高的 `topN` 条推文 - `mode: "score"`:保留 `score >= minScore` 的推文 - `mode: "all"`:按分数排序后返回所有推文 ### 最佳实践(避免封号) - **使用代理** — 设置 `TWITTER_PROXY` 以避免直接 IP 暴露 - **保持请求量低** — 使用 `--max 20` 而不是 `--max 500` - **不要过于频繁运行** — 每次启动都会获取 x.com 以初始化反检测请求头 - **使用浏览器 cookie 提取** — 提供完整的 cookie 指纹 - **避免数据中心 IP** — 住宅代理更安全 ### 故障排除 - `No Twitter cookies found` - 确保你已在支持的浏览器中登录 `x.com`。 - 或者手动设置 `TWITTER_AUTH_TOKEN` 和 `TWITTER_CT0`。 - `Cookie expired or invalid (HTTP 401/403)` - 重新登录 `x.com` 并重试。 - `Twitter API error 404` - 当上游 GraphQL 查询 ID 轮换时可能会发生这种情况。 - 重试命令;客户端会尝试实时的 queryId 回退。 - `Invalid tweet JSON file` - 使用 `twitter feed --json > tweets.json` 重新生成输入。 ### 开发 ``` # 安装 dev dependencies uv sync --extra dev # Lint + 测试 uv run ruff check . uv run pytest -q ``` ### 项目结构 ``` twitter_cli/ ├── __init__.py ├── cli.py ├── client.py ├── auth.py ├── config.py ├── constants.py ├── filter.py ├── formatter.py ├── serialization.py └── models.py ``` ### 作为 AI Agent Skill 使用 twitter-cli 附带 [`SKILL.md`](./SKILL.md),以便 AI agents 可以执行常见的 X/Twitter 工作流。 #### Claude Code / Antigravity ``` # Clone 到你的项目 skills 目录中 mkdir -p .agents/skills git clone git@github.com:jackwener/twitter-cli.git .agents/skills/twitter-cli # 或仅复制 SKILL.md curl -o .agents/skills/twitter-cli/SKILL.md \ https://raw.githubusercontent.com/jackwener/twitter-cli/main/SKILL.md ``` #### OpenClaw / ClawHub 从 ClawHub 安装: ``` clawhub install twitter-cli ``` 安装后,OpenClaw 可以直接调用 `twitter-cli` 命令。 ## 中文 ### 功能概览 **读取:** - 时间线读取:支持 `for-you` 和 `following` - 收藏读取:查看账号书签推文 - 搜索:按关键词搜索推文,支持 Top/Latest/Photos/Videos - 推文详情:查看推文及其回复 - 列表时间线:获取 Twitter List 的推文 - 用户查询:查看用户资料、推文、点赞、粉丝和关注 - JSON 输出:便于脚本处理 **写入:** - 发推:发布新推文和回复 - 删除:删除自己的推文 - 点赞 / 取消点赞 - 转推 / 取消转推 - 收藏 / 取消收藏:favorite/unfavorite **认证与反风控:** - Cookie 认证:支持环境变量和浏览器自动提取 - 完整 Cookie 转发:提取浏览器中所有 Twitter Cookie - TLS 指纹伪装:`curl_cffi` 动态匹配 Chrome 版本 - `x-client-transaction-id` 请求头生成 - 请求时序随机化(jitter) - 写操作随机延迟(1.5–4 秒),降低频率风控 - 代理支持:`TWITTER_PROXY` 环境变量 ### 安装 ``` # 推荐:uv tool uv tool install twitter-cli ``` ### 使用指南 ``` # 时间线 twitter feed twitter feed -t following twitter feed --filter # 收藏 twitter favorites # 搜索 twitter search "Claude Code" twitter search "AI agent" -t Latest --max 50 twitter search "topic" -o results.json # 保存到文件 twitter search "trending" --filter # 启用排序筛选 # 推文详情 twitter tweet 1234567890 # 列表时间线 twitter list 1539453138322673664 # 用户 twitter user elonmusk twitter user-posts elonmusk --max 20 twitter user-posts elonmusk -o tweets.json twitter likes elonmusk --max 30 twitter likes elonmusk -o likes.json twitter followers elonmusk twitter following elonmusk # 写操作 twitter post "你好,世界!" twitter post "回复内容" --reply-to 1234567890 twitter delete 1234567890 twitter like 1234567890 twitter unlike 1234567890 twitter retweet 1234567890 twitter unretweet 1234567890 twitter favorite 1234567890 twitter unfavorite 1234567890 ``` ### 认证说明 认证优先级: 1. **环境变量**:`TWITTER_AUTH_TOKEN` + `TWITTER_CT0` 2. **浏览器提取**(推荐):Chrome/Edge/Firefox/Brave 全量 Cookie 提取 推荐使用浏览器提取方式,会转发所有 Twitter Cookie,让请求和真实浏览器完全一致。 ### 代理支持 设置 `TWITTER_PROXY` 环境变量即可: ``` export TWITTER_PROXY=http://127.0.0.1:7890 # 或 SOCKS5 export TWITTER_PROXY=socks5://127.0.0.1:1080 ``` 使用代理可以降低 IP 维度的风控风险。 ### 筛选算法 只有在传入 `--filter` 时才会启用筛选评分;默认不筛选。 评分公式: ``` score = likes_w * likes + retweets_w * retweets + replies_w * replies + bookmarks_w * bookmarks + views_log_w * log10(max(views, 1)) ``` 模式说明: - `mode: "topN"`:按分数排序后保留前 `topN` 条 - `mode: "score"`:仅保留 `score >= minScore` 的推文 - `mode: "all"`:按分数排序后全部保留 ### 常见问题 - 报错 `No Twitter cookies found`:请先登录 `x.com` 或手动设置环境变量。 - 报错 `Cookie expired or invalid`:Cookie 过期,重新登录后重试。 - 报错 `Twitter API error 404`:通常是 queryId 轮换,重试即可。 ### 使用建议(防封号) - **使用代理** — 设置 `TWITTER_PROXY`,避免裸 IP 直连 - **控制请求量** — 用 `--max 20` 而不是 `--max 500` - **避免频繁启动** — 每次启动都会访问 x.com 初始化反检测请求头 - **使用浏览器 Cookie 提取** — 提供完整 Cookie 指纹 - **避免数据中心 IP** — 住宅代理更安全 - Cookie 仅在本地使用,不会被本工具上传 ### 作为 AI Agent Skill 使用 twitter-cli 提供了 [`SKILL.md`](./SKILL.md),可让 AI Agent 更稳定地调用本工具。 #### Claude Code / Antigravity ``` # 克隆到项目 skills 目录 mkdir -p .agents/skills git clone git@github.com:jackwener/twitter-cli.git .agents/skills/twitter-cli # 或仅下载 SKILL.md curl -o .agents/skills/twitter-cli/SKILL.md \ https://raw.githubusercontent.com/jackwener/twitter-cli/main/SKILL.md ``` #### OpenClaw / ClawHub 通过 ClawHub 安装: ``` clawhub install twitter-cli ```
标签:BeEF, CLI, Cookie, curl_cffi, Feed流, Python, TLS指纹伪造, Twitter, WiFi技术, X, 书签管理, 云资产清单, 反爬虫, 开源, 无后门, 爬虫, 社交媒体, 终端, 绕过检测, 网络安全, 网络调试, 自动化, 逆向工具, 逆向工程, 隐私保护, 非官方API