前言¶
做短視頻或口播類內容時,常見做法是人工逐條看樣片、記鉤子與段落節奏,再憑感覺仿寫。這個過程費時,且很難把「結構」和「語言指紋」說清楚。DeepSeek Harness(DSH)把能力做成插件後,可以在對話裏指定本地視頻目錄,讓模型先拿到可覈對的多模態材料,再按固定流程拆解並出稿。
下面介紹社區插件 dsh-video-distill(視頻蒸餾):讀目錄裏的視頻,完成口播轉寫、關鍵幀、鏡頭切點與元數據抽取,再拆成可複用模板並生成多條差異化同款文案。插件由 yiz-dev 維護,在 SkillHub 分類爲工作流;當前 GitHub 星標爲 0,許可證 MIT,package 版本 0.1.0。
這是什麼¶
dsh-video-distill 是 DSH 插件,定位可以概括爲:
讀視頻 → 轉寫口播 → 抽關鍵幀 → 數鏡頭切點 → 拆成結構模板 → 按模板寫新文案。
它不替代你的選題判斷,而是把「一條視頻裏模型該看什麼」拆成四疊材料,避免模型對着空轉寫硬編文案。轉寫或抽幀失敗時,插件會明確報告「口播沒拿到」並給出修法,而不是返回空文本。
核心功能¶
四疊材料¶
每條視頻會被整理成下表中的材料,供 DSH 模型理解:
| 材料 | 來源 | 用途 |
|---|---|---|
口播全文 + [mm:ss] 時間軸 + 語速 |
同名字幕 / 內嵌字幕 / 本地 faster-whisper / 兼容 OpenAI 的轉寫 API | 拆鉤子、拆結構、學語言指紋 |
| 關鍵幀 6 張 + 一張拼圖 | ffmpeg 均勻抽幀(避開片頭片尾) | 看構圖、字幕樣式、出鏡方式、畫面情緒 |
| 鏡頭切點時間表 | scene 檢測 | 判斷快剪還是長鏡頭 |
| 元數據 | ffprobe | 時長、橫豎屏、幀率、碼率、是否有人聲 |
蒸餾與成稿¶
按插件自帶手冊 prompts/distill.md 做十項拆解,抽出一個可複用模板,再生成 3 條故意不同的同款文案(同骨架 / 同鉤子換骨架 / 同人羣換切口)。
暴露的工具與產出目錄¶
對話中無需記工具名,模型會調用例如 video_scan、video_distill、video_guide、video_save、video_config 等能力。運行數據落在 $DSH_HOME/video-distill/,插件包本身只讀,升級重裝不丟配置與緩存:
$DSH_HOME/video-distill/
├── config.json
├── secret.json
├── work/<視頻名>-<指紋>/ # transcript、frames、sheet.jpg、bundle.json 等
├── out/<日期>/<標題>.md # 拆解與文案成稿
└── logs/
安裝與啓用¶
通過 DSH 設置添加(README 原文)¶
在 DSH「設置 → 插件 → 添加」中粘貼下列來源,然後重啓 DSH(bundle 層需重啓才組裝):
github:Mrliu12345/dsh-video-distill
連不上 GitHub 時的替代裝法、裝完需補的依賴,見倉庫內 INSTALL.md。
本地 link 安裝(開發或改代碼即生效)¶
已有倉庫目錄時,可用 CLI 裝進當前 profile:
# <本目錄> = 倉庫絕對路徑
dsh plugin --profile desktop add link:<本目錄>
裝完後同樣必須重啓 DSH。
無 dsh CLI 時的手動方式¶
New-Item -ItemType Junction `
-Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-video-distill" `
-Target "<本目錄的絕對路徑>"
並在 profile 的 cordis.patch.yml 末尾追加:
- id: video-distill
name: dsh-video-distill
裝完自檢¶
不依賴 DSH 時可運行:
node tools/selftest.mjs
node tools/e2e.mjs <一個放視頻的目錄>
selftest.mjs 爲 187 項離線檢查;e2e.mjs 會真實調用 7 個工具跑一遍。
依賴與環境¶
| 依賴 | 必須 | 說明 |
|---|---|---|
| ffmpeg + ffprobe | 是 | 抽音軌、抽幀、切點檢測;可用 winget install Gyan.FFmpeg,或配置 ffmpegPath |
| 轉寫 | 是(否則只能看畫面) | 四條路徑見下,backend=auto 按順序嘗試 |
| Node | ≥ 22 | DSH 要求 |
| Python | ≥ 3.9 | 僅本地 faster-whisper 需要;插件自建 venv |
轉寫四條路:
- sidecar:視頻旁同名
.srt/.vtt/.ass/.json - embedded:容器內嵌字幕,ffmpeg 抽取
- local:本地 faster-whisper;對話中說「裝一下本地轉寫」,或
node tools/cli.mjs asr-install --wait;默認small模型 - api:兼容 OpenAI
/v1/audio/transcriptions的服務;Key 存$DSH_HOME/video-distill/secret.json或環境變量DSH_ASR_KEY
引擎要求:dsh ≥ 0.1.7-rc.1(見 package.json)。
典型用法¶
對話示例¶
你:D:\videos\口播樣例 裏有些視頻,先看看有什麼
DSH:video_scan → 2 條,一條 20 秒豎屏有聲,一條 16 秒豎屏帶字幕
你:把帶字幕那條拆給我看
DSH:video_distill + video_guide → 十項拆解 + 可複用模板(讀完還要 read_image 看拼圖)
你:照這個模子寫三條文案,存下來
DSH:video_save → out/2025-xx-xx/<標題>.md
命令行(不開 DSH)¶
node tools/cli.mjs status --verbose
node tools/cli.mjs scan D:\videos\樣例
node tools/cli.mjs distill D:\videos\a.mp4
node tools/cli.mjs guide
node tools/cli.mjs asr-install --wait
常用配置(可通過 video_config 或改 config.json)¶
| 項 | 默認 | 說明 |
|---|---|---|
dir |
空 | 默認視頻目錄 |
backend |
auto |
auto/sidecar/embedded/local/api/none |
language |
zh |
轉寫語言 |
modelSize |
small |
本地模型規模 |
frames |
6 |
關鍵幀數量(1–16) |
sceneDetect |
true |
是否檢測鏡頭切點 |
sceneThreshold |
0.3 |
切點閾值 |
maxVideos |
20 |
單次掃描上限 |
minSec / maxSec |
3 / 1800 |
時長過濾 |
改 config.json 後生效,無需重啓 DSH。
適用場景與注意¶
適合:本地有一批口播或短視頻樣片,需要快速摸清結構、鉤子與節奏,並在同一骨架下批量試寫文案的創作者或智能體工作流搭建者。
注意:
- 插件以當前 DSH 進程權限訪問本地路徑與調用 ffmpeg、轉寫服務;安裝前應自行查看源碼與 MIT 許可證,確認路徑與 Key 的存放方式可接受。
- 硬字幕(燒在畫面裏)不是字幕流,無法當口播文本抽出,需依賴關鍵幀與模型讀圖。
- 切點數爲 0 但明顯有換鏡時,可將
sceneThreshold調到0.2。 - 「口播沒拿到」時運行
node tools/cli.mjs status,檢查 ffmpeg 與local.ok/api.ok。 - SkillHub 社區目錄與 DeepSeek / 幻方無官方從屬關係;DSH 生態是「一切皆插件」,本插件是其中一條工作流擴展。
結尾¶
dsh-video-distill 把樣片分析從「憑感覺看片」變成「轉寫 + 畫面 + 節奏 + 元數據」的可復現流水線,再在模板約束下出多條差異化文案。目錄頁與源碼:
- SkillHub:https://www.skillhub.cn/plugins/yiz-dev/dsh-video-distill
- GitHub:https://github.com/yiz-dev/dsh-video-distill
README 中另給出倉庫 Mrliu12345/dsh-video-distill 作爲 DSH 插件添加源;若與 fork 同步情況不一致,以你實際添加成功的來源爲準。