mcpField
Y
youtube-api

youtube-api

github.com/zeropointrepo生产力1.1k784 次安装5 周前更新
代码仓库

关于 youtube-api

youtube-api 是通过 TranscriptAPI.com 获取 YouTube 数据的技能,涵盖视频和频道搜索、元数据、字幕及播放列表浏览,使用 TranscriptAPI 密钥而非 Google API 配额。

主要功能

  1. 01搜索视频、播放列表和频道
  2. 02获取字幕与视频元数据
  3. 03浏览频道上传内容和播放列表
  4. 04解析频道账号句柄
  5. 05查询视频信息和字幕语言

适用场景

  1. 01查找符合关键词的视频
  2. 02获取视频字幕和元数据
  3. 03浏览频道最新或热门上传内容
  4. 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=IDGET免费
/video/metadata?video_url=IDGET1
/transcript?video_url=IDGET1
/search?q=QUERY&type=videoGET1
/channel/resolve?input=@handleGET免费
/channel/info?channel=@handleGET1
/channel/latest?channel=@handleGET免费
/channel/videos?channel=@handleGET1/页
/channel/search?channel=@handle&q=QGET1
/channel/playlists?channel=@handleGET1/页
/channel/posts?channel=@handleGET1/页
/channel/sections?channel=@handleGET1
/playlist/videos?playlist=PL_IDGET1/页

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(逗号分隔)
limit1-50
continuation非空字符串

为什么不用 Google 的 API?

Google YouTube Data APITranscriptAPI
配额每天 10,000 个单位(100 次搜索)基于额度,没有每日上限
设置OAuth + API 密钥 + 项目单个 API 密钥
字幕文本不提供核心功能
定价超额部分每单位 $0.0015$5/1000 个额度

错误

代码含义操作
401API 密钥无效检查密钥
402额度不足transcriptapi.com/billing
403/1010Cloudflare 拦截添加或修正 User-Agent 标头
404未找到资源不存在
408超时/可重试2 秒后重试一次
422验证错误检查参数格式
429请求受限等待,并遵守 Retry-After

免费套餐:100 个额度,每分钟 300 个请求。Starter($5/月):1,000 个额度。

可直接复制粘贴的示例

本文件中的每个请求均提供可直接运行的单行命令:references/curl-examples.md

评论

支持 Markdown