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, 逆向工具, 逆向工程