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 接入工作流。

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

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

小夜