mcpField
V
video-summarizer

video-summarizer

github.com/liang121生产力57527 次安装40 周前更新
代码仓库

关于 video-summarizer

video-summarizer 是一项视频下载与整理技能,可生成摘要、转录文本、字幕及媒体文件。它面向需要查看视频内容的人,支持 yt-dlp 覆盖的网站,并可在缺少字幕时转录音频。

主要功能

  1. 01下载 MP4 视频和 MP3 音频
  2. 02获取字幕或转录音频
  3. 03生成纯文本转录和摘要
  4. 04支持 yt-dlp 覆盖的网站

适用场景

  1. 01总结链接中的在线视频
  2. 02转录没有字幕的视频
  3. 03保存视频资料供个人学习

安装

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

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

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

reference/
summary-prompt.md
scripts/
install_deps.sh
parallel_transcribe.py

详细介绍

视频摘要

概述

从任意平台下载视频,并生成完整的资源包,包括:

  • 原始视频文件(mp4)
  • 音频文件(mp3)
  • 字幕文件(带时间戳,vtt/srt 格式)
  • 摘要文件(summary.md)

支持 yt-dlp 支持的所有 1800 多个网站。

触发条件

当用户:

  • 提供视频链接并要求生成摘要
  • 说“总结这个视频”或“这个视频里有什么”
  • 要求“提取视频内容”或“转录视频”
  • 说“下载这个视频”
  • 提供来自 YouTube/Bilibili/Twitter/Vimeo/TikTok 等平台的链接

支持的平台

  • YouTube(youtube.com、youtu.be)
  • Bilibili(bilibili.com、b23.tv)
  • Twitter/X(x.com、twitter.com)
  • Vimeo(vimeo.com)
  • TikTok(tiktok.com)
  • Instagram(instagram.com)
  • Twitch(twitch.tv)
  • 以及其他 1800 多个平台(所有 yt-dlp 支持的网站)

输出结构

所有文件都保存到当前工作目录下的 downloads/<video-title>/:

./downloads/
└── <video-title>/
    ├── video.mp4          # Original video
    ├── audio.mp3          # Extracted audio
    ├── subtitle.vtt       # Subtitles with timestamps
    ├── transcript.txt     # Plain text transcript (no timestamps)
    └── summary.md         # Structured summary

工作流

步骤 1:安装依赖项

运行安装脚本以检查并安装所有依赖项:

bash "$SKILL_DIR/scripts/install_deps.sh"

此脚本会安装:uv(Python 包管理器)、ffmpeg、yt-dlp,并检查 Python 版本。 faster-whisper 将由 uv 自动管理。

步骤 2:获取视频信息并创建输出目录
# Get video title (sanitize special characters for folder name)
TITLE=$(yt-dlp --print "%(title)s" "VIDEO_URL" | sed 's/[/:*?"<>|]/_/g' | cut -c1-80)
DURATION=$(yt-dlp --print "%(duration)s" "VIDEO_URL")

# Create output directory
OUTPUT_DIR=./downloads/"$TITLE"
mkdir -p "$OUTPUT_DIR"
步骤 3:下载视频和音频
# Download video (mp4 format, best quality up to 1080p)
yt-dlp -f "bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[height<=1080][ext=mp4]/best" \
  --merge-output-format mp4 \
  -o "$OUTPUT_DIR/video.%(ext)s" "VIDEO_URL"

# Extract audio (mp3 format)
yt-dlp -x --audio-format mp3 -o "$OUTPUT_DIR/audio.%(ext)s" "VIDEO_URL"
步骤 4:获取字幕

优先顺序:

  1. 尝试下载人工字幕(质量最佳)
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
  -o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
  1. 尝试下载自动生成的字幕
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
  -o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
  1. 没有可用字幕时,使用 faster-whisper 转录
uv run "$SKILL_DIR/scripts/parallel_transcribe.py" \
  --input "$OUTPUT_DIR/audio.mp3" \
  --output-dir "$OUTPUT_DIR" \
  --model small \
  --language auto

脚本会自动:

  • 在静音处拆分较长的音频文件
  • 使用多个 CPU 核心并行转录
  • 同时输出 subtitle.vtt 和 transcript.txt

转录选项:

选项默认值说明
--modelsmalltiny/base/small/medium/large-v3
--languageauto语言代码或 'auto'
--workersCPU/2并行工作进程数
--min-segment60启用拆分所需的最短时长(秒)
步骤 5:生成纯文本转录稿

如果下载的是字幕(而非转录结果),请将其转换为纯文本:

if [[ ! -f "$OUTPUT_DIR/transcript.txt" ]]; then
  SUBTITLE_FILE=$(ls "$OUTPUT_DIR"/*.vtt "$OUTPUT_DIR"/*.srt 2>/dev/null | head -1)
  if [[ "$SUBTITLE_FILE" == *.vtt ]]; then
    sed '/^[0-9]/d; /^$/d; /-->/d; /^WEBVTT/d; /^Kind:/d; /^Language:/d; /^NOTE/d' \
      "$SUBTITLE_FILE" > "$OUTPUT_DIR/transcript.txt"
  elif [[ "$SUBTITLE_FILE" == *.srt ]]; then
    sed '/^[0-9]/d; /^$/d; /-->/d' "$SUBTITLE_FILE" > "$OUTPUT_DIR/transcript.txt"
  fi
fi
步骤 6:生成摘要文件
  1. 从 $SKILL_DIR/reference/summary-prompt.md 读取提示词模板
  2. 替换占位符:{{TITLE}}、{{PLATFORM}}、{{URL}}、{{DURATION}}、{{LANGUAGE}}、{{DOWNLOAD_TIME}}、{{TRANSCRIPT}}
  3. 生成摘要并保存到 $OUTPUT_DIR/summary.md

平台特定处理

Bilibili
# Prioritize Chinese subtitles
yt-dlp --sub-lang zh-Hans,zh-Hant,zh ...
# If login required
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
需要登录的平台
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
# or firefox
yt-dlp --cookies-from-browser firefox "VIDEO_URL"

错误处理

无法获取字幕

使用并行转录脚本(步骤 4,选项 3)。

视频过长(超过 1 小时)
  1. 询问用户是否只需要部分内容
  2. 并行脚本会自动处理较长的文件
不支持的平台
yt-dlp --list-extractors | grep -i "platform-name"

注意事项

  1. 存储:文件保存在当前工作目录下的 ./downloads/
  2. 版权:仅供个人学习使用
  3. 网络:某些平台可能需要代理
  4. 首次运行:需要下载 Whisper 模型(small 约 244MB)
  5. 并行处理:较长的音频(超过 60 秒)会在静音处自动拆分

评论

支持 Markdown