主题
根据任务 ID 获取 YouTube 字幕结果(Advanced)
通过 GET 请求调用 /v3/serp/youtube/video_subtitles/task_get/advanced/$id,根据任务 ID 获取 YouTube 视频字幕结果。
接口信息
请求方法: GET
请求路径:
text
https://api.seermartech.cn/v3/serp/youtube/video_subtitles/task_get/advanced/$id,$id 为任务唯一标识。
计费说明
- 任务在提交时计费。
- 任务提交成功后,可在 30 天获取结果。
- 实扣费以响应头
X-SeerMarTech-Charge-CNY为准。
请求参数
路径参数
| 参数名 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,采用 UUID 格式。任务提交后 30 天均可使用该 ID 查询结果。 |
示例任务 ID:
text
02261816-2027-0066-0000-c27d02864073响应说明
接口返回 JSON 数据,顶层 tasks 数组。
顶层响应字段
| 字段名 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本。 |
status_code | integer | 通用响应状态码。建议根据状态码实现异常和错误处理。 |
status_message | string | 通用响应消息。 |
time | string | 请求执行耗时,单位为秒。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
tasks_count | integer | tasks 数组中的任务数量。 |
tasks_error | integer | tasks 数组中返回错误的任务数量。 |
tasks | array | 任务结果数组。 |
tasks 数组中的任务字段
| 字段名 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,采用 UUID 格式。 |
status_code | integer | 任务状态码,通常为 10000–60000。 |
status_message | string | 任务状态说明。 |
time | string | 任务执行耗时,单位为秒。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
result_count | integer | result 数组中的结果数量。 |
path | array | 请求 URL 路径信息。 |
data | object | 创建任务时提交的参数。 |
result | array | 任务结果数组。 |
result 数组字段
| 字段名 | 类型 | 说明 |
|---|---|---|
video_id | string | 视频 ID。 |
se_domain | string | 请求中使用的搜索引擎域名。 |
location_code | integer | 请求中使用的地区代码。 |
language_code | string | 请求中使用的语言代码。 |
check_url | string | 搜索引擎结果页面的直接 URL,可用于核验返回结果。 |
datetime | string | 获取结果的日期和时间,采用 UTC 格式:yyyy-mm-dd hh-mm-ss +00:00。 |
spell | object | 搜索引擎自动纠错信息。如果搜索引擎对进行了修正,将返回修正后的及纠错类型。 |
refinement_chips | object | 搜索结果筛选项。该接口固定返回 null。 |
item_types | array | SERP 结果类型,可能 youtube_subtitles。 |
unsupported_language | boolean | 是否表示请求语言不受系统支持。 |
translate_language | string | 字幕翻译目标语言代码。 |
origin_language | string | 字幕原始语言代码。 |
category | string | 视频所属类别。该字段已弃用,始终返回 null。 |
subtitles_count | integer | 视频字幕数量。 |
title | string | 视频标题。 |
items_count | integer | items 数组中的结果数量。 |
items | array | 字幕搜索结果数组。 |
items 数组字段
| 字段名 | 类型 | 说明 |
|---|---|---|
type | string | 结果类型,固定为 youtube_subtitles。 |
rank_group | integer | 分组排名。在相同 type 的结果中按组计算;不同类型之间的位置不会计该字段。 |
rank_absolute | integer | 在 SERP 结果中的绝对排名。 |
text | string | 字幕文本,可能为翻译后的文本。 |
start_time | integer | 字幕开始时间,单位为秒。 |
end_time | integer | 字幕结束时间,单位为秒。 |
duration_time | integer | 字幕持续时间,单位为秒。 |
请求示例
cURL
bash
id="02261816-2027-0066-0000-c27d02864073"
curl --location --request GET \
"https://api.seermartech.cn/v3/serp/youtube/video_subtitles/task_get/advanced/${id}" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json"Python
python
import requests
task_id = "02261816-2027-0066-0000-c27d02864073"
url = (
"https://api.seermartech.cn/v3/serp/youtube/video_subtitles/"
f"task_get/advanced/{task_id}"
)
response = requests.get(
url,
headers={
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
timeout=30,
)
data = response.json()
if data.get("status_code") == 20000:
print(data.get("tasks"))
else:
print(
f"请求失败:{data.get('status_code')} "
f"{data.get('status_message')}"
)TypeScript
typescript
import axios from "axios";
const taskId = "02231256-2604-0066-2000-57133b8fc54e";
axios
.get(
`https://api.seermartech.cn/v3/serp/youtube/video_subtitles/task_get/advanced/${taskId}`,
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
)
.then((response) => {
// 处理接口返回结果
console.log(response.data);
})
.catch((error) => {
console.error("请求失败:", error.response?.data || error.message);
});响应示例
json
{
"version": "0.1.20220819",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0837 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "02261816-2027-0066-0000-c27d02864073",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0712 sec.",
"cost": 0,
"result_count": 1,
"path": [
"v3",
"serp",
"youtube",
"video_subtitles",
"task_get",
"advanced"
],
"data": {
"api": "serp",
"function": "task_get",
"se": "youtube",
"se_type": "video_subtitles",
"language_code": "en",
"location_code": 2840,
"video_id": "Y8Wu4rSNJms",
"priority": 2,
"subtitles_language": "en",
"subtitles_translate_language": "it",
"device": "desktop",
"os": "windows"
},
"result": [
{
"video_id": "Y8Wu4rSNJms",
"se_domain": "youtube.com",
"location_code": 2840,
"language_code": "en",
"check_url": "https://www.youtube.com/",
"datetime": "2019-11-15 12:57:46 +00:00",
"spell": null,
"refinement_chips": null,
"item_types": [
"youtube_subtitles"
],
"unsupported_language": false,
"translate_language": "it",
"origin_language": "en",
"category": null,
"subtitles_count": 31,
"title": "How to set up BMW eDrive Modes in the New Generation of BMW Plug-In Hybrids",
"items_count": 31,
"items": [
{
"type": "youtube_subtitles",
"rank_group": 1,
"rank_absolute": 1,
"text": "示例字幕文本",
"start_time": 0,
"end_time": 4,
"duration_time": 4
}
]
}
]
}
]
}状态码与错误处理
- 顶层
status_code为20000通常表示请求成功。 - 任务级别的
status_code用于表示任务的执行结果。 - 当任务级别状态码表示错误,或
result为空时,应记录status_code和status_message,并执行重试、告警或人工排查。 - 任务结果保留 30 天,有效期后无法继续通过任务 ID 查询。
实用场景
- 提取视频字幕文本:获取 YouTube 视频的完整字幕,用于归档、检索和知识库建设。
- 翻译并分析多语言字幕:通过原始语言与目标语言字段识别字幕语言,支持跨语言研究和化运营。
- 生成视频摘要:结合字幕文本和时间轴,将长视频拆分为可检索片段,提升审核与摘要生成效率。
- 定位视频片段:利用
start_time、end_time和duration_time标记重点字幕区间,制作短视频切片或时间戳目录。 - 批量评估竞品视频:批量查询竞品视频字幕,分析主题、和结构,为 SEO规划提供依据。