Search & ResearchDocumentedScanned

yt-api-cli

Manage your YouTube account from the command line.

Share:

Installation

npx clawhub@latest install yt-api-cli

View the full skill documentation and source below.

Documentation

yt-api-cli

Manage your YouTube account from the terminal. A complete CLI for the YouTube Data API v3.

Installation

# Using go install
go install github.com/nerveband/youtube-api-cli/cmd/yt-api@latest

# Or download from releases
curl -L -o yt-api 
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  # Opens browser for Google login
    yt-api auth status # Check auth state

    Commands

    List Operations

    # List your videos
    yt-api list videos --mine
    
    # List channel videos
    yt-api list videos --channel-id UC_x5XG1OV2P6uZZ5FSM9Ttw
    
    # List playlists
    yt-api list playlists --mine
    
    # List subscriptions
    yt-api list subscriptions --mine

    Search

    # Basic search
    yt-api search --query "golang tutorial"
    
    # With filters
    yt-api search --query "music" --type video --duration medium --order viewCount

    Upload Operations

    # Upload video
    yt-api upload video ./video.mp4 \
      --title "My Video" \
      --description "Description here" \
      --tags "tag1,tag2" \
      --privacy public
    
    # Upload thumbnail
    yt-api upload thumbnail ./thumb.jpg --video-id VIDEO_ID

    Playlist Management

    # Create playlist
    yt-api insert playlist --title "My Playlist" --privacy private
    
    # Add video to playlist
    yt-api insert playlist-item --playlist-id PLxxx --video-id VIDxxx

    Channel Operations

    # Get channel info
    yt-api list channels --id UCxxx --part snippet,statistics
    
    # Update channel description
    yt-api update channel --id UCxxx --description "New description"

    Output Formats

    # JSON (default - LLM-friendly)
    yt-api list videos --mine
    
    # Table (human-readable)
    yt-api list videos --mine -o table
    
    # YAML
    yt-api list videos --mine -o yaml
    
    # CSV
    yt-api list videos --mine -o csv > videos.csv

    Global Flags

    FlagShortDescription
    --output-oOutput format: json (default), yaml, csv, table
    --quiet-qSuppress stderr messages
    --configPath to config file
    --auth-typeAuth method: oauth (default), service-account

    Environment Variables

    VariableDescription
    YT_API_AUTH_TYPEAuth method: oauth or service-account
    YT_API_OUTPUTDefault output format
    YT_API_CLIENT_IDOAuth client ID
    YT_API_CLIENT_SECRETOAuth client secret
    YT_API_CREDENTIALSPath to service account JSON

    Authentication Methods

    OAuth 2.0 (Default)

    Best for interactive use and accessing your own YouTube account.
    yt-api auth login  # Opens browser

    Service Account

    Best for server-side automation.
    yt-api --auth-type service-account --credentials ./key.json list videos

    Quick Diagnostic Commands

    yt-api info                      # Full system state
    yt-api info --test-connectivity  # Verify API access
    yt-api info --test-permissions   # Check credential capabilities
    yt-api auth status               # Authentication details
    yt-api version                   # Version info

    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: