ByteNoteByteNote

字节笔记本

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 中提供预编译的二进制文件:

  1. 访问 GitHub Releases
  2. 下载适合你平台的二进制文件:
    • 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
  3. 将二进制文件放到 PATH 中的目录
  4. 重命名为 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 allOAuth2 样本流(主页时间线)
stream matrixOAuth2 样本流
stream searchv2 过滤流 + 搜索规则
stream users用户推文流
stream list列表时间线流
stream timelinev2 过滤流 + 时间线

列表管理

命令说明
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

发布流程

项目使用自动化发布流程:

  1. 更新 Cargo.toml 中的版本号
  2. 使用 cargo-release 标记版本:
    bash
    cargo release-tag
  3. GitHub Actions 自动构建并发布二进制文件
  4. 标签消息来自 Cargo.tomltag-message 元数据

应用场景

  • 社交媒体管理:批量管理 Twitter 账号和内容
  • 数据采集:实时流式采集 Twitter 数据进行分析
  • 自动化运营:脚本化发布推文、互动、搜索
  • 监控和分析:监控关键词、用户、话题的实时动态
  • 内容备份:备份推文、时间线、列表内容
  • 开发测试:Twitter API 功能测试和集成

注意事项

  • 需要 Twitter Developer Account 和 API 密钥
  • Twitter API 有速率限制,频繁操作可能被限流
  • 流式处理会持续占用网络连接,注意流量控制
  • 某些功能可能需要 Twitter API Premium 订阅
  • Rust 版本固定在 1.93.1,确保环境兼容性
  • 建议使用环境变量存储敏感信息(API 密钥等)

项目链接

分享: