开发指南 · 研究人员

如何构建用于话语分析的 YouTube 字幕语料库

YouTube 是政治评论、新闻、教育和文化的主要阵地,但研究人员过去主要通过标题、评论和播放量来研究它。字幕让你能大规模分析视频里实际说了什么,每句引文都带时间戳。

适合谁
传播学、媒体研究、政治学和语言学研究人员
开发周期
1–2 周
API 接口
/channels/resolve/batch/transcripts

它解决什么问题

人工转录把研究规模限制在几十个视频,而临时写的爬虫脚本容易失效,也难以复现。研究人员需要一种可靠的方式,为确定的频道和日期样本采集完整字幕,连同元数据存储,并公开方法以便他人复现。

第一版应该包含哪些功能

  • 有记录的频道样本和日期范围
  • 以原始 JSON 存储的完整字幕及元数据
  • 记录每个视频的字幕来源(人工、自动或 AI)
  • 导出为 CSV 或文本,供 R、Python、NVivo 或 ATLAS.ti 使用
  • 可重复运行的采集脚本,便于复现

分步实现指南

  1. 01

    确定样本

    列出要研究的频道和时间段,并记录纳入标准,供方法部分使用。

  2. 02

    解析视频列表

    对每个频道调用 /channels/resolve,并按发布日期筛选结果。

  3. 03

    采集字幕

    把视频 ID 发送到 /batch,存储完整的 JSON 响应,包括每份字幕的语言和字幕来源。

  4. 04

    准备分析

    把字幕连同视频 ID、频道、日期和时间戳导出为文本或 CSV,然后用主题模型、词频统计或质性编码进行分析。

入门代码

这个创意基于“方案 3:把播放列表批量导入知识库”模式。替换成你自己的频道、提示词和存储即可。

import requests

API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}

playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
                         json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
                               "limit": 100}).json()

ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
    "video_ids": ids,
    "format": {"timestamp": True, "paragraphs": True},
}).json()

# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
    if r["status"] == "completed":
        for p in r["data"]["transcript"].get("paragraphs") or []:
            store(video_id=r["video_id"], start=p["start"], text=p["text"])  # your vector DB

为什么值得做

对研究人员来说,回报是以远低于人工转录的成本和时间获得可复现的数据集。也有团队为媒体监测公司和智库打造付费数据集或分析服务。

需要避开的坑

  • 混用自动字幕和人工字幕却不加标注:要记录字幕来源,因为准确度不同。
  • 不保存原始响应:存储原始 JSON,以便重新运行分析。
  • 忽视伦理审查和平台条款:发布数据集前,先确认所在机构的要求和 YouTube 的条款。

关于这个创意的问题

可以把 YouTube 字幕用于学术研究吗?

很多研究人员都在这么做。请确认所在机构的伦理要求、YouTube 的条款和版权法,尤其是在公开分享数据集之前。

YouTube 自动字幕的准确度如何?

取决于音质、口音和话题。API 会注明每份字幕来自人工字幕、自动字幕还是 AI 语音识别,方便你在分析中加以考虑。

一次能采集多少个视频?

Business 套餐下,单次批量请求最多接受 3,000 个视频 ID。规模更大的研究可以运行多个批次。

今天就开始开发

每月 10 个免费额度,无需信用卡。

如何构建用于研究的 YouTube 字幕语料库 | YouTubeTranscript.dev