youtube

安装量: 77
排名: #10121

安装

npx skills add https://github.com/manojbajaj95/claude-gtm-plugin --skill youtube
YouTube Data API
Use the YouTube Data API v3 via direct
curl
calls to
search videos, retrieve video details, get channel information, list playlist items, and fetch comments
.
Official docs:
https://developers.google.com/youtube/v3
When to Use
Use this skill when you need to:
Search videos
by keywords or filters
Get video details
(title, description, statistics, duration)
Get channel info
(subscriber count, video count, description)
List playlist items
(videos in a playlist)
Fetch comments
on videos
Get trending videos
by region
Prerequisites
1. Create Google Cloud Project
Go to
Google Cloud Console
Create a new project or select existing one
Go to "APIs & Services" > "Library"
Search for "YouTube Data API v3" and enable it
2. Get API Key
Go to "APIs & Services" > "Credentials"
Click "Create Credentials" > "API Key"
Copy the API key
export
YOUTUBE_API_KEY
=
"your-api-key-here"
3. (Optional) Restrict API Key
For production use, restrict the key:
Application restrictions: HTTP referrers, IP addresses
API restrictions: YouTube Data API v3 only
Important:
When using
$VAR
in a command that pipes to another command, wrap the command containing
$VAR
in
bash -c '...'
. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.
bash
-c
'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY" | jq .'
How to Use
Base URL:
https://www.googleapis.com/youtube/v3
1. Search Videos
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&q=kubernetes+tutorial&type=video&maxResults=5&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {videoId: .id.videoId, title: .snippet.title, channel: .snippet.channelTitle}'
2. Search with Filters
Search for videos uploaded this year, ordered by view count:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&q=react+hooks&type=video&order=viewCount&publishedAfter=2024-01-01T00:00:00Z&maxResults=10&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {videoId: .id.videoId, title: .snippet.title}'
3. Get Video Details
Replace
with an actual video ID:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics,contentDetails&id=&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[0] | {title: .snippet.title, views: .statistics.viewCount, likes: .statistics.likeCount, duration: .contentDetails.duration}'
4. Get Multiple Videos
Replace
,
,
with actual video IDs:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id=,,&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {id: .id, title: .snippet.title, views: .statistics.viewCount}'
5. Get Trending Videos
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&chart=mostPopular&regionCode=US&maxResults=10&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {title: .snippet.title, channel: .snippet.channelTitle, views: .statistics.viewCount}'
6. Get Channel by ID
Replace
with an actual channel ID:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[0] | {title: .snippet.title, subscribers: .statistics.subscriberCount, videos: .statistics.videoCount}'
7. Get Channel by Handle
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&forHandle=@GoogleDevelopers&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[0] | {id: .id, title: .snippet.title, subscribers: .statistics.subscriberCount}'
8. Get Channel by Username
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&forUsername=GoogleDevelopers&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[0] | {id: .id, title: .snippet.title, description: .snippet.description}'
9. List Playlist Items
Replace
with an actual playlist ID:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=&maxResults=20&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {position: .snippet.position, title: .snippet.title, videoId: .snippet.resourceId.videoId}'
10. Get Channel Uploads Playlist
First get the channel's uploads playlist ID, then list videos. Replace
with an actual channel ID:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=&key=${YOUTUBE_API_KEY}"'
|
jq
-r
'.items[0].contentDetails.relatedPlaylists.uploads'
11. Get Video Comments
Replace
with an actual video ID:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=&maxResults=20&order=relevance&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {author: .snippet.topLevelComment.snippet.authorDisplayName, text: .snippet.topLevelComment.snippet.textDisplay, likes: .snippet.topLevelComment.snippet.likeCount}'
12. Search Comments
Replace
with an actual video ID:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=&searchTerms=great+video&maxResults=10&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {author: .snippet.topLevelComment.snippet.authorDisplayName, text: .snippet.topLevelComment.snippet.textDisplay}'
13. Get Video Categories
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/videoCategories?part=snippet&regionCode=US&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {id: .id, title: .snippet.title}'
14. Search Videos by Category
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&videoCategoryId=28&maxResults=10&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {videoId: .id.videoId, title: .snippet.title}'
Note: Category 28 = Science & Technology
15. Get Playlists from Channel
Replace
with an actual channel ID:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=&maxResults=20&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {id: .id, title: .snippet.title, description: .snippet.description}'
Common Video Categories
ID
Category
1
Film & Animation
10
Music
17
Sports
20
Gaming
22
People & Blogs
24
Entertainment
25
News & Politics
26
Howto & Style
27
Education
28
Science & Technology
Part Parameter Options
Videos
snippet
- Title, description, thumbnails, channel
statistics
- Views, likes, comments count
contentDetails
- Duration, definition, caption
status
- Upload status, privacy, license
player
- Embeddable player
Channels
snippet
- Title, description, thumbnails
statistics
- Subscribers, videos, views
contentDetails
- Related playlists (uploads, likes)
brandingSettings
- Channel customization
Pagination
Use
nextPageToken
from response to get more results. Replace
with the actual token from the previous response:
bash
-c
'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&q=python&type=video&maxResults=50&pageToken=&key=${YOUTUBE_API_KEY}"'
|
jq
'.items[] | {title: .snippet.title}'
Guidelines
Quota limits
API has 10,000 units/day quota. Search costs 100 units, most others cost 1 unit
Rate limits
Implement exponential backoff on 403/429 errors
API key security
Never expose API keys in client-side code
Caching
Cache responses to reduce quota usage
Video IDs
Extract from URLs like youtube.com/watch?v=VIDEO_ID or youtu.be/VIDEO_ID
返回排行榜