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 同步情况不一致,以你实际添加成功的来源为准。

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

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

Xiaoye