🚀 快速安装

复制以下命令并运行,立即安装此 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:获取字幕

优先级顺序:

  1. 尝试下载手动字幕(最佳质量)
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
  -o "$OUTPUT_DIR/subtitle" "视频URL"
  1. 尝试下载自动生成字幕
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
  -o "$OUTPUT_DIR/subtitle" "视频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.vtttranscript.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:生成总结文件

  1. $SKILL_DIR/reference/summary-prompt.md 读取提示模板
  2. 替换占位符:{{TITLE}}{{PLATFORM}}{{URL}}{{DURATION}}{{LANGUAGE}}{{DOWNLOAD_TIME}}{{TRANSCRIPT}}
  3. 生成总结并保存到 $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小时)

  1. 询问用户是否只需要部分内容
  2. 并行脚本会自动处理长文件

不支持的平台

yt-dlp --list-extractors | grep -i "平台名称"

注意事项

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

📄 原始文档

完整文档(英文):

https://skills.sh/liang121/video-summarizer/video-summarizer

💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。