关于 video-summarizer
video-summarizer 是一项视频下载与整理技能,可生成摘要、转录文本、字幕及媒体文件。它面向需要查看视频内容的人,支持 yt-dlp 覆盖的网站,并可在缺少字幕时转录音频。
主要功能
- 01下载 MP4 视频和 MP3 音频
- 02获取字幕或转录音频
- 03生成纯文本转录和摘要
- 04支持 yt-dlp 覆盖的网站
适用场景
- 01总结链接中的在线视频
- 02转录没有字幕的视频
- 03保存视频资料供个人学习
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ liang121/ video-summarizer --skill video-summarizer安装后在 Claude Code 中输入/video-summarizer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/summary-prompt.mdscripts/install_deps.shparallel_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:获取字幕
优先顺序:
- 尝试下载人工字幕(质量最佳)
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
-o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
- 尝试下载自动生成的字幕
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
-o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
- 没有可用字幕时,使用 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
转录选项:
| 选项 | 默认值 | 说明 |
|---|---|---|
--model | small | tiny/base/small/medium/large-v3 |
--language | auto | 语言代码或 'auto' |
--workers | CPU/2 | 并行工作进程数 |
--min-segment | 60 | 启用拆分所需的最短时长(秒) |
步骤 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:生成摘要文件
- 从
$SKILL_DIR/reference/summary-prompt.md读取提示词模板 - 替换占位符:
{{TITLE}}、{{PLATFORM}}、{{URL}}、{{DURATION}}、{{LANGUAGE}}、{{DOWNLOAD_TIME}}、{{TRANSCRIPT}} - 生成摘要并保存到
$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 小时)
- 询问用户是否只需要部分内容
- 并行脚本会自动处理较长的文件
不支持的平台
yt-dlp --list-extractors | grep -i "platform-name"
注意事项
- 存储:文件保存在当前工作目录下的
./downloads/ - 版权:仅供个人学习使用
- 网络:某些平台可能需要代理
- 首次运行:需要下载 Whisper 模型(small 约 244MB)
- 并行处理:较长的音频(超过 60 秒)会在静音处自动拆分
评论
支持 Markdown