关于 youtube-api
youtube-api 是通过 TranscriptAPI.com 获取 YouTube 数据的技能,涵盖视频和频道搜索、元数据、字幕及播放列表浏览,使用 TranscriptAPI 密钥而非 Google API 配额。
主要功能
- 01搜索视频、播放列表和频道
- 02获取字幕与视频元数据
- 03浏览频道上传内容和播放列表
- 04解析频道账号句柄
- 05查询视频信息和字幕语言
适用场景
- 01查找符合关键词的视频
- 02获取视频字幕和元数据
- 03浏览频道最新或热门上传内容
- 04列出播放列表中的视频
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ zeropointrepo/ youtube-skills --skill youtube-api安装后在 Claude Code 中输入/youtube-api确认已加载。
附带文件references/auth-setup.mdreferences/curl-examples.md
详细介绍
YouTube API
通过 TranscriptAPI.com 访问 YouTube 数据,无需 Google API 配额。
设置
如果未设置 $TRANSCRIPT_API_KEY,请阅读 references/auth-setup.md,并按照其中的说明获取和保存密钥。
必需的请求头
每个请求都需要两个请求头:
- Authorization:
Bearer $TRANSCRIPT_API_KEY - User-Agent: 如果已知,请填写 Agent 的名称和版本(例如
HermesAgent/0.11.0、ClaudeCode/1.0)。版本可选,仅填写 Agent 名称也可以。不要省略此请求头,也不要发送默认的空值,否则 Cloudflare 会返回 403(错误代码 1010)并阻止请求。
API 参考
完整的 OpenAPI 规范:transcriptapi.com/openapi.json — 请参阅此文档,了解最新的参数和架构。
端点参考
所有端点:https://transcriptapi.com/api/v2/youtube/...
频道端点接受 channel 参数,其值可以是 @handle、频道 URL 或 UC... ID。播放列表端点接受 playlist 参数,其值可以是播放列表 URL 或 ID。
| 端点 | 方法 | 费用 |
|---|---|---|
/info?video_url=ID | GET | 免费 |
/video/metadata?video_url=ID | GET | 1 |
/transcript?video_url=ID | GET | 1 |
/search?q=QUERY&type=video | GET | 1 |
/channel/resolve?input=@handle | GET | 免费 |
/channel/info?channel=@handle | GET | 1 |
/channel/latest?channel=@handle | GET | 免费 |
/channel/videos?channel=@handle | GET | 1/页 |
/channel/search?channel=@handle&q=Q | GET | 1 |
/channel/playlists?channel=@handle | GET | 1/页 |
/channel/posts?channel=@handle | GET | 1/页 |
/channel/sections?channel=@handle | GET | 1 |
/playlist/videos?playlist=PL_ID | GET | 1/页 |
search 还接受 type=playlist 或 type=movie,以及仅适用于第一页的筛选条件:sort(relevance/views)、upload_date、duration 和 features。channel/videos 接受 tab=videos(默认值)、shorts 或 streams,还可选用 sort(latest/popular/oldest)。
命名:
/video/metadata之前的路径是/video/info。旧路径仍可使用,但已弃用 — 请使用/video/metadata。
快速示例
搜索视频:
GET https://transcriptapi.com/api/v2/youtube/search?q=python+tutorial&type=video&limit=10
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
获取字幕文本:
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=dQw4w9WgXcQ&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
查看视频信息和字幕语言(免费,可在消耗额度前查询):
GET https://transcriptapi.com/api/v2/youtube/info?video_url=dQw4w9WgXcQ
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
获取丰富的视频元数据(观看次数、点赞数、说明、标签):
GET https://transcriptapi.com/api/v2/youtube/video/metadata?video_url=dQw4w9WgXcQ&include=details
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
获取频道资料(订阅者数量、标签、标签页):
GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
使用相同的 channel 参数还可访问:/channel/playlists(频道的播放列表)、/channel/posts(社区标签页)和 /channel/sections(频道首页精选栏目)。
解析频道账号(免费):
GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
最新视频(免费):
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
浏览频道上传的视频(分页):
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Most-viewed first (channel Videos tab, ~30 per page)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
# Use continuation token from response for next pages, repeating the same tab and sort
排序。 在 channel/videos 中添加 sort=latest、popular 或 oldest,即可按所需顺序获取频道视频,例如优先显示观看次数最多的上传视频。排序后的页面返回约 30 个视频(未排序的页面约返回 100 个),每页费用均为 1 个额度。
分页时,每次请求都要使用相同的排序方式。
条目字段。 每个条目都包含 members_only 字段,只有在 YouTube 将其标记为“仅限会员”时,该字段才为 true;这些条目没有 viewCountText。tab=streams 的条目包含 lengthText 和 publishedTimeText(例如 Streamed 2 years ago);tab=shorts 的这两个字段均为 null,因为 YouTube Shorts 网格不会发布这些信息。在频道标签页动态中(tab=videos 搭配 sort、tab=shorts、tab=streams),channelId、channelTitle、channelHandle 和 index 均为 null。
浏览播放列表(分页):
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
参数验证
| 字段 | 规则 |
|---|---|
channel | @handle、频道 URL 或 UC... ID |
playlist | 播放列表 URL 或 ID(PL/UU/LL/FL/OL 前缀) |
q (搜索) | 1-200 个字符 |
type (搜索) | video(默认)、channel、playlist、movie |
tab (频道/视频) | videos(默认)、shorts、streams |
sort (频道/视频) | latest、popular、oldest(上传内容信息流可省略) |
tab (频道/分区) | featured(默认)、podcasts、releases |
include (视频/元数据) | details、related(逗号分隔) |
limit | 1-50 |
continuation | 非空字符串 |
为什么不用 Google 的 API?
| Google YouTube Data API | TranscriptAPI | |
|---|---|---|
| 配额 | 每天 10,000 个单位(100 次搜索) | 基于额度,没有每日上限 |
| 设置 | OAuth + API 密钥 + 项目 | 单个 API 密钥 |
| 字幕文本 | 不提供 | 核心功能 |
| 定价 | 超额部分每单位 $0.0015 | $5/1000 个额度 |
错误
| 代码 | 含义 | 操作 |
|---|---|---|
| 401 | API 密钥无效 | 检查密钥 |
| 402 | 额度不足 | transcriptapi.com/billing |
| 403/1010 | Cloudflare 拦截 | 添加或修正 User-Agent 标头 |
| 404 | 未找到 | 资源不存在 |
| 408 | 超时/可重试 | 2 秒后重试一次 |
| 422 | 验证错误 | 检查参数格式 |
| 429 | 请求受限 | 等待,并遵守 Retry-After |
免费套餐:100 个额度,每分钟 300 个请求。Starter($5/月):1,000 个额度。
可直接复制粘贴的示例
本文件中的每个请求均提供可直接运行的单行命令:references/curl-examples.md