Aikの技術日記

技術的な進捗とか成果とかを細々と投稿するブログです。時々雑記も。

Youtube Data API v3使ってみた

はじめに

お久しぶりです、筆者です。

いきなりの自分語り恐縮ですが、実は私のYoutubeチャンネルが1周年を迎え。
せっかく1年間やってきたことだし、自分の活動を振り返るべく色々分析してみたいな…と思った次第です。

そしてせっかくエンジニアなのですから、Youtubeが提供しているAPIでデータを取ったらカッコいいんじゃないかと思い。
Youtubeにて、情報取得ができる系のAPIを色々調べ…。
Youtube Data API」やら「YouTube Analytics API」「Youtube Reporting API」に辿り着くことが出来ました。

この3つの違いは後で記載するとして、
筆者はまず「Youtube Data API」を深掘りして調査し…。
「環境構築方法」や「どんなAPIがあるか」「リクエスト/レスポンスのプロパティ情報」等々役立ちそうな情報がまとまったので。
自分への備忘録がわりにこれらをまとめていければと。

それではいきましょう。

Youtubeのデータを取得できるAPIの種類

Youtube Data API」について話す前に、事前情報として…。
Youtube上のデータを取得できるAPIの種類」についてまとめておこうと思います。

Youtubeも大概でかいプラットフォームな故か、APIサービスが分離してますからね…。
まずはそこの整理からしていきましょう。

Youtube上のデータを取得できるAPIは、大きく分けて3つに分かれます:
※全て無料で使用可能

自他問わず色んなチャンネルの情報を取りたいなら「Youtube Data API」一択ですね。
認証形式もAPIトークンで出来るので、お手軽サクッとデータを撮ることが出来ます。

他2つはOAuth認証を実装しないといけませんが、取れるデータ量はYoutube Data APIの比ではありません。
Youtuberでコンテンツ分析をするならお馴染みの「Youtube Studio」より、取れるデータ量は多いらしく…。
本格的に分析するなら、後者2つになりますね。

これ以降、当記事では「Youtube Data API」について見ていきます。

環境構築方法

まずはAPIを叩ける環境構築方法から。
認証形式は APIトークン or OAuth認証形式のどちらかですが、当記事では簡単な方の「APIトークン形式」をご紹介します。

Youtube Data APIは「Google Cloud Console」が提供しているAPIの一部であるので、
まずはGoogleCloudConsoleへアクセスしましょう。
Googleアカウントが必要なので、持ってない方は新規作成してください。

アクセスしたら「プロジェクトを新規作成」します。
上部メニューの↓赤い枠からアクセス可能です: GoogleCloudConsoleホーム画面

クリックするとプロジェクト選択画面が出るので、「新しいプロジェクト」をクリック。 GoogleCloudConsole>プロジェクト一覧画面

すると以下の画面が開くので、プロジェクト名を指定し「作成」ボタンを押しましょう。
プロジェクト名はなんでもOKですが、GoogleCloudConsoleを他でも使っている場合は分かりやすく「YoutubeDataAPI」とかにしておくと無難かも。 GoogleCloudConsole>プロジェクト新規作成画面

プロジェクトを作成したらプロジェクトを選択し、ダッシュボードへ遷移します。
遷移後「APIとサービス」をクリックし、「APIとサービスの有効化」をクリックします。 GoogleCloudConsole>APIとサービス画面

すると、Googleが提供しているAPIが一覧表示される「APIライブラリ」画面へ移動します。 GoogleCloudConsole>APIライブラリ画面

検索欄等を使い、その中から「Youtube Data API v3」をクリックし、「有効にする」ボタンをクリック。

後は「APIとサービス」画面に戻り、「認証情報」をクリック。 GoogleCloudConsole>APIとサービス画面

「認証情報を作成」から「APIキー」を選ぶと、しばらくしてAPIキーが表示されます。 GoogleCloudConsole>APIとサービス画面>認証情報タブ GoogleCloudConsole>APIとサービス画面>認証情報タブ

なお、誤って画面を閉じてもAPIキーは後から参照可能なのでご安心を。
APIとサービス」画面>「認証情報」のAPIキーの欄に、作成したAPIキー情報が並んでいるので…。

そこをクリックすれば、APIキーを確認できます。 GoogleCloudConsole>APIとサービス>APIトークン一覧 GoogleCloudConsole>APIとサービス>APIトークン詳細

余談:安全のために

Google Cloud Consoleでは、APIキーの安全性を高めるために…。
APIキーのアクセス制限もかけることが出来ます。

APIキーの詳細画面から設定は可能で: GoogleCloudConsole>APIとサービス>APIトークン詳細

「アプリケーションの制限の設定」と「APIの制限」の2つが可能です。

アプリケーションの制限の設定>ウェブサイトを選ぶと、APIのリクエスト元のURLを制限することが可能です。
例えばhttps://hogefuga.comからしかアクセスさせたくないみたいな…。

APIの制限を選ぶと、そのAPIキーでは指定したAPIしか発行できなくなります。
指定できるのは「Youtube Data API v3」や「BigQuery API」といったAPI単位の指定となるので、
例えば1プロジェクトに複数のGoogle提供APIを有効化している場合に活用できるかも。

余談:プロジェクトについて

外部サービスのAPIに触れる機会が多い人であれば、APIトークンの発行の手順が他と比べて多いな…と思うかもしれません。
筆者も「なぜわざわざプロジェクトとか作らないといけないだろう?」と思いました。

というのも、Google Cloud Consoleは「Googleが提供するあらゆるサービスのAPIを使用できる」プラットフォームであり…。
GoogleMapやGoogleDrive、Gmailなど多種多様なAPIが提供されています。

あまりにたくさんのAPIを提供しているものだから、開発者が使いたいAPIを適切に選択できる様にするための仕組み、なのかなと思いますが…。
Google Cloud Console未経験な筆者にとっては新鮮な印象でした。

もし有料APIを使っている場合、プロジェクト単位で課金もされるので…。
Youtube Data APIの様な無料で使えるAPIと、有料APIとではプロジェクトを分ける…みたいなこともできそうですね。

ここまで来れば、後はAPIを叩くだけです!
というわけで、お次はYoutube Data APIで叩けるAPIについて見ていきましょう。

Youtube Data APIで何ができるか

Youtube Data APIで叩けるAPIは下記があります:
※注: Youtube Data APIで使えるAPIの全網羅はしてません、ご了承をば。

  • Search
    • Youtube上の動画、チャンネル、再生リストを任意文字列で検索可能
    • 配信予定の動画のみ、特定の国の動画のみ、字幕があるもののみ、など標準のYoutube検索よりも高度な絞り込みが可能
  • Videos
    • 動画の詳細情報を取得
    • 対象は動画IDで指定する他、特定カテゴリの人気動画で絞り込んだり、特定国の人気動画で絞り込んだり出来る
    • 動画のレーティング情報など、普通見れない情報も見れる
  • Channels
    • チャンネルの詳細情報を取得
    • チャンネルの総再生回数、総動画投稿数など簡単な統計情報も取れる
  • VideoCategories
    • 動画のカテゴリ情報を取得
      • 動画のカテゴリ: 動画に1つだけ設定可能なカテゴリのこと、例:エンターテイメント、旅行とイベント、ゲーム…
    • Videosなど、他APIでの取得時に設定可能なカテゴリIDが取得できる
  • Playlists
    • 再生リストの詳細情報を取得
    • チャンネルに紐づく再生リスト一覧も取得できる
  • Activities
    • 特定チャンネルのアクティビティ(動画投稿、コミュニティ投稿、SNS投稿など)履歴を取得
    • 対象チャンネルの活動履歴を見たい場合に活用できる
  • GuideCategories
    • Youtube側が各動画に自動的に付与する「ガイドカテゴリ」を取得
    • 執筆当時(2023/05/29)現在、当APIエンドポイントは404 Not Foundとなる…実質使用不可

OAuth認証さえ通れば、動画を指定してその動画に対する自分の高評価/低評価状況を知れるVideos > getRatingや、
自分がチャンネル登録しているチャンネル情報が見れるSubscriptionsなんかもあります。

上記APIのさらなる紹介もしたい…ところですが、内容が膨大なので…。
Search、Activities、Channels、Videos、VideoCategories、GuideCategoriesのリクエスト値/レスポンス値の紹介のみに留めておこうと思います。

TypeScriptで返却値の内容&説明を書いたコードを置いておくので、そちらを参照ください。

おわりに

今回はYoutube Data APIについて、環境構築方法からどんなことができるか、一部APIのリクエスト/レスポンスプロパティの紹介をしました。

正直、本格的な分析をするならこれだけでは物足りませんが…。
自分のチャンネル以外の情報も見れる、と言うのはかなり魅力的かなと思います。

Channelsを使って自分のチャンネルと他チャンネルの情報を比較したり、
Videosで特定の動画カテゴリIDを指定し、そのカテゴリで最も人気のある動画を見て説明文やタイトルの付け方を参考にしたり…。
Searchを使って、Youtubeの画面からの検索では出来ない様な細かな設定値をつけて検索したりと、活用方法は色々ありそうです。

時間があれば、Youtube Analytics APIの方も調べたいなと思ってますが…はたして1周年の自チャンネルに間に合うかどうか…。
もしそちらもまとめたら、別途記事にしたいと思っています。

ともあれ、当記事がなにかのお役立てになれば幸いです…。
それでは|д゚*)

余談:Quotaの割当について

Youtube Data APIは無料で使用できますが、流石に無制限に使用可能ということはなく…。
Google Cloud Consoleで作成したプロジェクト>APIトークンごとに、使用量が決まっています。

使用量は「Quota(クオータ)」という形で定められており、
例えば「Search」APIなら1リクエストにつき100のQuotaが持っていかれます。

↑に示した各APIの1リクエスト毎の使用Quota量は以下のとおりです:
partmaxResultsパラメータの量によって変動はなく、あくまで1リクエスト以下の量が使用されます。

  • Search(list): 100
  • Videos(list): 1
  • Channels(list): 1
  • VideoCategories(list): 1
  • Playlists(list): 1
  • Activities(list): 1
  • GuideCategories(list): 1

読み取り系は上記の様に使用量は低めですが、当記事に載せてない書き込み系のAPIだと使用Quota量が跳ね上がりますのでご注意を。
その他のAPIのQuota量を見たい方は以下参照に: developers.google.com

自分が使用可能なQuotaの量は、GoogleCloudConsole>プロジェクト>APIとサービス>Youtube Data APIの「割り当て」タブから閲覧できます。
GoogleCloudConsole>APIとサービス>Quotaの割り当て表示画面

何も設定してない私のアカウントでは1日につき10000 Quotaだったので、デフォルトは10000で設定されているのかなと。

割り当ての増加を申し込むことも出来ますが: GoogleCloudConsole>割り当ての編集画面

取得目的であれば、10000Quotaもあれば十分だと思います。
申し込みには審査が必要っぽい?ので、やるなら少しの手間覚悟でやった方が良いでしょう…。