YouTube Analytics APIでアーティストのチャンネル情報を取得する

API パソコンのキーボード

皆さま、こんにちは、ソニー・ミュージックマーケティングユナイテッドのたまごです。

普段は、アーティストのデジタルマーケティングを行う部門で、アドホックなデータ分析や市場リサーチなどを担当しています。

我々のチームでは、分析用途に応じて、SNSや音楽配信サービスなど、様々なサービスからデータ収集を行っています。

今回は、アーティストのYouTubeチャンネルの情報を取得する際に用いられる、YouTube Analytics APIについて、普段どのように利用しているか紹介したいと思います。

なぜYouTubeのデータが欲しいのか?

音楽業界では、A&R(アーティスト&レパートリー)と呼ばれる人たちが、日々アーティストのプロモーションを行っています。

今日のアーティストプロモーションの最も大事なツールとして、YouTubeが挙げられます。ミュージックビデオやアルバムのティザー映像、ときには企画ものの動画など、YouTubeのアーティストチャンネルからは様々なコンテンツが発信されています。

こうした動画がどのような人に見られているか、どの程度再生が回っているかを確認することは、A&Rがマーケティング施策を考えるにあたり非常に大切です。

なぜAPIを使う必要があるのか?

YouTubeのデータを参照する際、多くのA&Rは、YouTube Studioと呼ばれるアプリを利用しています。

しかし、YouTube Studioでは、あくまでアプリで決められた機能しか使うことができず、複数動画のデータを比較したり、得られた数字をもとに新たな可視化を行うことは困難となっています。

動画やチャンネルごとに欲しい情報を指定して、個別にcsvをダウンロードすることはできますが、多くの動画を抱えるアーティストチャンネルにおいて、これらを手作業で行うのはなかなか骨が折れそうです。

YouTube Analytics APIを使うことで、複数の動画・チャンネルのデータを一括して取得できるようになり、分析効率が大幅に向上します。

YouTube Analytics API

YouTube Analytics APIの概要

YouTubeでよく用いられるAPIに、Data APIとAnalytics APIの2つがあります。

それぞれ下記のような特徴があり、普段の業務では両者をうまく組み合わせてデータ収集を行うことが多いです。本稿では、後者のAnaytics APIについて紹介します。

  • Data API:APIリクエスト時点における動画の視聴数や良いね数、コメント欄の投稿など、YouTube上のオープンなデータを取得するもの。
  • Analytics API:自身のチャンネルの動画について、視聴数の時系列推移やトラフィックソース、性年代など、より詳細な情報を取得するもの。

Analytics APIでは、主に下記のようなパラメータを指定してリクエストを出すことになります。

それぞれの組み合わせには制限があるのですが、詳細は公式ドキュメントを参照いただければと思います。

  • Dimensions:データの切り分け方(動画ごと、日ごと、性年代ごと、トラフィックごとなど)
  • Metrics:欲しい定量データの種類(再生数、良いね数、チャンネル登録者数など)
  • Filters:情報が欲しいYouTubeコンテンツの指定(動画、チャンネルなど)

※Filtersでは、チャンネル登録状況や居住国など、ユーザーの種別の指定も可能です。

Analytics APIのパラメータ組みあわせイメージ

なお、APIリクエスト時には、あらかじめOAuth2.0認証を通してアクセストークンを取得しておく必要があります。ただ、詳しく書くとかなりの分量となってしまうため、本稿では省略します。

公式ドキュメントや、慣れない方は一般のブログ記事などを参考にしつつ進めるとよいでしょう。

デモンストレーション

「これまでYouTubeのアーティストチャンネルからいくつか動画を投稿してきたが、どの動画をどんな人たちが見ているのか、しっかりしたイメージが持てていない。一度動画ごとのデモグラなどを比較してみてくれないかな。」

本節では、こんな相談がA&Rから来たと仮定して、実際にAnalytics APIを使ってデータ取得を行ってみます。今回はJupyter Notebook上からPythonを利用します。

まず、APIをリクエストするためのパラメータを設定します。

公式ドキュメントのViewer demographicsの項を参照すれば、今回のデモグラ取得のケースでは、パラメータは以下のように設定すれば良さそうです。

params内の上2行は全リクエストで共通のもの、中2行は集計期間、下3行が具体的なリクエストの内容を指定している部分になります。

params = {
 'access_token': accessToken, #認証して得られたaccessTokenを入力
 'ids': 'channel==XXXXXX', #自身のチャンネルIDなどを指定

 'startDate': '2022-01-01',
 'endDate': '2022-11-30', #集計期間を指定。ここでは2022年1~11月のデータを取得する前提
 
 'dimensions': 'video', #動画ごとに区切る
 'metrics': 'viewerPercentage', #視聴数を取得する
 'filters': 'video==aaaaa,bbbbb,ccccc,ddddd,eeeee', #データ取得したい動画のvideoIdを指定
}

なお、少し話が逸れますが、’filters’で動画を指定するために利用しているvideoIdとは、YouTube動画のアドレスの”v=”以降の文字列のことです。 以降、サンプルコードなどでvideoIdを表記する際は、’aaaaa’といった仮の値を用いることに注意してください。

videoid

さて、上記のパラメータの設定で、実際にリクエストを投げてみましょう。

import requests
URL = 'https://youtubeanalytics.googleapis.com/v2/reports'
response = requests.get(URL, params=params)

GETリクエストの結果がjson形式で返ってきます。確認の仕方は何でもよいですが、ここではpprintでざっと中身を見てみます。

import pprint
pprint.pprint(response.json())

# {'columnHeaders': [{'columnType': 'DIMENSION',
#                     'dataType': 'STRING',
#                     'name': 'video'},
#                    {'columnType': 'DIMENSION',
#                     'dataType': 'STRING',
#                     'name': 'ageGroup'},
#                    {'columnType': 'METRIC',
#                     'dataType': 'FLOAT',
#                     'name': 'viewerPercentage'}],
#  'kind': 'youtubeAnalytics#resultTable',
#  'rows': [['aaaaa', 'age13-17', 4.6],
#           ['aaaaa', 'age18-24', 30.7],
#           ['aaaaa', 'age25-34', 36.2],
#           ['aaaaa', 'age35-44', 15.3],
#           ['aaaaa', 'age45-54', 9],
#           ['aaaaa', 'age55-64', 2.9],
#           ['aaaaa', 'age65-', 1.3],
#           ['bbbbb', 'age13-17', 7.1],
#           ['bbbbb', 'age18-24', 36.5],
#            ............

どうやら、

  • columnHeaders: dimensionsやmetricsの種類
  • rows: columnHeadersの順番に値が並ぶ

といった構成になっていそうです。

ここまで来れば、あとはうまく逐次処理を施してあげることで、下図のDataFrameのような使いやすい形に加工できそうですね。

DataFrame

実際に、あるチャンネルの5つの動画について、年代別の視聴数割合の結果を並べてみたものが下図です。一見して、一番上の動画は25歳以上による視聴が8割弱となっている一方で、下2つの動画は24歳以下の視聴が過半数を占めていることが分かります。もし、今後A&Rが若年層へのプロモーションを強化したいということであれば、後者の動画のようなコンテンツの充実を提案することもできそうですね。

年代別の視聴数割合の結果

最後に

YouTube Analytics APIを用いた、簡単なデータ集計のデモンストレーションを見てみました。

今回ご紹介したのはあくまで使い方の一例であり、実務では時系列での推移やトラフィックソースなど、様々な種類のデータを取得することで、分析の精度を高めています。

例えば、トラフィックソースで「関連動画」からのアクセスが多いことが分かったなら、相性のいいアーティストやYouTuberなどがいるのでは、という仮説を立てることができそうです。具体的にどの動画からの流入が多いのかといった詳細な情報も、Analytics APIで取得することができるため、調べてみると何か発見があるかもしれません。

こうしたアドホックなリサーチを行う上で、Analytics APIはチームに欠かせないものとなっています。

ソニーミュージックグループでは、YouTube以外にも、SpotifyやTwitterなど、様々なプラットフォームのAPIを駆使してデータ取得を進めています。

他のAPIの活用方法や、収集したデータを実際にどのように利用しているかは、また別の機会にお話しできればと思います。

それでは、また次の記事でお会いしましょう。