mcpField
V
Video Summarizer

Video Summarizer

github.com/martinopiaggi生产力23390 次安装1 天前更新
代码仓库

关于 Video Summarizer

Video Summarizer 是一款用于转录和总结视频内容的命令行技能,适合处理视频资料的用户。它支持在线链接及本地或云端文件,并提供多种总结风格和输出格式。

主要功能

  1. 01转录 YouTube 字幕或音频
  2. 02处理本地文件、Google Drive 和 Dropbox
  3. 03并行处理文本分块并调用 LLM
  4. 04提供多种总结风格
  5. 05以 Markdown、JSON 或 HTML 保存结果

适用场景

  1. 01总结 YouTube 视频或本地讲座文件
  2. 02批量总结多个视频链接
  3. 03提取问答、教程或关键见解
  4. 04根据视频内容生成 Mermaid 概念图

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/martinopiaggi/summarize --skill video-summarizer

安装后在 Claude Code 中输入/video-summarizer确认已加载。

附带文件README.md

详细介绍

概览

此技能通过运行 python -m summarizer CLI 工具来转录和总结视频内容。它支持 YouTube(字幕或音频)、本地文件、Google Drive 和 Dropbox。转录文本会分块处理,通过兼容 OpenAI 的大模型并行处理,最后合并为摘要。

重要:始终使用下面的 CLI 命令。切勿尝试直接获取、抓取或下载视频 URL(例如使用 webfetch 或 curl)。所有下载、转录和总结工作都由 CLI 在内部处理。

快速开始(分步说明)

请严格按照以下步骤操作:

步骤 1 -- 运行 CLI:

python -m summarizer --source "VIDEO_URL"

该工具使用 summarizer.yaml 中的默认提供方(已配置)。基本用法无需额外标志。

步骤 2 -- 读取输出文件:

CLI 成功运行后会打印输出文件名。文件始终保存在相对于项目工作目录的 summaries/ 子目录中。例如:

[+] Saved watch_20260207_234533.md

要读取的完整路径为:summaries/watch_20260207_234533.md

步骤 3 -- 向用户展示结果。

就这样,共三个步骤。

文件位置

所有路径均相对于项目工作目录(即包含 summarizer.yaml 和 setup.py 的目录)。

文件位置
配置./summarizer.yaml
API 密钥./.env
提示词模板./summarizer/prompts.json
输出摘要./summaries/<filename>.md
CLI 入口点python -m summarizer

请勿在主目录或技能目录中查找 .env 或配置文件。它们位于项目根目录中。

CLI 参考

python -m summarizer [OPTIONS]
必填项
标志说明
--source一个或多个视频 URL 或文件路径
提供方选项
标志说明默认值
--providersummarizer.yaml 中命名的提供方YAML 中的 default_provider
--base-urlAPI 端点 URL(覆盖提供方)来自 YAML
--model模型标识符(覆盖提供方)来自 YAML
--api-keyAPI 密钥(覆盖 .env 自动匹配)自动从 .env 获取
来源选项
标志说明默认值
--typeYouTube Video、Video URL、Local File、Google Drive Video Link、Dropbox Video LinkYouTube Video
--force-download跳过 YouTube 字幕,改为下载音频False
--transcriptionCloud Whisper(Groq API)或 Local WhisperCloud Whisper
--whisper-modeltiny、base、small、medium、largetiny
--languageauto 会选择第一个可用的 YouTube 字幕轨道,并让 Whisper 检测语言;显式指定的代码将严格按指定值处理auto
处理选项
标志说明默认值
--prompt-type摘要风格(参见下方的风格)来自 YAML 默认值
--chunk-size每个文本块的字符数来自 YAML 默认值
--parallel-calls并发 API 请求数30
--max-tokens每个文本块的最大输出 token 数4096
输出选项
标志说明默认值
--output-dir保存摘要的目录summaries
--output-formatmarkdown、json 或 htmlmarkdown
--no-save仅打印到标准输出,不保存文件False
--verbose、-v输出详细进度信息False

警告: 请勿在 Windows 上使用 --no-save。由于一个已知的编码错误,摘要中的 Unicode 字符会导致标准输出崩溃。请始终让工具将内容保存到文件,然后读取该文件。

配置选项
标志说明
--config配置文件路径(默认:自动检测)
--no-config忽略配置文件,仅使用 CLI 参数
--init-config生成示例 summarizer.yaml 并退出

摘要风格

使用 --prompt-type 指定。定义于 summarizer/prompts.json。

风格用途
Questions and answers从内容中提取问答
Summarization标准摘要,含标题
Distill Wisdom提取观点、引言和参考资料
DNA Extractor将核心真相提炼至最多 200 个单词
Fact Checker使用 TRUE/FALSE/MISLEADING 标签验证主张
Tutorial根据内容生成分步说明
Research结合更广泛的背景进行深入分析
Reflections拓展内容之外的哲学思考
Mermaid Diagram使用 Mermaid.js 语法绘制概念图
Essay Writing in Paul Graham Style以 Paul Graham 的风格撰写 250 个单词的文章
Only grammar correction with highlights修正文法并用粗体标出修改处

示例

总结 YouTube 视频(最简单的形式)
python -m summarizer --source "https://youtube.com/watch?v=VIDEO_ID"
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
指定提供方
python -m summarizer --source "https://youtube.com/watch?v=VIDEO_ID" --provider gemini
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
使用 Distill Wisdom 提取关键见解
python -m summarizer \
  --source "https://youtube.com/watch?v=VIDEO_ID" \
  --provider openrouter \
  --prompt-type "Distill Wisdom"
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
使用 Perplexity 核查视频中的主张
python -m summarizer \
  --source "https://youtube.com/watch?v=VIDEO_ID" \
  --base-url "https://api.perplexity.ai" \
  --model "sonar-pro" \
  --prompt-type "Fact Checker"
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
根据讲座生成 Mermaid 图表
python -m summarizer \
  --source "https://youtube.com/watch?v=VIDEO_ID" \
  --provider gemini \
  --prompt-type "Mermaid Diagram"
# Output: summaries/watch_YYYYMMDD_HHMMSS.md
总结本地文件
python -m summarizer \
  --type "Local File" \
  --source "./lecture.mp4" \
  --provider groq
# Output: summaries/lecture_YYYYMMDD_HHMMSS.md
批量处理多个视频
python -m summarizer \
  --source "URL1" "URL2" "URL3" \
  --provider gemini \
  --prompt-type "Summarization"
# Output: one file per URL in summaries/
不使用配置文件(显式指定所有标志)
python -m summarizer \
  --source "https://youtube.com/watch?v=VIDEO_ID" \
  --base-url "https://openrouter.ai/api/v1" \
  --model "google/gemini-2.0-flash-exp:free" \
  --api-key "sk-or-v1-YOUR_KEY" \
  --prompt-type "Tutorial" \
  --no-config
# Output: summaries/watch_YYYYMMDD_HHMMSS.md

阅读输出

运行 CLI 后,务必读取 summaries/ 中的输出文件:

# The CLI prints something like:
# [+] Saved watch_20260207_234533.md
#
# The file is at:
summaries/watch_20260207_234533.md

使用 Read 工具读取完整路径:summaries/<filename>(相对于项目根目录)。

多步骤工作流

如需进行全面分析,可针对同一视频串联多种风格:

  1. 先使用 Summarization 快速了解概要
  2. 使用 Distill Wisdom 提取关键见解
  3. 运行 Fact Checker(最好搭配 Perplexity)核查主张
  4. 生成 Mermaid Diagram 作为可视化参考

错误处理

  • 如果未找到 API 密钥,工具会检查 .env 中是否有与提供方 URL 关键词匹配的密钥
  • 如果无法获取 YouTube 字幕,工具会改为下载音频并使用 Whisper 转录
  • --language auto 不会强制使用英语。它会使用 YouTube 上第一个可用的字幕轨道,并由 Whisper 检测语言。
  • 使用 --verbose 查看详细进度并排查问题
  • 云端 Whisper 需要 Groq API 密钥(提供免费套餐)

配置文件

所有文件均位于项目工作目录中:

  • summarizer.yaml:提供方定义(base_url、model、chunk-size)和默认值
  • .env:API 密钥,根据 URL 关键词自动匹配(例如,generativelanguage = YOUR_KEY)
  • summarizer/prompts.json:提示词模板,使用 {text} 作为转录文本占位符

测试

python -m pytest tests/ -v

评论

支持 Markdown