DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Course Subtitles — DeepSeek Harness 插件(DSH Plugin)
← Plugins
C

dsh-course-subtitles

Course Subtitles

DSH dual-half plugin:提取课程视频字幕(DeepLearning.AI、YouTube、Bilibili、Coursera),将其重组为完整句子,逐行翻译(EN/ZH),生成章节标题,并在父节点下为每节课发布一个 Feishu 文档。还会将 Course Outline(视频标题为纯

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:fengchang618gmail/dsh-course-subtitles#e63b66d1c2bb5f3f2f9867c9ed9f21a52256deb2
README兼容性版本

说明

DSH dual-half plugin:提取课程视频字幕(DeepLearning.AI、YouTube、Bilibili、Coursera),将其重组为完整句子,逐行翻译(EN/ZH),生成章节标题,并在父节点下为每节课发布一个 Feishu 文档。还会将 Course Outline(视频标题为纯文本,保留周次/模块区块)导出到一个 Feishu 文档中。每项凭据均来自环境或 harness 凭据存储——没有任何硬编码,且 LLM 密钥链会自动回退。

兼容性与来源证明

Course Subtitles 以 dsh-course-subtitles 发布,当前版本为 0.5.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/23

版本

0.5.0stable
2026/9/23

相关插件

正在加载相关插件…

最新版
0.5.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/24
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 vision-media 分类下经过校验的插件。

Tool Describe Image@linxin666/dsh-tool-describe-image面向模型的 describe_image 工具,用于 dsh Web GUI:通过在兼容 OpenAI 的端点调用视觉语言模型,为文本模型提供图像理解能力,以描述一张图像(本地路径、http(s) URL 或附件引用)。可热插拔 —Vision Routerdsh-vision-router为纯文本 DeepSeek Harness 代理提供视觉能力:内置免费视觉链(无需密钥)+ 像素级视觉工具(问答、定位、裁剪、像素差异、颜色、OCR、SVG 描摹、抠图、截图)。一条命令即可安装,无需 Python,图像回合的使用方式与普通工具相同Vision Toolkit@anionex/dsh-vision-toolkit面向 Harness 原生集成的 DeepSeek 与 agent-vision-toolkit:图像问答、OCR、定位、UI 还原、像素差异、Artifacts 和 Web UI。Deepseek Ivideodeepseek-ivideoiPolloWork HyperFrames Video Studio,以及 27 个可编辑视频模板,以原生 DeepSeek Harness 对话视图呈现。

README

dsh-course-subtitles

把视频课程的字幕抓下来 → 重排成完整句子 → 逐句中英对照翻译 → 自动分章节 → 一课一篇写进飞书文档。

一个 DeepSeek Harness(dsh)插件,也可以完全脱离 DSH 当命令行工具用。

适合谁用:想把 DeepLearning.AI / YouTube / B 站上的课程变成可检索、可搜索、带中英对照的学习笔记的人;在做个人知识库的人;需要批量拆解爆款视频结构的知识工作者。


它到底做了什么

课程链接 ──► 抓字幕 ──► 合并成完整句子 ──► 逐句中英翻译 ──► 生成章节标题 ──► 飞书文档(每课一篇)
             (4 个平台)   (绝不切断一句话)      (LLM)          (H2 中英)        └─ 自动挂到你的知识库目录下

最终你得到一篇飞书文档,长这样:

# 01 Welcome 欢迎                          ← 课程标题(自动中文翻译)
第 1 周 · 视频时长 4:32 · 生成时间 2026-01-01   ← 元信息

## What is Generative AI? 什么是生成式AI?   ← 自动生成的章节标题(中英对照)

Generative AI is a general purpose technology.   ← 英文原句
生成式 AI 是一种通用技术。                          ← 中文翻译

...

另外还有一个课程大纲导出功能:把课程首页的目录(只保留视频条目)抓成一篇飞书文档,按 Week / Module 分块 —— 不调用任何模型,零 token 花费。


支持哪些平台

平台链接形式需要什么
DeepLearning.AIlearn.deeplearning.ai/courses/...、www.deeplearning.ai/courses/...无需登录,官方字幕
YouTubeyoutube.com/watch?v=...、youtu.be/...、播放列表能访问 YouTube(国内需要代理;插件会自动探测本机代理,也支持 yt-dlp 兜底)
Bilibilibilibili.com/video/BV...UP 主上传过字幕轨(AI 字幕也算)
Courseracoursera.org/learn/...需要登录 Cookie(实验性支持)

5 分钟上手

第 0 步:准备三样东西

  1. Node.js ≥ 18(node -v 检查)
  2. 一个飞书自建应用(用来写文档)
    • 去 飞书开放平台 创建「企业自建应用」
    • 在「权限管理」里开通:wiki:wiki、docx:document、drive:drive
    • 发布版本,拿到 App ID 和 App Secret
    • ⚠️ 关键一步:打开你要写入的知识库 → 设置 → 成员管理 → 添加应用,把这个应用加进去,否则会报权限错误
  3. 一个 LLM API Key:DeepSeek 官方(https://api.deepseek.com)或任何 OpenAI 兼容服务都行

如果你在国外或者能直连 YouTube,第 2 步做完就能跑。国内访问 YouTube 需要本地代理(v2rayN / Clash 等),插件会自动识别,不用配。

第 1 步:安装

方式 A:装成 DSH 插件(推荐,能在对话里直接用)

git clone https://github.com/fengchang618gmail/dsh-course-subtitles.git
cd dsh-course-subtitles
node scripts/activate.js      # 把插件链接进 DSH profile 并写好 cordis.patch.yml
# 然后重启 DSH(退出后重新运行 dsh --profile web)

仓库自带 dsh.bundle 清单和 cordis.patch.yml,所以走官方安装通道也是同一套配置;发布到 npm 之后可以直接 dsh plugin --profile web add dsh-course-subtitles,不必手动 clone。

方式 B:只用命令行,不装插件

git clone https://github.com/fengchang618gmail/dsh-course-subtitles.git
cd dsh-course-subtitles
node bin/cs.js --help

第 2 步:配置密钥(二选一,都不写进代码)

方式一:环境变量(最简单)

# macOS / Linux
export FEISHU_APP_ID=cli_xxxxxxxxxxxx
export FEISHU_APP_SECRET=xxxxxxxxxxxxxxxx
export DEEPSEEK_API_KEY=sk-xxxxxxxxxxxx

# Windows PowerShell
$env:FEISHU_APP_ID="cli_xxxxxxxxxxxx"
$env:FEISHU_APP_SECRET="xxxxxxxxxxxxxxxx"
$env:DEEPSEEK_API_KEY="sk-xxxxxxxxxxxx"

方式二:DSH 凭据库(装成插件的推荐做法,密钥不进 shell 历史)

编辑 $DSH_HOME/.credentials.yaml(Windows 是 C:\Users\你的用户名\.dsh\.credentials.yaml):

version: 1
refs:
  FEISHU_APP_ID: cli_xxxxxxxxxxxx
  FEISHU_APP_SECRET: xxxxxxxxxxxxxxxx
  DEEPSEEK_API_KEY: sk-xxxxxxxxxxxx

第 3 步:跑起来

先做个不写飞书的演练,确认抓取和翻译都正常:

node bin/cs.js run --course https://learn.deeplearning.ai/courses/generative-ai-for-everyone --dry-run --lessons 1

没问题了,正式写入飞书(--parent 换成你自己的知识库节点链接):

node bin/cs.js run \
  --course https://learn.deeplearning.ai/courses/generative-ai-for-everyone \
  --parent https://your-tenant.feishu.cn/wiki/xxxxxxxxxxxxxxxxxxxx

只导出大纲(不花钱):

node bin/cs.js outline --course https://www.deeplearning.ai/courses/agentic-ai --parent <你的知识库节点链接>

两种用法

用法一:在 DSH 对话里直接用

装好插件并重启 DSH 后,把课程地址和飞书目录写进设置($DSH_HOME/settings.yaml 的 course-subtitles: 段),之后只要对 agent 说一句:

帮我跑一下课程字幕

agent 会调用这几个工具:

工具作用
course_subtitles_run抓字幕 → 翻译 → 分章节 → 写飞书,返回 run id
course_outline_run只导出课程大纲(零 token)
course_subtitles_status查看运行进度和产出文档链接
course_proxy_status网络自检:本机代理能不能出网、yt-dlp 在不在
course_llm_status列出会依次尝试的 LLM 凭据,probe: true 可以逐个试通

用法二:命令行

course-subtitles run [options]      # 字幕流水线(每课一篇飞书文档)
course-subtitles outline [options]  # 课程大纲(一篇飞书文档,零 token)
course-subtitles adapters           # 看看支持哪些平台
course-subtitles proxy              # 本机代理 / yt-dlp 体检
course-subtitles llm [--probe]      # 看看会用哪些 LLM 密钥,并逐个试通
course-subtitles config             # 打印最终生效的配置(密钥打码)

常用参数:

--lessons 1-10,12    # 只跑部分课时
--dry-run            # 只抓取+翻译,不写飞书
--force              # 全部重算,并原地重建已存在的飞书文档(链接不变)
--update-doc         # 只用缓存重写文档内容,不重新下载/翻译
--no-group           # 不按 Week/Module 分组,全部平铺
--no-segment         # 不合并断句,按原始字幕片段输出
--proxy <url>        # 手动指定代理:http://127.0.0.1:10809 或 socks5://127.0.0.1:10808
--proxy-mode off     # 完全不用代理
--no-yt-dlp          # 关闭 yt-dlp 兜底
--json               # 输出机器可读报告

配置项

配置文件放在工作目录下叫 course-subtitles.config.json(可参考 config.example.json),可用 --config <path> 指定。

字段默认值说明
courseUrl示例课程课程 / 视频链接
courseDisplayName—写进文档里的课程名
feishuParent必填飞书知识库父节点链接或 token
feishuDomain自动推导拼 wiki 链接用的域名,留空则从 feishuParent 推导
groupByWeektrue按 Week / Module 建目录
llmBaseUrl / llmModelDeepSeek首选 LLM 接口与模型
llmProviders[]额外要尝试的服务商(见下)
llmConcurrency3翻译并发数
translateChunkSize60每批翻译多少句
segmentSentencestrue是否把字幕片段合并成完整句子
proxyUrl / proxyMode自动代理设置,auto = 直连优先、失败才走代理
ytDlpPath / youtubeYtDlp自动YouTube 字幕兜底
courseraCookie空只有 Coursera 需要

关于密钥:仓库里没有任何密钥

这个项目不包含、不需要、也不接受硬编码的 API Key。所有凭据都从下面三个地方按优先级读取:

  1. 环境变量:LLM_API_KEY / DEEPSEEK_API_KEY / FEISHU_APP_ID / FEISHU_APP_SECRET / COURSERA_COOKIE
  2. 配置文件(你自己的本地文件,已被 .gitignore 排除)
  3. DSH 凭据库 $DSH_HOME/.credentials.yaml

LLM 多密钥自动回退

如果首选的 key 挂了(余额不足、被限流、区域不通),插件会自动依次尝试本机已有的其它凭据,不用你手动切换:

$ course-subtitles llm
chain (7 candidates, tried in order):
  1. deepseek     deepseek-chat        https://api.deepseek.com              [openai-completions, key from credentials.yaml]
  2. qimingxing   deepseek-v4.1-flash  https://api.aisj.ai                   [openai-responses,   key from credentials.yaml]
  3. glm          glm-5.3              https://api.aisj.ai                   [openai-completions, key from credentials.yaml]
  ...

加 --probe 会真的逐个 ping 一遍,直接告诉你哪个可用:

$ course-subtitles llm --probe
  1. deepseek     deepseek-chat        OK 944ms
  2. qimingxing   deepseek-v4.1-flash  OK 2472ms
  3. kimi         kimi-k3              OK 9986ms

要用别的服务商,在配置里声明即可:

"llmProviders": [
  { "name": "my-relay", "baseUrl": "https://relay.example.com/v1",
    "model": "deepseek-chat", "api": "openai-completions", "apiKeyEnv": "MY_RELAY_API_KEY" }
]

api 支持三种协议:openai-completions(默认)、openai-responses、anthropic-messages。


常见问题

Q:报飞书权限错误 / 403? 这个应用必须被加进目标知识库:知识库 → 设置 → 成员管理 → 添加应用。同时确认已开通 wiki:wiki、docx:document、drive:drive 权限并发布了版本。

Q:YouTube 一直失败? 先跑 course-subtitles proxy。它会告诉你:本机有没有代理、代理能不能真的出网、yt-dlp 装没装。国内直连 YouTube 一定失败,需要有本地代理。

Q:跑一遍要花多少钱? 一个 32 课的课程大约 16 万 token,DeepSeek 上约 ¥1–2。重跑不会重复花钱 —— 字幕、断句、翻译、章节都做了磁盘缓存,只补缺失的部分。大纲导出完全不花钱。

Q:会不会把一句话从中间切断? 不会。字幕片段会先合并成完整句子,段落始终由原始片段程序化拼接,不增字、不删字;章节标题也只允许落在句子边界上,落不进就前移到下一句。

Q:改完代码不生效? host 插件是 DSH 启动时加载的,改完 src/ 要重启 DSH;CLI 则立即生效。


项目结构

src/engine/          # 纯 Node 引擎(与 DSH 解耦,CLI 直接复用)
  adapters/          #   deeplearning | youtube | bilibili | coursera
  llm.js             #   凭据链:环境变量 / 配置文件 / DSH 凭据库,逐个尝试
  segment.js         #   整句分段(绝不切断一句话)
  translate.js       #   批量翻译(分批 / 对齐 / 重试 / 补缺)
  sections.js        #   章节标题生成 + 位置校验
  outline.js         #   课程大纲解析
  feishu.js          #   飞书文档创建 / 写入 / 挂载 / 幂等
  proxy.js           #   代理自动识别 + yt-dlp 定位
  pipeline.js        #   编排 + 缓存断点续跑
src/host/index.js    # DSH Host 半(cordis 插件 + HTTP 路由 + agent 工具)
bin/cs.js            # CLI 入口

更详细的设计说明、已知限制和自测脚本,见 docs/REFERENCE.md。


许可

MIT