douyin-cli 2026.7.19

A Rust CLI for Douyin OpenAPI and web workflows
Documentation

douyin

douyin-cli

面向抖音开放平台与网页工作流的 Rust 命令行工具,提供 OAuth、OpenAPI、Cookie 抓取、媒体下载、本地字幕和自动化集成。

功能

  • 官方 OAuth 授权链接生成、code 换 token、token 刷新
  • 官方 client_tokenaccess_token 管理
  • 授权用户信息查询
  • 官方评论列表、评论回复列表、评论回复
  • 企业号私信消息发送
  • 任意官方 OpenAPI 路径请求
  • 网页作品、账号、话题、音乐、合集与搜索结果采集/下载
  • 网页评论与回复采集
  • stdio MCP 服务器,供 MCP 客户端调用抖音 OpenAPI 工具
  • whisper.cpp 本地字幕生成
  • Obscura/自动化运行时集成

安装

从源码安装 Rust CLI:

cargo install --path .

开发构建和验证:

cargo build --release --locked
cargo test --locked
cargo clippy --locked --all-targets -- -D warnings
./target/release/douyin --help

Agent Skill

安装本仓库配套 skill:

bunx skills add LIghtJUNction/douyin -g
npx skills add LIghtJUNction/douyin -g

官方 OAuth 接入

准备抖音开放平台应用的 client_keyclient_secret、回调地址和所需 scope。

douyin auth login \
  --client-key "$DOUYIN_CLIENT_KEY" \
  --client-secret "$DOUYIN_CLIENT_SECRET" \
  --redirect-uri "https://example.com/callback" \
  --scope user_info \
  --scope item.comment

命令会输出官方授权链接。用户授权后,将回调中的 code 保存为 token:

douyin auth code --code "授权码"

也可以一步完成:

douyin auth login \
  --client-key "$DOUYIN_CLIENT_KEY" \
  --client-secret "$DOUYIN_CLIENT_SECRET" \
  --redirect-uri "https://example.com/callback" \
  --scope user_info \
  --code "授权码"

本地开发或内网回调调试时,也可以让 CLI 临时监听回调并自动捕获 code。此模式会把回调地址设置为本机监听地址,需确保开放平台应用允许对应回调地址:

douyin auth login \
  --client-key "$DOUYIN_CLIENT_KEY" \
  --client-secret "$DOUYIN_CLIENT_SECRET" \
  --scope user_info \
  --listen \
  --callback-port 8787

检查和刷新授权:

douyin auth status
douyin auth refresh
douyin auth logout

授权后,官方 OpenAPI 命令会自动读取已保存的 token 和 open_id,自动化调用不需要重复传参:

douyin api userinfo
douyin api comment-list --item-id "$DOUYIN_ITEM_ID"

网页端 Cookie 与兼容采集

除官方 OpenAPI 外,douyin 还保留网页端 Cookie 流程,用于搜索、主页作品、单作品和评论等兼容采集场景。Cookie 会保存到用户配置目录;测试或自动化时可用 DOUYIN_HOME 隔离状态。

douyin auth cookie-login --cookie "sessionid=...; ttwid=..."
douyin auth cookie-status
douyin -u "搜索关键词" -t search -l 5 --no-download
douyin -u "https://www.douyin.com/video/..." -t aweme
douyin auth cookie-logout

douyin comment 是隐藏兼容命令,不会出现在根命令帮助中,适合从单个作品 URL 抓取评论,也可以输出适合对话微调的数据格式:

douyin comment "https://www.douyin.com/video/..." --limit 100 --output comments.json
douyin comment "https://www.douyin.com/video/..." \
  --with-replies \
  --format chatml-jsonl \
  --output comments.jsonl

Obscura 集成

douyin 提供稳定的 JSON 输出和集成 manifest,Obscura 可以直接发现命令能力并调用官方 OpenAPI。

douyin obscura manifest
douyin obscura status
douyin auth status --json

网页评论抓取

评论抓取继续使用网页 Cookie,并复用仓库原有的 Node.js 签名脚本:

douyin auth cookie-login --cookie "sessionid=...; ttwid=..."
douyin comment "https://www.douyin.com/video/..." --limit 100
douyin comment "https://www.douyin.com/video/..." --with-replies --format chatml-jsonl --output comments.jsonl

网页采集与下载

根命令兼容 URL、ID、搜索关键词和目标文件,默认读取 douyin auth cookie-login 保存的 Cookie:

douyin -u "搜索关键词" -t search -l 5 --no-download
douyin -u "https://www.douyin.com/video/..." -t aweme
douyin -u "https://www.douyin.com/user/..." -t post -l 20
douyin -u targets.txt -p ./downloads --download-title --download-cover

支持 postfavoritemusichashtagsearchfollowingfollowercollectionmixaweme 类型。采集结果保存为 JSON 和 aria2 兼容下载清单;未指定 --no-download 时由 Rust 下载器写入媒体文件。

MCP 服务器

douyin mcp 会通过 stdio 启动 MCP 服务器,默认复用 douyin auth 保存的官方 OpenAPI 授权信息。

douyin mcp

MCP 客户端配置示例:

{
  "mcpServers": {
    "douyin": {
      "command": "douyin",
      "args": ["mcp"]
    }
  }
}

Claude Code 命令行配置:

claude mcp add douyin -- douyin mcp
claude mcp list
claude mcp get douyin

Codex CLI 命令行配置:

codex mcp add douyin -- douyin mcp
codex mcp list
codex mcp get douyin

可用工具包括授权状态、用户信息、评论列表、评论回复、企业号私信发送和通用 OpenAPI 请求。首次使用前先完成授权:

douyin auth login \
  --client-key "$DOUYIN_CLIENT_KEY" \
  --client-secret "$DOUYIN_CLIENT_SECRET" \
  --redirect-uri "https://example.com/callback" \
  --scope user_info

douyin auth code --code "授权码"
douyin mcp

推荐接入顺序:

douyin auth login \
  --client-key "$DOUYIN_CLIENT_KEY" \
  --client-secret "$DOUYIN_CLIENT_SECRET" \
  --redirect-uri "https://example.com/callback" \
  --scope user_info

douyin auth code --code "授权码"
douyin auth status --json

官方 OpenAPI

douyin api client-token \
  --client-key "$DOUYIN_CLIENT_KEY" \
  --client-secret "$DOUYIN_CLIENT_SECRET"

douyin api userinfo \
  --token "$DOUYIN_ACCESS_TOKEN" \
  --open-id "$DOUYIN_OPEN_ID"

douyin api comment-list \
  --token "$DOUYIN_ACCESS_TOKEN" \
  --open-id "$DOUYIN_OPEN_ID" \
  --item-id "$DOUYIN_ITEM_ID"

douyin api comment-reply \
  --token "$DOUYIN_ACCESS_TOKEN" \
  --open-id "$DOUYIN_OPEN_ID" \
  --item-id "$DOUYIN_ITEM_ID" \
  --comment-id "$DOUYIN_COMMENT_ID" \
  --content "谢谢反馈"

企业号私信发送需要应用已开通 enterprise.im 权限,并从私信事件回调中拿到接收方 to_user_id

douyin auth login \
  --client-key "$DOUYIN_CLIENT_KEY" \
  --client-secret "$DOUYIN_CLIENT_SECRET" \
  --redirect-uri "https://example.com/callback" \
  --scope enterprise.im

douyin api im-message-send \
  --to-user-id "$DOUYIN_TO_USER_ID" \
  --text "你好,已收到" \
  --yes

通用请求:

douyin api request GET /oauth/userinfo/ \
  --token "$DOUYIN_ACCESS_TOKEN" \
  --param open_id="$DOUYIN_OPEN_ID"

本地字幕

douyin subtitle video.mp4 --language zh
douyin subtitle voice.mp3 --language zh
douyin subtitle meeting.wav --format txt
douyin subtitle video.mp4 --model small --format srt

输入可以是本地视频或音频文件,输出支持 SRT、VTT、TXT 和 JSON。默认写到同名字幕文件,例如 voice.mp3 会生成 voice.srt。首次使用模型别名时会从 whisper.cpp 的 Hugging Face 仓库下载 GGML 模型;也可以直接传入本地 .bin 模型:

douyin subtitle video.mp4 --model ./ggml-small.bin --local-files-only
douyin subtitle *.mp4 --output subtitles/ --format vtt

macOS 构建默认启用 Metal。其他平台默认使用 CPU;需要 CUDA 时以对应特性构建:

cargo install --path . --features cuda
douyin subtitle video.mp4 --device cuda --language zh

--backend auto--backend whisper-cpp 使用同一 Rust 原生后端。--compute-type 仅为旧命令兼容参数;实际量化精度由所选 GGML 模型决定。

环境变量

  • DOUYIN_CLIENT_KEY
  • DOUYIN_CLIENT_SECRET
  • DOUYIN_ACCESS_TOKEN

技术栈

  • Rust 2024 edition
  • Clap
  • Reqwest + rustls
  • Serde JSON
  • Symphonia + whisper.cpp
  • Cargo