dsh-video-distill:把口播視頻拆成結構模板並寫同款文案

前言

做短視頻或口播類內容時,常見做法是人工逐條看樣片、記鉤子與段落節奏,再憑感覺仿寫。這個過程費時,且很難把「結構」和「語言指紋」說清楚。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。

已有倉庫目錄時,可用 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

轉寫四條路:

  1. sidecar:視頻旁同名 .srt/.vtt/.ass/.json
  2. embedded:容器內嵌字幕,ffmpeg 抽取
  3. local:本地 faster-whisper;對話中說「裝一下本地轉寫」,或 node tools/cli.mjs asr-install --wait;默認 small 模型
  4. 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。

適用場景與注意

適合:本地有一批口播或短視頻樣片,需要快速摸清結構、鉤子與節奏,並在同一骨架下批量試寫文案的創作者或智能體工作流搭建者。

注意:

  1. 插件以當前 DSH 進程權限訪問本地路徑與調用 ffmpeg、轉寫服務;安裝前應自行查看源碼與 MIT 許可證,確認路徑與 Key 的存放方式可接受。
  2. 硬字幕(燒在畫面裏)不是字幕流,無法當口播文本抽出,需依賴關鍵幀與模型讀圖。
  3. 切點數爲 0 但明顯有換鏡時,可將 sceneThreshold 調到 0.2。
  4. 「口播沒拿到」時運行 node tools/cli.mjs status,檢查 ffmpeg 與 local.ok / api.ok。
  5. 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 同步情況不一致,以你實際添加成功的來源爲準。

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

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

小夜