
顶层评论是对帖子的评论。回复是对评论的回应。这些步骤只使用顶层评论。
来源 id 是一条帖子、一条评论或一位作者的公开名称。NVivo 是存放文本以供手工编码的软件。质性编码是指你用一个有名称的标签标记文本,并写下理由。
Actor 是用于采集数据的托管程序。Task 是为 Actor 保存的输入预设。TikTok Comments Scraper Actor 采集公开来源行。编码由你完成。Actor 不创建编码、个案或 NVivo 文件。
公开 Task Export TikTok Comments to CSV or Excel 已于 2026 年 10 月 13 日核对。公开 Task 只是起始输入。它并不表示分析会自行完成。
采集正确的公开行
使用公开版本 0.1.17。输入 `startUrls` 接受 1 到 100 项。每一项必须是包含 `/video/` 或 `/photo/` 的完整已知 URL,或者是数字形式的帖子 id。短链接不够。先打开短链接,再复制完整的已知 URL。
已保存的 Task 包含一条示例视频。把该示例替换为你打算研究的一条已知公开帖子。已保存的输入是:
{
"startUrls": ["https://www.tiktok.com/@zachking/video/7631200623693729038"],
"maxCommentsPerVideo": 250,
"includeReplies": false,
"maxRepliesPerComment": 10
}`maxCommentsPerVideo` 是一条帖子的顶层行上限。允许的值是 1 到 1,000。已保存的 Task 使用 250。第一次测试时,把 250 改为 3。
`includeReplies` 为 false 表示不采集回复行。本次测试保持为 false。`maxRepliesPerComment` 是一条已保存父评论下的回复上限。允许的值是 1 到 100。已保存的 Task 使用 10。当 `includeReplies` 为 false 时,该回复上限不会采集任何内容。
一次当前对照使用了顶层上限 3。它保存了 3 条互不重复的评论。每条评论都与所请求的帖子相符。每条都有非空文本、一个 `authorId` 和 `createdAt`。在每一行上,`isReply` 为 false,`replyDepth` 为 0,`status` 为 ok。值 ok 表示已保存一条真实评论。`replyDepth` 为 0 表示该行是顶层。
该对照只支持顶层采集。它没有测试回复采集。它没有采集每一条公开评论。行上限或公开信息流样本都不是完整的评论集合。
阅读数据行和 OUTPUT 摘要
保留未经改动的来源 JSON 或 JSONL 文件。JSON 是 Actor 产生的结构化文件。同时保留 OUTPUT。OUTPUT 是采集摘要,不是评论行。
保留这些 OUTPUT 名称:
- `inputsReceived`
- `uniquePostsPlanned`
- `postsAttempted`
- `postsWithRows`
- `commentsWritten`
- `repliesWritten`
- `rowsWritten`
- `stopReasonCounts`
- `failedInputDetails`
同时保留每个输入的停止、状态和上限细节。本课不为该对照编造那些 OUTPUT 数字。已知的已保存评论数是 3。请在你自己的文件上读取这些具名 OUTPUT 值。不要用 0 填入未知计数。
`repliesWritten` 需要仔细阅读。保存的值 0 表示没有写入回复行。它并不表示人们没有写回复。回复被排除在范围之外。缺少回复文本并不是对话为零的证据。
每一条实际保存的评论,其 `status` 都是 ok。不可用的输入仍留在 OUTPUT 中。不要为它创建虚假的空评论行。
公开值可以是 null。Null 表示该值未被提供。值 false 不同。False 表示来源明确说否。不要把 false 当作未知。
`commentIndex` 是一行的已保存位置。它不是来自 TikTok 的相关度分数。`replyCount` 是回复的计数。该计数不提供回复文本。
Actor 可以返回这些来源列:
- `inputIndex`
- `inputUrl`
- `postUrl`
- `postId`
- `commentId`
- `text`
- `language`
- `createdAt`
- `likesCount`
- `parentCommentId`
- `replyToCommentId`
- `isReply`
- `replyDepth`
- `replyCount`
- `authorId`
- `authorHandle`
- `authorDisplayName`
- `authorUrl`
- `authorVerified`
- `isPinned`
- `isHeartedByCreator`
- `commentIndex`
- `replyIndex`
- `status`
- `scrapedAt`
你再创建三列。它们不是来源列。
- `local_record_key` 是你将交给 NVivo 的 id。
- `author_key` 是复制为文本的作者 id,以便对行分组。
- `collection_time` 是你在工作文件上记录的时间。
如果 `collection_time` 是 `scrapedAt` 的副本,请写下来。`selection_note` 也是你的注释。它不是来源列。编造的 `local_record_key` 不是已核实的评论 id。把每个 id 都存为文本。当列是数值类型时,电子表格可能会改变一个很长的数字。
Actor 只提供公开文本。它不提供质性编码、NVivo 导入、个案、医学解读或自动理论。
完成这八项操作
- 先写下研究规则。
采集之前先写明已知的公开帖子。写下你将保留的评论的开始日期和结束日期。写下语言规则。本方法选择顶层评论。回复研究需要自己的测试,以及之后明确的选择。如果 `createdAt` 不在你的日期之内,把该行排除在编码之外,并在 `selection_note` 中说明原因。本课后面的园艺句子是普通的园艺虚构内容。公开评论样本不能支持医学主张。
- 用上限 3 测试一条预定帖子。
使用你已经知道的一条真实帖子。把 `maxCommentsPerVideo` 设为 3。把 `includeReplies` 设为 false。然后检查来源 id、文本、`status` 和 OUTPUT。上限 3 足够看到真实列。它也足够小,可以在大文件之前完成核对。已核对的对照只支持这条顶层路径。把未保存的回复保持为排除范围。
- 先保留来源,再制作一张扁平的工作表。
保持来源 JSON 或 JSONL 文件不变。保持 OUTPUT 不变。工作表是之后的副本。使用这些列:`local_record_key`、`postId`、`postUrl`、`commentId`、`author_key`、`text`、`createdAt`、`language`、`isReply`、`parentCommentId`、`collection_time` 和 `selection_note`。把 id 保持为文本。当来源 `commentId` 存在时,用它作为 `local_record_key`。如果来源 id 缺失,创建 `local_record_key`,并在 `selection_note` 中标出这一缺口。该本地键只标识你的行。它不是 TikTok 评论 id 的证明。未经改动的来源文件让你可以核对此副本。
- 导入之前先选定个案。
个案是你将编码的一个单位。在本方法中,一个个案是一次评论观察。它不是一个人。使用 `local_record_key` 作为唯一个案 id。把 `author_key` 和 `postId` 保留为分组列。然后你可以把一个账号的评论放在一起阅读。你仍然不得把该账号称为已确认的人。这一选择决定计数。来自同一个 `author_key` 的两条评论是两个个案和一个账号组。它们不是两个人。
- 准备一张列稳定的工作表。
使用一行表头。每一列只放一种值。把来源 `text` 原样复制到 `raw_text`。把任何编辑后的副本放进 `analysis_text`。如果你隐藏一个私密词,或只修改你的副本,把每一处改动写入变更日志。如果没有任何改动,在该日志中写入“none”。保存带引号的 UTF-8 CSV 文件或 Excel 文件。UTF-8 是一种能保留 é 等字母的文本编码。带引号的字段可以包含逗号、引号或换行。测试一行,其中同时包含这些内容,再加上一个非纯 ASCII 的字母。在 Excel 中,把 id 列作为文本导入。不要为了让文件能打开而从原始评论中删除有意义的符号。Word 文档是可选的。当工作表符合研究需要时,你不需要它。
- 在适用于 Windows 的 NVivo 15 中导入该工作表。
NVivo 15 Windows 帮助把这种导入称为调查(survey)。路径是 Import,然后 Survey,然后 Excel or Text File。帮助页面是 Datasets。选择该文件。确认表头行、编码和列分隔符。分隔符是拆分列的字符,通常是逗号。检查预览。选择 `local_record_key` 作为唯一记录 id。把 `analysis_text` 标为开放式文本,即你可以编码的文本。把 `postId`、`commentId`、`author_key`、`isReply` 和时间列标为封闭式。封闭式表示该列只对行分类。如果工作表已经存储某一列,可以把该列留在 NVivo 之外。NVivo 可能把一行标为受访者(respondent)。在本研究中,该标签仍然表示一条评论。在你已安装的副本上核对菜单。这些名称属于已记载的 NVivo 15 Windows 帮助。不要把它们强加到每个版本或 macOS 上。评论个案、编码规则和核对是研究选择。它们不是从该供应商页面取得的规则。
- 检查导入;如果映射错误,重新导入。
清点已导入的记录。该计数必须与你打算导入的工作表一致。打开几条记录。逐项核对:导入的 id 必须与对应的来源 id 完全一致,导入的文本也必须与对应的来源文本完全一致。当前的 NVivo 15 Windows 帮助说,导入之后不能编辑调查来源内容。导入之后也不能更改列的分析类型或数据类型。如果映射错误,修正工作表。把该修正文件作为一份新的已核对副本导入。没有执行实际的 NVivo 应用程序测试。这些步骤是已记载的读者核对。它们不是测得的导入器结果。
- 在更大的集合之前,先手工编码一个小集合。
写下每个编码标签。写下该编码包含什么、排除什么。保留一份备忘录和一个编码版本。当你阅读一段短摘录时,使其来源和个案保持在视野中。每条评论自动成为一个个案,并不等于一个独立参与者。导出编码到记录的映射。对照工作表检查它。只有在此之后才编码更大的集合。
人们询问评论行如何进入 NVivo。一个公开问题是这条 r/CompSocial comment。该问题显示了一种需要。它并不表明这一个案映射适合每一项研究。
核对一个虚构的三行映射
下面各行是原创虚构内容。它们是教学示例,不是 Actor 结果。这个虚构教学示例没有保留对照中的任何真实评论文字。不要把这些园艺句子读成采集到的 TikTok 文本。
虚构内容使用两条关于普通园艺托盘的帖子。帖子 P1 有两条顶层评论。帖子 P2 有一条顶层评论。账号键 A 在 P1 上写了评论 C1。文本是“这个托盘很难搬”。账号键 A 还在 P1 上写了评论 C2。文本是“我加了一个把手”。账号键 B 在 P2 上写了评论 C3。文本是“这些说明帮了忙。”这三行都是顶层,并链接到一条已知帖子。R1、R2 和 R3 的变更日志写的是 none。`analysis_text` 与那些来源文字一致。
R1、R2 和 R3 是三个评论个案。A 和 B 是两个账号键。这些键是分组事实。它们不是三个人。
来源、个案和列映射
| local_record_key | 个案 | postId(封闭式) | commentId(封闭式) | author_key(封闭式) | isReply(封闭式) | analysis_text(开放式) |
|---|---|---|---|---|---|---|
| R1 | 一条评论 | P1 | C1 | A | false | 这个托盘很难搬 |
| R2 | 一条评论 | P1 | C2 | A | false | 我加了一个把手 |
| R3 | 一条评论 | P2 | C3 | B | false | 这些说明帮了忙。 |
使用 `local_record_key` 作为 NVivo 个案 id。在此映射中,`analysis_text` 是唯一的开放式列。`postId`、`commentId`、`author_key` 和 `isReply` 是封闭式。R1 和 R2 共用账号键 A。它们仍然是两个个案,因为单位是评论。共用的键让你可以把它们放在一起阅读。
这三个个案的编码结果
使用两个编码。`handling_problem` 表示作者说该物体难以握住或移动。`workaround` 表示作者说自己改了什么以使任务更容易。一条只说说明有帮助的评论,两个编码都不给。
| local_record_key | author_key | 编码 | 理由 |
|---|---|---|---|
| R1 | A | handling_problem | 这个托盘很难搬。 |
| R2 | A | workaround | 作者加了一个把手。 |
| R3 | B | none | 有帮助的说明两个编码都不符合。 |
这些计数是精确的。有 3 条研究评论。有 2 个已编码的评论个案,即 R1 和 R2。每个已编码个案有 1 个编码。R3 没有编码。账号键 A 有 2 条相关联的评论。那些相关联的评论不是 2 个独立的人。下一行不属于这些计数。
单独的文件测试行
R-TEST 是第四条编造的行。它测试逗号、引号、换行和字母 é。它不是研究评论。把它排除在 3 条研究评论之外。把它排除在 2 个已编码个案之外。不要给它编码。
预期的原始文本有两行:
The note says "café, tray"
Carry it flat.这份 CSV 把该文本放在一个带引号的列中。逗号留在引号内。内部引号被写成两个。换行是真正的换行,不是斜杠和 n 这两个字符。
local_record_key,postId,commentId,author_key,isReply,analysis_text,selection_note
R-TEST,P-TEST,C-TEST,T,false,"The note says ""café, tray""
Carry it flat.",import test only打开预览之后,文本必须与上面两行一致。逗号必须保留。café, tray 两侧的引号必须保留。换行必须保留。é 必须保留。此测试行上的 `isReply` false 是已知的 false。它不是未知值。没有对此文件运行导入器。R-TEST、R1、R2 或 R3 都没有测得的导入结果。
来源和延伸阅读
作者 Chronometrica · 更新日期
返回顶部 ↑
