yrzhe/claude-skills/youtube-data-api

Claude Code and agent skill by yrzhe/claude-skills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

YouTube Data API v3 complete wrapper - search videos, get video/channel/playlist details, get comments, download subtitles, etc. Supports filtering and sorting by time/views/rating and more.

Install

npx vskill@latest install yrzhe/claude-skills/youtube-data-api

SKILL.md

YouTube Data API v3 Skill

Complete wrapper based on official YouTube Data API v3 documentation.

Configuration

API Key Setup
bash
# Option 1: Environment variable (recommended)
export YOUTUBE_API_KEY="YOUR_API_KEY_HERE"
# Option 2: Edit config file directly
# Edit ~/.claude/skills/youtube-data-api/scripts/config.py
Getting an API Key
  1. Go to Google Cloud Console
  2. Create a new project or select existing
  3. Enable YouTube Data API v3
  4. Create credentials → API Key
  5. (Optional) Restrict API Key to YouTube Data API only
Quota Limits
Operation TypeQuota Cost (units)
Read operations (list)1
Search requests100
Write operations (insert/update/delete)50
Video upload1600

Default daily quota: 10,000 units


Core Features

1. Search Videos (Search)

Quota cost: 100 units/request

bash
# Basic search
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "Python tutorial" \
--max-results 25
# Filter by time (last week)
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "machine learning" \
--published-after "7d" \
--type video
# Sort by view count
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "React hooks" \
--order viewCount \
--type video
# HD videos only
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "4K nature" \
--video-definition high \
--type video
# Videos with captions
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "TED talk" \
--video-caption closedCaption \
--type video
# Live streaming videos
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "gaming" \
--event-type live \
--type video
# Filter by region
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "news" \
--region-code US \
--relevance-language en
# Filter by video duration
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "documentary" \
--video-duration long \
--type video
Search Parameters Reference
ParameterDescriptionValues
--query, -qSearch keywordsSupports boolean operators (python AND tutorial)
--typeResource typevideo, channel, playlist
--max-resultsResults count1-50, default 25
--orderSort orderrelevance(default), date, rating, viewCount, title
--published-afterPublished after1d, 7d, 30d, 1y or ISO 8601 format
--published-beforePublished beforeSame as above
--region-codeRegion codeISO 3166-1 (e.g., US, CN, JP)
--relevance-languageLanguageISO 639-1 (e.g., en, zh, ja)
--video-durationVideo lengthshort(<4min), medium(4-20min), long(>20min)
--video-definitionDefinitionhigh(HD), standard(SD)
--video-captionCaptionsclosedCaption(has captions), none(no captions)
--video-dimensionDimension2d, 3d
--event-typeLive statuslive(streaming), completed(ended), upcoming(scheduled)
--channel-idLimit to channelChannel ID
--safe-searchSafe searchnone, moderate, strict

2. Get Video Details (Videos)

Quota cost: 1 unit/request

bash
# Get single video details
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py video \
--id "dQw4w9WgXcQ" \
--parts snippet,statistics,contentDetails
# Get multiple videos (batch)
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py video \
--id "dQw4w9WgXcQ,jNQXAC9IVRw,9bZkp7q19f0" \
--parts snippet,statistics
# Get trending videos
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py video \
--chart mostPopular \
--region-code US \
--max-results 50
# Get trending by category
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py video \
--chart mostPopular \
--video-category-id 10 \
--region-code JP
Video Parts Reference
PartContains
snippetTitle, description, thumbnails, channel info, publish time, tags
statisticsView count, like count, comment count
contentDetailsDuration, definition, caption info, region restrictions
statusUpload status, privacy, license
playerEmbedded player HTML
topicDetailsRelated topic IDs
recordingDetailsRecording location, date
liveStreamingDetailsLive info (start/end time, viewer count)
Video Category IDs Reference
IDCategoryIDCategory
1Film & Animation20Gaming
2Autos & Vehicles22People & Blogs
10Music23Comedy
15Pets & Animals24Entertainment
17Sports25News & Politics
19Travel & Events26Howto & Style
27Education28Science & Technology

3. Get Channel Info (Channels)

Quota cost: 1 unit/request

bash
# Get by channel ID
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py channel \
--id "UC_x5XG1OV2P6uZZ5FSM9Ttw" \
--parts snippet,statistics,contentDetails
# Get by username
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py channel \
--for-username "GoogleDevelopers" \
--parts snippet,statistics
# Get by handle (@username)
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py channel \
--for-handle "@Google" \
--parts snippet,statistics,brandingSettings
Channel Parts Reference
PartContains
snippetChannel name, description, thumbnails, country
statisticsSubscriber count, video count, total views
contentDetailsRelated playlists (uploads, likes, etc.)
brandingSettingsChannel banner, keywords, default language
topicDetailsChannel topics
statusChannel status (long video upload permission, etc.)

4. Get Playlists (Playlists)

Quota cost: 1 unit/request

bash
# Get playlist by ID
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py playlist \
--id "PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf" \
--parts snippet,contentDetails
# Get all playlists for a channel
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py playlist \
--channel-id "UC_x5XG1OV2P6uZZ5FSM9Ttw" \
--max-results 50

5. Get Playlist Videos (PlaylistItems)

Quota cost: 1 unit/request

bash
# Get all videos in a playlist
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py playlist-items \
--playlist-id "PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf" \
--max-results 50
# Paginated retrieval
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py playlist-items \
--playlist-id "PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf" \
--page-token "NEXT_PAGE_TOKEN"

6. Get Comments (Comments & CommentThreads)

Quota cost: 1 unit/request

bash
# Get all comments for a video (top-level)
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py comments \
--video-id "dQw4w9WgXcQ" \
--max-results 100 \
--order relevance
# Get comments for a channel
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py comments \
--channel-id "UC_x5XG1OV2P6uZZ5FSM9Ttw" \
--max-results 50
# Get replies to a comment
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py comment-replies \
--parent-id "COMMENT_ID" \
--max-results 50
Comment Sort Options
SortDescription
relevanceBy relevance (default)
timeBy time (newest first)

7. Get Captions (Captions)

Quota cost: 1 unit/request (list), 50 units (download)

bash
# List all caption tracks for a video
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py captions \
--video-id "dQw4w9WgXcQ" \
--list
# Download captions (requires OAuth)
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py captions \
--video-id "dQw4w9WgXcQ" \
--download \
--caption-id "CAPTION_ID" \
--format srt

Note: Downloading captions requires video owner authorization (OAuth). For public videos, use yt-dlp to get auto-generated captions.

Using yt-dlp for Subtitles (Alternative)
bash
# Install yt-dlp
pip install yt-dlp
# List available subtitles
yt-dlp --list-subs "https://www.youtube.com/watch?v=VIDEO_ID"
# Download subtitles (skip video)
yt-dlp --write-sub --write-auto-sub --sub-lang en,zh-Hans --skip-download \
"https://www.youtube.com/watch?v=VIDEO_ID"
# Download and convert to SRT format
yt-dlp --write-sub --write-auto-sub --sub-lang en --sub-format srt --skip-download \
"https://www.youtube.com/watch?v=VIDEO_ID"

8. Get Video Categories (VideoCategories)

Quota cost: 1 unit/request

bash
# Get video categories for a region
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py categories \
--region-code US
# Get categories for China
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py categories \
--region-code CN

9. Get Supported Regions and Languages

Quota cost: 1 unit/request

bash
# Get supported regions list
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py regions
# Get supported languages list
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py languages

Common Use Case Examples

Scenario 1: Get Trending Videos on a Topic from Last Week
bash
# Search videos about "AI" from last 7 days, sorted by view count
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "AI artificial intelligence" \
--published-after "7d" \
--order viewCount \
--type video \
--max-results 50 \
--output ai_trending.json
# Get detailed statistics for these videos
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py video \
--ids-from ai_trending.json \
--parts snippet,statistics,contentDetails \
--output ai_trending_details.json
Scenario 2: Analyze All Videos from a Channel
bash
# 1. Get channel info
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py channel \
--for-handle "@GoogleDevelopers" \
--parts snippet,statistics,contentDetails \
--output channel_info.json
# 2. Get uploads playlist ID (from contentDetails.relatedPlaylists.uploads)
# 3. Get all uploaded videos
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py playlist-items \
--playlist-id "UPLOADS_PLAYLIST_ID" \
--max-results 50 \
--all-pages \
--output channel_videos.json
Scenario 3: Get Videos with Subtitles
bash
# 1. Search videos
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py search \
--query "TED talk motivation" \
--video-caption closedCaption \
--type video \
--max-results 10 \
--output ted_videos.json
# 2. Download subtitles using yt-dlp
for video_id in $(jq -r '.items[].id.videoId' ted_videos.json); do
yt-dlp --write-sub --write-auto-sub --sub-lang en --skip-download \
"https://www.youtube.com/watch?v=$video_id" \
-o "subtitles/%(id)s.%(ext)s"
done
Scenario 4: Analyze Video Comments
bash
# Get all comments for a video
python ~/.claude/skills/youtube-data-api/scripts/youtube_api.py comments \
--video-id "VIDEO_ID" \
--max-results 100 \
--all-pages \
--output comments.json
# Comment data includes:
# - Author name
# - Comment text
# - Like count
# - Publish time
# - Reply count

Output Formats

All commands default to JSON output, save to file with --output parameter.

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/yrzhe/claude-skills/youtube-data-api/badge)](https://verified-skill.com/skills/yrzhe/claude-skills/youtube-data-api)

Something wrong with this skill or its page? Tell us.