dsh-video-digest

August 16, 2026 · View on GitHub

视频链接一键提炼 MD — 把任意视频链接变成一份结构化的中文总结笔记,中间文件自动清理。

Video URL → distilled Markdown notes for DeepSeek Harness agents. Auto-cleans all intermediate files.

License: MIT DSH Node

这是什么 / What is this

给 DSH 里的 Agent 注册一个 video_summarize 工具:给它一个视频链接(B站 / YouTube / 抖音等 yt-dlp 支持的平台),它自动完成五步流水线,返回一份中文 Markdown 总结笔记:

视频链接

① yt-dlp 下载(1080p 以内,自动合并音视频)
② B站官方元数据(UP主/发布日期/播放/点赞/收藏/投币/弹幕)+
   官方字幕优先(无字幕自动降级 SenseVoice 语音转写,10 分钟分段)
③ ffmpeg 场景检测提取关键帧 + 逐帧时间戳
④ dsh-vision-router 识图(deepseek-vision 路由)逐帧描述
⑤ DeepSeek-V4-Flash 综合生成总结 MD(章节带 ?t= 时间戳跳转链接)

输出:视频内容提炼-<标题>.md(默认 D:/ai)
中间文件(视频/音频/关键帧/转写)自动删除 ✅

特性 / Features

  • 一键使用:对话里给 Agent 一个链接即可,Agent 会自动调用工具
  • B站官方元数据:UP主 / 发布日期 / 播放 / 点赞 / 收藏 / 投币 / 弹幕,写入笔记"视频概览"(非 B站平台自动跳过)
  • 字幕优先:B站有官方字幕(含 AI 字幕)直接用字幕时间轴——更准确、更省;无字幕自动降级 SenseVoice 语音转写
  • vision-router 识图:关键帧描述走 dsh-vision-router 的 deepseek-vision 路由(与 vision_describe 同一条视觉链),不直连任何厂商 API
  • 时间戳跳转:章节标题与关键帧索引使用 [标题](链接?t=秒) 格式,点击直达视频对应位置
  • 自动清理finally 保证无论成败都删除工作目录;启动时清理 1 天前的残留
  • 调试开关keep_video=true 保留中间文件
  • 纯 Python 实现:yt-dlp + imageio-ffmpeg(自带 ffmpeg 二进制,无需系统安装 ffmpeg)
  • 双源交叉:转写/字幕文本 + 关键帧视觉描述双路证据,同音词(get→git 等)由 LLM 自动修正

安装 / Install

前置要求:

  1. 一个可用的 DeepSeek Harness 部署(Web GUI)
  2. Python 3.11 虚拟环境,含 yt-dlpfaster-whisper(可选)、imageio-ffmpeg(见下方环境准备)
  3. 一个 SiliconFlow API Key(语音转写 + 视觉 + 文本生成共用),写入 DSH 凭据:
    # $DSH_HOME/.credentials.yaml
    SILICONFLOW_API_KEY: "sk-..."
    

安装插件行:

dsh plugin add github:<你的用户>/dsh-video-digest

或手动在 profile 的 cordis.patch.yml 追加:

- insert:
    - id: video-digest
      name: dsh-video-digest

环境准备 / Requirements

py -3.11 -m venv D:/ai/bili-digest/.venv
D:/ai/bili-digest/.venv/Scripts/python.exe -m pip install yt-dlp imageio-ffmpeg

imageio-ffmpeg 自带 ffmpeg 二进制,插件运行时自动定位,无需系统安装 ffmpeg。 注意:index.js 顶部的 PY 常量指向该 venv 的 python 路径,请按你的机器调整。

使用 / Usage

在 DSH 对话中直接说:

帮我总结这个视频:https://www.bilibili.com/video/BVxxxx

Agent 会调用 video_summarize 工具(参数:url / output_dir / keep_video),约 8–15 分钟(40 分钟视频)后返回 MD 文件路径。

工作原理 / How it works

步骤实现说明
下载python -m yt_dlpbv*[height<=1080]+ba/b,ffmpeg 合并
元数据B站 x/web-interface/view APIUP主/发布日期/播放/点赞/收藏/投币/弹幕;失败自动跳过
字幕B站 x/player/wbi/v2 APIAI/人工字幕优先,20s 窗口聚合;无字幕降级 ASR
转写SiliconFlow /v1/audio/transcriptionsSenseVoiceSmall,10 分钟/段带偏移(仅降级路径)
关键帧ffmpeg select='gt(scene,0.35)'640w 降采样加速,单趟出帧 + pts 时间戳
视觉SiliconFlow /v1/chat/completionsQwen3-VL-30B-A3B,4 线程并发
成稿SiliconFlow /v1/chat/completionsDeepSeek-V4-Flash,输出结构化 MD(?t= 跳转链接)

已知限制 / Known limitations

  • 依赖 SiliconFlow 账号额度(代金券/余额)
  • 转写为 ASR 结果,个别专有名词可能有误(LLM 成稿时会修正常见同音词)
  • 工作目录硬编码为 D:/ai/.video-digest-tmpPY 与输出默认路径按部署机器调整
  • 长视频(>1 小时)耗时随时长线性增长

License

MIT