Download audio, video, or transcripts from YouTube and 1800+ sites — from the command line.
Requires Python 3.10+ and ffmpeg.
# Install ffmpeg (if not already installed)
brew install ffmpeg
# Clone and install
git clone https://github.com/steferic/grabbo.git
cd grabbo
pip install -e .The easiest way to use grabbo - just copy any YouTube URL and it downloads automatically:
# Auto-download mode - copies trigger downloads
grabbo watch -y
# Interactive mode - prompts before each download
grabbo watch
# With quality option
grabbo watch -y -q 320Keep a terminal running with grabbo watch -y, then copy any YouTube URL from your browser.
Pick what you want — each command auto-detects playlist URLs:
grabbo audio "URL" # MP3 (also: grabbo d "URL", grabbo download "URL")
grabbo video "URL" # video file (also: grabbo v "URL")
grabbo transcript "URL" # captions (also: grabbo t "URL")Extract a specific portion. The clip flags work the same for audio and video:
# 20 seconds starting at 0:12
grabbo audio "URL" -s 12 -d 20
grabbo video "URL" -s 12 -d 20
# From 1:30 to 2:00
grabbo audio "URL" -s 1:30 -e 2:00
# Various time formats work
grabbo audio "URL" -s 1m30s -d 30s
grabbo audio "URL" -s 1:02:30 -e 1:05:00-o, --output PATH Output directory
-q, --quality Audio quality: 128, 192 (default), or 320 kbps
-n, --name Custom filename (without extension)
-s, --start Start time (e.g., 12, 1:30, 1m30s)
-d, --duration Duration (e.g., 20, 20s, 1:00)
-e, --end End time (alternative to duration)
-N, --max Max videos when URL is a playlist-o, --output PATH Output directory
-r, --resolution Cap on height: 480, 720, 1080, 1440, 2160 (4K), 4320 (8K) (default: best)
-c, --container mp4 (default) or webm
-n, --name Custom filename
-s, --start Start time
-d, --duration Duration
-e, --end End time
-N, --max Max videos when URL is a playlistSearch YouTube without needing a URL:
# Search and show results
grabbo search "lofi hip hop"
# Download the first result directly
grabbo search "song name" -d 1
# Show more results
grabbo search "query" -n 20Download entire YouTube playlists:
# Download all videos in a playlist
grabbo playlist "https://youtube.com/playlist?list=..."
# Download first 5 videos only
grabbo playlist "URL" -n 5
# Preview playlist contents without downloading
grabbo playlist "URL" --infoDownload multiple videos at once:
# Multiple URLs as arguments
grabbo batch "url1" "url2" "url3"
# From a file (one URL per line)
grabbo batch -f urls.txt
# Combine both
grabbo batch "url1" -f more_urls.txt -q 320Remove silence from the beginning and end of tracks:
# Trim a specific file
grabbo trim "song.mp3"
# Trim all files in output directory
grabbo trim --all
# Only trim start (keep ending)
grabbo trim song.mp3 --no-end
# More aggressive threshold (-40dB instead of -50dB)
grabbo trim song.mp3 -t -40Download captions/transcripts only (no audio):
# Download transcript as plain text
grabbo transcript "https://youtube.com/watch?v=..."
# Or use the shortcut
grabbo t "https://youtube.com/watch?v=..."
# Different formats
grabbo t "URL" -f txt # Plain text (default)
grabbo t "URL" -f srt # SRT subtitles with timestamps
grabbo t "URL" -f json # JSON with timestamps
# Download transcripts for entire playlist
grabbo t "PLAYLIST_URL"
# First 10 videos only
grabbo t "PLAYLIST_URL" -n 10
# Preview playlist without downloading
grabbo t "PLAYLIST_URL" --info
# Different language
grabbo t "URL" -l es # SpanishTranscripts are organized by creator and playlist under the base dir:
~/grabbo/transcripts/
├── Huberman Lab/
│ └── Huberman Lab Podcast/
│ ├── Episode 1.txt
│ └── Episode 2.txt
└── Lex Fridman/
└── Lex Fridman Podcast/
└── Interview.txt
Everything lives under one base directory (default: ~/grabbo), with one subfolder per kind:
~/grabbo/
├── audio/ # MP3s from `grabbo audio` / `download` / `batch` / `playlist` / `watch`
├── video/ # videos from `grabbo video`
└── transcripts/ # captions from `grabbo transcript`, nested by creator/playlist
grabbo set-dir changes the base, not a single kind's dir.
# List downloaded files (audio by default)
grabbo list
grabbo list -k video # List video files instead
# Show current config (counts per kind)
grabbo config
# Change base output directory (default: ~/grabbo)
grabbo set-dir ~/Media
# Open base folder in Finder
grabbo open| Command | Description |
|---|---|
audio / download / d |
Download as MP3 (auto-detects playlists) |
video / v |
Download as video file (auto-detects playlists) |
transcript / t |
Download captions/transcripts only |
watch |
Watch clipboard for YouTube URLs |
search |
Search YouTube and download results |
playlist |
Download entire playlists as MP3 |
batch |
Download multiple videos as MP3 |
trim |
Remove silence from start/end of files |
list |
List downloaded files (-k audio default, -k video) |
config |
Show current configuration |
set-dir |
Set the base output directory |
open |
Open output directory in Finder |