Grab Videos and Frames from Youtube and other sites
by @qidu
Download videos and extract frames using yt-dlp and ffmpeg. Use when: - Download YouTube videos/Shorts: `yt-dlp <url>` - Extract frames from video: `ffmpeg -...
clawhub install grab-videosπ About This Skill
name: grab-videos alias: - grab-extract-frames - grab-frames - extract-frames - download-videos description: | Download videos and extract frames using yt-dlp and ffmpeg. Use when: - Download YouTube videos/Shorts:
yt-dlp
- Extract frames from video: ffmpeg -ss
- Batch extract frames: multiple videos, random timestamps
- Convert video formats, trim clipsNOT for: streaming-only sites without yt-dlp support, copyright-protected content.
Grab Videos and Frames Skill
Download videos and extract frames using yt-dlp + ffmpeg.
Quick Reference
| Task | Command |
|------|---------|
| Download YouTube video | yt-dlp -f best |
| Download Shorts | yt-dlp |
| Extract frame @ 5s | ffmpeg -ss 5 -i video.mp4 -vframes 1 out.jpg |
| Frames every 2s | ffmpeg -i video.mp4 -vf fps=0.5 out%03d.png |
| Random frame 5-15s | ffmpeg -ss $((RANDOM%11+5)) -i video.mp4 -vframes 1 out.jpg |
YouTube Download
# Download best quality
yt-dlp -f best "https://www.youtube.com/watch?v=XXXX"Download Shorts playlist (first 20)
yt-dlp "https://www.youtube.com/@user/shorts" --playlist-items 1-20List available formats
yt-dlp -F "https://www.youtube.com/watch?v=XXXX"Download specific format (e.g., 1080p)
yt-dlp -f "best[height<=1080][ext=mp4]" "https://www.youtube.com/watch?v=XXXX"Download audio only
yt-dlp -x "https://www.youtube.com/watch?v=XXXX"
Frame Extraction
# Single frame at timestamp
ffmpeg -ss 5 -i video.mp4 -vframes 1 -q:v 2 frame.jpgRandom frame (5-15 seconds)
ffmpeg -ss $((RANDOM % 11 + 5)) -i video.mp4 -vframes 1 -q:v 2 frame.jpgFrames every N seconds
ffmpeg -i video.mp4 -vf "fps=0.5" frame_%03d.png # every 2sScale down for thumbnails
ffmpeg -ss 10 -i video.mp4 -vf "scale=640:-1" -vframes 1 -q:v 5 thumb.jpgBatch from all videos
for f in *.mp4; do ffmpeg -ss 5 -i "$f" -vframes 1 "${f%.mp4}_thumb.jpg"; done
Batch Operations
# Download multiple URLs
for url in "url1" "url2" "url3"; do yt-dlp "$url"; doneExtract frame from each video
for f in *.mp4 *.webm; do [ -f "$f" ] || continue; dur=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$f"); rnd=$((RANDOM % 11 + 5)); ffmpeg -ss "$rnd" -i "$f" -vframes 1 "frames/${f%.mp4}_${rnd}s.jpg" -y; done
Output Directory
# Recommended structure
workspace/
βββ downloads/ # Raw videos
βββ frames/ # Extracted frames
βββ thumbnails/ # Small thumbs
βββ clips/ # Trimmed clips
Important Notes
-f best[height<=720] for smaller fileschmod +x for scriptsyt-dlp and ffmpeg tools with apt install on Linux and with brew install on macOS,https://github.com/yt-dlp/yt-dlp/releases and https://ffmpeg.org/download.htmlCommon Patterns
Download + extract 1 frame:
yt-dlp -o video.mp4 "https://www.youtube.com/watch?v=XXXX"
ffmpeg -ss 5 -i video.mp4 -vframes 1 -q:v 2 thumb.jpg
Thumbnail batch:
mkdir -p thumbnails
for f in *.mp4; do ffmpeg -ss 5 -i "$f" -vf "scale=320:-1" -vframes 1 -q:v 5 "thumbnails/${f%.mp4}.jpg" -y; done
Duration check:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 video.mp4
Extented Abilities and skills
Learn other abilities and skills from yt-dl help
yt-dlp --help
Learn other abilities and skills from ffmpeg help
ffmpeg -h