dsh-douyin-kb:抖音视频离线转写并写入 Obsidian

前言

在 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」:

  1. 粘贴抖音分享链接或整段分享文案;
  2. 点击 开始抓取,查看进度,完成后面板给出笔记路径;
  3. 首次使用会弹出浏览器要求扫码登录抖音,之后一般无需重复。

面板下方固定提示:首次扫码、离线模型需人工校对、需自行安装 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 接入工作流。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye