CZX2244/dsh-bilibili1

dsh-bilibili

DeepSeek Harness 工具插件:分析 Bilibili 视频,支持提取文稿、字幕驱动关键帧及模型总结。

AI 分析

核心用途是让 Agent 具备一键分析 B 站视频内容的能力。适合需要快速获取视频要点、时间轴总结、提取文稿或关键帧的视频学习与研究人员。

套件
dsh-bilibili
版本
0.5.1
授權
MIT
最近更新
2026年8月14日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:CZX2244/dsh-bilibili

重启 web profile(dsh web),新会话中即可使用 bilibili_extract 工具


安装后工具自动进入 Agent 的工具链:用户在对话里发 B 站链接(`bilibili.com/video/BV...`、`b23.tv` 短链或裸 BV 号),模型即可调用它分析。

---

## 🎨 自定义输出模板

输出格式是插件的**可替换零件**:数据(文稿/帧/弹幕/评论)由工具提供,长什么样由模板决定。

- **内置默认**:`templates/summary.md` —— 简洁的「省时间」总结(一句话总结 → 带时间戳要点 → 值得看的片段 → 可转发的分享语);
- **内置备选**:`templates/timeline.md` —— 通用时间轴式(主标题 → 开场钩子 → 时间轴分段小标题 + 内嵌时间戳要点 → 配图锚点 → 结尾结论),配图能配就配、配不了不强凑;
- **换模板**:在配置里设 `summaryTemplate: 'C:/path/我的模板.md'`,指向你自己的模板文件;
- **改默认**:直接编辑插件目录里的 `templates/summary.md`;
- **无效路径自动回退**内置模板,工具永不因模板问题失效。

如需更丰富的输出格式(学习笔记/评测表/时间线/复习卡等),可安装配套技能 `bilibili-video-analyzer`(A-K 格式目录),Agent 会按用户需求选用。

---

## 🧠 推荐工作流(两段式)

工具描述与系统提示中已写入指引,模型会自然采用:

① bilibili_extract(url, extract_frames: false) # 只拿文字,秒回、零下载 ② agent 读文稿,自己判断哪些时刻需要画面辅助 ③ bilibili_extract(url, timestamps: [32, 180]) # 定向抓帧,每帧附附近字幕 ④ agent 用 read_image 看帧 → 总结


不传 `timestamps` 的单次调用则走混合自动选帧。

---

## 🔧 配置

默认值写在 `cordis.patch.yml`,可在 `$DSH_HOME/profiles/web/cordis.patch.yml` 覆盖(后写覆盖整行 config):

```yaml
- override:
    - id: bilibili
      config:
        sessdata: '你的B站SESSDATA'  # 可选,解锁登录态字幕/更多评论
        commentLimit: 20             # 评论抓取数量上限
        maxFrames: 6                 # 最大抓帧数
        extractFrames: true          # 是否抓帧(false = 纯文字模式)
        downloadVideo: true          # 抓帧前先下载视频到本地(推荐)
        keepVideo: false             # true = 永久保留下载的视频文件
        maxVideoMinutes: 30          # 超过此时长的视频不下载,远程逐帧
        maxDownloadMb: 800           # 下载大小上限(MB)
        quality: 32                  # 16=360p 32=480p 64=720p 80=1080p
        detectScenes: true           # 场景切换检测(>20 分钟视频自动跳过)
        sceneThreshold: 0.4          # 场景切换阈值 0-1,越大越严格
        asrProvider: 'bcut'          # ASR 引擎:bcut(必剪,默认) | sherpa-onnx(中文推荐) | whisper-local | auto | none
        sherpaBin: ''                # sherpa-onnx-offline 可执行文件路径
        sherpaModel: ''              # sherpa 模型 onnx 路径(SenseVoice/Paraformer)
        sherpaModelType: 'sense-voice'  # sense-voice | paraformer | zipformer2-ctc
        sherpaTokens: ''             # sherpa tokens.txt 路径
        sherpaThreads: 0             # sherpa CPU 线程数(0=自动)
        whisperBin: 'whisper-cli'    # whisper.cpp 可执行文件(PATH 或绝对路径)
        whisperModel: 'medium'       # 模型三档:small(低) / medium(中) / large-v3(高),或 ggml-*.bin 路径
        whisperModelDir: ''          # 模型目录,留空 = /models
        whisperLanguage: 'zh'        # 转写语言
        whisperThreads: 0            # whisper CPU 线程数(0=自动)
        visionProvider: 'none'        # 帧图视觉描述:none(默认) | ollama | llama-cpp | openai-compatible
        visionBaseUrl: ''             # 视觉服务地址,留空且 ollama = http://localhost:11434/v1
        visionModel: 'medium'         # 三档:low(2B) / medium(8B) / high(32B),或显式模型名
        visionApiKey: ''              # 云端视觉 API Key(本地留空)
        visionPrompt: ''              # 识图提示词(留空 = 内置默认)
        visionMaxFrames: 4            # 最多描述几张帧(控延迟)
        framesDir: ''                # 帧图输出目录,留空 = 系统临时目录/dsh-bilibili/
        summaryTemplate: ''          # 输出模板路径,留空 = 内置 templates/summary.md
        timeoutMs: 300000            # 工具整体超时(毫秒)

本地 ASR 转写(可选,中文推荐 sherpa-onnx)

无字幕视频默认走必剪(零配置、匿名、国内直连)。想离线、或必剪不可用时,可切换到本地引擎。插件不打包模型,只提供接口,模型与二进制需自行下载(本地离线推理的物理前提,但不涉及任何 API key / 额度 / 付费)。

推荐:sherpa-onnx(中文,SenseVoice)

B 站以中文内容为主,SenseVoice 的中文识别率明显高于 Whisper,且速度更快、模型更小;模型官方托管在 ModelScope(国内直连、下载快)。

档位推荐模型体积(约)适用
SenseVoiceSmall(int8)~230 MB低配电脑
SenseVoiceSmall(fp32)~900 MB主流电脑(推荐)
Paraformer-large~2.5 GB高配电脑 / 极致精度

步骤:

  1. sherpa-onnx 下载对应系统的 sherpa-onnx-offline 可执行文件;
  2. 下载模型(model.onnx + tokens.txt),SenseVoice 模型可在 ModelScope 或 sherpa-onnx 的模型列表获取;
  3. 配置里设 asrProvider: 'sherpa-onnx',并填 sherpaBin / sherpaModel / sherpaTokenssherpaModelType 默认 sense-voice)。

备选:whisper.cpp(通用 / 英文)

档位whisperModel模型文件体积适用
smallggml-small.bin~466 MB低配电脑 / 快速出稿
mediumggml-medium.bin~1.5 GB主流电脑
large-v3ggml-large-v3.bin~3 GB高配电脑
  1. whisper.cpp 下载 whisper-cli 可执行文件;
  2. 下载对应档位的 ggml-*.bin 模型,放到 models/ 目录;
  3. 配置里设 asrProvider: 'whisper-local' 并填 whisperBin / whisperModel

提示:asrProvider: 'auto' 会按「必剪 → sherpa-onnx → whisper-local」依次降级;中文内容建议至少 medium(whisper)或直接选 SenseVoice(sherpa)。sherpa-onnx 的 CLI 参数随版本略有差异,如遇报错请以你所用版本的 --help 为准调整。

🔍 帧图视觉描述(可选)

DeepSeek 主模型没有视觉能力时,可开启本功能:抓帧后把每帧交给视觉模型转成文字描述(随帧返回 description 字段),主模型据此判断报告里哪些画面值得引用——仅当内容需要视觉确认(图表/界面/演示细节)时才配图,纯口播画面不配图。默认关闭;视觉服务失败不影响主流程(帧路径照常返回)。

本地(推荐):安装 Ollama 后拉取模型即可,无 key、离线、不花钱:

档位visionModelOllama 模型内存需求(约)适用
lowqwen3-vl:2b~2 GB低配电脑
medium(默认)qwen3-vl:8b~6-8 GB主流电脑(推荐)
highqwen3-vl:32b~20 GB / 建议 GPU高配,质量最佳

中档备选 MiniCPM-V 4.0(面壁,2026 年新作,官方称超越 GPT-4.1-mini、手机可跑,中文 OCR 强,官方提供 GGUF/int4)。visionModel 也接受显式模型名(Ollama tag 或云端模型 id)。

llama.cpp(本地备选):用 llama-server 启动视觉 GGUF(模型 + mmproj),它自带 OpenAI 兼容接口:

llama-server -m qwen2.5-vl-7b-q4_k_m.gguf --mmproj mmproj-qwen2.5-vl-7b-f16.gguf --port 8080

配置 visionProvider: 'llama-cpp'(默认地址 http://localhost:8080/v1)即可。llama.cpp 支持的视觉模型:Qwen2-VL / Qwen2.5-VL / Qwen3-VL(视版本)、MiniCPM-V(含 4.0)、InternVL、GLM-4V、LLaVA、moondream2 等(GGUF 可在 HuggingFace 下载)。中文推荐 Qwen3-VL 系列 GGUF 或 MiniCPM-V 4.0(官方 GGUF,端侧优化、中文 OCR 强)。

云端:任何 OpenAI 兼容接口,例如 visionProvider: 'openai-compatible' + visionBaseUrl + visionModel(如 gpt-4o-mini / glm-4v-flash)+ visionApiKey

提示:本地 CPU 描述数张帧需要几十秒到几分钟(GPU 更快);visionMaxFrames 控制描述帧数上限。识图提示词可用 visionPrompt 自定义(留空用内置默认)。


📁 项目结构

dsh-bilibili/
├── lib/
│   ├── index.js        # Cordis 插件入口:注册工具 + 系统提示指引 + 配置 schema
│   ├── extractor.js    # 提取层:B站 API + 下载模块 + 场景检测 + ffmpeg 抓帧
│   ├── keyframes.js    # 纯函数:混合信号选帧、时间格式化
│   └── format.js       # 纯函数:提取结果 → 模型可见文本摘要
├── templates/summary.md  # 内置默认输出模板(可替换)
├── test/                 # 单元测试(node --test)
├── cordis.patch.yml      # bundle 补丁层(被插件系统识别)
└── package.json          # dsh.bundle.patch 声明 + peer 依赖

🔌 插件标准

本插件遵循 DeepSeek Harness 插件标准:npm 包声明 dsh.bundle.patchdsh plugin add 安装后自动 reconcile 进 dsh.profile.bundles → 重启 profile 后由 Cordis loader 挂载。标准详见 deepseek-harness 仓库


🛠️ 本地开发(link 模式)

dsh plugin add 对本地目录用 link: 安装(改代码即生效)。由于 ESM 按真实路径解析依赖,插件目录需要一条指向 profile node_modules 的 junction:

New-Item -ItemType Junction -Path ".\node_modules\@deepseek-ai" `
  -Target "$env:USERPROFILE\.dsh\profiles\node_modules\@deepseek-ai"

改动后重启 web profile 即生效。


⚠️ 限制

  • 多分 P 视频当前只取第一 P;
  • 无字幕轨的视频默认用必剪 ASR 转写文稿,可切本地 sherpa-onnx / whisper.cpp;转写结果可能有识别错误,返回中会如实标注;
  • 必剪 ASR 是匿名接口,高频连续调用可能被限流(返回错误);需要高频/稳定转写时建议 asrProvider: 'auto'(自动降级)或直接切本地 sherpa-onnx;
  • 帧图落盘不自动清理(便于模型随时 read_image),代价是磁盘占用;
  • Node fetch 不读系统代理环境变量,需要代理的网络环境待适配;
  • 场景检测对 >20 分钟视频自动跳过(全片解码耗时)。

📄 License

MIT

🔧 配置

默认值写在 cordis.patch.yml,可在 $DSH_HOME/profiles/web/cordis.patch.yml 覆盖(后写覆盖整行 config):

- override:
    - id: bilibili
      config:
        sessdata: '你的B站SESSDATA'  # 可选,解锁登录态字幕/更多评论
        commentLimit: 20             # 评论抓取数量上限
        maxFrames: 6                 # 最大抓帧数
        extractFrames: true          # 是否抓帧(false = 纯文字模式)
        downloadVideo: true          # 抓帧前先下载视频到本地(推荐)
        keepVideo: false             # true = 永久保留下载的视频文件
        maxVideoMinutes: 30          # 超过此时长的视频不下载,远程逐帧
        maxDownloadMb: 800           # 下载大小上限(MB)
        quality: 32                  # 16=360p 32=480p 64=720p 80=1080p
        detectScenes: true           # 场景切换检测(>20 分钟视频自动跳过)
        sceneThreshold: 0.4          # 场景切换阈值 0-1,越大越严格
        asrProvider: 'bcut'          # ASR 引擎:bcut(必剪,默认) | sherpa-onnx(中文推荐) | whisper-local | auto | none
        sherpaBin: ''                # sherpa-onnx-offline 可执行文件路径
        sherpaModel: ''              # sherpa 模型 onnx 路径(SenseVoice/Paraformer)
        sherpaModelType: 'sense-voice'  # sense-voice | paraformer | zipformer2-ctc
        sherpaTokens: ''             # sherpa tokens.txt 路径
        sherpaThreads: 0             # sherpa CPU 线程数(0=自动)
        whisperBin: 'whisper-cli'    # whisper.cpp 可执行文件(PATH 或绝对路径)
        whisperModel: 'medium'       # 模型三档:small(低) / medium(中) / large-v3(高),或 ggml-*.bin 路径
        whisperModelDir: ''          # 模型目录,留空 = /models
        whisperLanguage: 'zh'        # 转写语言
        whisperThreads: 0            # whisper CPU 线程数(0=自动)
        visionProvider: 'none'        # 帧图视觉描述:none(默认) | ollama | llama-cpp | openai-compatible
        visionBaseUrl: ''             # 视觉服务地址,留空且 ollama = http://localhost:11434/v1
        visionModel: 'medium'         # 三档:low(2B) / medium(8B) / high(32B),或显式模型名
        visionApiKey: ''              # 云端视觉 API Key(本地留空)
        visionPrompt: ''              # 识图提示词(留空 = 内置默认)
        visionMaxFrames: 4            # 最多描述几张帧(控延迟)
        framesDir: ''                # 帧图输出目录,留空 = 系统临时目录/dsh-bilibili/
        summaryTemplate: ''          # 输出模板路径,留空 = 内置 templates/summary.md
        timeoutMs: 300000            # 工具整体超时(毫秒)

本地 ASR 转写(可选,中文推荐 sherpa-onnx)

无字幕视频默认走必剪(零配置、匿名、国内直连)。想离线、或必剪不可用时,可切换到本地引擎。插件不打包模型,只提供接口,模型与二进制需自行下载(本地离线推理的物理前提,但不涉及任何 API key / 额度 / 付费)。

推荐:sherpa-onnx(中文,SenseVoice)

B 站以中文内容为主,SenseVoice 的中文识别率明显高于 Whisper,且速度更快、模型更小;模型官方托管在 ModelScope(国内直连、下载快)。

档位推荐模型体积(约)适用
SenseVoiceSmall(int8)~230 MB低配电脑
SenseVoiceSmall(fp32)~900 MB主流电脑(推荐)
Paraformer-large~2.5 GB高配电脑 / 极致精度

步骤:

  1. sherpa-onnx 下载对应系统的 sherpa-onnx-offline 可执行文件;
  2. 下载模型(model.onnx + tokens.txt),SenseVoice 模型可在 ModelScope 或 sherpa-onnx 的模型列表获取;
  3. 配置里设 asrProvider: 'sherpa-onnx',并填 sherpaBin / sherpaModel / sherpaTokenssherpaModelType 默认 sense-voice)。

备选:whisper.cpp(通用 / 英文)

档位whisperModel模型文件体积适用
smallggml-small.bin~466 MB低配电脑 / 快速出稿
mediumggml-medium.bin~1.5 GB主流电脑
large-v3ggml-large-v3.bin~3 GB高配电脑
  1. whisper.cpp 下载 whisper-cli 可执行文件;
  2. 下载对应档位的 ggml-*.bin 模型,放到 models/ 目录;
  3. 配置里设 asrProvider: 'whisper-local' 并填 whisperBin / whisperModel

提示:asrProvider: 'auto' 会按「必剪 → sherpa-onnx → whisper-local」依次降级;中文内容建议至少 medium(whisper)或直接选 SenseVoice(sherpa)。sherpa-onnx 的 CLI 参数随版本略有差异,如遇报错请以你所用版本的 --help 为准调整。

🔍 帧图视觉描述(可选)

DeepSeek 主模型没有视觉能力时,可开启本功能:抓帧后把每帧交给视觉模型转成文字描述(随帧返回 description 字段),主模型据此判断报告里哪些画面值得引用——仅当内容需要视觉确认(图表/界面/演示细节)时才配图,纯口播画面不配图。默认关闭;视觉服务失败不影响主流程(帧路径照常返回)。

本地(推荐):安装 Ollama 后拉取模型即可,无 key、离线、不花钱:

档位visionModelOllama 模型内存需求(约)适用
lowqwen3-vl:2b~2 GB低配电脑
medium(默认)qwen3-vl:8b~6-8 GB主流电脑(推荐)
highqwen3-vl:32b~20 GB / 建议 GPU高配,质量最佳

中档备选 MiniCPM-V 4.0(面壁,2026 年新作,官方称超越 GPT-4.1-mini、手机可跑,中文 OCR 强,官方提供 GGUF/int4)。visionModel 也接受显式模型名(Ollama tag 或云端模型 id)。

llama.cpp(本地备选):用 llama-server 启动视觉 GGUF(模型 + mmproj),它自带 OpenAI 兼容接口:

llama-server -m qwen2.5-vl-7b-q4_k_m.gguf --mmproj mmproj-qwen2.5-vl-7b-f16.gguf --port 8080

配置 visionProvider: 'llama-cpp'(默认地址 http://localhost:8080/v1)即可。llama.cpp 支持的视觉模型:Qwen2-VL / Qwen2.5-VL / Qwen3-VL(视版本)、MiniCPM-V(含 4.0)、InternVL、GLM-4V、LLaVA、moondream2 等(GGUF 可在 HuggingFace 下载)。中文推荐 Qwen3-VL 系列 GGUF 或 MiniCPM-V 4.0(官方 GGUF,端侧优化、中文 OCR 强)。

云端:任何 OpenAI 兼容接口,例如 visionProvider: 'openai-compatible' + visionBaseUrl + visionModel(如 gpt-4o-mini / glm-4v-flash)+ visionApiKey

提示:本地 CPU 描述数张帧需要几十秒到几分钟(GPU 更快);visionMaxFrames 控制描述帧数上限。识图提示词可用 visionPrompt 自定义(留空用内置默认)。