🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx skills add https://skills.sh/liang121/video-summarizer/video-summarizer
💡 提示:需要 Node.js 和 NPM
视频总结器
概述
从任何平台下载视频,并生成一个完整的资源包,包含:
- 原始视频文件 (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/<视频标题>/ 中:
./downloads/
└── <视频标题>/
├── video.mp4 # 原始视频
├── audio.mp3 # 提取的音频
├── subtitle.vtt # 带时间戳的字幕
├── transcript.txt # 纯文本转录稿(无时间戳)
└── summary.md # 结构化总结
工作流程
步骤 1:安装依赖
运行安装脚本以检查并安装所有依赖:
bash "$SKILL_DIR/scripts/install_deps.sh"
这将安装:uv(Python 包管理器)、ffmpeg、yt-dlp,并检查 Python 版本。
faster-whisper 将由 uv 自动管理。
步骤 2:获取视频信息并创建输出目录
# 获取视频标题(清理特殊字符用于文件夹名)
TITLE=$(yt-dlp --print "%(title)s" "视频URL" | sed 's/[/:*?"<>|]/_/g' | cut -c1-80)
DURATION=$(yt-dlp --print "%(duration)s" "视频URL")
# 创建输出目录
OUTPUT_DIR=./downloads/"$TITLE"
mkdir -p "$OUTPUT_DIR"
步骤 3:下载视频和音频
# 下载视频(mp4格式,最高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" "视频URL"
# 提取音频(mp3格式)
yt-dlp -x --audio-format mp3 -o "$OUTPUT_DIR/audio.%(ext)s" "视频URL"
步骤 4:获取字幕
优先级顺序:
- 尝试下载手动字幕(最佳质量)
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
-o "$OUTPUT_DIR/subtitle" "视频URL"
- 尝试下载自动生成字幕
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
-o "$OUTPUT_DIR/subtitle" "视频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
# 优先使用中文字幕
yt-dlp --sub-lang zh-Hans,zh-Hant,zh ...
# 如果需要登录
yt-dlp --cookies-from-browser chrome "视频URL"
需要登录的平台
yt-dlp --cookies-from-browser chrome "视频URL"
# 或 firefox
yt-dlp --cookies-from-browser firefox "视频URL"
错误处理
无法获取字幕
使用并行转录脚本(步骤 4,选项 3)。
视频太长(>1小时)
- 询问用户是否只需要部分内容
- 并行脚本会自动处理长文件
不支持的平台
yt-dlp --list-extractors | grep -i "平台名称"
注意事项
- 存储:文件保存在当前工作目录的
./downloads/中 - 版权:仅供个人学习使用
- 网络:某些平台可能需要代理
- 首次运行:需要下载 Whisper 模型(small 约 244MB)
- 并行处理:长音频(>60秒)会在静音点自动分割
📄 原始文档
完整文档(英文):
https://skills.sh/liang121/video-summarizer/video-summarizer
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)