前言¶
在 DeepSeek Harness(DSH)里做个人知识库时,常见做法是把视频里的口述内容整理成可检索的 Markdown。抖音分享页和接口风控较重,通用下载工具(例如 yt-dlp 的抖音提取器)往往难以稳定拿到元数据。维护者 KunWu1980 的 dsh-douyin-kb(GitHub:KunWu1980/dsh-douyin-kb)把「人工提供链接 → 本机抓取 → 离线语音转写 → 写入 Obsidian Vault」串成一条链路,并附上左侧栏面板与 Agent 工具,适合初学者在 DSH 里上手「视频进库」。
下面按定位、能力、安装、用法和注意点说明;事实以仓库 README 与 package.json(当前版本 1.1.0,MIT)为准。
这是什么¶
dsh-douyin-kb 是 DSH 插件:接收单条抖音分享链接或博主主页批量目标,下载视频后在本地转成带时间戳的中文文字稿,生成带 YAML frontmatter 的笔记,落入本机 Obsidian。插件侧几乎零 npm 依赖,核心逻辑在 assets/douyin_kb.py,由宿主注册工具 douyin_kb 与斜杠命令 /douyin,并在客户端注入「抖音转OB」侧栏面板。
社区目录页:https://www.skillhub.cn/plugins/KunWu1980/dsh-douyin-kb。DSH 插件生态的理念是「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
抓取¶
Playwright 驱动本机 Edge 的持久化配置目录,先获取 ttwid 等 Cookie,再打开视频页,在页面自身的 response 回调里截获 /aweme/v1/web/aweme/detail/ 返回的 aweme_detail。README 说明:yt-dlp 对抖音已不稳定,因此走真实浏览器发请求的路径。
转写¶
使用 sherpa-onnx + SenseVoice(中英日韩粤,int8 模型约 228 MiB)+ silero VAD 切段,纯本地、离线,不需要 API key。缺少 VAD 模型时会退化为 25 秒定长切块。
落库¶
笔记含 YAML frontmatter、视频文案、- \mm:ss` 句子形式的转写与要点区;封面存入抖音收藏/_附件/,去重索引为抖音收藏/.index.json`。
安装与启用¶
任选一种发布渠道安装(命令来自 README):
# 从 GitHub 仓库(推荐)
dsh plugin add github:KunWu1980/dsh-douyin-kb
# 从本地打包产物
dsh plugin add C:\path\to\douyin-kb-1.0.0.tgz
# 从本地目录(开发时 link)
dsh plugin add C:\path\to\douyin-kb-plugin
桌面版也可在 设置 → 插件 中用同样 spec 安装,或由 Agent 调用 plugin_manager install_bundle。更新 bundle 后需重启应用,宿主才会加载新的 JS 模块代际。
安装前建议自行查看源码与 MIT 许可证;插件以当前 DSH 进程权限在本机执行 Python 与浏览器自动化。
运行时前置¶
| 依赖 | 用途 | 安装 |
|---|---|---|
| Node.js ≥ 20(含 npm) | 宿主运行插件 | 随 DSH 提供 |
| Python 3.10+ | 执行 assets/douyin_kb.py |
系统或 DSH 自带运行时 |
playwright |
驱动 Edge 抓取 | python -m pip install playwright(channel="msedge") |
av (PyAV) |
无 ffmpeg 时解码音轨 | python -m pip install av |
sherpa-onnx |
离线转写 + VAD | python -m pip install sherpa-onnx |
numpy |
音频重采样 | pip |
| SenseVoice 模型 | 中文转写 | 放到 %USERPROFILE%\.dsh\douyin-kb\models\ |
| silero VAD | 语音切段 | 同上目录 |
模型可经国内镜像下载(README 提供 PowerShell 示例,目标路径为 %USERPROFILE%\.dsh\douyin-kb\models\)。
配置¶
| 配置项 | 默认值 | 说明 |
|---|---|---|
vault |
自动识别 Obsidian 当前库 | 可用 OBSIDIAN_VAULT 或 %USERPROFILE%\.dsh\douyin-kb\config.json 覆盖 |
kbHome |
%USERPROFILE%\.dsh\douyin-kb |
模型、浏览器配置、缓存;可用 DOUYIN_KB_HOME |
python |
自动探测 | 可用 DOUYIN_KB_PYTHON |
timeoutSeconds |
900 |
单次工具调用超时 |
多数用户无需手填 vault:插件会读 Obsidian 的 obsidian.json,以当前打开的库为准。覆盖示例:
{ "vault": "D:\\path\\to\\Obsidian Vault" }
优先级:vault 配置 → OBSIDIAN_VAULT → config.json → Obsidian 当前库 → 默认 %USERPROFILE%\Documents\Obsidian Vault。
典型用法¶
左侧栏面板¶
安装并重启 DSH 后,左侧栏出现「抖音转OB」:
- 粘贴抖音分享链接或整段分享文案;
- 点击 开始抓取,查看进度,完成后面板给出笔记路径;
- 首次使用会弹出浏览器要求扫码登录抖音,之后一般无需重复。
面板下方固定提示:首次扫码、离线模型需人工校对、需自行安装 Node.js / Git / Python。
斜杠命令¶
/douyin https://v.douyin.com/xxxxxx/
与面板按钮等价(同样 force=true 时可覆盖写),适合在会话中直接触发。
Agent 工具 douyin_kb¶
{ "action": "ingest", "target": "7.66 12/31 ... https://v.douyin.com/xxxx/", "force": false }
{ "action": "batch", "target": "https://www.douyin.com/user/MS4wLjABAAAA...", "limit": 5 }
{ "action": "probe", "target": "https://www.douyin.com/video/7703889641270775066" }
{ "action": "login" }
排错时可对照命令行:
python assets/douyin_kb.py ingest "https://v.douyin.com/xxxx/" --vault "D:\path\to\Obsidian Vault"
python assets/douyin_kb.py probe 7703889641270775066
适用场景与注意¶
适合谁:希望把抖音单条或博主主页若干条视频沉淀到 Obsidian、且能接受本机 Edge 有头登录与离线模型校对的人;README 写明插件带有实验性质,也是作者借助 DeepSeek 创建的第一个 DSH 插件。
风控与排错(摘自 README):
Fresh cookies.../ HTTP 403:先action=login扫码,或删除%USERPROFILE%\.dsh\douyin-kb\browser-profile重来;默认有头,无头易被判定为机器人。aweme_detail: null且filter_reason: "core_dep":内容受限,需换片源。- 转写为空:无语音、音量过低或 VAD 误切;可
probe确认时长。 - PowerShell 中文乱码:先设置
[Console]::OutputEncoding = [Text.Encoding]::UTF8。
不用 yt-dlp 的原因:站点要求 Cookie 含 s_v_web_id,裸请求易 403;稳定做法是浏览器真实请求后再从响应取 aweme_detail。
结尾¶
dsh-douyin-kb 把抖音链接、本机浏览器抓取、SenseVoice 离线转写和 Obsidian 笔记结构合成一套可复现流程;不熟悉命令行的用户可从侧栏面板开始,Agent 开发者则用 douyin_kb 与 /douyin 接入工作流。