| name | media-fetch |
| user-invocable | false |
| description | Download video/audio from 1000+ sites (YouTube, Twitter/X, Spotify, TikTok, etc.), extract audio, download subtitles, transcribe speech to text, and search for videos. Use when asked to download, summarize, or transcribe any video/audio URL, or when asked to search YouTube. |
| triggers | ["download video","download audio","youtube","transcribe video","summarize this video","get subtitles","yt-dlp","media download","podcast","search youtube","watch this"] |
| category | media |
| maturity | stable |
| tags | ["yt-dlp","ffmpeg","whisper","transcription","youtube"] |
Media Fetch
Download, extract, and transcribe media from 1000+ sites. Built on yt-dlp + ffmpeg + Whisper.
Scripts: ${CLAUDE_SKILLS_DIR:-$HOME/.claude-agent/.claude/skills}/media-fetch/scripts/
Downloads: ~/.media-fetch/downloads/
Transcripts: ~/.media-fetch/transcripts/
Metadata: ~/.media-fetch/metadata/
Quick Reference
S=${CLAUDE_SKILLS_DIR:-$HOME/.claude-agent/.claude/skills}/media-fetch/scripts
python3 $S/fetch.py URL
python3 $S/fetch.py URL --audio
python3 $S/fetch.py URL --transcript
python3 $S/fetch.py URL --subs
python3 $S/fetch.py URL --info
python3 $S/fetch.py --search "prop trading strategies"
python3 $S/batch.py --file video.mp4 --extract-audio
python3 $S/batch.py --file audio.mp3 --transcribe
Commands — fetch.py
Video Info (No Download)
python3 fetch.py URL --info
python3 fetch.py URL --info --json
Shows: title, channel, duration, views, likes, description, chapters, available formats, subtitle languages, best video/audio quality.
Download Video
python3 fetch.py URL
python3 fetch.py URL --quality 720
python3 fetch.py URL --quality 480
python3 fetch.py URL -o /tmp/videos
python3 fetch.py URL --format "bestvideo[height<=1080]+bestaudio"
Download Audio Only
python3 fetch.py URL --audio
python3 fetch.py URL --audio --clip 5:00-10:00
Download Subtitles Only
The fastest way to get video content — no media download needed:
python3 fetch.py URL --subs
python3 fetch.py URL --subs --sub-lang en,no
python3 fetch.py URL --subs --sub-lang auto
Returns cleaned text (timestamps/formatting stripped). Works with:
- YouTube (manual + auto-generated captions)
- Most major platforms with subtitle support
Download + Transcribe
The full "summarize this video" pipeline:
python3 fetch.py URL --transcript
python3 fetch.py URL --transcript --transcribe-method whisper-api
python3 fetch.py URL --transcript --transcribe-method subtitles
python3 fetch.py URL --transcript --language no
Transcription methods (in --transcribe-method):
| Method | Speed | Cost | Quality | Requirements |
|---|
subtitles | ⚡ Instant | Free | Good (if available) | Video must have subs/captions |
whisper-api | 🏃 Fast | ~$0.006/min | Excellent | OPENAI_API_KEY env var |
whisper-local | 🐌 Slow | Free | Good | pip install openai-whisper + GPU recommended |
auto | Varies | Varies | Best available | Tries subs → API → local |
Search
python3 fetch.py --search "forex trading NFP strategy"
python3 fetch.py --search "react server components tutorial"
python3 fetch.py --search "home espresso machine review" --json
Clip Extraction
Download only a portion of a video:
python3 fetch.py URL --clip 1:30-5:00
python3 fetch.py URL --clip 0:00-0:30 --audio
Playlist Download
python3 fetch.py URL --playlist
python3 fetch.py URL --playlist --max-playlist 5
python3 fetch.py URL --playlist --audio
Commands — batch.py
Process URL List
Create a text file with one URL per line:
# urls.txt
https://youtube.com/watch?v=abc
https://youtube.com/watch?v=def
# Comments and blank lines are ignored
https://vimeo.com/123456
python3 batch.py urls.txt
python3 batch.py urls.txt --audio
python3 batch.py urls.txt --transcript
python3 batch.py urls.txt -o /tmp/batch-output
Process Local Files
python3 batch.py --file video.mp4 --extract-audio
python3 batch.py --file audio.mp3 --transcribe
python3 batch.py --file audio.mp3 --transcribe --language no
python3 batch.py --file video.mp4 --file-info
Supported Sites
yt-dlp supports 1000+ sites including:
| Category | Sites |
|---|
| Video | YouTube, Vimeo, Dailymotion, Twitch, Rumble, Odysee |
| Social | Twitter/X, TikTok, Instagram, Reddit, Facebook |
| Music | SoundCloud, Bandcamp, Mixcloud |
| Podcasts | Spotify (some), Apple Podcasts (some), RSS feeds |
| News | BBC, CNN, Reuters, Bloomberg |
| Education | Coursera, Udemy, Khan Academy |
| Live | Twitch live, YouTube live |
| Other | PeerTube, BitChute, Archive.org, and 1000+ more |
Full list: yt-dlp --list-extractors
Agent Workflows
"Summarize this YouTube video"
python3 fetch.py URL --subs
python3 fetch.py URL --transcript
cat ~/.media-fetch/transcripts/TITLE.txt
"Find and summarize a video about X"
python3 fetch.py --search "topic query"
python3 fetch.py CHOSEN_URL --transcript
"Download this podcast episode"
python3 fetch.py PODCAST_URL --audio
"Get the audio from this meeting recording"
python3 batch.py --file recording.mp4 --extract-audio
python3 batch.py --file recording.mp3 --transcribe
"Download all videos from this playlist"
python3 fetch.py PLAYLIST_URL --playlist --audio --max-playlist 20
Authentication / Cookies
Some sites require login. Export browser cookies:
python3 fetch.py URL --extra --cookies-from-browser chrome
python3 fetch.py URL --cookies ~/cookies.txt
Dependencies
Installed:
yt-dlp (2026.03.03) — media downloader
ffmpeg (6.1.1) — audio/video processing
openai SDK — Whisper API transcription
Optional (not installed):
openai-whisper — local transcription: pip3 install --break-system-packages openai-whisper
(Requires ~1GB disk + CUDA GPU for reasonable speed)
Storage
| Directory | Contents | Cleanup |
|---|
~/.media-fetch/downloads/ | Downloaded video/audio files | Delete manually |
~/.media-fetch/transcripts/ | Text transcriptions + SRT files | Keep for reference |
~/.media-fetch/metadata/ | JSON metadata from --info | Auto-cleaned |
To clean old downloads:
find ~/.media-fetch/downloads -mtime +7 -delete