k41-vibe/X-CLI

GitHub: k41-vibe/X-CLI

一个基于逆向工程 X 内部 GraphQL API 的非官方命令行及终端 UI 客户端,无需开发者账号即可在终端中操作 X 的完整社交功能。

Stars: 0 | Forks: 0

# Xcli 一个命令行客户端**及**终端 UI,专为 **X (Twitter)** 打造,基于该网站 **非官方的内部 GraphQL API** 构建 —— 即 x.com 网页 应用调用的相同 endpoint。无需开发者账号,无需官方 API 密钥。 ## 功能 **CLI**(可编写脚本 —— 通过管道将 `--json` 传递给你自己的工具) - 发布 / 删除,支持**图片 / 视频附件**和**帖子串** - 点赞 / 转发 / 书签(及撤销),**引用**,关注 / 取关 - 屏蔽 / 拉黑(及撤销) - 主页时间线(关注与为你推荐)、任意用户的个人资料与推文 - 搜索(热门 / 最新 / 用户 / 媒体 / 列表,支持 `from:` / `min_faves:` 过滤器) - 点赞、书签、通知 - 私信:收件箱、阅读、发送、删除 - 对话 / 回复帖子串 - 媒体:显示 URL、内联预览、下载 - 所有读取命令均支持 `--json` 导出 **TUI**(`xcli tui`)—— 一个鼠标驱动的终端界面 - 标签页:关注 / 为你推荐 / 搜索 / 通知 / 私信 - 每条推文的操作按钮:点赞、转发、书签、回复、引用、帖子串、媒体、删除 - 点击用户名以打开作者的个人资料;可在其中进行关注 / 屏蔽 / 拉黑 - 内联图片预览、引用框、无限滚动、确认对话框 - 启动闪屏 Logo - **英文或日文 UI**:`xcli tui --en`(默认为日文) ## 工作原理 - Endpoint:`https://x.com/i/api/graphql/{queryId}/{Operation}` - 认证:公开的网页 Bearer token + 你的 `auth_token` / `ct0` cookie + `x-csrf-token` + `x-client-transaction-id` - `x-client-transaction-id` 使用 [XClientTransaction](https://github.com/iSarabjitDhiman/XClientTransaction) 生成 - `queryId` / `features` 会随着 X 的部署而变化,因此 `xcli sync` 会从 公开的 JS bundle 中刷新它们,且缺失的 `features` 会从 API 的 自身错误响应中自动修复 ## 安装 ``` pip install -e . ``` 会拉取 `requests`、`beautifulsoup4`、`XClientTransaction`、`Pillow`、 `textual` 和 `rich-pixels`。 ## 设置 你的凭证**仅**存放在 `~/.xcli/config.json` 中(位于 repo 之外)—— 代码附带的是空默认值。只需提供一次你自己的 cookie: 1. 在 Chrome 中,打开 x.com → DevTools (F12) → **Application → Cookies → https://x.com** 2. 复制 **`auth_token`** 和 **`ct0`** 的值 3. 将它们粘贴到 `~/.xcli/config.json` 中: ``` { "auth_token": "", "ct0": "", "lang": "ja", "min_interval_sec": 2.0 } ``` `auth_token` 是一个会话凭证 —— 请将其视为密码妥善保管,切勿提交或 分享。它的有效期很长,因此在过期之前这是一次性操作 (`[認証エラー]` / 认证错误意味着该刷新了)。 ## 用法 ``` xcli sync # refresh queryIds (first run / when it breaks) xcli whoami # your handle xcli post "hello" # post xcli post "with pics" --media a.jpg b.jpg xcli thread "1/2" "2/2" # thread xcli quote "nice" # quote tweet xcli delete xcli like / xcli unlike xcli rt / xcli unrt xcli bookmark / xcli unbookmark xcli follow / xcli unfollow xcli mute / xcli unmute xcli block / xcli unblock xcli timeline -n 50 [--algo] # following (or for-you) xcli user --tweets xcli search "query" --tab latest # top/latest/people/media/lists xcli likes / xcli bookmarks / xcli notifications xcli conversation # reply thread xcli media [--show|--open|--download DIR] xcli dms / xcli dm "text" / xcli dm-read / xcli dm-delete xcli timeline --json | jq '.[].text' # export / pipe into other tools xcli tui # terminal UI (Japanese) xcli tui --en # terminal UI (English) ``` ## 许可证 [MIT](LICENSE) © 2026 k41-vibe 🤖 **与 [Claude](https://www.anthropic.com/claude) (Anthropic) 共同创作。** 非官方 API 是逆向工程得到的,CLI + TUI 是与 Claude 共同设计并 实现的。
标签:GraphQL, Python, 云资产清单, 字符串匹配, 无后门, 社交媒体, 终端UI, 逆向工具, 逆向工程