video-summarizer

Download videos from 1800+ platforms (YouTube, Bilibili, Twitter/X, TikTok, Vimeo, Instagram, etc.) and generate complete resource package with video, audio, subtitles, and AI summary. Actions: summarize, download, transcribe, extract video content. Platforms: youtube.com, bilibili.com, twitter.com, x.com, tiktok.com, vimeo.com, instagram.com, twitch.tv. Outputs: MP4 video, MP3 audio, VTT subtitles with timestamps, TXT transcript, MD AI summary. Auto-installs uv, yt-dlp, ffmpeg. Python dependencies managed by uv.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "video-summarizer" with this command: npx skills add liang121/video-summarizer/liang121-video-summarizer-video-summarizer

Video Summarizer

Overview

Download videos from any platform and generate a complete resource package including:

  • Original video file (mp4)
  • Audio file (mp3)
  • Subtitle file (with timestamps, vtt/srt format)
  • Summary file (summary.md)

Supports all 1800+ websites supported by yt-dlp.

Trigger Conditions

When the user:

  • Provides a video link and asks for a summary
  • Says "summarize this video", "what's in this video"
  • Asks to "extract video content", "transcribe video"
  • Says "download this video"
  • Provides a link from YouTube/Bilibili/Twitter/Vimeo/TikTok etc.

Supported Platforms

  • 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)
  • And 1800+ other platforms (all sites supported by yt-dlp)

Output Structure

All files are saved to downloads/<video-title>/ in the current working directory:

./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

Workflow

Step 1: Install Dependencies

Run the install script to check and install all dependencies:

bash "$SKILL_DIR/scripts/install_deps.sh"

This installs: uv (Python package manager), ffmpeg, yt-dlp, and checks Python version. faster-whisper will be automatically managed by uv.

Step 2: Get Video Info and Create Output Directory

# 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"

Step 3: Download Video and Audio

# 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"

Step 4: Get Subtitles

Priority order:

  1. Try downloading manual subtitles (best quality)
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
  -o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
  1. Try downloading auto-generated subtitles
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
  -o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
  1. Use faster-whisper transcription when no subtitles available
uv run "$SKILL_DIR/scripts/parallel_transcribe.py" \
  --input "$OUTPUT_DIR/audio.mp3" \
  --output-dir "$OUTPUT_DIR" \
  --model small \
  --language auto

The script automatically:

  • Splits long audio files at silence points
  • Uses multiple CPU cores for parallel transcription
  • Outputs both subtitle.vtt and transcript.txt

Transcription Options:

OptionDefaultDescription
--modelsmalltiny/base/small/medium/large-v3
--languageautoLanguage code or 'auto'
--workersCPU/2Number of parallel workers
--min-segment60Min duration (sec) to enable splitting

Step 5: Generate Plain Text Transcript

If subtitles were downloaded (not transcribed), convert to plain text:

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

Step 6: Generate Summary File

  1. Read prompt template from $SKILL_DIR/reference/summary-prompt.md
  2. Replace placeholders: {{TITLE}}, {{PLATFORM}}, {{URL}}, {{DURATION}}, {{LANGUAGE}}, {{DOWNLOAD_TIME}}, {{TRANSCRIPT}}
  3. Generate summary and save to $OUTPUT_DIR/summary.md

Platform-Specific Handling

Bilibili

# Prioritize Chinese subtitles
yt-dlp --sub-lang zh-Hans,zh-Hant,zh ...
# If login required
yt-dlp --cookies-from-browser chrome "VIDEO_URL"

Platforms Requiring Login

yt-dlp --cookies-from-browser chrome "VIDEO_URL"
# or firefox
yt-dlp --cookies-from-browser firefox "VIDEO_URL"

Error Handling

Cannot Get Subtitles

Use the parallel transcription script (Step 4, option 3).

Video Too Long (>1 hour)

  1. Ask user if they only need partial content
  2. The parallel script handles long files automatically

Unsupported Platform

yt-dlp --list-extractors | grep -i "platform-name"

Notes

  1. Storage: Files saved to ./downloads/ in current working directory
  2. Copyright: For personal learning use only
  3. Network: Some platforms may require proxy
  4. First Run: Whisper model download required (~244MB for small)
  5. Parallel Processing: Long audio (>60s) auto-splits at silence points

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

arxiv-paper-writer

Use this skill whenever the user wants Claude Code to write, scaffold, compile, debug, or review an arXiv-style academic paper, especially survey papers with LaTeX, BibTeX citations, TikZ figures, tables, and PDF output. This skill should trigger for requests like writing a full paper, creating an arXiv paper project, turning a research topic into a LaTeX manuscript, reproducing the Paper-Write-Skill-Test agent-survey workflow, or setting up a Windows/Linux Claude Code paper-writing loop.

Archived SourceRecently Updated
Coding

cli-proxy-troubleshooting

排查 CLI Proxy API(codex-api-proxy)的配置、认证、模型注册和请求问题。适用场景包括:(1) AI 请求报错 unknown provider for model, (2) 模型列表中缺少预期模型, (3) codex-api-key/auth-dir 配置不生效, (4) CLI Proxy 启动后 AI 无法调用, (5) 认证成功但请求失败或超时。包含源码级排查方法:模型注册表架构、认证加载链路、 SanitizeCodexKeys 规则、常见错误的真实根因。

Archived SourceRecently Updated
Coding

visual-summary-analysis

Performs AI analysis on input video clips/image content and generates a smooth, natural scene description. | 视觉摘要智述技能,对传入的视频片段/图片内容进行AI分析,生成一段通顺自然的场景描述内容

Archived SourceRecently Updated
Coding

frontend-skill

全能高级前端研发工程师技能。擅长AI时代前沿技术栈(React最新 + shadcn/ui + Tailwind CSS v4 + TypeScript + Next.js),精通动效库与交互特效开发。采用Glue Code风格快速实现代码,强调高质量产品体验与高度友好的UI视觉规范。在组件调用、交互特效、全局Theme上保持高度规范:绝不重复造轮子,相同逻辑出现两次即封装为组件。具备安全意识,防范各类注入攻击。开发页面具有高度自适应能力,响应式设计贯穿始终。当用户无特殊技术栈要求时,默认采用主流前沿技术栈。

Archived SourceRecently Updated