字
字节笔记本
2026年3月13日
x-cli:功能强大的 Twitter/X 命令行工具
API中转
¥120
本文介绍 x-cli,一个功能强大的 Twitter/X 命令行工具。该项目是原有 Ruby 版本 t CLI 的 Rust 重写版本,保留了原有的命令和标志接口,同时提供了更现代化的代码库和更好的跨平台支持。x-cli 支持 Twitter API 的完整功能,包括发推、搜索、列表管理、流式处理等,是 Twitter/X 高级用户的必备工具。
项目简介
x-cli(原名 t CLI)是一个开源的 Twitter/X 命令行工具,由 Erik Michaels-Ober 开发维护。项目最初使用 Ruby 编写,后来完全重写为 Rust 实现,以提供更好的分发体验和跨平台支持。重写后的版本保留了所有原有功能,同时提供了更小的二进制文件、更快的执行速度和更简单的安装方式。
核心特性
- 完整的 Twitter API 支持:覆盖 Twitter API 的所有主要功能
- 命令行界面:强大的 CLI 工具,支持脚本化和自动化操作
- 多账号管理:支持多个 Twitter 账号的管理和切换
- 流式处理:实时获取 Twitter 数据流(home timeline、搜索、用户等)
- 搜索功能:强大的推文搜索和过滤能力
- 列表管理:创建、管理和查看 Twitter 列表
- 用户管理:查看用户信息、关注/取消关注、屏蔽等
- 媒体处理:上传图片和视频到 Twitter
- 跨平台支持:提供 Linux、macOS、Windows 的预编译二进制文件
- 配置持久化:支持配置文件(.xrc)保存账号信息和设置
- 历史兼容:保留 Ruby 版本实现,确保向后兼容
技术栈
- Rust 1.93.1 - 核心开发语言(通过 rust-toolchain.toml 固定版本)
- Tokio - 异步运行时
- Reqwest - HTTP 客户端
- Serde - 序列化/反序列化
- Clap - 命令行参数解析
- OAuth2 - Twitter 认证
迁移说明
项目已完成从 Ruby 到 Rust 的重大重构:
t已重命名为x- 使用 Rust 从头重写(替代原 Ruby 实现)
- 主要原因是分发和支持:Rust 二进制文件更容易编译和可靠地发布
- 之前的 Ruby 版本需要用户设置和维护兼容的 Ruby 环境
- 原 Ruby 实现保留在
legacy/目录中供参考
安装指南
前置要求
- Rust 1.93.1+(如从源码编译)
- Twitter Developer Account(需要 API 密钥)
方法一:使用预编译二进制文件(推荐)
项目在 GitHub Releases 中提供预编译的二进制文件:
- 访问 GitHub Releases
- 下载适合你平台的二进制文件:
- Linux:
x-x86_64-unknown-linux-gnu - macOS Intel:
x-x86_64-apple-darwin - macOS Apple Silicon:
x-aarch64-apple-darwin - Windows:
x-x86_64-pc-windows-msvc.exe
- Linux:
- 将二进制文件放到 PATH 中的目录
- 重命名为
x(Linux/macOS)或x.exe(Windows)
方法二:从源码编译
bash
# 克隆仓库
git clone https://github.com/sferik/x-cli.git
cd x-cli
# 编译安装
cargo install --path .
# 或直接运行
cargo run -- version方法三:使用 cargo-release 构建发布版本
bash
# 安装 cargo-release
cargo install cargo-release --locked
# 标记并推送新版本
cargo release-tag快速开始
首次设置
bash
# 设置账号(会引导你完成 OAuth 认证)
x accounts
# 或指定配置文件路径
x accounts --profile /path/to/.xrc基本使用
bash
# 查看版本信息
x version
# 查看时间线
x timeline
# 发送推文
x update "Hello from x-cli!"
# 搜索推文
x search "rust lang"
# 查看用户信息
x users show username
# 关注用户
x follow username
# 取消关注
x unfollow username账号管理
bash
# 列出所有账号
x accounts
# 设置活动账号
x set active
# 删除账号
x delete account使用示例
场景 1:搜索并分析推文
bash
# 搜索特定关键词的推文
x search "rust programming" --count 100
# 搜索特定用户的推文
x search "from:username keyword"
# 搜索包含链接的推文
x search "rust filter:links"场景 2:流式处理实时数据
bash
# 监听主页时间线流
x stream all
# 监听搜索结果流
x stream search "rust lang"
# 监听用户推文流
x stream users username1,username2
# 限制流事件数量(用于测试)
X_STREAM_MAX_EVENTS=10 x stream all场景 3:列表管理
bash
# 创建列表
x list create "Rust Developers"
# 添加成员到列表
x list add "Rust Developers" username1,username2
# 查看列表时间线
x list timeline "Rust Developers"
# 列出所有列表
x lists
# 删除列表
x list remove "Rust Developers"场景 4:媒体上传
bash
# 上传图片并发布推文
x update "Check out this photo!" --file /path/to/image.jpg
# 上传多张图片(Twitter 最多支持 4 张)
x update "Multiple photos" --file photo1.jpg --file photo2.jpg
# 上传视频
x update "Video post" --file /path/to/video.mp4场景 5:批量操作
bash
# 批量关注用户
x follow user1,user2,user3
# 批量删除推文
x delete --force 1234567890,1234567891,1234567892
# 批量静音用户
x mute user1,user2,user3命令参考
核心命令
| 命令 | 说明 |
|---|---|
accounts | 管理多个 Twitter 账号 |
set active | 设置活动账号 |
delete account | 删除保存的账号 |
version | 显示版本信息 |
ruler | 管理规则和配置 |
推文操作
| 命令 | 说明 |
|---|---|
update | 发送新推文 |
delete | 删除推文 |
timeline | 查看主页时间线 |
mentions | 查看提及 |
retweet | 转发推文 |
favorite | 喜欢推文 |
unretweet | 取消转发 |
unfavorite | 取消喜欢 |
搜索和发现
| 命令 | 说明 |
|---|---|
search | 搜索推文 |
users | 用户信息查询 |
user | 查看单个用户详细信息 |
流式处理
| 命令 | 说明 |
|---|---|
stream all | OAuth2 样本流(主页时间线) |
stream matrix | OAuth2 样本流 |
stream search | v2 过滤流 + 搜索规则 |
stream users | 用户推文流 |
stream list | 列表时间线流 |
stream timeline | v2 过滤流 + 时间线 |
列表管理
| 命令 | 说明 |
|---|---|
lists | 列出所有列表 |
list create | 创建新列表 |
list add | 添加成员到列表 |
list remove | 删除列表或移除成员 |
list timeline | 查看列表时间线 |
用户操作
| 命令 | 说明 |
|---|---|
follow | 关注用户 |
unfollow | 取消关注 |
block | 屏蔽用户 |
unblock | 取消屏蔽 |
mute | 静音用户 |
unmute | 取消静音 |
配置文件
默认配置文件位置:
- 主配置:
~/.xrc - 向后兼容:如果
~/.xrc不存在,会读取~/.trc并在写入时迁移
环境变量
X_STREAM_MAX_EVENTS(或T_STREAM_MAX_EVENTS):限制流事件数量,用于测试和自动化
开发
bash
# 运行测试
cargo test
# 运行特定命令
cargo run -- version
# 使用指定配置文件
cargo run -- accounts --profile /path/to/.xrc
# 检查代码格式
cargo fmt
# 运行 Clippy
cargo clippy项目结构
text
x-cli/
├── legacy/ # 原 Ruby 实现
│ ├── lib/t/ # 命令定义
│ └── spec/fixtures/ # 测试固件
├── src/ # Rust 源码
├── x-api/ # API 包(HTTP、认证、重试等)
├── tests/ # 测试
│ └── parity_fixtures.rs # 行为对等性测试
├── Cargo.toml # Rust 项目配置
├── rust-toolchain.toml # Rust 版本固定(1.93.1)
└── README.md发布流程
项目使用自动化发布流程:
- 更新
Cargo.toml中的版本号 - 使用
cargo-release标记版本:bashcargo release-tag - GitHub Actions 自动构建并发布二进制文件
- 标签消息来自
Cargo.toml的tag-message元数据
应用场景
- 社交媒体管理:批量管理 Twitter 账号和内容
- 数据采集:实时流式采集 Twitter 数据进行分析
- 自动化运营:脚本化发布推文、互动、搜索
- 监控和分析:监控关键词、用户、话题的实时动态
- 内容备份:备份推文、时间线、列表内容
- 开发测试:Twitter API 功能测试和集成
注意事项
- 需要 Twitter Developer Account 和 API 密钥
- Twitter API 有速率限制,频繁操作可能被限流
- 流式处理会持续占用网络连接,注意流量控制
- 某些功能可能需要 Twitter API Premium 订阅
- Rust 版本固定在 1.93.1,确保环境兼容性
- 建议使用环境变量存储敏感信息(API 密钥等)
项目链接
- GitHub 仓库:https://github.com/sferik/x-cli
- 原版本(Ruby):https://github.com/sferik/t(已迁移到 legacy/ 目录)
- 开源协议:MIT License
分享: