youtube
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseYouTube Data API
YouTube Data API
Use the YouTube Data API v3 via direct calls to search videos, retrieve video details, get channel information, list playlist items, and fetch comments.
curlOfficial docs:https://developers.google.com/youtube/v3
通过直接调用来使用YouTube Data API v3,可搜索视频、获取视频详情、查询频道信息、列出播放列表内容以及提取评论。
curl官方文档: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
1. 创建Google Cloud项目
- 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
- 访问Google Cloud Console
- 创建新项目或选择现有项目
- 进入「API与服务」>「库」
- 搜索「YouTube Data API v3」并启用它
2. Get API Key
2. 获取API密钥
- Go to "APIs & Services" > "Credentials"
- Click "Create Credentials" > "API Key"
- Copy the API key
bash
export YOUTUBE_API_KEY="AIzaSy..."- 进入「API与服务」>「凭据」
- 点击「创建凭据」>「API密钥」
- 复制API密钥
bash
export YOUTUBE_API_KEY="AIzaSy..."3. (Optional) Restrict API Key
3. (可选)限制API密钥
For production use, restrict the key:
- Application restrictions: HTTP referrers, IP addresses
- API restrictions: YouTube Data API v3 only
Important: When usingin a command that pipes to another command, wrap the command containing$VARin$VAR. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c '...'bashbash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY" | jq .'
生产环境使用时,请限制密钥权限:
- 应用限制:HTTP引用来源、IP地址
- API限制:仅允许YouTube Data API v3
重要提示:当在包含管道的命令中使用时,请将包含$VAR的命令用$VAR包裹。由于Claude Code的一个bug,直接使用管道时环境变量会被静默清除。bash -c '...'bashbash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY" | jq .'
How to Use
使用方法
Base URL:
https://www.googleapis.com/youtube/v3基础URL:
https://www.googleapis.com/youtube/v31. Search Videos
1. 搜索视频
bash
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}'bash
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
2. 按筛选条件搜索
Search for videos uploaded this year, ordered by view count:
bash
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}'搜索今年上传的视频,按播放量排序:
bash
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
3. 获取视频详情
Replace with an actual video ID:
<your-video-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics,contentDetails&id=<your-video-id>&key=${YOUTUBE_API_KEY}"' | jq '.items[0] | {title: .snippet.title, views: .statistics.viewCount, likes: .statistics.likeCount, duration: .contentDetails.duration}'将替换为实际视频ID:
<your-video-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics,contentDetails&id=<your-video-id>&key=${YOUTUBE_API_KEY}"' | jq '.items[0] | {title: .snippet.title, views: .statistics.viewCount, likes: .statistics.likeCount, duration: .contentDetails.duration}'4. Get Multiple Videos
4. 获取多个视频信息
Replace , , with actual video IDs:
<your-video-id-1><your-video-id-2><your-video-id-3>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id=<your-video-id-1>,<your-video-id-2>,<your-video-id-3>&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {id: .id, title: .snippet.title, views: .statistics.viewCount}'将、、替换为实际视频ID:
<your-video-id-1><your-video-id-2><your-video-id-3>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id=<your-video-id-1>,<your-video-id-2>,<your-video-id-3>&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {id: .id, title: .snippet.title, views: .statistics.viewCount}'5. Get Trending Videos
5. 获取热门视频
bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&chart=mostPopular®ionCode=US&maxResults=10&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {title: .snippet.title, channel: .snippet.channelTitle, views: .statistics.viewCount}'bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&chart=mostPopular®ionCode=US&maxResults=10&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {title: .snippet.title, channel: .snippet.channelTitle, views: .statistics.viewCount}'6. Get Channel by ID
6. 通过ID获取频道信息
Replace with an actual channel ID:
<your-channel-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=<your-channel-id>&key=${YOUTUBE_API_KEY}"' | jq '.items[0] | {title: .snippet.title, subscribers: .statistics.subscriberCount, videos: .statistics.videoCount}'将替换为实际频道ID:
<your-channel-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=<your-channel-id>&key=${YOUTUBE_API_KEY}"' | jq '.items[0] | {title: .snippet.title, subscribers: .statistics.subscriberCount, videos: .statistics.videoCount}'7. Get Channel by Handle
7. 通过Handle获取频道信息
bash
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}'bash
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
8. 通过用户名获取频道信息
bash
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}'bash
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
9. 列出播放列表内容
Replace with an actual playlist ID:
<your-playlist-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=<your-playlist-id>&maxResults=20&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {position: .snippet.position, title: .snippet.title, videoId: .snippet.resourceId.videoId}'将替换为实际播放列表ID:
<your-playlist-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=<your-playlist-id>&maxResults=20&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {position: .snippet.position, title: .snippet.title, videoId: .snippet.resourceId.videoId}'10. Get Channel Uploads Playlist
10. 获取频道上传播放列表
First get the channel's uploads playlist ID, then list videos. Replace with an actual channel ID:
<your-channel-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=<your-channel-id>&key=${YOUTUBE_API_KEY}"' | jq -r '.items[0].contentDetails.relatedPlaylists.uploads'先获取频道的上传播放列表ID,再列出视频。将替换为实际频道ID:
<your-channel-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=<your-channel-id>&key=${YOUTUBE_API_KEY}"' | jq -r '.items[0].contentDetails.relatedPlaylists.uploads'11. Get Video Comments
11. 获取视频评论
Replace with an actual video ID:
<your-video-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=<your-video-id>&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}'将替换为实际视频ID:
<your-video-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=<your-video-id>&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
12. 搜索视频评论
Replace with an actual video ID:
<your-video-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=<your-video-id>&searchTerms=great+video&maxResults=10&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {author: .snippet.topLevelComment.snippet.authorDisplayName, text: .snippet.topLevelComment.snippet.textDisplay}'将替换为实际视频ID:
<your-video-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=<your-video-id>&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
13. 获取视频分类
bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videoCategories?part=snippet®ionCode=US&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {id: .id, title: .snippet.title}'bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/videoCategories?part=snippet®ionCode=US&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {id: .id, title: .snippet.title}'14. Search Videos by Category
14. 按分类搜索视频
bash
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
bash
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}'注:分类28 = 科学与技术
15. Get Playlists from Channel
15. 获取频道的播放列表
Replace with an actual channel ID:
<your-channel-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=<your-channel-id>&maxResults=20&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {id: .id, title: .snippet.title, description: .snippet.description}'将替换为实际频道ID:
<your-channel-id>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=<your-channel-id>&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 |
| 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
Part参数选项
Videos
视频
- - Title, description, thumbnails, channel
snippet - - Views, likes, comments count
statistics - - Duration, definition, caption
contentDetails - - Upload status, privacy, license
status - - Embeddable player
player
- - 标题、描述、缩略图、频道信息
snippet - - 播放量、点赞数、评论数
statistics - - 时长、清晰度、字幕
contentDetails - - 上传状态、隐私设置、授权协议
status - - 可嵌入播放器
player
Channels
频道
- - Title, description, thumbnails
snippet - - Subscribers, videos, views
statistics - - Related playlists (uploads, likes)
contentDetails - - Channel customization
brandingSettings
- - 标题、描述、缩略图
snippet - - 订阅数、视频数、播放量
statistics - - 关联播放列表(上传、点赞)
contentDetails - - 频道自定义设置
brandingSettings
Pagination
分页处理
Use from response to get more results. Replace with the actual token from the previous response:
nextPageToken<your-next-page-token>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&q=python&type=video&maxResults=50&pageToken=<your-next-page-token>&key=${YOUTUBE_API_KEY}"' | jq '.items[] | {title: .snippet.title}'使用响应中的获取更多结果。将替换为上一次响应中的实际令牌:
nextPageToken<your-next-page-token>bash
bash -c 'curl -s "https://www.googleapis.com/youtube/v3/search?part=snippet&q=python&type=video&maxResults=50&pageToken=<your-next-page-token>&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 or
youtube.com/watch?v=VIDEO_IDyoutu.be/VIDEO_ID
- 配额限制:API每日配额为10000单位。搜索操作消耗100单位,其他大多数操作消耗1单位
- 速率限制:遇到403/429错误时,实现指数退避机制
- API密钥安全:切勿在客户端代码中暴露API密钥
- 缓存:缓存响应以减少配额消耗
- 视频ID提取:从或
youtube.com/watch?v=VIDEO_ID这类URL中提取视频IDyoutu.be/VIDEO_ID