mcpField
T
transcriptapi

transcriptapi

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

关于 transcriptapi

transcriptapi 是供 Agent 调用 TranscriptAPI.com 的 YouTube 数据技能,涵盖字幕、搜索、频道和播放列表数据,适用于视频研究流程。

主要功能

  1. 01获取带时间戳或纯文本字幕
  2. 02搜索视频和频道
  3. 03解析频道 ID
  4. 04浏览并搜索频道视频
  5. 05获取播放列表视频

适用场景

  1. 01根据字幕总结 YouTube 视频
  2. 02查找特定主题的视频
  3. 03查看频道最新上传内容
  4. 04浏览播放列表中的视频

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zeropointrepo/youtube-skills --skill transcriptapi

安装后在 Claude Code 中输入/transcriptapi确认已加载。

附带文件references/auth-setup.mdreferences/curl-examples.md

详细介绍

TranscriptAPI

通过 TranscriptAPI.com 获取完整的 YouTube 数据工具包。字幕、搜索、频道、播放列表——只需一个 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——请参阅此处以获取最新参数和架构。

身份验证

所有请求均需添加:-H "Authorization: Bearer $TRANSCRIPT_API_KEY"

端点

频道端点接受 channel,可以是 @handle、频道 URL 或 UC... ID。无需预先解析。播放列表端点接受 playlist,可以是播放列表 URL 或 ID。

GET /api/v2/youtube/transcript — 1 个额度
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
参数必需默认值验证
video_url是—YouTube URL 或 11 位视频 ID
format否jsonjson 或 text
include_timestamp否truetrue 或 false
send_metadata否falsetrue 或 false

接受:https://youtube.com/watch?v=ID、https://youtu.be/ID、youtube.com/shorts/ID 或纯 ID。

响应(format=json):

{
  "video_id": "dQw4w9WgXcQ",
  "language": "en",
  "transcript": [
    { "text": "We're no strangers...", "start": 18.0, "duration": 3.5 }
  ],
  "metadata": { "title": "...", "author_name": "...", "author_url": "..." }
}
GET /api/v2/youtube/search — 1 个额度
GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
参数必需默认值验证
q是—1–200 个字符(去除首尾空格)
type否videovideo 或 channel
limit否201–50

响应(type=video):

{
  "results": [
    {
      "type": "video",
      "videoId": "dQw4w9WgXcQ",
      "title": "Rick Astley - Never Gonna Give You Up",
      "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
      "channelTitle": "Rick Astley",
      "channelHandle": "@RickAstley",
      "channelVerified": true,
      "lengthText": "3:33",
      "viewCountText": "1.5B views",
      "publishedTimeText": "14 years ago",
      "hasCaptions": true,
      "thumbnails": [{ "url": "...", "width": 120, "height": 90 }]
    }
  ],
  "result_count": 20
}

响应(type=channel):

{
  "results": [
    {
      "type": "channel",
      "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
      "title": "Rick Astley",
      "handle": "@RickAstley",
      "subscriberCount": "4.2M subscribers",
      "verified": true,
      "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UC..."
    }
  ],
  "result_count": 5
}
GET /api/v2/youtube/channel/resolve — 免费(0 个额度)
GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
参数必需验证
input是1–200 个字符——@handle、URL 或 UC... ID

响应:

{ "channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED" }

如果输入已是有效的 UC[a-zA-Z0-9_-]{22} ID,则会立即返回,不进行查询。

GET /api/v2/youtube/channel/videos — 每页 1 个 credit
# First page (100 videos)
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 videos)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# Next pages (repeat the same sort)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
参数必填验证
channel有条件必填@handle、频道 URL 或 UC... ID
tab否videos(默认)、shorts 或 streams
sort否latest、popular 或 oldest(省略则使用上传内容信息流)
continuation有条件必填非空字符串(后续页面)

channel 和 continuation 必须且只能提供其中一个。

排序。 在 channel/videos 中添加 sort=latest、popular 或 oldest,即可按所需顺序获取频道视频,例如将最热门的上传视频排在前面。排序后的页面约返回 30 个视频(未排序的页面约返回 100 个),每页费用均为 1 个 credit。

翻页时,每次请求都要使用相同的 sort。

每个条目都包含 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。

响应:

{
  "results": [{
    "videoId": "abc123xyz00",
    "title": "Latest Video",
    "channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
    "channelTitle": "TED",
    "channelHandle": "@TED",
    "lengthText": "15:22",
    "viewCountText": "3.2M views",
    "publishedTimeText": "2 years ago",
    "thumbnails": [...],
    "index": "0",
    "members_only": false
  }],
  "playlist_info": {"title": "Uploads from TED", "numVideos": "5000"},
  "continuation_token": "4qmFsgKlARIYVVV1...",
  "has_more": true
}
GET /api/v2/youtube/channel/latest — 免费(0 个 credits)
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
参数必填验证
channel是@handle、频道 URL 或 UC... ID

通过 RSS 返回最近 15 个视频,包含准确的观看次数和 ISO 时间戳。

响应:

{
  "channel": {
    "channelId": "...",
    "title": "TED",
    "author": "TED",
    "url": "..."
  },
  "results": [
    {
      "videoId": "abc123xyz00",
      "title": "Latest Video",
      "published": "2026-01-30T16:00:00Z",
      "viewCount": "2287630",
      "description": "Full description...",
      "thumbnail": { "url": "...", "width": "480", "height": "360" }
    }
  ],
  "result_count": 15
}
GET /api/v2/youtube/channel/search — 1 个 credit
GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=climate+change&limit=30
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
参数必填验证
channel是@handle、频道 URL 或 UC... ID
q是1-200 个字符
limit否1-50(默认 30)
GET /api/v2/youtube/playlist/videos — 每页 1 个 credit
# First page
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# Next pages
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?continuation=TOKEN
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
参数必填验证
playlist有条件必填播放列表 URL 或 ID(PL/UU/LL/FL/OL 前缀)
continuation有条件必填非空字符串

Credits 费用

端点费用
transcript1
search1
channel/resolve免费
channel/search1
channel/videos每页 1 个
channel/latest免费
playlist/videos每页 1 个

错误

代码含义操作
401API 密钥无效检查密钥,重新运行设置
402Credits 不足在 transcriptapi.com/billing 充值
403/1010Cloudflare 拦截添加或修正 User-Agent 标头
404未找到视频/频道/播放列表不存在,或没有字幕
408超时/可重试2s 后重试一次
422验证错误检查参数格式
429请求频率受限等待,并遵循 Retry-After

提示

  • 用户分享 YouTube URL 且未附带指示时,获取字幕稿并总结要点。
  • 获取字幕稿前,使用 channel/latest(免费)检查是否有新上传的视频——直接传入 @handle。
  • 研究时:搜索 → 选择视频 → 获取字幕稿。
  • 免费版:100 积分,300 次请求/分钟。入门版($5/月):1,000 积分,300 次请求/分钟。

复制粘贴示例

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

评论

支持 Markdown