cli-web-youtube
Search and explore YouTube from the terminal (read-only, no auth, InnerTube API).
Install: pip install cli-web-youtube
Commands
| Command |
Purpose |
Key options |
search videos QUERY |
Search videos |
-l/--limit N (default 10) |
video get VIDEO_ID |
Video details (views, duration, description, keywords) |
accepts 11-char ID or full URL |
trending list |
Trending/popular videos |
-c/--category now|music|gaming|movies, -l/--limit N |
channel get HANDLE |
Channel info + recent videos |
accepts @handle, UC... ID, or URL |
transcript get VIDEO |
Timestamped transcript + full text |
-l/--lang CODE (repeatable, priority order), -t/--translate CODE, --text-only; accepts ID or URL |
transcript list VIDEO |
Available caption languages |
accepts ID or URL |
Examples
# Search (returns id, title, channel, views, duration, published, url per video)
cli-web-youtube search videos "python tutorial" --limit 5 --json
# Video details by ID or URL
cli-web-youtube video get dQw4w9WgXcQ --json
# Trending music videos
cli-web-youtube trending list --category music --limit 10 --json
# Channel info and subscriber count
cli-web-youtube channel get @mkbhd --json | jq '{title, subscriber_count}'
# Plain-text transcript (ideal for feeding to an LLM)
cli-web-youtube transcript get dQw4w9WgXcQ --text-only
# Transcript in a preferred language, or translated, as JSON
cli-web-youtube transcript get dQw4w9WgXcQ --lang en --json
cli-web-youtube transcript get dQw4w9WgXcQ --translate en --json | jq -r '.segments[].text'
# What caption languages exist?
cli-web-youtube transcript list dQw4w9WgXcQ --json
JSON output
Every command accepts --json. Success returns the data object directly, e.g. search: {"query", "estimated_results", "videos": [...]}; video get: {"id", "title", "channel", "views", "duration_seconds", ...}; transcript get: {"video_id", "title", "language_code", "kind", "is_translated", "segment_count", "segments": [{"text", "start", "duration"}], "text"}. Errors return {"error": true, "code": "...", "message": "..."}.
Utilities
cli-web-youtube doctor [--json] self-diagnoses the local setup (install, auth, dependencies). cli-web-youtube mcp-serve serves the commands as MCP tools over stdio.
Agent tips
- Video IDs are 11 characters; channel handles start with
@.
- Running with no subcommand opens an interactive REPL.
1---2name: youtube-cli3description: Searches YouTube and fetches video transcripts via the cli-web-youtube command-line tool — video search, video details (views, duration, description, keywords), trending by category, channel info, and timestamped transcripts/captions with language selection and translation. Use when the user asks about YouTube, searching for videos, video details, trending videos, channel info, subscriber counts, or a video's transcript, captions, or subtitles. Prefer this CLI over fetching the YouTube website. No authentication required.4---56# cli-web-youtube78Search and explore YouTube from the terminal (read-only, no auth, InnerTube API).9Install: `pip install cli-web-youtube`1011## Commands1213| Command | Purpose | Key options |14|---------|---------|-------------|15| `search videos QUERY` | Search videos | `-l/--limit N` (default 10) |16| `video get VIDEO_ID` | Video details (views, duration, description, keywords) | accepts 11-char ID or full URL |17| `trending list` | Trending/popular videos | `-c/--category now\|music\|gaming\|movies`, `-l/--limit N` |18| `channel get HANDLE` | Channel info + recent videos | accepts `@handle`, `UC...` ID, or URL |19| `transcript get VIDEO` | Timestamped transcript + full text | `-l/--lang CODE` (repeatable, priority order), `-t/--translate CODE`, `--text-only`; accepts ID or URL |20| `transcript list VIDEO` | Available caption languages | accepts ID or URL |2122## Examples2324```bash25# Search (returns id, title, channel, views, duration, published, url per video)26cli-web-youtube search videos "python tutorial" --limit 5 --json2728# Video details by ID or URL29cli-web-youtube video get dQw4w9WgXcQ --json3031# Trending music videos32cli-web-youtube trending list --category music --limit 10 --json3334# Channel info and subscriber count35cli-web-youtube channel get @mkbhd --json | jq '{title, subscriber_count}'3637# Plain-text transcript (ideal for feeding to an LLM)38cli-web-youtube transcript get dQw4w9WgXcQ --text-only3940# Transcript in a preferred language, or translated, as JSON41cli-web-youtube transcript get dQw4w9WgXcQ --lang en --json42cli-web-youtube transcript get dQw4w9WgXcQ --translate en --json | jq -r '.segments[].text'4344# What caption languages exist?45cli-web-youtube transcript list dQw4w9WgXcQ --json46```4748## JSON output4950Every command accepts `--json`. Success returns the data object directly, e.g. search: `{"query", "estimated_results", "videos": [...]}`; video get: `{"id", "title", "channel", "views", "duration_seconds", ...}`; transcript get: `{"video_id", "title", "language_code", "kind", "is_translated", "segment_count", "segments": [{"text", "start", "duration"}], "text"}`. Errors return `{"error": true, "code": "...", "message": "..."}`.5152## Utilities5354`cli-web-youtube doctor [--json]` self-diagnoses the local setup (install, auth, dependencies). `cli-web-youtube mcp-serve` serves the commands as MCP tools over stdio.5556## Agent tips5758- Video IDs are 11 characters; channel handles start with `@`.59- Running with no subcommand opens an interactive REPL.