YouTuber/VTuberの配信・動画の話題、見どころをデータベース化するwebサービスを作りました!
こんにちは。
趣味でWebサービスの個人開発をしている、2z(Twitter: @2zn01 )です。
これまでに開発したサービスは、「 これまでに個人開発で作ったサービス 」にまとめていますので、興味がある方はぜひご覧ください。
今回作ったもの
今回はYouTubeの配信・動画の話題、見どころをデータベース化し、タイムライン上で検索できるようにする「切り抜きDB」というサービスを作りました!
何ができるの?
「切り抜きDB」の主な機能としては、以下の通りです。
- チャンネルを探す
YouTuberやVTuberなど様々なジャンルからチャンネルを探すことができます。
チャンネル名などから検索することも可能です。
- 動画のタイムテーブルを見る
動画のコメント欄からタイムスタンプ付きのコメントを収集し、動画をタイムテーブルにまとめています。
- 動画の話題・見どころを検索して探す
動画のタイムテーブルから話題・みどころを検索することができます。
- 切り抜き動画の作成
切り抜く動画をアップロードし、切り抜く箇所を指定すると、
画面録画によって切り抜き動画を作成することができます。
使い方の詳細は以下のURLからご確認頂けます。
- 切り抜き動画の分析
再生数順に並び替えたりすることで、人気のある切り抜き動画を探すことができます。
様々な検索条件を指定することも可能です。
- 切り抜き市場規模の分析
クリエイターごとの切り抜き全体の総再生数、チャンネル登録者数などの統計情報を確認することができます。
これにより、クリエイターごとの切り抜き市場規模の分析をすることが可能です。
- 切り抜きチャンネルの上位20位の分析
クリエイターの切り抜きチャンネルの上位20位の統計情報を確認することができます。
何で作ったの?
2022年1月からひろゆきさんの切り抜きが解禁(黙認)され、YouTubeの切り抜き動画自体がとても話題になりました。もともとVTuber界隈などでは切り抜き動画の文化はありましたが、ひろゆきさんを筆頭に世の中でどんどん話題になっていったように思います。
そこで、切り抜きに関するサービスを作ろうと思い立ちました。
切り抜きをするにあたって、動画内の切り抜きポイントを探すのはとても重要です。
ただ、動画内の切り抜きポイントを探すには、普通にやろうとすると、すべての動画を一通り見て、面白かったところをピックアップせねばならず、とても大変です。
そこで、動画内の話題や見どころをタイムテーブル化・検索できるようにし、切り抜きポイントを簡単に探せるサービスを作ることにしました。
切り抜きポイントの選定
とはいえ、切り抜きポイントを自動で探すのはとても大変です。
機械学習を使って、動画内の音声や映像を解析したりなどの方法はあるかもしれませんが、そのための学習データを用意してモデルを作って解析するなんていうのは、お金も時間もかけてやらなければならず、とても現実的ではありません。
そこで、僕が目をつけたのは、YouTubeのコメント欄です。
YouTubeのコメント欄にはタイムスタンプ付きのコメントをつけている方がいます。
さらには、有志の方が長時間の配信の話題をタイムテーブルとしてまとめ、コメント欄にまとめていることもあります。
コメント欄にわざわざタイムスタンプ付きのコメントを残すということは、その箇所が面白かったり、重要な話題だったり、人に伝えたい(共有したい)内容であるはずです。
そこで、YouTubeの動画のコメント欄のタイムスタンプ付きのコメントをYouTube Data APIを使って収集し、時系列順にし、動画のタイムテーブルとしてまとめればよいのでは!? と考えました。
使用技術
Linux
クラウドのホスティングはGoogle Cloud Platformで、Google Compute Engine(GCE)でサーバを立てています。
Apache
webサーバはApacheを使っています。 Nginxもありますが、Apacheは普段から使っており、設定も把握していたため、いつも通りの安定の選択としました。
MySQL
GCPのCloud SQLを使ってMySQLを立てています。
PHP
サーバ側のプログラムはPHPを使って実装しました。
YouTube Data API
YouTubeのチャンネル、動画、コメント情報を取得するために使用しています。
使い方については、後述させて頂きます。
cron
cronを使って定期的にバッチを走らせてチャンネル、動画、コメントの情報を収集し、動画をタイムテーブルにまとめています。
YouTube Data APIを使った動画のタイムテーブル化
チャンネル、動画、コメントの情報はYouTube Data APIを使って取得・収集しています。
基本的には、以下の順に取得しています。
- チャンネル情報の取得
↓ - チャンネルのプレイリスト情報の取得
↓ - プレイリストから動画情報の取得
↓ - 動画のコメント情報を取得
↓ - タイムスタンプ付けのコメントを正規表現で抽出し、動画をタイムテーブル化
以上の処理の流れをチャンネルごとに(現時点では)1日1回のペースでデータを収集しています。
YouTube Data API
YouTube Data APIのうち、切り抜きDBで使用しているAPIをご紹介します。
パラメータについては、使用しているもののみ掲載しておりますので、詳細は公式ドキュメントの方をご覧ください。
チャンネル情報の取得(Channels: list)
エンドポイント
GET
https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&key={APIキー}&id={チャンネルID}
リクエストパラメータ
パラメータ | 説明 |
---|---|
part | 取得する情報を指定。"snippet,statistics"を指定した場合、チャンネル情報、統計情報を取得 |
key | APIキーを指定 |
id | チャンネルIDを指定 |
プレイリスト情報の取得(Playlists: list)
エンドポイント
GET
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,contentDetails&maxResults=50&key={APIキー}&playlistId={プレイリストID}
リクエストパラメータ
パラメータ | 説明 |
---|---|
part | 取得する情報を指定。"snippet,contentDetails"を指定した場合、再生リスト情報、コンテンツ情報を取得 |
key | APIキーを指定 |
playlistId | プレイリストIDを指定 |
maxResults | 取得件数を指定 |
ちなみに、チャンネルの動画一覧を取得したい場合、チャンネルIDの「UU~~~」の部分を「UC~~~」に置き換え、プレイリストIDとして指定することでチャンネルの動画一覧を取得することが可能です。
動画情報の取得(Videos: list)
エンドポイント
GET
https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics&key={APIキー}&id={動画IDのカンマ区切りリスト}
リクエストパラメータ
パラメータ | 説明 |
---|---|
part | 取得する情報を指定。"snippet,contentDetails,statistics"を指定した場合、動画情報、動画コンテンツ情報、統計情報を取得 |
key | APIキーを指定 |
id | 動画IDをカンマ区切りで指定 |
コメント情報の取得(CommentThreads: list)
エンドポイント
GET
https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&order=relevance&textFormat=plainText&maxResults=100&key={APIキー}&videoId={動画ID}
リクエストパラメータ
パラメータ | 説明 |
---|---|
part | 取得する情報を指定。"snippet"を指定した場合、コメント情報を取得 |
order | 取得するコメントの並び順を指定。"relevance"を指定した場合、評価順 |
textFormat | 取得するフォーマットを指定。"plainText"の場合、プレーンテキストで取得 |
key | APIキーを指定 |
videoId | 動画IDを指定 |
maxResults | 取得件数を指定 |
YouTube APIのクォータ節約
YouTube APIには使用量(クォータ)の制限があり、デフォルトでは1日当たり10000クォータまでと上限が決まっています。
チャンネル、プレイリスト、動画、コメントなどの単なる情報取得であれば、1処理当たり1クォータ消費ですが、検索の場合は1処理当たり100クォータも消費されてしまいます。
そのため、いかに検索を使用せずに、動画情報を取得するかということがクォータ節約には大事となってきます。
切り抜きDBでは、チャンネルのプレイリスト情報から動画の一覧を取得するという方法をとることで、基本的には検索を使わずに、動画情報を収集するという方法をとっています。
YouTube APIのクォータ申請
YouTube APIの使用量(クォータ)の制限は申請により、増やすことができます。
以下の割り当て増加フォームより申請することが可能です。
- YouTube API サービス - 監査と割り当て増加フォーム
https://support.google.com/youtube/contact/yt_api_form
私の場合、申請後、1~2か月ほどやり取りして、無事使用量(クォータ)を増やしてもらうことができました。
申請する前に、利用規約・プライバシーポリシーに以下の点は記載しておいた方がよいかと思います。
- GoogleAPI、YouTubeAPIを使用していることを記載
→ 例) Googleが提供するGoogleAPIおよびYouTubeAPIを使用しています。 - GoogleAPI、YouTubeAPIを通してどんなデータを取得するかを記載
→ 例)YouTubeのチャンネル名、概要およびチャンネルのサムネイル画像を取得します - Google、YouTubeに関連する利用規約、プライバシーポリシーを掲載
・YouTube利用規約
https://www.youtube.com/t/terms
・YouTube API利用規約
https://developers.google.com/youtube/terms/developer-policies#definition-youtube-api-services
・Googleが提供するサービスにおけるプライバシーポリシーについて
https://policies.google.com/privacy?hl=ja
・Google セキュリティ設定
https://myaccount.google.com/permissions
あとは、APIから取得したデータの取り扱い方(保存データの更新頻度など)、サービス内容に関する質問など、何度かメールでやり取りしました。
私の場合、申請が通ったことにより、10,000 → 510,000 まで使用できるクォータ数を増加させてもらえました。
最後に
今回はYouTubeの配信・動画の話題、見どころをデータベース化し、タイムライン上で検索できるようにする「切り抜きDB」について、ご紹介しました。
以下のURLよりぜひご活用頂ければ嬉しいです!
切り抜きOKを出されている方で、切り抜きDBに追加して欲しいYouTubeチャンネルがありましたら、以下のGoogleフォームからご連絡頂ければ幸いです。
また、このサービスに少しでも興味をもって頂けましたら、ぜひともフォローやいいね、リツイートで応援お願いします!
他には以下のようなサービスを開発・運営していますので、興味があるものがございましたら、ぜひとも使ってみて頂けると嬉しいです!
-
AIメーカー
https://aimaker.io/
誰でも簡単にAIを作ったり、試したりできるサービスです。
使ったAIを活用するためのAPIも提供していますので、ぜひご活用ください。 -
waifu2x-multi
https://waifu2x.me/
画像・動画を高画質化・拡大・ノイズ除去できるサービスです。 -
文字起こすくん
https://text.aimaker.io/recognize-bot/
画像、音声、動画をアップするだけで簡単に文字起こし・書き起こしできるサービスです。話者の識別も可能になりました! -
テロップメーカー
https://text.aimaker.io/recognize-video/
動画をアップロードするだけで、動画内の音声を認識して文字起こしを行い、自動で動画に字幕・テロップをつけるサービスです。こちらも話者の識別が可能になりました!
これまでに開発したサービスは、「 これまでに個人開発で作ったサービス 」にまとめていますので、興味がある方はぜひご覧ください。
Discussion