video-summarize
by @yilsonyan
Video summarization. Trigger: 1.User provides a video link (Bilibili/YouTube/Douyin/Twitter/TikTok etc.), 2.Summarize this video
clawhub install video-summarizeπ About This Skill
name: video-summarize description: "Video summarization. Trigger: 1.User provides a video link (Bilibili/YouTube/Douyin/Twitter/TikTok etc.), 2.Summarize this video"
Video Summarizer
Intelligently fetch video transcripts β Let LLM summarize the content
Pipeline
Video Link β Check Cache β Try downloading subtitles β Has subtitles? β Extract text directly β Summarize
β No subtitles
Download audio β Whisper transcribe β Summarize
Features
Supported Platforms
Powered by yt-dlp, supports 1000+ platforms:
| Platform | Example URL |
|----------|-------------|
| Bilibili | https://www.bilibili.com/video/BVxxx |
| YouTube | https://www.youtube.com/watch?v=xxx |
| Douyin | https://www.douyin.com/video/xxx |
| Twitter/X | https://twitter.com/user/status/xxx |
| TikTok | https://www.tiktok.com/@user/video/xxx |
| Instagram | https://www.instagram.com/p/xxx |
| AcFun | https://www.acfun.cn/v/acxxx |
| iQiyi/Youku/Tencent | Various Chinese video platforms |
| Others | Any platform supported by yt-dlp |
Dependency Installation
The script will automatically check and install missing dependencies:
brew install ffmpegbrew install whisper-cppbrew install python3Run:
scripts/install_dependency.sh
Note: First-time installation may take a while depending on your network speed.
Usage
# Process a video (first run transcribes, subsequent runs return cached result)
scripts/process.sh "video_url"
Pipeline:
1. Check cache (return immediately if exists)
2. Try downloading subtitles (prefer Chinese manual, then auto-generated)
3. Has subtitles β extract plain text; No subtitles β download audio β Whisper transcribe
4. Save to summarize_result/{title}_transcript_raw.txt
Then ask me to summarize and save the result as a markdown file!
Input Formats
https://www.bilibili.com/video/BV1s8UZBZEa8https://www.youtube.com/watch?v=dQw4w9WgXcQhttps://www.douyin.com/video/7123456789https://twitter.com/user/status/123456789https://www.tiktok.com/@user/video/123456789Output
Filenames use the video title for clarity, special characters handled automatically:
cache/{title}/
βββ transcript_raw.txt # Raw transcriptsummarize_result/
βββ {title}.md # Summary
Filename sanitization:
γγγγοΌοΌ β _/\:*?"<>| β __Directory Structure
video-summarize/
βββ cache/ # Cache directory
β βββ {title}/ # Per-video directory
β βββ transcript_raw.txt # Raw transcript (preserved)
β βββ status.json # Processing status (cleaned up)
β βββ subs/ # Subtitle temp dir (cleaned up)
β βββ audio.m4a # Audio file (cleaned up)
β βββ audio.wav # WAV format (cleaned up)
βββ summarize_result/ # Summary output directory
β βββ {title}.md # Summary file
βββ whisper-models/
β βββ ggml-base.bin
βββ scripts/
β βββ install_dependency.sh
β βββ process.sh
β βββ safe_filename.py
βββ SKILL.md
Subtitle Support
| Platform | Manual Subtitles | Auto Subtitles | |----------|-----------------|----------------| | YouTube | β Supported | β Supported | | Bilibili | β Supported | β οΈ Partial | | Others | Varies | Varies |
Subtitle priority: Chinese manual > English manual > Auto-generated
Notes
π‘ Examples
# Process a video (first run transcribes, subsequent runs return cached result)
scripts/process.sh "video_url"
Pipeline:
1. Check cache (return immediately if exists)
2. Try downloading subtitles (prefer Chinese manual, then auto-generated)
3. Has subtitles β extract plain text; No subtitles β download audio β Whisper transcribe
4. Save to summarize_result/{title}_transcript_raw.txt
Then ask me to summarize and save the result as a markdown file!