前言¶
在 DeepSeek Harness(DSH)里做联网能力时,常见做法是单独起一个 MCP,或在脚本里拼 cookie、自己扛签名和翻页。抖音侧接口会变、搜索要 search_id 链式翻页,登录还要区分「有 cookie」和「页面真的已登录」。若你希望在 Cordis 里直接调用工具读热榜、搜视频、拉用户作品,并在需要时用浏览器补登录和受控写操作,sakuramat0u/dsh-douyin-toolkit(维护者 SakuraMat0u,分类:联网工具)把这条链路收成一套 DSH 插件:只读优先走 dy-cli 逆向子进程,失效再回退系统 Edge 截获页面 XHR;写评论默认 dry-run,并带可轮询的扫码/短信登录状态机。
这是什么¶
dsh-douyin-toolkit 是 Cordis Host 插件,不是 MCP server;工具直接注册到 ctx.tools。它把抖音接入 DSH,覆盖热榜、搜索、视频、用户、状态自检,外加账号指纹与单条受控评论;douyin_publish 仅保留接口,恒返回 implemented: false,不执行发布。
仓库在 GitHub 组合了社区已有能力:Youhai020616/douyin(dy-cli)负责热榜、搜索、用户资料与 cookie 读取;登录态与多阶段状态机参考了 douyin-mcp、douyin-upload-mcp-skill 等;与同生态只读的 dsh-whale-dive 相比,本插件强调逆向 API 优先、完整登录状态机,以及写操作开关与配额退避。
目录页:https://www.skillhub.cn/plugins/SakuraMat0u/dsh-douyin-toolkit
源码:https://github.com/SakuraMat0u/dsh-douyin-toolkit(MIT,package 版本 1.0.0)
核心功能¶
只读工具(逆向 API,必要时 Edge XHR)¶
| 工具 | 主要入参 | 说明 |
|---|---|---|
douyin_hot |
count? |
热榜条目、热度、搜索链接 |
douyin_search |
keyword, limit?, pages?, cursor?, sort? |
关键词搜索;next_cursor 走 search_id 链式分页 |
douyin_video |
aweme_id 或 url, comment_limit? |
文案、作者、互动、前 N 条评论 |
douyin_user |
user 或 sec_uid, post_limit? |
简介、粉丝、近期作品 |
douyin_status |
— | 登录态、配额、上次错误等一句话结论 |
登录与验证(专用 Edge + Playwright)¶
| 工具 | 说明 |
|---|---|
douyin_login_start |
打开独立 Edge profile,返回 qrcode 与截图路径 |
douyin_login_status |
轮询 idle / qrcode / sms_* / challenge_required / logged_in / expired / failed / stopped |
douyin_login_submit |
提交 4–8 位短信验证码(codes) |
douyin_verify |
打开验证页,手动过滑块/验证,插件只轮询 |
登录成功后会把 storage_state 写到 <dataDir>\home\.dy\cookies\default.json(dy-cli 读取路径),并记录 sec_uid 与账号指纹。插件不实现 X-Bogus、不重写登录协议、不绕过验证码。
写操作(默认关闭)¶
| 工具 | 说明 |
|---|---|
douyin_comment |
单条评论;dry_run 默认 true;需 writesEnabled 与 confirm 等守卫 |
douyin_publish |
占位,不发请求 |
全局 单 worker(并发 1),翻页 3–8 秒抖动、调用间隔约 1.8–3.2 秒,滚动 1 小时请求预算默认 60;触发 rate_limited / challenge_required 后指数退避。敏感字段(cookie、sessionid、storage_state 等)不会进入工具返回值或日志。
环境与架构¶
当前 README 标明 仅在 Windows 上实测(Edge 路径与 profile 清理 Windows 优先)。需要:
- Python 3.10+(README 实测 3.14)
- Node.js 22+(DSH 自带;package
engines.node为>=22) - 系统已安装 Microsoft Edge,默认路径示例:
C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe - 不需要
playwright install chromium,不使用 Chrome
架构上,Node 侧做工具注册、限频、配额与脱敏;只读走 python -m dy_cli.main 或 python dy_query.py search;浏览器侧用独立 profile 做登录、XHR 回退与评论。
安装与启用¶
下面两种方式均来自仓库 README;改配置后需 重启 DSH。插件以当前 DSH 进程权限运行,安装前请自行审阅源码与 MIT 许可证。
方式 A:本地 bundle(推荐,自带 .venv)¶
在克隆目录创建虚拟环境并安装 Python 依赖:
git clone https://github.com/SakuraMat0u/dsh-douyin-toolkit.git
cd dsh-douyin-toolkit
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r python\requirements.txt
用插件管理器安装本地目录(target 为克隆目录的绝对路径):
plugin_manager install_bundle target = <克隆目录>
或使用 DSH 插件命令:
dsh plugin --profile desktop add <克隆目录的绝对路径>
此时 .venv 在插件包旁,pythonPath 通常无需额外配置,data/ 默认落在该目录。
方式 B:从 GitHub 安装¶
dsh plugin --profile desktop add github:SakuraMat0u/dsh-douyin-toolkit
pnpm 安装的是包副本,不带 .venv。需在 profile 的 cordis.patch.yml 中补充可写数据目录与 Python 路径,例如:
- id: douyin
name: dsh-douyin-toolkit
config:
pythonPath: C:\path\to\python.exe # 已安装 dy-cli 和 playwright 的解释器
dataDir: C:\path\to\writable\dir # Edge profile、cookie、日志
bundle 自带 cordis.patch.yml 会在安装时插入 id: douyin;不要再用 insert 手工挂同一 id。要改配置,在 profile 顶层用同 id 覆盖,例如:
- id: douyin
name: dsh-douyin-toolkit
config:
writesEnabled: true
maxSearchPages: 2
合成结果可用下面命令检查:
dsh --profile desktop --dump-config
常用配置项(节选):writesEnabled 默认 false;maxResults 默认 20(硬上限 20);maxSearchPages 默认 3;hourlyRequestBudget 默认 60;toolEnabled 可逐工具关闭 hot / search / video / user / status / login / verify / comment / publish。
典型用法¶
1. 环境自检¶
仓库提供 PowerShell 自检脚本,会探测 Python/Edge、桥接状态并拉一次热榜(3 条):
powershell -ExecutionPolicy Bypass -File scripts\selfcheck.ps1
在 DSH 对话里也可直接调用 douyin_status 查看登录态与配额。
2. 只读:热榜与搜索¶
先调用 douyin_hot(可选 count)看热榜;搜索用 douyin_search,翻页传返回的 next_cursor,不要用页码推算。若返回映射为 challenge_required,应走 douyin_verify 手动验证,而不是当作空结果。
3. 登录状态机¶
douyin_login_start:拿到二维码与截图路径,phase为qrcode。- 抖音 App 扫码并在手机确认。
- 轮询
douyin_login_status,直至logged_in或失败/过期。 - 若流程切到短信:在浏览器填手机号后,用
douyin_login_submit传入codes。 - 出现滑块:调用
douyin_verify,在可见窗口完成后重试业务工具。
login_start 每次会重置登录状态;换号后若写工具报 account_mismatch,可删除 <dataDir>\state\account.json 后重试。
4. 受控评论¶
在 profile 中将 writesEnabled 设为 true 后,仍建议先用 douyin_comment 且保持 dry_run: true(默认)核对参数;真正写入需按工具要求提供 confirm 等确认字段。writesEnabled 为 false 时评论工具返回 writes_disabled。
适用场景与注意¶
适合:在 DSH 智能体流程里稳定读抖音公开内容(热榜、搜索、视频与用户作品),偶尔需要浏览器登录或单条评论,且能接受 Windows + Edge 的运行约束。
注意:
- 插件与 DSH 同权限运行;
dataDir会存放浏览器 profile 与 cookie 等价物,从 GitHub 直接安装时务必指向可写目录。 - 读路径优先子进程,失败才开 Edge;
profile_in_use表示专用 profile 被登录窗口占用,应先查douyin_login_status或关闭对应 Edge。 - 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,版本与星标以各站点为准(目录页当前星标为 0)。
- 发布能力未实现;勿依赖
douyin_publish做自动化发稿。
结尾¶
dsh-douyin-toolkit 把 dy-cli 只读能力与 Edge 登录/回退、配额退避和写操作守卫收进一个 Cordis 插件,适合要把抖音当 DSH 内置工具而不是外挂 MCP 的开发者。安装与配置以 README 为准;更多细节与故障排查表见 GitHub 仓库。