YouTuber/VTuberの切り抜きデータベースを作成できるwebサービスを作りました！


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Web上で簡単に切り抜き動画を作れる「切り抜きDB」というサービスをリリースしました！🎉<a href="https://t.co/4MpA9la3ZC">https://t.co/4MpA9la3ZC</a><br><br>YouTuberやVTuberの動画の見どころをDB化。タイムライン上で検索できて、動画の切り抜く箇所を選択・編集するだけでブラウザ上で切り抜き動画を作れます。<br>ぜひ使ってみてください！🙌</p>&mdash; 2z / AI MAKER (@2zn01) <a href="https://twitter.com/2zn01/status/1476419383618863104?ref_src=twsrc%5Etfw">December 30, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

---

こんにちは。
趣味でWebサービスの個人開発をしている、2z（Twitter： [@2zn01](https://twitter.com/2zn01) ）です。

これまでに開発したサービスは、「 [これまでに個人開発で作ったサービス](https://profcard.info/u/mKSgDlabLUhDhiVYRtEBZ8fYwUp1) 」にまとめていますので、興味がある方はぜひご覧ください。


# 今回作ったもの

今回はYouTubeの配信・動画の話題、見どころをデータベース化し、タイムライン上で検索できるようにする「切り抜きDB」というサービスを作りました！

* [切り抜きDB](https://b.hatena.ne.jp/entry/s/kirinuki.ai/)    
https://kirinuki.ai/

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Web上で簡単に切り抜き動画を作れる「切り抜きDB」というサービスをリリースしました！🎉<a href="https://t.co/4MpA9la3ZC">https://t.co/4MpA9la3ZC</a><br><br>YouTuberやVTuberの動画の見どころをDB化。タイムライン上で検索できて、動画の切り抜く箇所を選択・編集するだけでブラウザ上で切り抜き動画を作れます。<br>ぜひ使ってみてください！🙌</p>&mdash; 2z / AI MAKER (@2zn01) <a href="https://twitter.com/2zn01/status/1476419383618863104?ref_src=twsrc%5Etfw">December 30, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# 何ができるの？

「切り抜きDB」の主な機能としては、以下の通りです。

* チャンネルを探す

YouTuberやVTuberなど様々なジャンルからチャンネルを探すことができます。
チャンネル名などから検索することも可能です。

![チャンネル一覧](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273248/53444b48-938f-755d-26ff-79ebb66bc3a3.png)


* 動画のタイムテーブルを見る     

動画のコメント欄からタイムスタンプ付きのコメントを収集し、動画をタイムテーブルにまとめています。

![動画タイムテーブル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273248/6a22d38f-e3fd-1b85-d605-a45ef5d0a627.png)


* 動画の話題・見どころを検索して探す      

動画のタイムテーブルから話題・みどころを検索することができます。

![動画の話題・見どころを検索](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273248/412e0e2b-0c90-3b3c-4aed-3939a63bd3a6.png)


# 何で作ったの？

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. チャンネル情報の取得
　↓
2. チャンネルのプレイリスト情報の取得
　↓
3. プレイリストから動画情報の取得
　↓
4. 動画のコメント情報を取得
　↓
5. タイムスタンプ付けのコメントを正規表現で抽出し、動画をタイムテーブル化

以上の処理の流れをチャンネルごとに（現時点では）1日1回のペースでデータを収集しています。


## YouTube Data API

YouTube Data APIのうち、切り抜きDBで使用しているAPIをご紹介します。
パラメータについては、使用しているもののみ掲載しておりますので、詳細は公式ドキュメントの方をご覧ください。


### チャンネル情報の取得（Channels: list）      
https://developers.google.com/youtube/v3/docs/channels/list?hl=ja

#### エンドポイント

```
GET
https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&key={APIキー}&id={チャンネルID}
```

#### リクエストパラメータ

|パラメータ  |説明  |
|---|---|
|part|取得する情報を指定。"snippet,statistics"を指定した場合、チャンネル情報、統計情報を取得|
|key|APIキーを指定|
|id|チャンネルIDを指定|


### プレイリスト情報の取得（Playlists: list）      
https://developers.google.com/youtube/v3/docs/playlists/list?hl=ja

#### エンドポイント

```
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）      
https://developers.google.com/youtube/v3/docs/videos/list?hl=ja

#### エンドポイント

```
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）      
https://developers.google.com/youtube/v3/docs/commentThreads/list?hl=ja

#### エンドポイント

```
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の配信・動画の話題、見どころをデータベース化し、タイムライン上で検索できるようにする「切り抜きDB」について、ご紹介しました。
以下のURLよりぜひご活用頂ければ嬉しいです！

* [切り抜きDB](https://b.hatena.ne.jp/entry/s/kirinuki.ai/)    
https://kirinuki.ai/


切り抜きOKを出されている方で、切り抜きDBに追加して欲しいYouTubeチャンネルがありましたら、以下のGoogleフォームからご連絡頂ければ幸いです。
https://forms.gle/rQEVYyXwbvDFT1Jr6


また、このサービスに少しでも興味をもって頂けましたら、ぜひともフォローやいいね、リツイートで応援お願いします！

* はてなブックマーク
    * [この記事をブックマーク](https://b.hatena.ne.jp/entry/s/qiita.com/2zn01/items/0df1f63425253576ce04)
    * [「切り抜きDB」のサービスをブックマーク](https://b.hatena.ne.jp/entry/s/kirinuki.ai/)
* Twitter： [@2zn01](https://twitter.com/2zn01)
* Qiita： [@2zn01](https://qiita.com/2zn01)
* Zenn： [@2zn01](https://zenn.dev/2zn01)
* note： [@2zn01](https://note.mu/2zn01)


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Web上で簡単に切り抜き動画を作れる「切り抜きDB」というサービスをリリースしました！🎉<a href="https://t.co/4MpA9la3ZC">https://t.co/4MpA9la3ZC</a><br><br>YouTuberやVTuberの動画の見どころをDB化。タイムライン上で検索できて、動画の切り抜く箇所を選択・編集するだけでブラウザ上で切り抜き動画を作れます。<br>ぜひ使ってみてください！🙌</p>&mdash; 2z / AI MAKER (@2zn01) <a href="https://twitter.com/2zn01/status/1476419383618863104?ref_src=twsrc%5Etfw">December 30, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


他には以下のようなサービスを開発・運営していますので、興味があるものがございましたら、ぜひとも使ってみて頂けると嬉しいです！

* [AIメーカー](https://b.hatena.ne.jp/entry/s/aimaker.io/)
https://aimaker.io/
誰でも簡単にAIを作ったり、試したりできるサービスです。
使ったAIを活用するためのAPIも提供していますので、ぜひご活用ください。

* [文字起こすくん](https://b.hatena.ne.jp/entry/s/text.aimaker.io/recognize-bot/)
https://text.aimaker.io/recognize-bot/
画像、音声、動画をアップするだけで簡単に文字起こし・書き起こしできるサービスです。話者の識別も可能になりました！    

* [テロップメーカー](https://b.hatena.ne.jp/entry/s/text.aimaker.io/recognize-video/)
https://text.aimaker.io/recognize-video/
動画をアップロードするだけで、動画内の音声を認識して文字起こしを行い、自動で動画に字幕・テロップをつけるサービスです。こちらも話者の識別が可能になりました！



これまでに開発したサービスは、「 [これまでに個人開発で作ったサービス](https://profcard.info/u/mKSgDlabLUhDhiVYRtEBZ8fYwUp1) 」にまとめていますので、興味がある方はぜひご覧ください。