| name | yt-api-cli |
| description | Manage your YouTube account from the command line. Complete CLI for YouTube Data API v3 - list/search videos, upload, manage playlists, and more. |
| metadata | {"clawdbot":{"emoji":"▶️","os":["darwin","linux"],"requires":{"env":["YT_API_AUTH_TYPE","YT_API_CLIENT_ID","YT_API_CLIENT_SECRET"]}}} |
yt-api-cli
Manage your YouTube account from the terminal. A complete CLI for the YouTube Data API v3.
Installation
go install github.com/nerveband/youtube-api-cli/cmd/yt-api@latest
curl -L -o yt-api https://github.com/nerveband/youtube-api-cli/releases/latest/download/yt-api-darwin-arm64
chmod +x yt-api
sudo mv yt-api /usr/local/bin/
Setup
1. Google Cloud Console Setup
- Go to Google Cloud Console
- Create/enable YouTube Data API v3
- Create OAuth 2.0 credentials (Desktop app)
- Download client configuration
2. Configure yt-api
mkdir -p ~/.yt-api
cat > ~/.yt-api/config.yaml << EOF
default_auth: oauth
default_output: json
oauth:
client_id: "YOUR_CLIENT_ID"
client_secret: "YOUR_CLIENT_SECRET"
EOF
3. Authenticate
yt-api auth login
yt-api auth status
Commands
List Operations
yt-api list videos --mine
yt-api list videos --channel-id UC_x5XG1OV2P6uZZ5FSM9Ttw
yt-api list playlists --mine
yt-api list subscriptions --mine
Search
yt-api search --query "golang tutorial"
yt-api search --query "music" --type video --duration medium --order viewCount
Upload Operations
yt-api upload video ./video.mp4 \
--title "My Video" \
--description "Description here" \
--tags "tag1,tag2" \
--privacy public
yt-api upload thumbnail ./thumb.jpg --video-id VIDEO_ID
Playlist Management
yt-api insert playlist --title "My Playlist" --privacy private
yt-api insert playlist-item --playlist-id PLxxx --video-id VIDxxx
Channel Operations
yt-api list channels --id UCxxx --part snippet,statistics
yt-api update channel --id UCxxx --description "New description"
Output Formats
yt-api list videos --mine
yt-api list videos --mine -o table
yt-api list videos --mine -o yaml
yt-api list videos --mine -o csv > videos.csv
Global Flags
| Flag | Short | Description |
|---|
--output | -o | Output format: json (default), yaml, csv, table |
--quiet | -q | Suppress stderr messages |
--config | | Path to config file |
--auth-type | | Auth method: oauth (default), service-account |
Environment Variables
| Variable | Description |
|---|
YT_API_AUTH_TYPE | Auth method: oauth or service-account |
YT_API_OUTPUT | Default output format |
YT_API_CLIENT_ID | OAuth client ID |
YT_API_CLIENT_SECRET | OAuth client secret |
YT_API_CREDENTIALS | Path to service account JSON |
Authentication Methods
OAuth 2.0 (Default)
Best for interactive use and accessing your own YouTube account.
yt-api auth login
Service Account
Best for server-side automation.
yt-api --auth-type service-account --credentials ./key.json list videos
Quick Diagnostic Commands
yt-api info
yt-api info --test-connectivity
yt-api info --test-permissions
yt-api auth status
yt-api version
Error Handling
Exit codes:
0 - Success
1 - General error
2 - Authentication error
3 - API error (quota, permissions)
4 - Input error
For LLMs and Automation
- JSON output by default
- Structured errors as JSON objects
--quiet mode for parsing
--dry-run validates without executing
- Stdin support for piping data
Notes
- Requires valid Google Cloud credentials with YouTube Data API v3 enabled
- OAuth tokens stored in
~/.yt-api/tokens.json (0600 permissions)
- Default output is JSON (LLM-optimized)
- Supports all YouTube Data API v3 resources
Source
GitHub: https://github.com/nerveband/youtube-api-cli