下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-vkwncxc8--video-summary.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-vkwncxc8/video-summary。把一段网络视频(YouTube / B站 / 直链)变成一张可离线打开、可下载的单文件 HTML 总结页: 概览 + 带时间戳的分章节要点 + 全局要点 + 关键词,底部附带完整文字稿(可折叠)。 全部 AI 调用都走用户自己的 OpenAI 兼容 key(ASR 做语音识别、LLM 做总结), 本 Skill 本身免费、无后端、不代收费用。
阅读全文 (展开查看完整说明)
概述
视频总结(video-summary)
把一段网络视频(YouTube / B站 / 直链)变成一张可离线打开、可下载的单文件 HTML 总结页:概览 + 带时间戳的分章节要点 + 全局要点 + 关键词,底部附带完整文字稿(可折叠)。
全部 AI 调用都走用户自己的 OpenAI 兼容 key(ASR 做语音识别、LLM 做总结),本 Skill 本身免费、无后端、不代收费用。
⚠️ 开始前:必须向用户收集「两套」凭证(ASR 一套 + LLM 一套)
语音识别(ASR)和总结(LLM)是两件事、两个独立服务,往往来自不同厂商:
- 有的厂商只给「对话/总结」接口、不给「语音识别」接口(典型如多数国产大模型平台 → 只有 chat,没有
/audio/transcriptions); - 有的 ASR 很强(如 OpenAI whisper、百炼 fun-asr-flash)但总结贵,于是 ASR 用 A 厂、总结用便宜的 B 厂。
所以使用本 Skill 前,请一次性向用户要齐下面两套,不要只问一把 key:
第一套:ASR(语音 → 文字)
| 项 | 示例 | 说明 |
|---|---|---|
| ASR 模型 | whisper-1 / fun-asr-flash-8k-realtime | OpenAI 用 whisper-1;百炼/DashScope 用 fun-asr-flash |
| ASR 接口地址(URL / base) | https://api.openai.com/v1 | OpenAI 兼容填这个;百炼走 --asr-backend dashscope,此栏不用填 |
| ASR 密钥(key) | sk-... | 对应上面那个 ASR 服务的 key |
第二套:LLM(文字 → 总结)
| 项 | 示例 | 说明 |
|---|---|---|
| LLM 模型 | gpt-4o-mini / deepseek-v4-flash | 任意 OpenAI 兼容对话模型 |
| LLM 接口地址(URL / base) | https://api.openai.com/v1 / https://dashscope.aliyuncs.com/compatible-mode/v1 | 总结服务的基址 |
| LLM 密钥(key) | sk-... | 对应上面那个 LLM 服务的 key |
同一厂商一把 key 也能用:如果用户说"我只有一个 key / 一个厂商都搞定",两套可以填同一个值(同一个 key、同一个 base)——但请仍用
--asr-key/--asr-base/--asr-model和--llm-key/--llm-base/--llm-model分别显式传入,不要依赖隐式共用。这样无论用户是「两套不同」还是「一套通用」,命令格式都一致,最不容易出错。
⚡ Agent 最快路径(照抄即可,别多想)
拿到上面两套凭证后,拼命令、运行:
python scripts/summarize_video.py
--url "<用户给的视频链接>"
--asr-backend <openai|dashscope>
--asr-model "<ASR模型>" --asr-base "<ASR接口地址>" --asr-key "<ASR密钥>"
--llm-model "<LLM模型>" --llm-base "<LLM接口地址>" --llm-key "<LLM密钥>"
--output summary.html填法举例:
# 例1:ASR 用 OpenAI whisper,LLM 用便宜国产模型(两套不同厂商)
python scripts/summarize_video.py
--url "<链接>"
--asr-backend openai
--asr-model "whisper-1" --asr-base "https://api.openai.com/v1" --asr-key "<sk-openai>"
--llm-model "domestic-chat" --llm-base "https://api.domestic.com/v1" --llm-key "<sk-domestic>"
--output summary.html
# 例2:都用阿里云百炼(ASR=fun-asr-flash,LLM=deepseek-v4-flash,可同一把 key)
python scripts/summarize_video.py
--url "<链接>"
--asr-backend dashscope
--asr-model "fun-asr-flash-8k-realtime" --asr-key "<sk-百炼>"
--llm-model "deepseek-v4-flash" --llm-base "https://dashscope.aliyuncs.com/compatible-mode/v1" --llm-key "<sk-百炼>"
--output summary.html百炼 ASR 用
--asr-backend dashscope,此时不需要--asr-base(脚本内部固定走百炼 ASR 端点);LLM 仍按 OpenAI 兼容/chat/completions走--llm-base。
跑完直接转述屏幕输出,不要去读 HTML。 脚本结束会把纯文本总结打到 stdout(标题/概览/分章节要点/全局要点/关键词 + HTML 路径),你直接把这段转述给用户即可,无需再用工具打开或读取 HTML 文件(除非用户明确说"我要看网页/要 HTML 文件")。这能省掉一轮"读文件 + 重新排版",让流程最快跑通。
📡 输出信号解读(跑完看这个判断成败)
| 现象 | 含义 | 你要做的 |
|---|---|---|
| stdout 出现「视频总结(纯文本…)」大段文字 | ✅ 成功 | 把这段转述给用户;HTML 路径也在其中 |
stderr 出现 ERROR: 语音识别需要密钥… / exit 2 | ASR 缺 key(或 --asr-key/--api-key 都没给) | 向用户要 ASR 的 key |
stderr 出现 ERROR: 总结需要 LLM 密钥… / exit 2 | LLM 缺 key(或 --llm-key/--api-key 都没给) | 向用户要 LLM 的 key |
| exit 3 | 缺 yt-dlp 且自动安装失败 | 提示用户手动 pip install yt-dlp,或网络受限 |
| exit 4 | 音频下载/转码失败(链接失效、站点受限、DashScope 缺 ffmpeg) | 换链接,或确认网络/依赖 |
| exit 5 | ASR 返回 401/403 | ASR 的 key 或 base 不对(常见:把 DeepSeek 官方 key 当百炼 key 用) |
| exit 6 | LLM 返回非 200 | LLM 的 key/base/model 不对 |
进度信息(下载中、识别中、总结中)都打到 stderr,纯文本总结打到 stdout,互不干扰。
何时使用
- 用户丢来一个视频链接,说"帮我看看这个视频讲了什么""总结一下这个视频""太长了我没空看"。
- 用户想要一份可分享 / 可离线查看的总结页(HTML),而不只是聊天里几行字。
- 视频以网络链接为主(YouTube / B站 等),语言多为中英混合。
工作流(两阶段)
- 视频 → 文字(语音识别 ASR):
yt-dlp直接抓音频流(默认 m4a,无需 ffmpeg)→ 调 OpenAI 兼容/v1/audio/transcriptions(verbose_json拿时间戳)。该接口原生支持 mp4/m4a/webm/mp3/wav,本地文件也可直接发。已有一段文字稿就--transcript跳过。 - 文字 → 总结(LLM):带
[mm:ss]时间戳的文字稿切块(超长自动分块再合并)→ 调/v1/chat/completions产出结构化 JSON。已有总结 JSON 就--summary-json跳过。 - 渲染 HTML + 打印纯文本:渲染单文件 HTML(顺带把纯文本总结打到 stdout)。
前置条件(用户侧需自行准备)
- Python 3.10+。
- 网络可访问目标视频。
- 两套 API 凭证(见顶部):ASR 的模型/URL/key + LLM 的模型/URL/key。
- 仅
--url需要yt-dlp,脚本首次用到会自动pip install yt-dlp。 ffmpeg:基本用不到(默认抓 m4a 直发)。仅少数情况需要:① DashScope ASR 后端(需把音频转 16k wav,脚本会用 imageio-ffmpeg 内置二进制自动解决);② 个别本地容器格式如.mov/.mkv。
调用方式(参数速查)
脚本位于 scripts/summarize_video.py。推荐分别指定 ASR / LLM 两套参数(见顶部):
ASR 相关
| 参数 | 必填 | 说明 |
|---|---|---|
--asr-backend | 否 | openai(默认,走 /audio/transcriptions)/ dashscope(百炼 fun-asr-flash) |
--asr-model | 视情况 | 识别模型,默认 whisper-1(DashScope 后端用 fun-asr-flash-8k-realtime) |
--asr-base | 视情况 | ASR 接口基址(OpenAI 兼容填写;dashscope 后端忽略此项) |
--asr-key | 视情况 | ASR 专用密钥(推荐显式给,最清晰) |
LLM 相关
| 参数 | 必填 | 说明 |
|---|---|---|
--llm-model | 视情况 | 总结模型,默认 gpt-4o-mini |
--llm-base | 视情况 | 总结接口基址,默认 https://api.openai.com/v1 |
--llm-key | 视情况 | LLM 专用密钥(推荐显式给,最清晰) |
通用 / 其他
| 参数 | 必填 | 说明 |
|---|---|---|
--url | 三选一 | 网络视频链接,需 yt-dlp(缺失自动安装,无需 ffmpeg) |
--file | 三选一 | 本地视频文件(mp4/m4a/mp3/wav/webm 可直接发;个别 .mov 需 ffmpeg) |
--transcript | 三选一 | 直接给文字稿 .txt,跳过下载与识别 |
--summary-json | 否 | 直接给总结 JSON,仅生成 HTML(测试用) |
--api-key | 可选(旧式) | 一次性给 ASR+LLM 共用的 key(建议改用上面两套分别指定;也可设环境变量 OPENAI_API_KEY) |
--api-base | 可选(旧式) | ASR/LLM 共用的基址默认值,缺省 https://api.openai.com/v1 |
--lang | 否 | 视频语言:auto / zh / en / 中英混合 |
--output | 否 | 输出 HTML 路径,默认 video_summary.html |
--title | 否 | 报告标题 |
--no-print-summary | 否 | 加上它则不把纯文本总结打到 stdout(默认会打印) |
更多用法示例
# 已有一段文字稿,只做总结 + 出 HTML(只需 LLM 一套;无需 ffmpeg / yt-dlp)
python scripts/summarize_video.py
--transcript transcript.txt
--llm-model "gpt-4o-mini" --llm-base "https://api.openai.com/v1" --llm-key "<sk-...>"
# 纯测试:给文字稿 + 现成总结,只验证 HTML(不花任何 API)
python scripts/summarize_video.py --transcript t.txt --summary-json s.json --output test.html限制(务必诚实告知用户)
- 需要用户自己的两套 API 凭证,按量计费;本 Skill 不替用户付钱、也不内置免费额度。
- 语音识别不是 100% 准确,专有名词、口音、嘈杂环境会有误差(文字稿区已注明)。
- 总结是"基于文字稿的提炼",不等于真正'理解了'视频画面;纯画面信息可能丢失。
--url路径依赖yt-dlp(缺失自动安装);部分站点/地区可能下载受限。- 默认已去除 ffmpeg 依赖:网络链接走音频流直抓 m4a,本地常见格式直接发送;仅极少数情况需 ffmpeg。
- 更详尽机制与排错见
references/video-summary-guide.md。
资源
scripts/summarize_video.py— 核心脚本(下载→识别→分块总结→渲染 HTML + 打印纯文本)。references/video-summary-guide.md— 技术原理、参数细节、排错与边界说明。scripts/_selftest.py— 离线自测(无需网络/key),跑python scripts/_selftest.py即可验证无回归。