動画プレーヤーから、参照元のカード、メモの時系列表示、確認済みのメモへ線がつながっている。上には疑問符のカードがある。

1件だけ確認する場合は、公開動画のページから始めます。コメントを読み、書かれた時刻を再生し、返信の文脈を確認します。後から検索や再確認ができるように記録を保存する場合は、以下の収集方法を使います。

読者による公開提案:2024年11月20日公開。コメントを探す際の問題を1件報告では、「ブラウザでコメント欄をたどるのは難しいことがある」と説明されています。役立つ索引を作るには、議論を残しながら、そこに書かれた時刻を見つけやすくする必要があります。

このガイドでは、その索引を作ります。対象は、選んだ公開コメントと返信です。ライブチャット、YouTube Studioの非公開記録、すべての視聴者の意見は対象に含みません。このガイドのために実際のコメント収集は行っていません。

1. 調べる時点と収集上限を決める

特定できている公開動画を選びます。動画ID、公開URL、動画の長さを記録します。IDは、参照元の記録を識別するコードです。動画の長さは、最初から最後までの総再生時間です。

コメントを選ぶ前に、調べたい時点を書き出します。時刻を1つ指定しても、開始時刻と終了時刻で範囲を指定してもかまいません。終了時刻を検索範囲に含めるかどうかも明記します。これにより、後からの選択によって調査の問いが変わるのを防ぎます。

索引で一致するとは、その範囲内の時刻への参照がコメントにあり、その対応を確認できたという意味です。その場面に関する議論をすべて見つけたという意味ではありません。時刻を書かずに場面を説明するコメントもあります。

次に、収集上限などの条件を明記します。

1. 調べる時点と収集上限を決める
設定項目記録する内容
動画特定できている公開動画のIDとURL
動画の長さ総秒数と、それを確認した場所
調べる時点指定した時刻、または明示した時間範囲
コメントの並び順人気順(Top)、新しい順(Newest)、または両方
コメントの収集上限動画ごとに要求するトップレベルコメントの最大件数
返信の収集上限トップレベルコメントごとに要求する返信の最大件数
収集日時記録を収集した日時

トップレベルコメントとは、返信ではないコメントです。収集上限は、要求する件数の上限です。その件数の記録が参照元から返される保証はありません。

人気順(Top)は、参照元で優先表示される順番に従います。新しい順(Newest)は、参照元の新着順に従います。両方(Both)は2つの一覧を使い、同じ実行内で重複するコメントIDを除きます。これらの選択により、標本の範囲が限られます。並び順の選び方は、コメントの標本抽出ガイドを参照してください。

2. 返信を含めて少数のコメントを収集する

Actorは、サーバー上で動作してデータを収集するプログラムです。YouTube Comments Scraperの仕様:2026年10月25日に確認。文書の確認のみには、既知の動画URLまたはIDを使って公開コメントを収集する方法が記載されています。返信の収集を任意で有効にし、上限を設定できることも記載されています。

Actorが提供するのはコメントの記録です。時刻への参照の抽出、動画の確認、索引の作成は、自分で行う必要があります。

まずは、この小規模な入力例を使います。

json
{
  "startUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
  "maxCommentsPerVideo": 20,
  "commentSortMode": "newest",
  "includeReplies": true,
  "maxRepliesPerComment": 5
}
2. 返信を含めて少数のコメントを収集する

`startUrls`のリスト全体を、対象の公開動画に差し替えます。入力例にある楽曲のURLは、入力形式を示すための例です。この方法に役立つコメントが得られることを示す証拠ではありません。

この入力は、新しい順(Newest)で、重複しないトップレベルコメントを最大20件要求します。取得したトップレベルコメントそれぞれについて、返信も最大5件要求します。返信は追加の行になります。トップレベルコメントの収集上限には含まれません。これらの数値は要求する上限を示します。実際に返された件数や人数を示すものではありません。

文書に記載された入力仕様では、動画を1〜100件指定できます。`maxCommentsPerVideo`には1〜1,000の整数を指定できます。返信を有効にした場合、`maxRepliesPerComment`には1〜100の整数を指定できます。

Taskは、入力設定を保存したプリセットです。公開されているコメントと返信のエクスポート用Task:2026年10月25日に確認。ページの存在確認のみを、この収集の出発点にできます。使用前に、サンプル動画のリストを差し替え、設定を確認してください。

この入力例は、文書に記載された入力ルールとの照合に合格しています。公開TaskページとそのIDの存在も確認しています。保存済みの入力内容や有料実行は確認していません。これらの確認は、収集の成功や返信の完全な取得を証明するものではありません。

3. コメントと時刻への参照を別々に保存する

2つの表を用意します。コメント表には、元の議論の記録を保存します。対応表には、コメントと動画の再生時刻のつながりを保存します。対応関係とは、2つのもののつながりを1件ずつ記録したものです。

変わらないコメントIDごとに、コメントを1行だけ保存します。複数の動画をまとめる場合は、コメントIDと動画IDを組み合わせて使います。文面が同じという理由でコメントを統合してはいけません。

参照元に次の項目がある場合は、保存します。

3. コメントと時刻への参照を別々に保存する
項目用途
`videoId`動画を識別する
`videoUrl`参照元の動画を開く
`commentId`コメントを識別する
`parentCommentId`返信を親コメントに結び付ける
`isReply`返信とトップレベルコメントを区別する
`replyDepth`仕様に記載された返信の階層を保持する
`text`元のコメントの文面を保持する
`sortMode`その行の取得に使った参照元の並び順を保持する
`publishedAt`正確な投稿日時を取得できた場合に保持する
`publishedTimeText`投稿時期を示す表示上の文言を保持する
`updatedAt`正確な更新日時を取得できた場合に保持する
`scrapedAt`収集日時を記録する
`status`その行の処理結果を保持する

YouTubeのcommentsリソース:2026年10月25日に確認。識別情報と時刻の概念のみでは、コメントIDと、返信先の親コメントIDが区別されています。投稿のタイムスタンプは、コメントが投稿された日時を記録します。動画内の位置ではありません。Actorの項目は、Actor独自の仕様に記載されています。

欠損値は欠損値のまま残します。`publishedAt`がnullの場合、正確な日時を取得できないことを意味します。ゼロという意味ではありません。`scrapedAt`で置き換えたり、動画の再生時刻に変換したりしてはいけません。

エクスポートに親コメントが含まれていなくても、親コメントへのつながりを保持します。文脈が欠けていることを記録します。文面が似ているという理由で、返信を別のコメントに結び付けてはいけません。

4. 書かれた各時刻を候補として抽出する

時刻トークンとは、動画内の位置を示す可能性がある短い文字列です。37:07や1:02:03などが該当します。候補とは、時刻への参照の可能性があり、まだ確認していないものです。

元の文面を読み、候補が現れるたびに対応表へ1行追加します。元の時刻トークンと、その文字位置を保存します。文字位置は0から数えます。最初の文字の位置は0です。

文字位置を記録する前に、空白や句読点を変更してはいけません。後から読む人が、保存した文面で同じ時刻トークンを見つけられる必要があります。別の数え方を使う場合は、そのルールを明記し、統一してください。

対応表には、次の項目が必要です。これらは索引用に自分で作る項目です。Actorが出力を保証する項目ではありません。

4. 書かれた各時刻を候補として抽出する
保存する項目目的
動画IDとコメントID参照元のコメントを見つける
元の時刻トークン書かれた時刻をそのまま保持する
時刻トークンの開始位置同じコメント内に現れる時刻を区別する
変換後の秒数有効な時刻を同じ単位で比較する
確認済みの動画の長さ時刻が動画の長さに収まるか確認する
検証結果候補が有効、無効、保留のいずれかを記録する
親コメントの文脈親コメントに結び付けるか、文脈の欠落を記録する
確認状態動画の確認で分かったことを記録する
注記判断の理由を短く説明する
確認日時と確認者誰がいつ対応関係を確認したかを記録する

1件のコメントに複数の時刻が含まれることがあります。同じ時刻が1件のコメントに2回現れることもあります。抽出時には、それぞれを別に記録します。どちらの場合も、コメント数や人数が増えるわけではありません。

返信には時刻が書かれていなくても、親コメントの時刻について述べている場合があります。その返信は文脈として残します。存在しない時刻トークンや、確認済みの場面への参照を作ってはいけません。

5. 変換前に時刻トークンを検証する

秒数を計算する前に、時刻トークン全体を確認します。負の値や形式が不正な時刻トークンから一部分だけを取り出し、有効な時刻として扱ってはいけません。

次のルールを使います。

  1. 分・秒形式、または時・分・秒形式を受け付けます。
  2. 秒の値は60未満とします。
  3. 時・分・秒形式では、中央の分の値を60未満とします。
  4. 負の値や、不正な値の組を除外します。
  5. 有効な時刻トークンを秒数に変換します。
  6. 変換結果を、確認済みの動画の長さと比較します。

分・秒形式では、分に60を掛け、秒を加えます。

37:07 = 37 × 60 seconds + 7 seconds = 2,227 seconds.

時・分・秒形式では、時に3,600を掛け、分に60を掛け、秒を加えます。

1:02:03 = 1 × 3,600 seconds + 2 × 60 seconds + 3 seconds = 3,723 seconds.

2つの数値の組からなる形式では、先頭が分です。この値は59を超えてもかまいません。3つの数値の組からなる形式では、先頭が時です。後に続く分と秒の値は、どちらも60未満でなければなりません。

したがって、37:67は検証に合格しません。断りなく修正してはいけません。元の時刻トークンと、不合格になった理由を残します。

確認済みの動画の長さを超える時刻トークンは、確認のため保留にします。最も近い有効な時刻に移してはいけません。動画の長さが不明な場合は、長さとの照合を未解決のままにします。動画の終了時刻と完全に一致する場合も、場面への参照として扱う前に再生して確認する必要があります。

ゼロと欠損は異なります。0:00という時刻トークンは、動画の開始位置を示します。変換後の時刻欄が空の場合は、採用できる変換結果がないことを示します。

6. 対象の時点を再生し、議論を読む

有効な数値でも、まだ候補にすぎません。別のものを示している可能性があります。分類する前に、参照されている時点の動画を見ます。

検証に合格した候補ごとに、次の手順を行います。

  1. 対応する動画を開き、変換した再生時刻に移動します。
  2. その時点の前後の映像と音声を確認します。
  3. 元のコメントを読みます。
  4. 親コメントと、取得できた返信を読みます。
  5. 確認できたことを短く記録します。
  6. 確認状態を設定します。

次の状態を統一して使います。

6. 対象の時点を再生し、議論を読む
状態意味
場面との対応を確認済み動画と議論から、その時点との対応を確認できる
無関係な時刻トークン確認した文面では、その時刻トークンが動画内のこの位置とは別のものを示している
未解決必要な事実または参照元を確認できなかった
調査対象外その参照は、明示した調査の対象に含まれない

検証結果と、これらの確認状態は別々に管理します。無効な時刻トークンは、形式の検証に合格していません。未解決の参照は、必要な事実が不足しています。対象範囲外でも対応を確認できた参照は、対象の結果に含めず、索引全体には残せます。

注記には、どのような対応があるかを書きます。視聴者の意図や、視聴者全体に共通する見方を推測してはいけません。返信の収集上限があるため、関連する文脈が不足している可能性もあります。その制約を明記します。

チュートリアルに説明が不足しているか判断する必要がある場合は、教材の説明不足を確認する方法に進んでください。場面への参照だけでは、教材の説明不足を確認したことにはなりません。どのコメントにも挙がっていない説明を探す場合は、別の概念から動画内の説明を探す方法を使います。

7. 独自に作成した架空の例で手順を確認する

この例は、すべて独自に作成した架空のものです。動画、コメント、返信、視聴メモは、方法を説明するために作成しました。Actorの出力ではありません。実際のコメント収集や、動画を再生しての確認は行っていません。

架空の動画の長さは40:00です。

40 × 60 seconds = 2,400 seconds.

コメントCには、次の文面がそのまま含まれています。

「37:07 では準備についての説明が示されている; 38:10 では結果が示されている。」

かぎ括弧は例を示すためのものです。保存するコメントの文面には含みません。37:07の最初の文字の位置は0です。

1件のコメントと2件の参照を保持する

コメント表には、Cを1件だけ保存します。返信Rは、Cに属する別の行です。この架空の例では、Rの文面は「あの比較が役に立った。」です。時刻トークンはありません。

7. 独自に作成した架空の例で手順を確認する
コメントID親コメントID文面
Cなし。トップレベルコメント37:07 では準備についての説明が示されている; 38:10 では結果が示されている。
RCあの比較が役に立った。

Cにある2つの時刻トークンから、対応表に2行を作ります。

7. 独自に作成した架空の例で手順を確認する
コメントID時刻トークン0から数えた開始位置変換後の時刻動画の長さとの照合
C37:0702,227 seconds2,400 seconds以内
C38:10262,290 seconds2,400 seconds以内

2つ目の時刻トークンは位置26から始まります。位置25は、セミコロンの後の空白です。この文字位置は、変更していない文面と対応させて保持します。

2つ目の時刻の計算は、次のとおりです。

38:10 = 38 × 60 seconds + 10 seconds = 2,290 seconds.

2つの参照の間隔は、2,290 − 2,227 = 63 secondsです。この差があるからといって、連続した場面の区間になるわけではありません。このコメントは、別々の2つの時点を挙げています。

架空の視聴メモを適用する

架空の視聴メモで、37:07には準備、38:10にはその結果があると確認できたものとします。両方の対応関係を「場面との対応を確認済み」にします。Rは、返信の文脈としてCとのつながりを保持します。Rに存在しない時刻への参照を追加してはいけません。

7. 独自に作成した架空の例で手順を確認する
コメント時刻状態注記返信の文脈
C37:07場面との対応を確認済み架空の視聴メモで準備の場面を確認RとCのつながりを保持
C38:10場面との対応を確認済み架空の視聴メモで結果の場面を確認RとCのつながりを保持

対象範囲を37:00から37:30までの両端を含む区間とした場合、最初の対応関係だけが結果に入ります。2つ目は索引全体に残します。どちらの表示でも、Cは1件のコメントのままです。

この例には、返信1件を含む2件のコメント記録があります。Cには時刻の記載が2か所あります。これらの件数から人数は分かりません。

動画の長さを超える時刻は保留にする

次に、別の架空の候補である41:00を考えます。

41 × 60 seconds = 2,460 seconds.

2,460 − 2,400 = 60 secondsとなり、架空の動画の長さを超えています。

この時刻トークンの形式は有効ですが、動画の長さとの照合には合格しません。保留にして理由を記録します。40:00に置き換えてはいけません。この別の候補によって、上記のCとRの件数が変わることはありません。

8. エクスポートを確認し、失敗の状態を残す

確認済みの索引を、動画URL、確認した再生時刻、コメントID、親コメントの文脈、短い注記、状態とともにエクスポートします。元のコメント表と候補の対応表も一緒に残します。

索引を使う前に、各対応関係から保存済みのコメントをたどれることを確認します。変更していない文面と照合し、時刻トークンの文字位置を再確認します。計算と単位も確認します。採用した各時刻が、正しい動画に属することを確かめます。

次の問題も、確認できる状態で残します。

8. エクスポートを確認し、失敗の状態を残す
状況必要な判断
文面の欠損抽出を未解決のままにする。文面を作り足さない
識別情報の欠損記録を未解決のままにする。IDを作り足さない
無効な時刻トークン検証に合格しなかったこととともに残す
動画の長さが不明動画の長さとの照合を未解決のままにする
再生できない場面の確認を未解決のままにする
親コメントまたは返信の欠落文脈の不足を記録する
収集の失敗失敗を記録する。収集に成功した空の標本として扱わない
確認済みの一致がない今回収集した集合には、確認済みの一致がないと報告する

0件という結果が当てはまるのは、実際に確認した集合だけです。関連するコメントが存在しない証拠にはなりません。重複を除いたコメントIDの件数と、時刻の記載数は別々に報告します。参照元の並び順、収集上限、収集日、未解決の記録も、これらの件数とともに保持します。

出典と参考資料

著者 Chronometrica · 更新日

ページの先頭へ ↑