douyin-cli
面向抖音开放平台与网页工作流的 Rust 命令行工具,支持网页采集与下载、评论抓取、离线元数据统计、官方 OAuth/OpenAPI 和 stdio MCP。
安装
需要 Rust 1.88 或更高版本。网页采集和评论命令还需要系统中存在 node;其他命令不依赖 Node.js。
Arch Linux 可通过 AUR 的 douyin-cli 软件包 安装:
# 或
从 crates.io 安装稳定版:
更新到最新版本:
从源码安装开发版:
选择登录方式
本项目有两套相互独立的认证方式:
| 用途 | 登录方式 | 是否需要开放平台应用 |
|---|---|---|
| 搜索、主页作品、单作品下载、网页评论 | 浏览器 Cookie | 否 |
| 官方用户信息、官方评论接口、私信消息、MCP | 官方 OAuth | 是 |
Cookie 不能代替 OpenAPI token,OAuth token 也不能代替网页 Cookie。
使用浏览器 Cookie
先在浏览器登录抖音网页端,从开发者工具的网络请求头复制完整 Cookie 值。不要包含 Cookie: 前缀,也不要把真实 Cookie 发到聊天、日志或 Git 仓库。
--offline 只检查本地格式;不带该参数时会请求抖音登录态接口,尝试确认当前网页登录态。匿名网页接口即使返回成功也不能证明 Cookie 有效,因此不会作为登录依据。若遇到验证码、风控或上游接口变化,命令会明确报告“无法确认”,而不会误判为已登录。检查过程不会输出 Cookie 或响应正文。
也可以通过环境变量传入,避免每次添加 --cookie:
退出并删除保存的 Cookie:
使用官方 OAuth
先在抖音开放平台创建应用,准备 client_key、client_secret、允许的回调地址和所需 scope。评论接口使用 item.comment;私信接口使用 im.direct_message,发送图片还需 tool.image.upload。
推荐使用本机回调监听。开放平台应用中需要允许 http://127.0.0.1:8787/callback:
命令会输出授权链接和二维码,并在授权完成后自动保存 token。不能监听回调时,可以手动完成 code 交换:
检查、刷新或清除授权:
基础用法
所有命令均公开显示:
搜索和采集
仅采集元数据,不下载媒体:
下载单个作品或账号主页作品:
批量读取目标文件,并保存标题和封面:
-t 支持 post、favorite、music、hashtag、search、following、follower、collection、mix 和 aweme。collection 只读取当前 Cookie 登录账号的收藏夹,因此不要传 -u。网页命令默认读取已保存 Cookie,也可以用 --cookie 或 DOUYIN_COOKIE 为单次运行传入。
抓取评论
输出格式包括 raw、chatml-jsonl 和 chatml-json。
热词、热梗与需求发现
对本地文件或 stdin 做确定性的离线频次分析,不访问网络,也不需要 Cookie 或 OAuth:
|
输入支持 raw comments JSON(包括 replies)、crawler JSON 中的 desc/text/tag 与 text_extra[].tag_name、ChatML JSON/JSONL,以及每行一条记录的纯文本。JSON 输出包含 input_count、hot_words、hot_memes 和 demands;需求项包含原文 text、count、互动权重参与计算的 score 与命中的 signals。
这些结果来自停用词、重复频次和意图关键词等可解释启发式规则,不表示算法理解了文本的真实语义。
作品表现离线统计
对 crawler JSON 的作品元数据做离线汇总和排名,不读取或分析媒体画面、声音:
输入支持扁平作品数组、单个作品对象,以及 items、aweme_list、data 数组容器。--sort 支持 score、interactions、likes、comments、collects、shares、duration、latest;输出可选 JSON 或 Markdown。
综合分在当前匹配集合内分别使用 ln(1+x)/ln(1+max) 归一化点赞、评论、收藏、分享,并按 35%、20%、20%、25% 加权到 0–100 分。由于 crawler 元数据没有播放量,这个分数不是互动率,只适合在本次匹配集合内比较。
调用官方 OpenAPI
完成 OAuth 后,命令会自动读取已保存的 access_token 和 open_id:
回复评论属于写操作,默认要求确认:
发送私信需从回调事件取得 to_user_id、msg_id 和 conversation_id。默认场景是回复私信;首次进入会话时添加 --scene im-enter-direct-msg:
通用请求仅接受当前 OpenAPI 基地址的同源路径:
MCP 服务器
douyin mcp 通过 stdio 提供官方 OpenAPI 工具,并复用已保存的 OAuth 授权;离线洞察工具 hot_words、hot_memes、demand_discovery 只接收 texts、top、min_count,不需要授权。
MCP 客户端配置:
命令行配置示例:
配置和环境变量
默认配置文件位置:
- Linux/macOS:
~/.config/douyin-cli/config/settings.json - Windows:
%APPDATA%\douyin-cli\config\settings.json - 测试隔离:设置
DOUYIN_HOME
常用环境变量:
DOUYIN_COOKIEDOUYIN_CLIENT_KEYDOUYIN_CLIENT_SECRETDOUYIN_ACCESS_TOKENDOUYIN_HOME
完整参数和进阶示例见 USAGE.md。
Agent Skill
安装本仓库配套 skill:
# 或
开发验证