Skip to content

根据任务 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 为准。

请求参数

路径参数

参数名类型说明
idstring任务唯一标识,采用 UUID 格式。任务提交后 30 天均可使用该 ID 查询结果。

示例任务 ID:

text
02261816-2027-0066-0000-c27d02864073

响应说明

接口返回 JSON 数据,顶层 tasks 数组。

顶层响应字段

字段名类型说明
versionstring当前 API 版本。
status_codeinteger通用响应状态码。建议根据状态码实现异常和错误处理。
status_messagestring通用响应消息。
timestring请求执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
tasks_countintegertasks 数组中的任务数量。
tasks_errorintegertasks 数组中返回错误的任务数量。
tasksarray任务结果数组。

tasks 数组中的任务字段

字段名类型说明
idstring任务唯一标识,采用 UUID 格式。
status_codeinteger任务状态码,通常为 10000–60000
status_messagestring任务状态说明。
timestring任务执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
result_countintegerresult 数组中的结果数量。
patharray请求 URL 路径信息。
dataobject创建任务时提交的参数。
resultarray任务结果数组。

result 数组字段

字段名类型说明
video_idstring视频 ID。
se_domainstring请求中使用的搜索引擎域名。
location_codeinteger请求中使用的地区代码。
language_codestring请求中使用的语言代码。
check_urlstring搜索引擎结果页面的直接 URL,可用于核验返回结果。
datetimestring获取结果的日期和时间,采用 UTC 格式:yyyy-mm-dd hh-mm-ss +00:00
spellobject搜索引擎自动纠错信息。如果搜索引擎对进行了修正,将返回修正后的及纠错类型。
refinement_chipsobject搜索结果筛选项。该接口固定返回 null
item_typesarraySERP 结果类型,可能 youtube_subtitles
unsupported_languageboolean是否表示请求语言不受系统支持。
translate_languagestring字幕翻译目标语言代码。
origin_languagestring字幕原始语言代码。
categorystring视频所属类别。该字段已弃用,始终返回 null
subtitles_countinteger视频字幕数量。
titlestring视频标题。
items_countintegeritems 数组中的结果数量。
itemsarray字幕搜索结果数组。

items 数组字段

字段名类型说明
typestring结果类型,固定为 youtube_subtitles
rank_groupinteger分组排名。在相同 type 的结果中按组计算;不同类型之间的位置不会计该字段。
rank_absoluteinteger在 SERP 结果中的绝对排名。
textstring字幕文本,可能为翻译后的文本。
start_timeinteger字幕开始时间,单位为秒。
end_timeinteger字幕结束时间,单位为秒。
duration_timeinteger字幕持续时间,单位为秒。

请求示例

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_code20000 通常表示请求成功。
  • 任务级别的 status_code 用于表示任务的执行结果。
  • 当任务级别状态码表示错误,或 result 为空时,应记录 status_codestatus_message,并执行重试、告警或人工排查。
  • 任务结果保留 30 天,有效期后无法继续通过任务 ID 查询。

实用场景

  • 提取视频字幕文本:获取 YouTube 视频的完整字幕,用于归档、检索和知识库建设。
  • 翻译并分析多语言字幕:通过原始语言与目标语言字段识别字幕语言,支持跨语言研究和化运营。
  • 生成视频摘要:结合字幕文本和时间轴,将长视频拆分为可检索片段,提升审核与摘要生成效率。
  • 定位视频片段:利用 start_timeend_timeduration_time 标记重点字幕区间,制作短视频切片或时间戳目录。
  • 批量评估竞品视频:批量查询竞品视频字幕,分析主题、和结构,为 SEO规划提供依据。

统一入口:官网 · LLM API · 控制台