

# 批次擷取 YouTube 逐字稿：Chronometrica 與 Pinto Studio 比較

如果你已有一份公開 YouTube 影片清單，並想批次收集逐字稿，可選擇 Chronometrica。每次執行最多可接受 1,000 筆影片輸入。預設資料集會為每部成功處理且不重複的影片儲存一筆資料列。如果你需要為清單安排執行作業，並逐一釐清缺漏結果，這種方式很合適。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)

如果每次執行處理一部影片符合你目前的工作流程，而且依序排列、帶有時間戳記的片段陣列能滿足需求，可選擇 Pinto Studio。[Pinto Studio 文件](https://apify.com/pintostudio/youtube-transcript-scraper)

主要選擇在於作業單位：你的工作流程會將多少部影片送入每個作業。批次輸入可減少你必須啟動的作業數量。但這並不能證明它在速度、成本或逐字稿準確度方面有優勢。

本比較使用於 2026 年 10 月 20 日查核的公開文件。比較內容是文件記載的輸入與輸出，並非兩個工具直接對照測試的結果。以下方法以你已有影片清單為起點。你可以用它整理清單、檢查少量樣本，並在使用文字前確認每筆輸入的結果。

## 選擇符合工作流程的作業規模

Apify Actor 是執行資料收集作業的程式。一次執行是指將該程式執行一次。資料集則是已儲存的結果資料列集合。

清單很長時，執行次數會影響收集前後的管理工作。你的工作流程必須啟動作業、儲存作業識別碼、檢查狀態，並收集結果。批次輸入可讓你透過一次執行管理多部影片。

文件記載的處理單位如下：

| 選擇依據 | Chronometrica | Pinto Studio |
| --- | --- | --- |
| 每次執行的輸入量 | 最多 1,000 筆 | 1 部影片 |
| 資料集結果 | 每部成功處理且不重複的影片各有一筆資料列 | 一個項目，內含依序排列的逐字稿片段 |
| 安排清單的執行作業 | 將清單分成多個批次 | 每部影片各啟動一次執行 |

來源：[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)及 [Pinto Studio 文件](https://apify.com/pintostudio/youtube-transcript-scraper)。

Pinto Studio 使用 `videoUrl` 與 `targetLanguage`。其片段包含 `start`、`dur` 與 `text`。它支援有字幕的公開影片，包括有自動字幕的影片。私人影片、受限制影片與無字幕影片不在文件記載的支援範圍內。[Pinto Studio 文件](https://apify.com/pintostudio/youtube-transcript-scraper)

如果你的工作流程已為每部影片追蹤個別作業，改變這個單位可能會增加工作，卻沒有多少效益。如果你正針對一份已有的清單建立工作流程，Chronometrica 的批次輸入可讓你直接將工作分組處理。

先決定作業單位，再建立排程器。排程器是工作流程中負責啟動及追蹤執行作業的部分。依照你將使用的輸入單位來設計排程器，再確認如何儲存結果與失敗紀錄。

## 收集文字前，先設定字幕規則

公開影片不一定有可用的公開字幕。Chronometrica 讀取現有字幕。缺少公開字幕時，它不會透過語音轉文字產生逐字稿。如果你的專案要求每部影片都有文字，這個限制就會影響選擇：只擷取字幕無法滿足這項要求。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)

語言需要另外決定。設定 `preferredLanguages` 後，Chronometrica 要求字幕必須符合其中一種指定語言。如果沒有任何指定語言的字幕，它會在 `OUTPUT` 中記錄不計費的 `LANGUAGE_UNAVAILABLE` 失敗。它不會在未告知你的情況下傳回其他語言。`OUTPUT` 是執行摘要，會列出數量與失敗紀錄。[Chronometrica 輸入結構定義](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema)

如果資料集必須使用指定語言，就採用這項嚴格規則。比起不需要的語言文字在未被發現的情況下進入資料集，缺漏結果更容易追蹤與說明。

收集前，先寫下允許的語言，以及是否同時接受人工字幕與自動字幕。這兩項要分別決定。字幕軌即使符合語言規則，仍可能有用字錯誤。

Chronometrica 文件記載的結果包含所選語言、可用的字幕語言，以及用來識別人工字幕或自動字幕的標記。這些資訊有助於你在收集後套用規則。但它們不能證明文字正確。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)

如果缺少字幕會使研究無法進行，請事先決定是否允許使用獨立的語音轉文字程序。清楚標示所有產生的逐字稿，讓之後的使用者能將它們與擷取的字幕區分開來。

## 安排完整清單的執行作業前，先做小規模檢查

在付費收集資料前，你可以先完成大部分工作流程的準備。目的是確認你能追蹤每筆輸入的結果，並使用傳回的文字。

1. 定義允許的影片與語言。說明哪些公開影片應納入收集。記錄語言規則與字幕規則。將排除的影片另存紀錄，並註明排除原因。這樣可避免之後將數量差異誤認為收集失敗。
2. 分割清單前，先找出重複影片。以影片 ID 作為影片的識別依據。兩種網址形式可能指向同一部影片。Chronometrica 接受多種形式，包括標準影片連結、Shorts 連結、短連結及原始影片 ID，且只會處理重複影片一次。先清理清單，可讓預計數量更容易核對。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)
3. 選幾部公開影片進行首次檢查。納入對專案重要的例子，例如不同頻道或字幕類型。套用你打算對完整清單使用的語言規則。使用寬鬆設定進行檢查，無法確認較嚴格的最終規則是否符合需求。
4. 建立每批不超過 1,000 筆輸入的批次。移除重複影片 ID 後，再計算筆數。執行開始後，不要變更該批次清單。如果之後修改清單，請將變更另存為新的批次紀錄。公開的[批次擷取 YouTube 逐字稿範例](https://apify.com/chronometrica/youtube-transcript-scraper/examples/batch-youtube-transcript-extraction)記載了批次輸入上限。
5. 儲存輸入與執行紀錄。使用追蹤表，也就是追蹤每筆輸入的表格。儲存影片 ID、批次 ID、執行 ID、處理結果、重試標記、所選語言及擷取時間。這些是工作流程的追蹤欄位，不是額外的 Actor 輸入欄位。未知值應留空或標示為未知。
6. 讀取兩處結果。從資料集收集成功的逐字稿資料列。讀取 `OUTPUT`，取得該次執行摘要中的各項數量與失敗輸入的詳細資訊。需要將缺漏結果追溯至個別輸入時，啟用 `includeFailedInputDetails`。只匯出資料集，無法交代每部已提交影片的結果。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)
7. 載入文字前，確認每筆不重複輸入的結果。將成功的資料列對應至影片 ID。將失敗紀錄對應至其餘輸入。調查所有結果仍不明的輸入。將重複輸入與不重複影片分開記錄，避免把略過的重複輸入算成缺少逐字稿。
8. 選取少量段落，與影片核對。聆聽來源音訊，比較文字與時間戳記。納入名稱、數字、專業術語，以及你打算引用的段落。記錄發現的問題。這項檢查用來確認字幕是否適合你的工作，不能得出整體準確度分數。
9. 持續清楚標示尚未解決的缺漏。只重試標記為可重試的失敗，並遵守預算與來源規則。缺少字幕時，需要另作決定，而不是反覆嘗試。只有在專案允許使用產生的逐字稿時，才採用獨立且標示清楚的語音轉文字程序。

首次檢查應回答兩個問題：你能否使用傳回的文字，以及能否說明每個缺漏結果？只要其中一個答案不明確，就應先修正工作流程的相關部分，再增加批次規模。

## 從已驗證的輸入結構開始

以下範例符合已查核的公開輸入結構定義。此範例僅經過輸入檢查，並未作為付費 Actor 作業執行。請將範例網址換成你自己的影片網址。字幕是否可用可能會改變。

```json
{
  "startUrls": [
    "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "https://www.youtube.com/watch?v=M7lc1UVf-VE",
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ],
  "preferredLanguages": ["en"],
  "outputFormats": ["json", "text"],
  "includeFailedInputDetails": true
}
```

從已驗證的輸入結構開始

`startUrls` 包含 3 個字串，低於 1,000 筆的上限。`preferredLanguages` 指定英語。`outputFormats` 指定支援的 JSON 與文字格式。`includeFailedInputDetails` 會啟用未傳回逐字稿之輸入的詳細資訊。[Chronometrica 輸入結構定義](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema)

採用這項語言設定時，沒有指定語言字幕的影片會成為失敗輸入，並記錄在 `OUTPUT` 中。它不會變成空白的逐字稿資料列。載入結果時，請保留這項區別：缺少文字是資料缺漏，不是字數為 0 的逐字稿。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)

小規模執行後，先檢查實際匯出內容，再依其建立匯入程序。確認程序能讀取影片識別資訊、語言、帶有時間戳記的片段、合併文字及擷取時間。這些都是文件記載的輸出資訊，但你自己的載入程序必須保留專案所需的資訊。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)

如需更完整的字幕收集說明，請參閱 [YouTube 字幕擷取](/zh-Hant/articles/%E5%8F%96%E5%BE%97-youtube-%E9%80%90%E5%AD%97%E7%A8%BF-%E6%AA%A2%E6%9F%A5%E7%BC%BA%E5%B0%91%E5%AD%97%E5%B9%95/)。本比較聚焦於作業規模的選擇與結果處理。

## 虛構範例：安排並檢查 1,100 部不重複影片

本範例全部為虛構。輸入數量與字幕處理結果均為編造，用來說明決策方法。它們不是測試結果或客戶成果。

某研究團隊最初有 1,200 筆輸入。團隊找出 100 筆重複的影片 ID，並移除這些重複輸入。清理後的清單包含 1,100 部不重複影片。

使用 Chronometrica 時，團隊建立 2 個批次：一批有 1,000 筆輸入，另一批有 100 筆。排定的執行次數為：

`ceil(1,100 / 1,000) = 2 runs`

此處的 `ceil` 表示向上取整至下一個整數。這項計算依據文件記載的批次上限。[Chronometrica 批次範例](https://apify.com/chronometrica/youtube-transcript-scraper/examples/batch-youtube-transcript-extraction)

依 Pinto Studio 文件記載的每次一部影片處理單位，同一份清單需要安排 1,100 次執行。[Pinto Studio 文件](https://apify.com/pintostudio/youtube-transcript-scraper)

這個差異只涉及工作流程啟動的 Actor 作業數量。它沒有比較網路請求、運算時間、總成本或成功率。兩種工作流程仍須逐一處理每部影片。

現在假設 900 部影片提供指定語言的字幕，另有 200 部沒有。在這個虛構案例中，Chronometrica 兩次執行的預期數量核對如下：

`1,100 unique inputs = 900 successful transcript rows + 200 failed inputs`

團隊從資料集讀取成功的資料列，並從兩份 `OUTPUT` 摘要讀取失敗輸入的詳細資訊。接著更新追蹤表，讓每部不重複影片都有明確的處理結果。這個方法使用 Chronometrica 文件記載的結果與失敗紀錄。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)

此虛構案例中，有可用字幕的影片比例為：

`900 / 1,100 × 100 = 81.82%`

這個百分比描述的是虛構的收集結果。它不是實際觀察到的產品成功率，也不是準確度分數。

團隊在收集紀錄中保留全部 200 筆缺漏。不以空白文字取代，也不將它們視為沒有說話內容的影片。團隊也保留已移除的 100 筆重複輸入紀錄，因此能說明最初 1,200 筆輸入如何變成 1,100 部不重複影片，最後得到 900 筆逐字稿資料列。

## 增加工作量前，先檢查資料集

大型資料集可能讓缺漏結果不易被發現。每次審查都先核對數量，再檢查內容。

Chronometrica 的 `OUTPUT` 摘要會列出已接收的輸入數、已處理的不重複影片數、成功的資料列數、略過的重複輸入數、無法取得或不支援的輸入數，以及各錯誤代碼的數量。可選用的詳細資訊有助於追蹤未產生逐字稿的輸入。使用這些紀錄來說明結果數量。[Chronometrica 文件](https://apify.com/chronometrica/youtube-transcript-scraper)

不要假設摘要中的每項數量都代表互不重疊的群組。使用輸入追蹤表，為每部不重複影片指定一個目前的處理結果。將錯誤代碼保留為該結果的原因，不要把它們加算成更多影片。

接著審查文字品質。很長的逐字稿仍可能包含錯字。即使有時間戳記，也可能與內容對不準。引用文字、比較用語，或對說話者的發言提出主張前，請先核對來源段落。若某個值未知，請保留這項不確定性。

一則公開的 [DataHoarder 大量 YouTube 逐字稿需求貼文](https://www.reddit.com/r/DataHoarder/comments/1pyxgiu/wherehow_to_get_large_amounts_of_youtube_video/)提到需要約 500,000 份逐字稿，並關切批次上限、成本及來源封鎖問題。這說明了安排執行作業為何重要。但它不能證明任何一個 Actor 能可靠地完成這種規模的收集。

先確認能交代較小規模收集的所有結果，並了解其中的缺漏，再擴大規模。為下一階段設定支出上限。本比較不能證明價格優勢或完成時間。

如果你還需要尋找影片，請使用另一篇指南：[從搜尋結果建立 YouTube 逐字稿語料庫](/zh-Hant/articles/%E5%BE%9E%E6%90%9C%E5%B0%8B%E7%B5%90%E6%9E%9C%E5%BB%BA%E7%AB%8B-youtube-%E9%80%90%E5%AD%97%E7%A8%BF%E8%AA%9E%E6%96%99%E5%BA%AB/)。取得網址清單後，再回到本文進行批次與結果檢查。

## 先執行一個小型 Chronometrica 批次

如果你已有清單，且批次安排執行作業能帶來效益，可先使用 [Chronometrica YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper)。替換範例網址、設定字幕語言規則，並啟用失敗輸入的詳細資訊。開始執行前，先儲存輸入清單。

執行後，將資料集與 `OUTPUT` 及追蹤表核對。選幾段文字，與來源影片比較。當每筆輸入都有明確結果，且文字符合需求時，再將同一流程用於每批不超過 1,000 筆的批次。

## 來源與延伸閱讀

- [Chronometrica YouTube Transcript Scraper 文件](https://apify.com/chronometrica/youtube-transcript-scraper)
- [Chronometrica 輸入結構定義](https://apify.com/chronometrica/youtube-transcript-scraper/input-schema)
- [批次擷取 YouTube 逐字稿的公開範例](https://apify.com/chronometrica/youtube-transcript-scraper/examples/batch-youtube-transcript-extraction)
- [Pinto Studio YouTube Transcript Scraper 文件](https://apify.com/pintostudio/youtube-transcript-scraper)
- [大量 YouTube 逐字稿的公開需求貼文](https://www.reddit.com/r/DataHoarder/comments/1pyxgiu/wherehow_to_get_large_amounts_of_youtube_video/)