使用 twitter-cli 完成所有 Twitter/X 操作 — 读取推文、发布、回复、引用、点赞、转发、关注、搜索、用户查询。在需要时调用。
Twitter-cli – Twitter/X CLI工具.是一项面向实际任务的技能,主要用于Binary: twitter.;Credities:浏览器饼干(自动提取)或env vars.;
IMPORANTF AGENTS:在执行任何Twitter-cli命令之前, Yo。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。结果生成后应检查内容的完整性、准确性、一致性和可用性,必要时抽样复核并根据反馈调整配置;涉及外部服务、账号凭据、个人信息或敏感数据时,还需遵守相应的权限、安全与合规要求。
二进制文件: twitter
认证凭证: 浏览器 Cookie(自动提取)或环境变量
# 安装(需 Python 3.8+) uv tool install twitter-cli # 或:pipx install twitter-cli # 升级至最新版(推荐,避免 API 错误) uv tool upgrade twitter-cli # 或:pipx upgrade twitter-cli
对 Agent 的重要提示:在执行任何 twitter-cli 命令前,你必须首先检查认证凭证是否存在。若不存在,则必须主动引导用户完成认证流程。请勿假设凭证已配置。
关键说明:写操作(发布推文、回复、引用推文)必须依赖完整浏览器 Cookie。仅通过环境变量提供 auth_token 和 ct0 可能导致 226 错误(“疑似自动化行为”)。为获得最佳效果,请使用浏览器 Cookie 提取方式。
twitter status --yaml >/dev/null && echo "AUTH_OK" || echo "AUTH_NEEDED"
若输出 AUTH_OK,可跳至「命令参考」章节;
若输出 AUTH_NEEDED,请继续引导用户完成以下步骤:
方法 A:浏览器 Cookie 提取(推荐)
请确保用户已在 Arc、Chrome、Edge、Firefox 或 Brave 中登录 x.com。twitter-cli 支持自动提取 Cookie。
所有 Chrome 用户配置文件将被自动扫描。如需指定特定配置文件,请设置:TWITTER_CHROME_PROFILE="Profile 2" twitter feed。
twitter whoami
方法 B:环境变量方式
export TWITTER_AUTH_TOKEN="<从浏览器获取的 auth_token>" export TWITTER_CT0="<从浏览器获取的 ct0>" twitter whoami
方法 C:完整 Cookie 字符串(适用于云环境/远程 Agent)
请告知用户:
我需要你的 Twitter 登录凭证。请按以下步骤获取:
- 使用 Chrome/Edge/Firefox 打开 https://x.com(确保已登录)
- 按
F12打开开发者工具 → 切换到 Network 标签页- 刷新当前页面,点击任意一条
x.com请求- 在 Request Headers 区域中找到 Cookie: 行,右键 → 复制其值
- 将完整的 Cookie 字符串发送给我
⚠️ Cookie 包含登录敏感信息,请勿分享给他人。
随后提取并设置环境变量:
FULL_COOKIE="<用户的 Cookie 字符串>" export TWITTER_AUTH_TOKEN=$(echo "$FULL_COOKIE" | grep -oE 'auth_token=[a-f0-9]+' | cut -d= -f2) export TWITTER_CT0=$(echo "$FULL_COOKIE" | grep -oE 'ct0=[a-f0-9]+' | cut -d= -f2) twitter whoami
| 现象 | Agent 应对措施 |
|---|---|
No Twitter cookies found |
引导用户在浏览器中登录 x.com,或手动设置环境变量 |
| 读操作正常,写操作返回 226 错误 | 缺少完整 Cookie —— 请改用浏览器 Cookie 提取方式,而非环境变量 |
Cookie expired (401/403) |
请用户重新登录 x.com 后重试 |
| 用户更改了密码 | 所有旧 Cookie 已失效 —— 需重新提取 |
twitter feed # 美观的表格输出
当标准输出非 TTY(例如管道或重定向)时,默认自动使用 YAML 格式。可通过 OUTPUT=yaml|json|rich|auto 显式覆盖。
twitter feed --yaml twitter feed --json | jq '.[0].text'
所有机器可读输出均遵循 SCHEMA.md 中定义的数据信封结构。
推文与用户数据现统一置于 .data 字段下。
--full-text 参数(仅限富文本表格)当用户希望在终端表格中查看完整推文内容时,请使用 --full-text。该参数影响如下富文本列表视图:feed、bookmarks、search、user-posts、likes、list,以及 tweet 命令中的回复表格。
它不会影响 --json、--yaml 或 -c(紧凑模式)输出。
twitter feed --full-text twitter search "AI agent" --full-text twitter user-posts elonmusk --max 20 --full-text twitter tweet 1234567890 --full-text
-c 参数(最小化 token 数量,适用于 LLM 上下文)twitter -c feed --max 10 # 最小字段集,非常适合 LLM 上下文 twitter -c search "AI" --max 20 # token 数量比 --json 减少约 80%
紧凑模式每条推文包含字段:id、author(@handle)、text(截断至 140 字符)、likes、rts、time(简短格式)
twitter status # 快速认证检查 twitter status --yaml # 结构化认证状态 twitter whoami # 当前已认证用户 twitter whoami --yaml # YAML 输出 twitter whoami --json # JSON 输出 twitter user elonmusk # 用户资料页 twitter user elonmusk --json # JSON 输出 twitter feed # 主页时间线(For You) twitter feed -t following # 关注时间线 twitter feed --max 50 # 限制结果数量 twitter feed --full-text # 在表格中显示完整正文 twitter feed --filter # 启用排序过滤器 twitter feed --yaml > tweets.yaml # 导出为 YAML 文件 twitter feed --input tweets.json # 从本地 JSON 文件读取 twitter bookmarks # 已收藏推文 twitter bookmarks --full-text # 在收藏表格中显示完整正文 twitter bookmarks --max 30 --yaml twitter search "keyword" # 搜索推文 twitter search "AI agent" -t Latest --max 50 twitter search "AI agent" --full-text # 在搜索结果中显示完整正文 twitter search "topic" -o results.json # 保存至文件 twitter tweet 1234567890 # 推文详情 + 回复 twitter tweet 1234567890 --full-text # 在回复表格中显示完整正文 twitter tweet https://x.com/user/status/12345 # 支持 URL 输入 twitter list 1539453138322673664 # 列表时间线 twitter list 1539453138322673664 --full-text twitter user-posts elonmusk --max 20 # 用户发布的推文 twitter user-posts elonmusk --full-text twitter likes elonmusk --max 30 # 用户点赞的推文(仅限自身账号,详见备注) twitter likes elonmusk --full-text twitter followers elonmusk --max 50 # 粉丝列表 twitter following elonmusk --max 50 # 关注列表
twitter post "Hello from twitter-cli!" # 发布推文 twitter reply 1234567890 "Great tweet!" # 单独回复(reply) twitter post "reply text" --reply-to 1234567890 # 通过 post 命令发起回复 twitter quote 1234567890 "Interesting take" # 引用推文(quote-tweet) twitter delete 1234567890 # 删除推文 twitter like 1234567890 # 点赞 twitter unlike 1234567890 # 取消点赞 twitter retweet 1234567890 # 转推 twitter unretweet 1234567890 # 取消转推 twitter bookmark 1234567890 # 收藏 twitter unbookmark 1234567890 # 取消收藏 twitter follow elonmusk # 关注用户 twitter unfollow elonmusk # 取关用户
twitter post "My tweet text" 2>/dev/null # 输出中包含推文链接:🔗 https://x.com/i/status/
TWEET_ID=$(twitter user-posts targetuser --max 1 --json | jq -r '.data[0].id') twitter reply "$TWEET_ID" "Nice post!"
# 发布首条推文,并捕获输出以获取 ID twitter post "Thread 1/3: First point" # 从输出中记录推文 ID,然后: twitter reply"2/3: Second point" twitter reply "3/3: Final point"
TWEET_ID=$(twitter search "interesting topic" --max 1 --json | jq -r '.data[0].id') twitter quote "$TWEET_ID" "This is a great insight!"
twitter search "interesting topic" --max 5 --json | jq -r '.data[].id' | while read id; do twitter like "$id" done
twitter user targethandle --json | jq '.data | {username, followers, bio}'
twitter follow targethandle
twitter user-posts elonmusk --max 20 --json | jq '.data | sort_by(.metrics.likes) | reverse | .[:3] | .[] | {id, text: .text[:80], likes: .metrics.likes}'
MY_NAME=$(twitter whoami --json | jq -r '.data.user.username') twitter followers "$MY_NAME" --max 200 --json | jq -r '.data[].username' | grep -q "targetuser" && echo "Yes" || echo "No"
# 紧凑模式:适用于 token 效率优先的 LLM 上下文 twitter -c feed -t following --max 30 twitter -c bookmarks --max 20 # 富文本表格:展示完整正文 twitter feed -t following --max 20 --full-text twitter search "AI agent" --max 20 --full-text # 完整 JSON:用于深度分析 twitter feed -t following --max 30 -o following.json twitter bookmarks --max 20 -o bookmarks.json
# 筛选获赞数超过 100 的推文
twitter search "AI safety" --max 20 --json | jq '[.data[] | select(.metrics.likes > 100)]'
# 仅提取作者与正文(前 100 字符)
twitter search "rust lang" --max 10 --json | jq '.data[] | {author: .author.screenName, text: .text[:100]}'
# 获取互动最高的 5 条推文 ID
twitter search "topic" --max 20 --json | jq '.data | sort_by(.metrics.likes) | reverse | .[:5] | .[].id'
过滤功能为可选启用项,通过 --filter 开启:
twitter feed --filter twitter bookmarks --filter
| 错误 | 原因 | 修复方式 |
|---|---|---|
No Twitter cookies found |
未完成认证 | 在浏览器中登录 x.com,或手动设置环境变量 |
| HTTP 226 | 触发自动化行为检测 | 改用浏览器 Cookie 提取方式(不推荐仅设环境变量) |
| HTTP 401/403 | Cookie 已过期 | 重新登录 x.com 后重试 |
| HTTP 404 | QueryId 轮换 | 重试即可(内置自动回退机制) |
| HTTP 429 | 请求频率超限 | 等待 15 分钟以上再重试 |
| Error 187 | 重复推文 | 修改推文文本内容 |
| Error 186 | 推文超长 | 保持在 280 字符以内 |
twitter likes 仅对当前登录账号有效相关专题
热门下载
相关下载
精品课程
共32课时 | 10.5万人学习
共23课时 | 7.7万人学习
共26课时 | 10.9万人学习