# YouTube Transcript API，有字幕取字幕，没有就转录音频

> 用YouTube Transcript API提交视频链接，获取JSON、纯文本、SRT或VTT。有可用字幕就直接读取，没有则用AI转录音频；每分钟1积分。

Canonical: https://transcript1.com/zh/features/youtube-transcript-api
Language: zh-Hans
Last updated: 2026-10-19

用YouTube Transcript API提交视频链接，就能读取JSON、纯文本、SRT或VTT。有可用字幕时保留字幕文本；没有可用字幕时，AI会把音频转成文字。

- 优先读取字幕，没有可用字幕再用AI转录
- 字幕和AI转录同价：每分钟1积分
- 支持watch、youtu.be、Shorts和嵌入链接

## 先确定应用需要哪种文本来源

### 常见视频链接都能提交

watch页面、youtu.be短链接、Shorts、嵌入链接和live链接都能定位到视频，带不带www都可以。链接可识别，不代表正在直播的视频也能处理。

### 优先保留创作者的字幕

source=auto会先找可用字幕，优先使用创作者上传的版本，其次才是自动生成的字幕，不使用自动翻译的字幕。

### 没有字幕也能获取文字

找不到可用字幕时，AI会转录视频音频。若始终需要重新识别音频，直接设置source=stt。

### 每份文本都能查到来源

查看transcript_source即可区分：youtube_captions表示YouTube字幕，speech_to_text表示AI转录。

### 按视频时长计费

字幕和AI转录都按每分钟1积分计费，不足1分钟向上取整。转录失败或取消，不扣积分。

## 在代码里提交视频链接

先在控制台创建API密钥，再从服务器或脚本向POST /v1/transcriptions提交视频链接。Python或其他HTTP客户端都可以调用。[接口文档](https://transcript1.com/zh/docs/api-reference#create-a-transcription)列出了请求字段和状态码。

wait=60会让请求最多等待60秒。收到响应后先保存转录ID；等待时间用完，只表示这次HTTP请求结束，后台任务仍会继续。

后续通过GET /v1/transcriptions/:id查询同一个任务，不要再发起一次转录。queued、fetching和transcribing都表示尚未完成；completed后读取文本，failed时处理错误。

应用里要分清“还在处理”和“转录失败”。网络慢或视频无法访问，都不该被当成一份成功但没有内容的转录文本。

### cURL

```
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"youtube","url":"https://youtu.be/dQw4w9WgXcQ"}'
```

## 用transcript\_source判断文字从哪里来

接入YouTube 字幕 API后，可以用transcript_source和caption_kind记录字幕来源及类型。billed_minutes是视频时长向上取整后的分钟数，完整字段见[转录对象说明](https://transcript1.com/zh/docs/api-reference#the-transcription-object)。

创作者上传的字幕保留发布时的文字，没有逐词时间戳。YouTube自动生成的字幕提供每个词的开始时间；AI转录则提供开始时间、结束时间和置信度。

段落里的start和end以秒为单位，方便做点击跳转、同步笔记，或把相关片段交给AI助手。只有界面确实需要逐词数据时，再加include=words。

下面的JSON只展示响应结构，示例文字并非来自前面链接中的视频。

### JSON响应节选

```
{
  "id": "tr_8fK2Lm0PqRsTuVwXyZaBcD",
  "status": "completed",
  "transcript_source": "youtube_captions",
  "caption_kind": "auto_generated",
  "language": "en",
  "billed_minutes": 4,
  "transcript": {
    "text": "Welcome back to the channel. Today we are looking at how transcripts are made.",
    "segments": [
      { "start": 0, "end": 4.2, "speaker": null, "language": "en", "text": "Welcome back to the channel." }
    ]
  }
}
```

## 要已发布的字幕，还是重新转录音频？

source默认是auto。设置captions（仅字幕）后，没有可用字幕就返回no_captions，不扣积分；设置stt则始终转录音频。具体组合见[来源选项](https://transcript1.com/zh/docs/sources-and-options#source)。

必须保留视频已发布的字幕时，选captions。需要重新识别音频或区分说话人时，选AI转录。source=auto搭配diarize=true会跳过字幕，直接处理音频。

captions与diarize=true不能同时使用，请求会被拒绝，不会悄悄忽略其中一项。

字幕语言必须符合请求的language；自动选择时则跟随视频原始语言，不使用自动翻译的字幕。给AI转录指定语言只是提供识别提示，并不会把录音翻译成该语言。

### 始终转录音频的请求体

```
{
  "platform": "youtube",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "source": "stt"
}
```

## 先看错误原因，再决定要不要重试

私密视频、年龄限制和正在进行的直播都不是多试几次就能解决的问题。captions（仅字幕）返回no_captions时，先决定是否接受AI转录；任务还在处理中，就按原ID继续查询。[错误文档](https://transcript1.com/zh/docs/errors)说明了各类情况。

需要重试创建请求时，遵守[Idempotency-Key约定](https://transcript1.com/zh/docs/api-reference#idempotency)。复用近期转录是另一项功能，要求同一个视频和相同选项。不要把缓存当成免费：缓存文本仍可能作为新任务计费，直接读取已有的已完成任务才不消耗分钟数。

同一个创建接口也接受[TikTok](https://transcript1.com/zh/features/tiktok-shipin-zhuan-wenzi)、[Instagram](https://transcript1.com/zh/features/instagram-reels-zhuan-wenzi)等支持的平台链接。YouTube、X、TikTok和Bluesky都有先取可用字幕、再转录音频的路径，但这不是全部支持平台。

做多平台接入时，按[来源能力表](https://transcript1.com/zh/docs/sources-and-options)校验链接和选项，别在界面里提供平台不支持的组合。

## 常见问题

### 视频没有字幕，也能拿到文字吗？

可以。默认source=auto会在没有可用字幕时用AI转录音频。若只接受字幕、不希望转录音频，设置source=captions。

### 可以提交哪些YouTube链接？

支持watch页面、youtu.be短链接、Shorts、嵌入链接和live链接。频道页面或只有播放列表的链接会返回422 invalid_url。正在进行的直播仍无法处理。

### 私密视频能处理吗？

不能。只能获取公开视频，或设为不公开但可以通过链接观看的视频。私密、年龄限制和正在直播的视频会失败。如果原始文件在手，可以改用文件上传。

### 怎么收费，能先免费试吗？

每分钟1积分，不足1分钟向上取整，字幕和AI转录同价。新账号验证邮箱后可一次性领取60分钟免费额度，不用绑卡。

### 这是Python的youtube-transcript-api包吗？

不是。transcript1是托管的REST API。使用Python时，带上API密钥发送HTTP请求即可。

## 相关内容

- [时间戳与字幕文件](https://transcript1.com/zh/features/shengcheng-srt-zimu-wenjian)
- [音视频文件API](https://transcript1.com/zh/features/yinpin-zhuan-wenzi-api)
- [Webhook通知](https://transcript1.com/zh/features/zhuanlu-webhook)
- [内容再利用](https://transcript1.com/zh/use-cases/shipin-zhuan-boke-wenzhang)
