# 字幕提取

> 获取 YouTube 与 B 站已有字幕轨道和下载直链

来源: https://platform.snapany.com/zh/docs/extract-subtitles

[`POST /openapi/v1/extract/subtitles`](https://platform.snapany.com/zh/docs/api#POST/extract/subtitles) — 每次调用消耗 1 积分。

返回视频元信息与**已有字幕轨道**，包含人工与自动生成字幕。YouTube 提供 `srt`、`vtt`、`ttml`、`json3`、`srv1`、`srv2`、`srv3`；**B 站提供原生 BCC `json`**。如需 SRT/VTT 等格式，可自行转换。

支持 BV/av 视频、指定分 P（`?p=2`）、番剧单集（`ep836876`）及 `b23.tv` 短链。不提取弹幕，也不为无字幕视频生成字幕。本接口暂不支持 `bilibili.tv` 国际版。

```bash
curl -X POST https://api.snapany.com/openapi/v1/extract/subtitles \
  -H "Authorization: Bearer sk_snapany_xxx" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw"}'
```

响应包含：

- **id / title / text / duration / published_at / thumbnail_url**：视频元信息
- **subtitles**：每个轨道一条（同语言不一定只有一条）——`language_name`（展示名，自动生成轨会标注，如 `English (auto-generated)`）、`language_tag`（BCP 47 风格）、`urls`（各格式的下载直链）

按需下载对应格式——播放器与剪辑用 `srt`/`vtt`，程序化处理（带逐句时间轴）用 `json3`。

## B 站 BCC JSON

每条字幕轨提供一个 `format: "json"` 的下载链接。BCC 的 `body` 是字幕条目数组，每条包含以秒为单位的 `from`、`to` 和文本 `content`。

同一个 `language_tag` 可能有多条字幕，轨道身份应包含原始序号，不能按语言标签覆盖。自动字幕的 `language_name` 带 ` (auto-generated)`，无法据此区分自动翻译和语音识别。

没有字幕的视频报 `no_subtitles` 错误（HTTP 404）且**不扣费**——捕获该错误码后回退到[转录](https://platform.snapany.com/zh/docs/transcription)。

完整 schema 与真实形状的响应示例：[API 参考](https://platform.snapany.com/zh/docs/api#POST/extract/subtitles)。

## 字幕提取 vs. 转录

- **本接口**返回 YouTube 或 B 站已有的字幕——每次 1 积分，但仅限有字幕的视频。
- [**转录**](https://platform.snapany.com/zh/docs/transcription)用 Whisper large-v3 对音频转写——任何视频都可用（包括没有字幕的），支持说话人分离，每分钟 4 积分。

常见流水线：先调 `/extract/subtitles`；遇到 `no_subtitles` 错误再回退到[`/transcriptions`](https://platform.snapany.com/zh/docs/transcription)。

## 计费

每次成功调用消耗 1 积分，提取成功后扣除；失败的调用（无效链接、不支持的站点、无字幕）不扣费。详见[积分与计费](https://platform.snapany.com/zh/docs/credits)。
