在淡紫色、藍色與粉紅色的漸層背景上,半透明的留言卡片與相連的回覆匯入 3 個主題群組。

Apify 的 Facebook Comments Scraper 也能將公開留言與回覆匯出至 Excel。如果其現有整合功能,或文件所述的 3 層留言結構符合你的需求,就選擇它。Apify 文件。

首先要決定的是試算表必須包含哪些內容。「匯出這個討論串」這類目標仍有幾個關鍵問題未定:回覆是否計入上限、如何保留回覆關聯,以及檔案應包含哪些日期範圍內的資料。

本比較採用於 2026 年 10 月 20 日查核的公開文件。建議以文件所述的控制功能為依據。沒有直接對比的收集測試可支持關於價格、速度、準確度或可靠性的主張。

Actor 是託管執行的資料收集程式。本文討論的 2 款產品都是 Apify 上的 Actor。Task 是已儲存的輸入預設組合,可協助你從已知的設定開始執行。

比較會影響 Excel 檔案的控制功能

使用此表,將收集控制功能與你的檔案需求逐項對照。

比較會影響 Excel 檔案的控制功能
需求Chronometrica(文件)Apify(文件)
儲存資料列上限`maxResultsPerPost` 合併計算已儲存的留言與回覆巢狀回覆可能使結果超過要求的數量
回覆結構包含父留言與根留言 ID;儲存回覆時,其父留言與根留言也必須已儲存匯出回覆及討論串深度,最多涵蓋 3 層
收集日期範圍包含起始及結束日期當日可輸入起始日期;結束日期可在 Excel 中篩選
現有工作流程公開 Task 提供小規模匯出的設定Excel 匯出及官方 Make 整合

Chronometrica 的主要適用情境來自這些控制功能的組合。每篇貼文的資料列上限有助於界定已儲存樣本的大小。父留言與根留言 ID 可保留回覆結構。起始與結束日期則讓你在收集前先指定期間。Chronometrica 文件。

父留言 ID 用來識別某則回覆直接回應的留言。根留言 ID 用來識別該回覆討論串開頭的頂層留言。如果你需要知道某則回覆針對哪段發言,這些關聯就很重要。

請使用能滿足實際需求的控制功能。如果你只需要小型檔案供人工閱讀,日期範圍可能沒有額外價值。如果檔案要用於特定期間的報告,請在收集資料列前界定該期間。

界定每列資料代表什麼

執行任一 Actor 前,先寫一份簡短的收集計畫。這能為匯出檢查提供明確依據。

  1. 明確記錄來源。保留每篇目標貼文的直接內容網址。在未登入的情況下開啟網址,確認訪客可以閱讀你需要的留言。
  2. 選定分析單位。說明你要分析的是個別留言、回覆、帳號,還是完整對話。這些是不同的單位。
  3. 設定上限。寫下每個內容網址最多要儲存多少列資料。說明該上限是否包含回覆。
  4. 界定期間。只有在問題需要時才設定日期範圍。如果需要起訖明確的期間,請記錄起始與結束日期。
  5. 界定檔案檢查項目。說明匯出後必須保留哪些 ID 與回覆關聯。

每列留言資料代表 1 則已儲存的留言或回覆,不代表 1 個人。1 個帳號可以發表多則留言,而公開的作者名稱也不是個人的唯一識別碼。

每列資料也不代表 1 段完整對話。1 則頂層留言若有多則回覆,就可能佔用多列。因此,設有上限的樣本所包含的對話數,可能比資料列數所暗示的更少。

這項區別會影響你如何解讀檔案。如果報告需要已儲存的發言數,就計算留言資料列。如果需要帳號數,請另行界定帳號計算方法,並說明可取得的公開作者資料有哪些限制。不要把資料列總數當成人數總計。

Chronometrica 只能收集無須登入即可查看的留言。私人貼文與僅限朋友查看的貼文不在收集範圍內。請提供支援的內容網址,不要提供粉絲專頁、個人檔案、社團、限時動態或動態消息網址。社團內的貼文仍須符合網址支援及公開存取規則。Chronometrica 文件。

選定資料列上限與日期規則

Chronometrica 的 `maxResultsPerPost` 接受 1 至 10,000 的值,預設為 500。它會限制每個輸入內容網址所儲存的留言與回覆資料列總數。`includeReplies` 預設不收集回覆。如果樣本需要包含回覆,請啟用此功能。Chronometrica 文件。

請依預定工作選擇上限。第一份檔案應夠小,讓你能逐列檢查。該檔案通過檢查後,再依分析計畫提高上限。

請將資料列上限與單次執行費用上限分開看待。如果同時使用兩者,請分別記錄。不要把費用上限當成執行後必定產生特定資料列數的保證。

收集第一份樣本時,請將 `collectAllAvailable` 保持為 `false`。設為 `true` 會取消數量上限。檢查輸入與匯出流程是否正常時,無須更改這項設定。Chronometrica 文件。

如果需要包含起訖日期當日的日期範圍,請使用 `commentsFrom` 與 `commentsUntil`。「包含」表示指定的起始及結束日期也屬於範圍內。使用日期篩選時,Chronometrica 會略過日期未公開的留言。回覆所對應的父留言也必須在該日期範圍內,且已儲存。Chronometrica 文件。

這項日期規則會改變樣本內容。如果特定期間的報告需要日期範圍,而且你接受上述排除情況,就設定範圍。如果首要工作是檢查可取得的資料列,且不需要這項限制,就不要填寫日期欄位。

請將這個選擇寫入收集計畫。後續閱讀者應能判斷,某列資料未出現是否可能源於日期規則、資料列上限,或其他收集範圍限制。

使用已發布的 Task 收集小型樣本

先使用將 Facebook 留言匯出為 CSV 或 Excel 的 Task。它提供已儲存的設定,作為匯出流程的起點。

以下輸入採用目前已發布的輸入結構。請將範例網址替換為你的目標公開貼文網址。這是輸入範例,不是收集結果。

json
{
  "startUrls": ["https://www.facebook.com/reel/1733966934399341"],
  "maxResultsPerPost": 25,
  "includeReplies": true,
  "commentSortMode": "all",
  "collectAllAvailable": false
}
使用已發布的 Task 收集小型樣本

這組設定指定每個輸入內容網址最多儲存 25 列資料,且回覆也計入上限。這組設定使用支援的輸入欄位,並為這次樣本啟用回覆收集。Chronometrica 文件。

擴大收集規模前,先使用樣本檢查收集流程:

  1. 替換網址,並確認資料列上限。
  2. 使用這組小規模輸入執行 Task。
  3. 閱讀 `OUTPUT`,查看輸入失敗情況與停止原因。
  4. 儲存未經修改的 JSON 匯出檔與執行摘要。
  5. 以已儲存的結果建立 Excel 工作檔案。

Chronometrica 會在 `OUTPUT` 中回報輸入失敗情況與停止原因。它不會把這些訊息當成假的留言資料列插入。即使留言檔案已有資料列,也要檢查這份記錄。Chronometrica 文件。

儲存的 JSON 可作為日後檢查的參照。如果某個值在匯入試算表時改變,你可以與原始匯出檔比對。請一併保留執行摘要,讓資料列與收集停止原因保持關聯。

Apify 資料集支援匯出為 JSON 與 Excel。資料集是單次執行後儲存的結果資料列集合。你可以儲存 JSON 作為參照,並以 Excel 作為工作副本。Apify 資料集文件。

匯入檔案時保留原始 ID

ID 用來連結試算表中的資料列。在排序、篩選或新增分析欄位前,先確保 ID 完整保留。

Chronometrica 的資料列包含 `commentId`、`isReply`、`parentCommentId`、`rootCommentId`、`publishedAt` 及 `scrapedAt`。資料列也包含留言文字、公開作者欄位及表情回應欄位。`scrapedAt` 記錄收集時間。Chronometrica 文件。

請使用以下匯入方法:

  1. 保留原始匯出檔。使用副本進行工作,以保留來源值。
  2. 將 ID 欄位設為文字。將 `commentId`、`parentCommentId` 與 `rootCommentId` 保留為識別碼,不要轉換為數值。
  3. 檢查日期與缺失值。在用於篩選或計算前,先與 JSON 參照檔比對。
  4. 在獨立欄位新增分析。保留來源欄位,以供審查。

針對 CSV 檔案,Microsoft 文件說明了「資料 > 取得及轉換資料 > 從文字/CSV」路徑及「轉換資料」選項。請使用可控制欄位格式的匯入流程,在載入前將 ID 欄位設為文字。當文字欄位很重要時,這樣可避免依賴自動 CSV 格式判定。不同 Excel 版本的功能表配置可能不同。Microsoft 文字與 CSV 匯入指引。

未知值應保持未知。公開來源可能缺少計數、日期與身分資料。缺少表情回應數,不代表表情回應數為 0。缺少日期,也不代表日期較早。不要用會改變原意的值取代這些缺失值。

作者欄位也適用相同規則。請保留傳回的公開值,但不要因為顯示名稱相同,就認定 2 列資料來自同一個人。

擴大收集前,先檢查已儲存的樣本

能在 Excel 開啟的檔案仍需檢查。請依收集計畫檢查資料列與關聯。

  1. 計算已儲存的資料列數。將總數與你設定的上限及記錄的停止原因比對。
  2. 計算不重複的留言 ID 數。「不重複」表示每個不同的 ID 只計算 1 次。在將每列視為獨立留言前,先調查資料列數與不重複 ID 數之間的任何差異。
  3. 檢查回覆參照。逐一確認每則回覆中所有非 null 的 `parentCommentId` 與 `rootCommentId`,都存在於已儲存的 `commentId` 值中。
  4. 檢查匯入結果。將 ID 字串與選定的日期值,和未經修改的 JSON 比對。
  5. 記錄收集範圍限制。說明收集是達到上限後停止,還是因其他已回報的原因停止。請在該註記中一併保留來源網址與收集時間。

非 null 參照表示參照中有值,而非空參照。如果該值指向不存在的資料列,已儲存檔案就未通過關聯檢查。請調查原因。不要為了通過檢查而建立父留言資料列,或補入缺失的留言文字。

設有上限的執行結果只是樣本。即使執行已到達可取得來源的末端,也不能證明 Facebook 公開了每則留言。這 2 款產品都無法證明已完整收集 Facebook 顯示的所有內容。除非有證據顯示兩個計數描述的是同一組公開資料,否則不要將已儲存的資料列數除以 Facebook 顯示的計數,再把結果標為「總覆蓋率」。

這些檢查可支持一項實用、範圍較明確的結論:已儲存檔案符合事先設定的資料列規則、保留了 ID,且回覆參照有效。這已足以判斷是否應為既定任務擴大收集。

如果下一項工作是意見分析,請繼續閱讀匯出 Facebook 留言並分析客戶意見。該指南說明選定並檢查匯出流程後,如何使用這些資料列。

虛構的完整選擇範例

本範例全部為虛構情境。某位分析人員有 2 篇已確定的公開貼文。每篇貼文最多需要儲存 100 列資料,包含回覆。每則回覆都必須保留父留言關聯。報告也需要包含起訖日期當日的日期範圍,而且分析人員接受排除無法取得日期的留言。

Chronometrica 符合這些指定的控制需求。分析人員將 `maxResultsPerPost` 設為 100、啟用回覆、保留數量上限,並提供所需的起訖日期。對於 2 個不同的內容項目,在來源限制影響結果之前,設定的儲存資料列總上限為 200。Chronometrica 文件。

假設某份已儲存樣本包含 70 則頂層留言與 30 則回覆。它共有 100 列留言資料,不代表有 100 個人或 100 段完整對話。

分析人員檢查已儲存的 ID。如果每則回覆的父留言與根留言都存在於檔案中,樣本就通過關聯檢查。這項結果只適用於已儲存的樣本,不能證明整個來源討論串已完整收集。分析人員保留 JSON 與摘要,再準備 Excel 工作副本。

現在改變需求:分析人員已在使用 Apify 的官方 Make 模組,希望使用其 3 層匯出,之後再於 Excel 篩選日期。在這種情況下,Apify 可能更符合實際作業需求。Apify 文件。

如果實際需求是取得每一則私人留言,這 2 個公開資料 Actor 都不適用。必須先更改收集需求,才能透過這項比較選出合適產品。

來源與延伸閱讀

作者 Chronometrica · 更新日期

返回頂端 ↑