Transcriptapi
TranscriptAPI
通过 TranscriptAPI.com 获取完整的 YouTube 数据工具包TranscriptAPI.com。字幕、搜索、频道、播放列表——一个 API 密钥即可。
设置
如果$TRANSCRIPT_API_KEY未设置,请帮助用户创建账户(100 免费额度,无需银行卡):
步骤 1 — 注册:向用户询问其电子邮箱。
node ./scripts/tapi-auth.js register --email USER_EMAIL
→ OTP 已发送至邮箱。询问用户:"请查看您的邮箱,获取 6 位验证码。"
步骤 2 — 验证:用户提供 OTP 后:
node ./scripts/tapi-auth.js verify --token TOKEN_FROM_STEP_1 --otp CODE
API 密钥已保存至
~/.openclaw/openclaw.json。详情请见下方文件写入。修改前会备份现有文件。
手动选项:transcriptapi.com/signup→ 仪表盘 → API 密钥。
文件写入
verify 和 save-key 命令会将 API 密钥保存至~/.openclaw/openclaw.json(设置skills.entries.transcriptapi.apiKey与enabled: true)。修改前,现有文件会备份至~/.openclaw/openclaw.json.bak。
若要在代理之外的终端/CLI 中使用 API 密钥,请手动将其添加至 shell 配置文件:export TRANSCRIPT_API_KEY=<您的密钥>
API 参考
完整 OpenAPI 规范:transcriptapi.com/openapi.json——请查阅此文档以获取最新参数与模式。
身份验证
所有请求:-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
端点
频道端点接受频道— 一个@用户名、频道网址,或UC...ID。无需先解析。播放列表端点接受播放列表— 一个播放列表网址或ID。
GET /api/v2/youtube/transcript — 1 积分
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| 参数 | 必需 | 默认值 | 验证 |
|---|---|---|---|
video_url | 是 | — | YouTube 网址或 11 位视频 ID |
format | 否 | json | json或text |
include_timestamp | 否 | true | 真或假 |
发送元数据 | 否 | 假 | 真或假 |
接受:https://youtube.com/watch?v=ID、https://youtu.be/ID、youtube.com/shorts/ID,或裸ID。
响应(格式=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 积分
curl -s "https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| 参数 | 必需 | 默认值 | 验证 |
|---|---|---|---|
q | 是 | — | 1-200 个字符(已修剪) |
类型 | 否 | 视频 | 视频或频道 |
限制 | 否 | 20 | 1-50 |
响应(类型=视频):
{
"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
}
响应(类型=频道):
{
"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积分)
curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| 参数 | 必需 | 验证 |
|---|---|---|
输入 | 是 | 1-200 个字符 — @用户名、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 积分/页
# First page (100 videos)
curl -s "https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
# Next pages
curl -s "https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| 参数 | 必需 | 验证 |
|---|---|---|
频道 | 条件性 | @用户名、频道 URL 或UC...ID |
继续 | 条件性 | 非空字符串(后续页面) |
请提供频道或继续中的恰好一个。
响应:
{
"results": [{
"videoId": "abc123xyz00",
"title": "Latest Video",
"channelId": "UCsT0YIqwnpJCM-mx7-gSA4Q",
"channelTitle": "TED",
"channelHandle": "@TED",
"lengthText": "15:22",
"viewCountText": "3.2M views",
"thumbnails": [...],
"index": "0"
}],
"playlist_info": {"title": "Uploads from TED", "numVideos": "5000"},
"continuation_token": "4qmFsgKlARIYVVV1...",
"has_more": true
}
GET /api/v2/youtube/channel/latest — 免费(0 积分)
curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| 参数 | 必需 | 验证 |
|---|---|---|
频道 | 是 | @频道标识、频道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 积分
curl -s "https://transcriptapi.com/api/v2/youtube/channel/search\
?channel=@TED&q=climate+change&limit=30" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| 参数 | 必需 | 验证 |
|---|---|---|
频道 | 是 | @频道标识、频道URL,或UC...ID |
q | 是 | 1-200 字符 |
limit | 否 | 1-50 (默认 30) |
GET /api/v2/youtube/playlist/videos — 1 积分/页
# First page
curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_PLAYLIST_ID" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
# Next pages
curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?continuation=TOKEN" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
| 参数 | 必需项 | 验证 |
|---|---|---|
播放列表 | 条件性 | 播放列表 URL 或 ID (PL/UU/LL/FL/OL前缀) |
延续令牌 | 条件性 | 非空字符串 |
积分成本
| 端点 | 成本 |
|---|---|
| 转录文本 | 1 |
| 搜索 | 1 |
| 频道/解析 | 免费 |
| 频道/搜索 | 1 |
| 频道/视频 | 1/页 |
| 频道/最新 | 免费 |
| 播放列表/视频 | 1/页 |
错误
| 代码 | 含义 | 操作 |
|---|---|---|
| 401 | API密钥错误 | 检查密钥,重新运行设置 |
| 402 | 无额度 | 前往transcriptapi.com/billing充值 |
| 404 | 未找到 | 视频/频道/播放列表不存在或无字幕 |
| 408 | 超时/可重试 | 2秒后重试一次 |
| 422 | 验证错误 | 检查参数格式 |
| 429 | 请求频率受限 | 请等待,并遵守 Retry-After 响应头 |
提示
- 当用户分享 YouTube 链接但未提供指令时,获取字幕并总结关键点。
- 使用
channel/latest(免费)在获取字幕前检查是否有新上传视频 — 直接传递 @handle。 - 用于研究:搜索 → 选择视频 → 获取字幕。
- 免费套餐:100 积分,每分钟 300 次请求。入门套餐(5美元/月):1,000 积分,每分钟 300 次请求。


微信扫一扫,打赏作者吧~