

# 从搜索结果构建 YouTube 转录文本语料库

要构建 YouTube 转录文本语料库，你必须制定研究规则，通过搜索查询发现不同的视频 ID，并为每个选中的视频核对字幕结果或失败记录。Actor 是用于采集数据的托管程序。Task 是保存好的输入预设。语料库是最终汇集的来源资料。发现视频和提取字幕是两个独立步骤。搜索结果不是转录文本，缺少字幕也不等于缺少相关主题。

## 采集设置

使用 [YouTube Search Actor](https://apify.com/chronometrica/youtube-search-scraper) 查找视频，使用 [YouTube Transcript Actor](https://apify.com/chronometrica/youtube-transcript-scraper) 获取字幕。公开 Task [YouTube Video URLs for Transcript Workflows](https://apify.com/chronometrica/youtube-search-scraper/examples/youtube-video-urls-for-transcripts) 的默认预设包含 2 个通用查询，以及 `maxResults: 100`、`resultsPerQuery: 50`、`maxPagesPerQuery: 1`、`searchDistribution: "balanced"`、`includeShorts: true`、`enableQueryExpansion: false`、`enrichWithVideoMetrics: false`、`enrichMissingChannelFields: true` 和 `maxChannelEnrichmentRequests: 100`。

进行小规模预检时，将输入改为 1 个相关查询，并设置 `maxResults: 2`、`resultsPerQuery: 2`、`maxPagesPerQuery: 1`，关闭可选的频道信息补全（`enrichMissingChannelFields: false`）、查询扩展和指标补充功能。参数 `maxResults` 限制整个运行过程的结果总数，`resultsPerQuery` 则限制每次独立搜索的结果数。

搜索输出返回以下确切字段：`rootQuery`、`query`、`querySource`、`postId`、`postUrl`、`postType`、`isShort`、`title`、`description`、`channelId`、`channelUrl`、`publishedAt`、`status`、`statusReason` 和 `observedAt`。发布日期未知时，应保留为未知；不要根据搜索结果的位置编造日期。已核查的 2 个候选视频对照测试因触发 `max_items_reached` 而停止，并非因为已经覆盖整个主题。

采集字幕时，将视频的直接 URL 传入 Transcript Actor 的 `startUrls`。设置 `preferredLanguages` 对应的语言选择规则，选择 `outputFormats=["json"]`，并在需要失败详情时设置 `includeFailedInputDetails=true`。输出返回以下确切键名：`videoId`、`videoUrl`、`transcriptLanguageCode`、`isAutoGenerated`、`segments`、`status` 和 `scrapedAt`，此外还包含 OUTPUT 中的输入失败记录。将搜索中发现的 1 个原始 URL 传入 Transcript Actor 后，核查确认其 `videoId` 以及英语人工字幕的标识、语言和时间信息均匹配。这只是针对 1 个视频、范围有限的流程核查，不能衡量整个主题的字幕可用情况。字幕获取仅涉及公开字幕轨道的可用性；它不会生成音频，也不会翻译无法获取的字幕轨道。1 个成功处理的视频生成 1 行数据集记录，但每个选中的输入仍须在台账中记录处理结果。

## 8 步操作方法

1. 制定研究规则：搜索前，写明研究问题、语言规则、日期相关性规则，以及纳入或排除规则。明确视频必须解释哪些内容才有研究价值。不要用观看次数代替相关性判断。
2. 运行一小组查询：创建一小组查询，覆盖研究问题的不同部分。先从 1 个查询和 2 个候选视频开始。保存输入、观察时间、限制条件和输出。在核查查询扩展的必要性和运行方式之前，保持该功能关闭。
3. 筛选实际来源：筛选前，审阅标题、描述和可访问的视频原始内容。记录每个视频是选中、排除还是待定，并注明原因。仅凭标题，无法证明视频确实涵盖你的问题。缺失的发布日期应保留为未知；不要仅因排名靠前就将视频标记为近期发布。
4. 统一视频标识：按确切的视频标识整理数据，同时保留查询和来源证据。同一视频多次出现在搜索结果中，不代表它是多个独立视频。对于不同剪辑版本或不同上传版本，应保留各自独立的来源 ID，除非有依据充分的研究规则将它们归为一组。
5. 批量采集字幕：将选中视频的直接 URL 以小批次交给 Transcript Actor。保持所选的语言规则，并检查输出中的失败记录。字幕获取仅涉及公开字幕轨道的可用性；它不会生成音频，也不会翻译无法获取的字幕轨道。
6. 建立字幕台账：为每个选中的视频建立台账记录。记录选中的 ID、发现来源、状态、字幕结果标识、语言、字幕时间信息、失败类别或待定原因。根据输出，逐一将选中的 ID 核对为成功、失败、未尝试或尚未解决。仅统计数据集中成功记录的行数，会掩盖那些没有生成记录的输入。
7. 审查质量和覆盖范围：根据研究要求，审查字幕轨道和来源的质量。将自动生成或人工制作的状态及语言信息与字幕一起保留。判断能否在不改变研究问题的前提下，排除无法获取字幕或匹配失败的视频。报告这项筛选限制，不要不作说明就删除视频。
8. 交付最终资料：交付视频筛选表、字幕台账，以及对纳入来源集合的明确定义。完成这些工作后，再使用后续分析方法。不能据此范围有限的来源集合，声称其代表某个总体、证明某主题的需求，或完整覆盖某个频道。

## 虚构语料库分步示例

本示例中的所有 ID、文本、来源和状态均为虚构。2 批查询共得到 8 次候选视频出现记录，涉及 6 个不同的视频 ID。查询 1 找到视频 V1、V2、V3 和 V4。查询 2 找到视频 V2、V4、V5 和 V6。将这 8 次出现记录核对归并为 6 个不同的 ID。为 V2 和 V4 保留各自的 2 个查询来源，供读者参考。

在纳入审查中，选中 V1、V2、V4 和 V5，因为它们明确涵盖了研究问题。排除 V3，因为它只是一则广告。将 V6 保留为待定，因为其内容及日期背景尚未核实。4 个选中的视频进入字幕采集环节。

字幕结果显示，V1 成功获取英语人工字幕轨道，V2 成功获取英语自动生成字幕轨道，V4 出现了类型明确的语言不可用错误，V5 出现了来源访问错误。字幕数据集包含 2 行成功记录，而台账覆盖全部 4 个选中的 ID。在 4 个选中的视频中，2 个成功，2 个失败。V6 尚待筛选决定，因此它不是字幕采集失败的输入，因为它从未被选中，也从未尝试采集字幕。

最终的来源语料库包含 V1 和 V2，并保留人工字幕与自动生成字幕的区别。它只能回答这些视频能够支持的问题部分。仅由 V4 和 V5 涵盖的问题仍未得到回答，或必须另找符合条件的来源。不要将此结果视为词语准确率、该细分领域所有视频的字幕覆盖率，或公开可用率。它只是这个虚构示例中，选定输入的成功数量统计。

第 1 个表格展示 6 个不同视频的筛选记录。

| 视频 ID | 发现来源 | 纳入状态 | 原因或备注 |
| --- | --- | --- | --- |
| V1 | 查询 1 | 已选中 | 清楚解释核心主题 |
| V2 | 查询 1、查询 2 | 已选中 | 涵盖问题的第 2 部分（出现在哪些查询中的记录供读者参考） |
| V3 | 查询 1 | 已排除 | 只是一则广告 |
| V4 | 查询 1、查询 2 | 已选中 | 涵盖主题的第 3 部分 |
| V5 | 查询 2 | 已选中 | 涵盖主题的第 4 部分 |
| V6 | 查询 2 | 待定 | 内容及日期背景尚未核实 |

第 2 个表格展示 4 条字幕采集尝试的台账记录。

| 选中的 ID | 发现来源 | 字幕状态 | 语言 | 失败类别或原因 |
| --- | --- | --- | --- | --- |
| V1 | 查询 1 | 成功 | 英语 | 已采集人工字幕轨道 |
| V2 | 查询 1、查询 2 | 成功 | 英语 | 已采集自动生成字幕轨道 |
| V4 | 查询 1、查询 2 | 失败 | 无 | 语言不可用，错误类型已明确 |
| V5 | 查询 2 | 失败 | 无 | 来源访问失败 |

第 3 个表格展示纳入语料库的 2 条字幕来源记录。

| 纳入的 ID | 字幕状态 | 语言 | 使用范围 |
| --- | --- | --- | --- |
| V1 | 成功 | 英语（人工制作） | 回答核心主题部分 |
| V2 | 成功 | 英语（自动生成） | 回答主题的第 2 部分 |

## 下一步操作

打开 [YouTube Search Actor](https://apify.com/chronometrica/youtube-search-scraper)，测试你的首次搜索，然后查看已保存的 [YouTube Video URLs for Transcript Workflows Task](https://apify.com/chronometrica/youtube-search-scraper/examples/youtube-video-urls-for-transcripts)，通过转录 Actor 逐一核对每个选中的视频，再[为其建立索引](/zh-Hans/articles/youtube-%E8%BD%AC%E5%BD%95%E6%96%87%E6%9C%AC%E5%88%86%E5%9D%97%E4%B8%8E%E6%9D%A5%E6%BA%90%E6%97%B6%E9%97%B4%E6%88%B3/)。

## 来源和延伸阅读

- [YouTube Search Actor](https://apify.com/chronometrica/youtube-search-scraper)
- [YouTube Transcript Actor](https://apify.com/chronometrica/youtube-transcript-scraper)
- [字幕获取指南](https://chronometrica.com/zh-Hans/articles/youtube-%E6%96%87%E5%AD%97%E7%A8%BF%E6%8F%90%E5%8F%96%E4%B8%8E%E7%BC%BA%E5%A4%B1%E5%AD%97%E5%B9%95%E6%A3%80%E6%9F%A5/)
- [Reddit RAG 讨论](https://www.reddit.com/r/Rag/comments/1rm7cxi/experiment_turning_youtube_channels_into_ragready/)