YouTubeクリップは一覧がないデータだ — 集めるのはURL拾い、情報はHTML1枚にある
Data APIにクリップのエンドポイントはない。クリップURL1つから元動画・区間・タイトルを取り出す2つの方法
YouTubeのクリップ(youtube.com/clip/<id>)を集めて使いたい人向けの記事だ。読み終わると、クリップのURLをどこで手に入れられるか、URL1つから元動画のID・開始と終了・クリップのタイトルをどう取り出すかがわかる。
結論はこうだ。クリップ1つの情報は簡単に取れる。でもクリップの一覧はどこにもない。
「APIで取ればいい」が通じない
最初はYouTube Data API v3にクリップ一覧のようなものがあると思っていた。ドキュメントを探しても、クリップを扱うエンドポイントがない。動画ページにも「この動画のクリップ一覧」はない。公開クリップをまとめたディレクトリもWeb検索で探したが、見つからなかった。引っかかるのは個人用のブックマークツールか、YouTubeのクリップ機能とは関係ない研究用の動画データセットだけだった。
クリップIDを推測して列挙することもできない。例にしたクリップ UgytZKpehg-hEMBSn3F4AaABCQ の元動画は ScPX26pdQik だが、見た目には何の関係もない。
そこで作業を2段階に分けた。
1段階目: URLをどこで拾うか
「全部」が見える場所は1つだけ。自分のチャンネルの動画から他人が作ったクリップだ。YouTubeヘルプによると、クリエイターは自分の動画から作られたクリップをYouTube Studioとアプリのライブラリで見られる。ただし自分のチャンネル限定でAPIもないので、画面から取るしかない。この画面はまだ自分では開いていない。
自分で作ったクリップはライブラリの「自分のクリップ」にある。他人のチャンネルのクリップまで広げるなら、検索エンジンに site:youtube.com/clip "キーワード" を入れるか、SNSやコミュニティで共有されたリンクを拾うしかない。検索エンジンはインデックスされた一部しか出ず、SNSは人気の場面に偏る。経路ごとの範囲と弱点は下の詳細に表で置いた。
2段階目: URL1つから情報を取り出す
クリップページのHTMLを取ると、必要なものが全部入っている。2026-09-29に公開クリップを1つ curl で取って確かめた。clipConfig の中に startTimeMs 29000、endTimeMs 39700 があり、元の videoId があり、og:title にはクリップのタイトルが先頭に✂️を付けた形で入っていた。
同じクリップを yt-dlp --skip-download -J にかけると、section_start 29.0、section_end 39.7、チャンネル名が出る。ただしyt-dlpの title はクリップのタイトルではなく元動画のタイトルだ。
だから選び方は単純だ。クリップのタイトルが要るならHTMLをパースする。その区間だけダウンロードしたいならyt-dlpを使う。HTMLのパースはYouTubeがページ構造を変えると壊れ、yt-dlpはアップデートで追従してくれるという違いもある。
区間がわかれば、元動画の字幕からその部分だけ切り出せる。クリップを「何を話している場面か」で検索したいときに役に立つ。
まだわかっていないこと
クリップが削除されたときや元動画が非公開になったときにページがどう応答するか、クリップの再生数や作成者がHTMLに入っているかは、まだ確認していない。クロールするなら、YouTubeの利用規約とリクエスト間隔を先に確認しておきたい。
動画データを集めるツールやパイプラインを作っていて、「APIにないデータ」で詰まっているなら、negabaro に聞いてもらってかまわない。
クリップURLを拾う場所
| 経路 | 範囲 | 良い点 | 弱い点 |
|---|---|---|---|
| YouTube Studio・ライブラリ | 自分の動画から他人が作ったクリップ | 「全部」が見える唯一の場所 | 自分のチャンネル限定、APIなし |
| ライブラリ「自分のクリップ」 | 自分が作ったクリップ | 簡単 | 自分のものだけ |
| 検索エンジン site:youtube.com/clip | インデックスされた一部 | 他人のチャンネルも拾える | 取りこぼしが多く偏る |
| SNS・コミュニティ | 共有されたもの | 人気の場面が集まる | 収集の手間、規約の確認が必要 |
HTMLパースかyt-dlpか
| HTMLパース | yt-dlp -J | |
|---|---|---|
| クリップのタイトル | og:titleにある | ない(titleは元動画のタイトル) |
| 区間 | ミリ秒単位 | 秒単位 |
| 区間だけダウンロード | できない | できる |
| 壊れるとき | YouTubeがHTMLを変えたとき | yt-dlpのアップデートで追従 |
実際に見た値(2026-09-29、macOS)
# クリップページのHTML内
"clipConfig":{"postId":"UgytZKpehg-hEMBSn3F4AaABCQ","startTimeMs":"29000","endTimeMs":"39700"}
"videoId":"ScPX26pdQik"
<meta property="og:title" content="✂️ air">
# yt-dlp
yt-dlp --skip-download -J "https://www.youtube.com/clip/UgytZKpehg-hEMBSn3F4AaABCQ"
# section_start: 29.0 / section_end: 39.7 / channel: Scott The Woz
実践ステップ
クリップURLを集める — 自分のチャンネルはStudio、自分のクリップはライブラリ、他人のものは検索エンジン・SNS
クリップページのHTMLからclipConfig(startTimeMs・endTimeMs)、videoId、og:titleを取り出す
区間だけダウンロードするならyt-dlp -Jのsection_start・section_endを使う(titleは元動画のタイトル)
必要なら元動画の字幕からその区間だけ切り出す