影片播放器連接到來源卡片、註記時間軸和一則已核對的註記;上方有一張問號卡片。

若只需檢查一次,請從公開影片頁面開始。閱讀留言,播放所寫的時間點,並檢查回覆的上下文。若需要儲存一組資料,以便搜尋和再次檢查,請使用下方的收集方法。

一則公開讀者提案,發表於 2024 年 11 月 20 日;回報了一個留言瀏覽問題 描述了這項困難:「在瀏覽器中瀏覽留言區可能並不容易。」實用的索引必須保留討論內容,同時讓人更容易找到其中提到的影片時間。

本指南說明如何建立這份索引。範圍包括選定的公開留言和回覆,不包括聊天室訊息、YouTube Studio 中的私人記錄,也不代表所有觀眾的意見。本指南未實際執行留言收集。

1. 定義影片時間點和收集限制

選擇一部已知的公開影片。記錄影片 ID、公開網址和影片長度。ID 是用來識別來源記錄的代碼。影片長度是影片的總播放時間。

選取留言前,先寫下要研究的時間點。你可以指定一個確切時間,或設定開始和結束時間。請說明搜尋範圍是否包含結束時間。這樣可避免後續選擇改變原本的問題。

索引中的符合項目,表示某則留言包含一個已核對、且位於指定時間範圍內的時間參照。這不表示你已找到該場景的所有討論。有些留言會描述場景,卻沒有寫出時間。

接著,聲明收集限制:

1. 定義影片時間點和收集限制
設定應記錄的內容
影片已知的公開影片 ID 和網址
影片長度總秒數及核對長度的來源
目標時間點確切時間或明確指定的時間範圍
留言排序最熱門(Top)、最新(Newest),或兩者皆用
留言上限每部影片要求收集的頂層留言數上限
回覆上限每則頂層留言要求收集的回覆數上限
收集時間收集記錄的時間

頂層留言是指不是回覆的留言。上限是允許的最大數量。設定上限不保證來源會傳回同樣數量的記錄。

最熱門(Top)依照來源的精選順序排列。最新(Newest)依照來源的近期順序排列。兩者皆用(Both)會使用兩份清單,並在同一次執行中移除重複的留言 ID。這些選擇會界定一個有限的樣本。若需要協助選擇排序方式,請參閱留言抽樣指南。

2. 收集少量留言及回覆

Actor 是由平台代管、用來收集資料的程式。YouTube Comments Scraper 規格,已於 2026 年 10 月 25 日核對;僅核對文件 說明了如何透過已知影片網址或 ID 收集公開留言。文件也說明了可選擇收集回覆,並設定回覆上限。

Actor 提供留言記錄。你仍須自行擷取時間參照、檢查影片,並建立索引。

先從這組少量收集的輸入設定開始:

json
{
  "startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
  "maxCommentsPerVideo": 20,
  "commentSortMode": "newest",
  "includeReplies": true,
  "maxRepliesPerComment": 5
}
2. 收集少量留言及回覆

將整份 `startUrls` 清單替換成你要收集的公開影片。所附的歌曲網址只是輸入結構範例,不能證明這個方法會從該影片取得有用的留言結果。

這組輸入要求依最新順序收集最多 20 則不重複的頂層留言,也要求在每則已收集的頂層留言下收集最多 5 則回覆。回覆會另成記錄,不計入頂層留言上限。這些數字是要求的上限,不是實際傳回的筆數,也不是人數。

文件規定,輸入可包含 1 至 100 筆影片項目。`maxCommentsPerVideo` 接受 1 至 1,000 的整數。啟用回覆收集時,`maxRepliesPerComment` 接受 1 至 100 的整數。

Task 是已儲存的輸入預設設定。公開的留言與回覆匯出 Task,已於 2026 年 10 月 25 日核對;僅確認頁面存在 可作為這次收集的起點。使用前,請替換範例影片清單,並檢查設定。

所附輸入已通過文件所列輸入規則的檢查。也已找到公開 Task 頁面及其 ID。未檢查已儲存的輸入,也未檢查任何付費執行。這些檢查不能證明收集成功,也不能證明回覆收集完整。

3. 分開儲存留言與時間參照

保留兩份資料表。留言表儲存原始討論記錄。關聯表儲存留言與影片時間之間的連結。關聯是兩個項目之間的一筆連結記錄。

每個固定不變的留言 ID 只保留一筆留言記錄。合併多部影片時,請同時使用影片 ID 和留言 ID。不要只因文字相同就合併留言。

來源提供下列欄位時,請將其儲存:

3. 分開儲存留言與時間參照
欄位用途
`videoId`識別影片
`videoUrl`開啟來源影片
`commentId`識別留言
`parentCommentId`將回覆連結至其上層留言
`isReply`區分回覆與頂層留言
`replyDepth`保留文件所定義的回覆層級
`text`保留留言原文
`sortMode`保留取得該筆記錄時使用的來源排序方式
`publishedAt`有確切發表日期時予以保留
`publishedTimeText`保留頁面顯示的發表時間文字
`updatedAt`有確切更新日期時予以保留
`scrapedAt`記錄收集時間
`status`保留該筆記錄的結果

YouTube 留言資源文件,已於 2026 年 10 月 25 日核對;僅用於身分與時間概念 區分了留言 ID 與回覆所屬的上層留言 ID。其發表時間戳記記錄留言的發表時間,不是影片中的播放位置。Actor 有其自身文件定義的欄位。

缺失值應保留為缺失值。`publishedAt` 為 null,表示無法取得確切日期,不代表零。不要以 `scrapedAt` 替代,也不要將它轉換成影片時間。

即使匯出資料缺少上層留言,也要保留上層留言的連結,並記錄這項上下文缺失。不要因文字看似相近,就將回覆連到另一則留言。

4. 將每個寫出的時間擷取為候選時間參照

時間字串是一小段可能代表影片播放位置的文字,例如 37:07 和 1:02:03。候選時間參照是指尚未確認、但可能指向影片時間的文字。

閱讀原文,每出現一個候選時間參照,就建立一筆關聯記錄。保留原始字串及其字元位置。位置從零開始計算:第一個字元的位置是 0。

記錄位置前,不要更改空格或標點。後續讀者必須能在儲存的文字中找到同一個字串。若採用其他計數規則,請加以說明,並一致使用。

關聯表需要下列欄位。這些是你為索引建立的欄位,不是 Actor 保證提供的輸出:

4. 將每個寫出的時間擷取為候選時間參照
儲存欄位用途
影片 ID 和留言 ID找到來源留言
原始字串保留原文寫出的時間
字串起始位置區分同一則留言中各次出現的時間字串
轉換後的秒數以同一單位比較有效時間
已知影片長度檢查時間是否在影片長度內
驗證結果記錄候選時間參照為有效、無效或待審查
上層留言上下文連結至上層留言,或註明上下文缺失
審查狀態記錄影片檢查確認了哪些內容
註記簡要說明判定理由
檢查時間與檢查者記錄由誰在何時檢查這筆關聯

一則留言可以包含多個時間。同一個時間也可能在一則留言中出現兩次。擷取時,請分別保留每次出現的記錄。這兩種情況都不會增加留言數或人數。

回覆本身可能沒有寫出時間,卻在討論上層留言提到的時間。請將這則回覆保留為上下文。不要替它編造時間字串,也不要替它建立已核對的場景參照。

5. 轉換前先驗證時間字串

計算秒數前,先檢查完整字串。不要從負值或格式錯誤的字串中截取較小片段,將它變成有效時間。

請遵守下列規則:

  1. 接受「分:秒」或「時:分:秒」格式。
  2. 秒數必須小於 60。
  3. 使用含小時的格式時,中間的分鐘數必須小於 60。
  4. 拒絕負值和無效的數字群組。
  5. 將有效字串轉換成秒數。
  6. 將結果與已知影片長度比較。

若格式為分與秒,將分鐘數乘以 60,再加上秒數:

37:07 = 37 × 60 秒 + 7 秒 = 2,227 秒。

若格式為時、分、秒,將小時數乘以 3,600,分鐘數乘以 60,再加上秒數:

1:02:03 = 1 × 3,600 秒 + 2 × 60 秒 + 3 秒 = 3,723 秒。

在兩組數字的格式中,第一組是分鐘數,可以超過 59。在三組數字的格式中,第一組是小時數,後面的分鐘數和秒數都必須小於 60。

因此,37:67 無法通過驗證。不要未加說明就將它修正。請保留原始字串及驗證失敗的原因。

超過已知影片長度的時間字串必須保留待審查。不要將它改成最接近的有效時間。若影片長度未知,長度檢查應保留為尚未確認。時間若恰好位於影片結尾,也必須先檢查播放內容,才能認定它是場景參照。

零與缺失不同。時間字串 0:00 指的是影片開頭。轉換時間欄位留空,表示尚無可採用的轉換結果。

6. 觀看時間點並閱讀討論

數字有效,仍只代表它是候選時間參照。它可能指的是其他事物。標記前,請先觀看它所指的影片時間點。

對每個通過檢查的候選時間參照,執行下列步驟:

  1. 開啟對應影片,移至轉換後的時間。
  2. 觀看並聆聽該時間點前後的內容。
  3. 閱讀留言原文。
  4. 閱讀其上層留言和可取得的回覆。
  5. 簡短記錄你能確認的內容。
  6. 指定審查狀態。

請一致使用下列狀態:

6. 觀看時間點並閱讀討論
狀態意義
已核對的場景參照影片和討論內容支持與該時間點的關聯
無關字串經檢查,文字中的字串指的是其他事物,而非這個影片位置
尚未確認無法核對某項必要事實或來源
範圍之外該參照不屬於已聲明的研究範圍

請將驗證結果與這些審查狀態分開記錄。無效字串表示未通過格式檢查。尚未確認的參照表示缺少必要事實。已核對但位於目標範圍之外的參照,可以保留在完整索引中,但不列入目標結果。

註記應描述關聯。不要推測觀眾的意圖,也不要推斷觀眾有共同看法。設定回覆上限,也表示你可能缺少相關上下文。請說明這項限制。

若要判斷教學是否缺少某項說明,請接著使用教學缺口檢查方法。僅有場景參照,不能證明教學有缺口。若要尋找沒有任何留言提到的說明,請使用另一套概念導覽方法。

7. 完整操作一個原創虛構範例

本範例的所有內容皆為原創虛構。影片、留言、回覆和觀看筆記都是為了說明方法而編寫,並非 Actor 輸出。未實際執行留言收集,也未檢查任何真實影片的播放內容。

這部虛構影片的長度為 40:00:

40 × 60 秒 = 2,400 秒。

留言 C 的確切原文如下:

“37:07 explains the setup; 38:10 shows the result.”(意為:「37:07 說明設定;38:10 展示結果。」)

引號用於呈現範例,不屬於儲存的留言原文。原文中 37:07 的第一個字元位於位置 0。

保留一則留言與兩個時間參照

留言表中,C 只出現一次。回覆 R 是 C 之下的另一筆記錄。在這個虛構範例中,R 的原文是「That comparison helped.」,意為「那個比較很有幫助。」其中沒有時間字串。

7. 完整操作一個原創虛構範例
留言 ID上層留言 ID文字
C無;頂層留言37:07 explains the setup; 38:10 shows the result.(原文意為:37:07 說明設定;38:10 展示結果。)
RCThat comparison helped.(原文意為:那個比較很有幫助。)

C 中的兩個時間字串會產生兩筆關聯記錄:

7. 完整操作一個原創虛構範例
留言 ID時間字串從零起算的起始位置轉換後的時間影片長度檢查
C37:0702,227 秒在 2,400 秒內
C38:10262,290 秒在 2,400 秒內

第二個時間字串從位置 26 開始。位置 25 是分號後的空格。這個位置必須對應未經更改的原文。

第二個時間的計算如下:

38:10 = 38 × 60 秒 + 10 秒 = 2,290 秒。

兩個時間參照相隔 2,290 − 2,227 = 63 秒。這個差值不代表一段連續的場景區間。留言指出的是兩個不同的時間點。

套用虛構的觀看筆記

假設虛構的觀看筆記確認,37:07 是設定說明,38:10 是其結果。兩筆關聯都標記為「已核對的場景參照」。R 仍連結至 C,作為回覆上下文。不要替 R 編造時間參照。

7. 完整操作一個原創虛構範例
留言時間狀態註記回覆上下文
C37:07已核對的場景參照虛構觀看筆記確認此處為設定說明R 仍連結至 C
C38:10已核對的場景參照虛構觀看筆記確認此處為結果R 仍連結至 C

若目標範圍為 37:00 至 37:30,且包含結束時間,只有第一筆關聯會列入結果。第二筆仍保留在完整索引中。無論查看哪個範圍,C 都只算一則留言。

本範例有兩筆留言記錄,其中一筆是回覆。C 提到了兩個時間。這些數量不能用來確定人數。

保留超出影片長度的時間,等待審查

現在考慮另一個獨立的虛構候選時間參照 41:00:

41 × 60 秒 = 2,460 秒。

2,460 − 2,400 = 60 秒,即超出虛構影片長度 60 秒。

這個時間字串的格式有效,但未通過影片長度檢查。請保留待審查,並記錄原因。不要將它改成 40:00。這個獨立的候選時間參照不會改變上述 C 和 R 的計數。

8. 檢查匯出資料並保留失敗狀態

匯出已核對的導覽索引,包含影片網址、已核對的影片時間、留言 ID、上層留言上下文、簡短註記和狀態。同時保留原始留言表和候選時間參照表。

使用索引前,請檢查每筆關聯是否都能連回已儲存的留言。對照未經更改的文字,再次核對時間字串的位置。確認計算和單位正確。確保每個採用的時間都屬於正確影片。

保留下列失敗或未完成狀態,讓人能看見:

8. 檢查匯出資料並保留失敗狀態
情況必要處理
缺少文字將擷取狀態保留為尚未確認;不要編造文字
缺少身分識別資料將記錄保留為尚未確認;不要編造 ID
無效時間字串保留字串及驗證失敗結果
影片長度未知將影片長度檢查保留為尚未確認
無法播放影片將場景檢查保留為尚未確認
缺少上層留言或回覆記錄上下文缺失
收集失敗記錄失敗;不要視為成功收集到空樣本
沒有已核對的符合項目回報這組已收集資料中沒有已核對的符合項目

零筆只適用於你實際檢查過的資料集,不能證明相關留言不存在。請分別回報不重複的留言 ID 數量與時間提及次數。將來源排序方式、收集上限、收集日期和尚未確認的記錄,連同這些計數一起保留。

來源與延伸閱讀

作者 Chronometrica · 更新日期

返回頂端 ↑