以星形和时钟标示的评论样本连接到一张表,表中包含共有和缺失的身份标识。
保留采集顺序和样本归属的证据。

“最热门”指来源端在 Top 排名中列出的评论。这是来源端的排名,不是观看量指标,也不是经过认证的相关性评分或互动评分。“最新”指来源端的近期排序。仅凭这一顺序,无法确定评论发布至今的准确时长。

Actor 是托管运行的数据采集程序。Actor 负责采集公开记录,分析由你完成。Task 是保存好的输入预设。公开 Task 只是初始输入,并不意味着分析会自动运行。

本方法说明来源端排序如何改变研究样本。它不标记垃圾评论,不梳理回复树,不将未获回答的问题加入待处理队列,也不对课程评论评分。本方法不涵盖直播聊天消息。

先写下研究问题

步骤 1. 先写下分析问题,再选择排序方式。

如果问题关注按来源端排序的精选评论,就使用“最热门”。如果问题关注来源端近期排序中的评论,就使用“最新”。如果两个问题都重要,就将样本分成 2 层。层是样本中预先声明的一部分。这里按检索顺序分层。

排序方式决定哪些评论进入样本。选择与研究问题相符的排序方式。不要只因某种排序支持你预期的结论,就选择它。

步骤 2. 明确已知视频、观测时间、每种模式的上限,以及仅涵盖顶层评论的范围。

这里的上限是顶层评论数量上限,即 `maxCommentsPerVideo`。记录获取每个列表的具体时刻。来源端的排序日后可能改变。之后获取的列表不再是同一个样本。

比较“最热门”和“最新”时,应使用相同的上限。上限不同,会让主题占比难以比较。

关闭回复采集。回复是顶层评论下的评论。回复会改变你的计数单位。回复记录不计入顶层评论上限。本方法未测试回复。请在笔记中记录这一限制。

设置当前输入

这里使用的 YouTube Comments Actor 公开构建版本为 1.1.6。它接受以下范围内的输入。

  • `startUrls` 接受 1 至 100 个已知公开视频的网址或视频 ID。
  • `maxCommentsPerVideo` 接受 1 至 1,000 的整数。
  • `commentSortMode` 接受 `top`、`newest` 或 `both`。
  • `includeReplies` 可以开启或关闭。
  • 开启回复采集时,`maxRepliesPerComment` 接受 1 至 100 的整数。

使用一个已知的公开视频。不要使用私享视频。此 Actor 不会替你搜索视频。

2026 年 10 月 13 日,YouTube Audience Comment Research Task 保存了以下初始输入:

json
{
  "startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
  "maxCommentsPerVideo": 250,
  "commentSortMode": "both",
  "includeReplies": true,
  "maxRepliesPerComment": 10
}
设置当前输入

该输入使用一个已知的歌曲视频,上限为 250,模式为 `both`,开启回复采集,每条评论最多采集 10 条回复。请将歌曲视频替换为你选定的一个已知公开视频。

首次试采集时,使用一个已知的公开视频。将 `maxCommentsPerVideo` 设为 2,将 `commentSortMode` 设为 `both`,将 `includeReplies` 设为 false。

在 `both` 模式下,两种排序共用这一个顶层评论数量上限。上限为 2,表示在“最热门”和“最新”之间分配这 2 个名额,并不是采集 2 条最热门记录,再加 2 条最新记录。文档还说明,`both` 在同一次运行中,对每个评论 ID 只保留 1 条记录。

之后进行明确的比较时,做法有所不同。分别运行一次,获取一个最热门列表和一个最新列表。为两次运行声明相同的上限,并让观测时间具有可比性。此时,每个上限分别适用于一次运行,不是 `both` 模式下的共享分配。

分别读取数据记录和运行摘要

数据集中保存的每条记录都是一条公开评论或回复。关闭回复采集后,每条记录应对应一条顶层评论。

分别读取数据记录和运行摘要
字段含义
`videoId`视频的公开 ID
`videoUrl`视频的公开网址
`commentId`评论的公开 ID
`sortMode`该条已保存记录中保留的排序标签
`text`公开评论的文本
`publishedTimeText`来源端提供的相对时间文字,如有
`publishedAt`来源端提供的准确发布时间,如有
`updatedAt`来源端提供的更新时间,如有
`authorChannelId`评论作者的公开频道 ID
`status`该条记录的结果状态
`scrapedAt`Actor 保存该条记录的时间

`publishedAt` 可以为 null。null 表示值缺失,不表示 0。`publishedTimeText` 不是准确时间。`scrapedAt` 是采集时间。绝不能将 `scrapedAt` 复制为发布时间。

`parentCommentId`、`isReply` 和 `replyDepth` 也是数据契约中规定的字段。本方法仅处理顶层评论,不使用这些字段。

OUTPUT 运行摘要不是评论记录。从数据记录中读取评论文本,从 OUTPUT 中读取运行计数和停止原因。

分别读取数据记录和运行摘要
摘要字段读取的内容
`inputsReceived`本次运行收到的输入
`uniqueVideosPlanned`计划处理的去重后视频数量
`duplicateVideosSkipped`已跳过的重复视频输入
`videosAttempted`本次运行尝试处理的视频
`videosWithRows`已写入数据记录的视频
`commentsWritten`已写入的顶层评论记录数
`repliesWritten`已写入的回复记录数
`rowsWritten`已写入的全部记录数
`statusCounts`按采集结果统计各视频或输入的数量,不统计数据集记录数。对照运行中,`ok` 的计数为 1,数据集记录数为 2。
`stopReasonCounts`按停止原因统计的数量
`failedInputDetails`处理失败或不可用的输入

一次经过核查的对照运行使用 `both` 处理了 `educationalvideo_uQrJ0TkZlc`。它保存了 2 条不重复的顶层评论记录,文本均非空。其中一条的 `sortMode` 与另一条的 `sortMode` 分别为 `top` 和 `newest`。两条记录的 `status` 均为 `ok`,`publishedAt` 均为 null。OUTPUT 报告 `commentsWritten` 为 2,`repliesWritten` 为 0。停止原因为 `requested_comment_limit_reached`。

这 2 条记录对应 2 个不同的评论 ID。此次运行表明,`both` 可以从该来源返回记录,并保留 `sortMode`。它不能证明样本是随机的,不能证明获取了全部评论,也不能确定评论发布至今的准确时长。它不能证明所有视频的排序行为都相同,也不能说明分别运行“最热门”和“最新”时的重合情况。此次运行未测试回复。`repliesWritten` 为 0 不构成回复测试。此次运行也未测试是否完整覆盖全部评论。

本文未使用该对照运行中的任何评论原文。回复总数或点赞数不能证明你已获取全部评论。处理失败或不可用的输入会出现在 OUTPUT 中。不要为这些输入编造评论记录。

先测试试采集,再选择导出方式

步骤 3. 用小规模的 `both` 试采集测试一个已知视频。

检查 `videoId` 和 `videoUrl` 是否与该视频一致。检查 `text` 是否非空。检查是否存在 `commentId` 和 `sortMode`。检查 OUTPUT 中的停止原因。达到共享上限时,预期的停止原因是 `requested_comment_limit_reached`。

如果 `publishedAt` 为 null,就将发布至今的时长保留为未知。不要填 0,也不要填采集时间。标为“最新”的 `sortMode` 记录的是该评论从最新排序中检索而来。只有来源端给出实际日期时,才能据此确定发布至今的时长。

步骤 4. 选择一次覆盖范围更广的导出,或 2 个独立列表。

如果你希望一次导出覆盖范围更广、但仍有明确范围限制的数据,并且会读取停止原因和计数,就使用 `both`。该导出结果仍是一个有明确范围限制的来源列表。

要明确比较“最热门”和“最新”,应分别运行一次。记录表是某种模式保存的原始列表,并附有该次输入和观测时间。运行一次,获取有明确范围限制的最热门记录表;再运行一次,获取有明确范围限制的最新记录表。两次运行使用相同的预先声明上限,并让观测时间具有可比性。

这些配对运行是你之后要做的工作。经过核查的对照运行只有一次,使用的是 `both`。不要将该对照运行报告为配对列表的重合结果。

步骤 5. 对每张记录表分别去重,再根据这些独立记录表构建并集。

去重是指对每个已核实的身份只计数一次。去重键由 `videoId` 加 `commentId` 组成,而不是评论文字。2 条评论即使文本相同,也可能有不同的 ID。

并集是出现在任一记录表中的、不重复的已核实 ID 的集合。交集是同时出现在两张记录表中的已核实 ID 的集合。将归属保留为 `{top}`、`{newest}` 或 `{top, newest}`。

只有 2 张独立记录表都包含同一个 ID 时,才能将其归属标为 `{top, newest}`。在单次 `both` 运行中,去重只保留 1 条记录和 1 个 `sortMode`。仅凭这 1 个标签,无法判断它是否还属于另一种排序。不要猜测。保留原始记录表,让归属始终可以核查。

如果 ID 缺失,就将其保留为未确定。不要把 ID 缺失的情况计为 0。不要凭记忆重建丢失的归属信息。

使用同一套编码规则,再比较集合

步骤 6. 在每一层中使用相同的编码规则。

编码规则是判断某个主题是否出现的书面标准。在标记记录之前,先写下规则。对最热门和最新评论使用相同的判断标准。将原始文本、来源上下文和标记一同保留。

计算任何比例之前,先核对以下 4 项。

  • 计划输入:你预先声明的视频和模式。
  • 未知 ID:无法确定的身份标识。这些身份应保留为未确定。
  • 有效文本:可以进行编码的非空文本。
  • 状态缺口:`status` 不为 `ok` 的记录,以及任何运行失败的模式。

分母是符合条件、可纳入比例计算的评论数量。只使用 ID 已知且文本有效的评论。单独报告未知情况的数量。未知不等于 0。

主题计数统计的是样本中的评论,不是人数。它不代表未发言观众的意见,也不是人口统计结果。

步骤 7. 根据各独立列表中的 ID 计算交集和并集。

先报告检索结果中的出现总次数,再报告去重后剩余的不同 ID 数量。这里的重合仅指这些有明确范围限制的列表在这些时间点的重合,不代表这些评论占该视频全部评论的比例。

如果某种模式运行失败,缺失的列表不能视为成功获取的空列表。不要将该模式记为 0 条评论。比较结果仍是未知。来源的可用性可能在不同运行之间发生变化。编码前,先读取 `failedInputDetails` 和 `stopReasonCounts`。

步骤 8. 写出与排序方式及研究问题相符的结论。

某个主题在最热门评论中很常见,可能反映了来源端排序后呈现的精选评论情况。这一结果来自来源端排名,不是观看次数,也不是经过认证的评分。某个主题在最新评论中很常见,可能反映了来源端最新排序中的近期活动。如果 `publishedAt` 为 null,这不能证明评论发布至今的准确时长。

一次观测不能证明某个主题有所增加,也不能证明它有所减少。保存抽样笔记、输入和停止原因。之后的读者应能重复你的抽样选择。

当采集受到限制时,一些读者需要一种有明确范围限制的方法来研究真人评论。这篇公开帖子描述了这一需求。本文未核实其中声称的数量限制。不要将该说法视为官方 API 当前的行为。此 Actor 使用不同的方法,不使用你的 YouTube API 密钥。如果你还使用官方 API,请自行查阅该 API 当前的官方一手文档。选择“最热门”或“最新”可以满足这种抽样需求,但不保证获取全部评论。

逐步分析一组虚构记录表

本节的记录表是虚构的,用于讲解计数。它不是 Actor 的运行结果,也不是那次包含 2 条记录的对照运行。这里不声称展示任何真实评论文本。

虚构的最热门记录表包含评论 ID A、B 和 C。虚构的最新记录表包含 B、D 和 E。这 5 个 ID 都有来源身份标识和可编码的文本。

逐步分析一组虚构记录表
ID在最热门记录表中在最新记录表中归属
A是否`{top}`
B是是`{top, newest}`
C是否`{top}`
D否是`{newest}`
E否是`{newest}`

检索结果中依次出现 A、B、C、B、D 和 E,共出现 6 次。不同的 ID 是 A、B、C、D 和 E,共有 5 条不同的评论。B 在每张记录表中各出现一次,因此 B 是重复出现的评论。在并集中只对 B 计数一次,并保留它的两种归属。重复出现不等于垃圾评论。本方法不判断评论是否为垃圾评论。

并集为 `{A, B, C, D, E}`。交集为 `{B}`。仅属于最热门列表的集合为 `{A, C}`。仅属于最新列表的集合为 `{D, E}`。

如果一次 `both` 导出在保存 B 时只保留了 `sortMode` 为 `top` 的标签,就无法证明 B 也属于最新列表。只有独立的记录表才能表明 B 同时出现在两者中。

计算任何主题占比之前,先核对这个虚构示例。

逐步分析一组虚构记录表
核查项此虚构示例中的结果对比例计算的影响
计划输入1 个视频,独立的最热门和最新记录表,上限相同可以比较这 2 层
未知 ID无。A 至 E 均已知没有将未确定的 ID 计为 0
有效文本全部 5 条文本均可编码全部 5 条均可计入分母
状态缺口无。两种模式均未失败两个列表均不是获取失败的列表

先确定编码规则。只有评论询问如何开始任务时,才标记为“设置问题”主题。对每个 ID 都使用相同的规则。在这个虚构示例中,只有 A、B 和 D 符合规则,C 和 E 不符合。

逐步分析一组虚构记录表
集合符合规则的 ID计入分母的 ID比例百分比
最热门A, BA, B, C2/366.7%
最新B, DB, D, E2/366.7%
并集A, B, DA, B, C, D, E3/560%

这 2 层占比的平均值为 `(66.7 + 66.7) / 2`,等于 66.7%,并不等于并集中的占比 60%。并集只对重合的 B 计数一次。对各层百分比取平均,不能得到去重后并集中的占比。

在这个虚构示例中,两种排序的结果均为 66.7%。这一致性仅涉及这 5 条评论,不能证明全部观众中有 60% 存在设置问题。

陈述结论之前,先展示 ID、归属、编码规则和分母。这里能够得出的结论范围很窄。在这个虚构示例中,2 种有明确范围限制的排序样本中,主题占比相同;去重后,并集中符合该主题的评论为 5 条中的 3 条。

以下 2 项限制仍然适用。如果 `publishedAt` 为 null,B 的准确日期仍然未知。它属于最新列表这一事实不能提供该日期,`scrapedAt` 也不能提供。如果另一个视频的最新模式运行失败,就不能将该视频视为只有最热门评论的总体。比较结果将是未知。运行失败的模式不等于成功获取了空结果的模式。

来源和延伸阅读

作者 Chronometrica · 更新日期

返回顶部 ↑