BLOG ブログ

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

はじめに

SEOコンサルタントの外山です。先日2月26日に、プリンシプルのSEOチームで「どうなる? 2020年のSEO 〜プリンシプルSEOコンサルタントが語る、SEOの現在と今後」というセミナーを開催しました。このセミナーで私は、「複雑なSEOのデータをどう分析・可視化するか(APIやBIツールの活用)」というテーマで発表をしたのですが、Search Console APIについてもっと知りたい、特に、具体的な使用法を教えて欲しいという声が多く寄せられました。そこで今回は、Search Console APIの概要を説明するとともに、統計解析向けのプログラミング言語である「R」を用いたデータの抽出方法と、Tableauを使って可視化する例をお示ししたいと思います。

1.Search Console APIとは?

SEOにおいてかかせないGoogle Search Consoleは、機能のアップデートも頻繁にあり、とても使いやすいツールですが、以下のようなもどかしさを感じたことはないでしょうか。

  1. 検索パフォーマンスの詳細データをダウンロードすることはできるが、取得可能データ数が1,000行までで、それ以上は取得できない。
  2. ある特定のページグループ(商品ページなど)のパフォーマンスを見たい場合、正規表現を用いてデータをフィルタリングしたいが、検索機能が正規表現に対応していない。
  3. 見たいデータがある時は、その都度管理画面にアクセスして操作を行わないとならず、毎日のモニタリングには不向き。

実はSearch Consoleのデータ、特に検索パフォーマンスのほとんどのデータは、Search Console APIを通じて、その生データを直接取得することが可能です。Search Console APIで検索パフォーマンスの生データを一括でCSVで取得して、それをExcelで集計したり、Tableauで可視化したり、あるいはBig Queryに格納したりするのであれば、データの活用方法は広がり、毎日のモニタリングや高度な分析、課題の発見などが便利になるでしょう。イメージとしては、下図のようになります。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

Search Console APIの詳細は、Googleの公式ページで説明されています。APIを使用するには、ウェブブラウザからAPIに直接アクセスするAPI Explorerを使用したり、PytonやJavaなどを使用したりする方法がありますが、本ブログでは、統計解析向けのプログラミング言語である「R」を用いてデータを抽出する方法を紹介したいと思います。

Search Console API の公式ページ
https://developers.google.com/webmaster-tools/search-console-api-original

なお本日(4月29日)現在、Search Console APIのversionは3で、以下の機能が用意されています。本ブログではこのうち、「検索パフォーマンス」のデータを抽出する「Search Analytics」の活用法をご紹介します。

APIの種類

Search Analytics

検索パフォーマンスの生データを取得するためのAPI。サイト単位、クエリ単位、ページ単位、デバイス単位、国別などで、パフォーマンス(表示回数、クリック数、CTR、平均掲載順位)を取得できる。条件の複数掛け合わせも可能。

Sitemaps

API経由でサイトマップの送信や削除が行えたり、現在送信しているサイトマップの一覧を取得したり、個々のサイトマップの詳細(送信数、有効なURL数、エラー・警告の有無)が取得できたりできる。

Sites

アカウントで閲覧可能なサイトの一覧を取得できる

参考:SearchConsoleのAPI一覧

2.RとR Studioのインストール

Search Console APIを使用するのになぜ「R」なのか、と疑問を持たれた方も当然多いと思いますが、その理由は主に以下の4つとなります。Rについて紹介しているサイトや本は多くありますので、詳しく知りたい方は、そちらを参照ください。

  1. searchConsoleRという、APIを活用するためのライブラリがあり、操作も比較的容易なこと
  2. 大量データの取得や加工に適していること
  3. WindowsでもMacでも、RとRの統合開発環境である「R Studio」をインストールすれば、比較的容易に(プログラムに詳しくなくても)利用することができること(サーバなどは不要)
  4. 私が大学の時から使用していること

Rを利用するには、Rそのものと、Rの統合開発環境であるR Stuidoをインストールすることをお薦めします。インストール方法はこちらのページが分かりやすく解説していますが、大まかには以下の手順となります。

1.CRAN(The Comprehensive R Archive Network)のサイトにアクセスし、自分の環境に応じたRをダウンロードします。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

Windowsの場合のダウンロード画面は下記となります。4月29日時点、Rの最新バージョンは4.0.0です。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

2.次に、こちらのページから、Rの統合開発環境である「R Studio Desktop」をダウンロードし、インストールします。自分の環境にあわせたものをインストールください。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

インストールができたら起動してみます。以下はWindows版ですが、以下のような画面が表示されるのであれば、インストールは成功しています。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

3.searchConsoleRのインストール

R Studioをインストールできたので、次にSearch Console APIを使用するために必要なライブラリをインストールします。

インストールするのは、googleAuthRとsearchConsoleRの2つとなります。searchConsoleRについてはこちらのサイトが公式サイトとなりますので、参照してください。

searchConsoleR
http://code.markedmondson.me/searchConsoleR/

インストールは、R Studio上から簡単に実施することができます。R Studioを立ち上げた画面で、Fileのメニューから「New File」をえらび、「R Script」を選択して、新しいR Scrpitを作成する画面とします。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

画面上で、以下のコードを入力し、1行ずつ実行します。

install.packages("googleAuthR")
install.packages("searchConsoleR")

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

実行すると、画面左下の「Console」のところに、実行結果が表示されます。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

エラーがなく、インストールされていることを確認します。

4.Rを使ってSearch ConsoleのデータをCSVに保存する

では実際に、Rを使ってSearch ConsoleのAPIにアクセスし、CSVデータを取得してみます。以下は弊社のコーポレートサイトに、今月(4月1日〜4月25日まで)、どのような検索クエリでアクセスがあったか、そのデータを取得するR Scrpitになります。R Studioで新しいR Scriptを作成し、以下のコードをコピー&ペースト(または入力します)

library(searchConsoleR)
library(googleAuthR)

# set locale
Sys.setlocale("LC_CTYPE", "UTF-8")

# initial setting
website <- "https://www.principle-c.com/"
start <- "2020-04-01"
end <- "2020-04-25"
dimensions <- c("query")
type <- c("web")

# Authorize
scr_auth()

# get the search analytics data
data <- search_analytics(siteURL = website, startDate = start, endDate = end, dimensions = dimensions, searchType = type, rowLimit = 100000, walk_data = "byBatch")

# save csv files
filename <- "query.csv"
write.csv(data,filename)

入力が終わったら、スクリプトを1行ずつ実行していきます(Ctrl + Enterが便利です)

スクリプトの解説

library(searchConsoleR)
library(googleAuthR)

使用するライブラリを読み込みます。

Sys.setlocale("LC_CTYPE", "UTF-8")

Macを使用している場合は、抽出するクエリが文字化けしないように、ロケールを設定します(Windows環境では必要ありません)

website <- "https://www.principle-c.com/"
start <- "2020-04-01"
end <- "2020-04-25"
dimensions <- c("query")
type <- c("web")

初期設定です。サイト名、データの取得期間(開始日と終了日)、ディメンション(pageならURL単位、queryならクエリ単位、など)、タイプ(web, image, videoがありますが、web検索のデータで良いならば、webとします)を指定します。

なおドメインプロパティを使用している場合は、websiteは以下のような記述となります。
sc-domain:principle-c.com

scr_auth()

認証を行うコマンドとなります。consoleにメッセージが表示されますので、メッセージに沿って認証を行います。通常は、ブラウザが立ち上がり、アカウントを選択した後に表示される認証コードを、consoleに入力することで、認証が完了します。

アカウントの選択画面

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

選択後、認証コードが表示されます。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

認証コードを、R Studioのコンソール画面に貼り付けます

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

data <- search_analytics(siteURL = website, startDate = start, endDate = end, dimensions = dimensions, searchType = type, rowLimit = 100000, walk_data = "byBatch")

Search Console APIを呼び出している本体部分となります。rowLimit はサイトの規模に応じて適宜変更します。APIが一度に取得できる件数は25,000ですが、rowLimitの設定値がそれ以上である場合は、複数回呼び出されることで、指定した件数までデータが取得されます。

filename <- "query.csv"
write.csv(data,filename)

ファイル名を指定して、抽出したデータをCSV形式で保存します。そうすると、以下のようなデータが取得できます。

“”,”query”,”clicks”,”impressions”,”ctr”,”position”
“1”,”コロナ 今後”,2033,19605,0.103698036215251,5.59199183881663
“2”,”コロナウイルス 今後”,664,7163,0.0926985899762669,6.17059891107078
“3”,”コロナ 見通し”,483,5819,0.08300395256917,7.38202440281835
“4”,”コロナ 予測”,482,6389,0.0754421662231961,10.6868054468618
“5”,”コロナ今後”,401,3975,0.100880503144654,4.25308176100629
“6”,”コロナ今後の見通し”,365,2095,0.174224343675418,3.9145584725537
“7”,”新型コロナ 今後”,316,2375,0.133052631578947,5.65684210526316
“8”,”コロナウイルス今後”,232,2469,0.0939651680842446,5.05022276225192

あとは、このデータをExcelで分析したり、Tableauなどで可視化します。

5.Tableau を使ったデータの可視化例

最後に、先ほどのデータを使ってTableauで可視化した例をお示しします。下図は、「コロナ」を含む検索クエリについて、横軸を平均掲載順位、縦軸を表示回数、円の大きさをクリック数として、散布図を作成した例となります。

Search Console APIを用いて検索パフォーマンスの生データをRで抽出する方法

さらに、「今後」「将来」「予測」という文字列を含むかどうかで、色分け(グループ分け)をしています。弊社は、今月新型コロナウイルス関連のブログ記事を数本公開しましたが、その結果として、どのようなクエリで記事がよまれているかを、この散布図を作成することで一覧することができます。散布図の作成方法については、次回以降、ブログ記事やホワイトペーパーで紹介できたらと思います。

さいごに

以上、統計解析向けのプログラミング言語である「R」を用いて、Search Console APIにアクセスし、検索パフォーマンスの生データを抽出する方法を紹介しました。今回紹介したのは一例ですが、ページ単位のデータを月単位、週単位、日単位で取得したり、または「デバイス別」「国別」に取得したり、応用方法はいろいろとありますので、是非試していただければと思います。

このブログが、ウェブサイトのパフォーマンスをより深く、より楽しく分析するための一助となれば、嬉しく思います。

デジタルマーケティング戦略、Web解析、SEO、リスティング広告、Facebook広告、Linkedin広告、Tableauでのデータビジュアライズなどなど、何か弊社でお役に立てそうなことがございましたら、こちらよりお気軽にご相談ください。ご相談は無料で承っております。
プリンシプルでは業界最高レベルの専門家として一緒にご活躍いただける方を募集しています。詳しくは採用情報のページをご覧ください。

外山大

東京大学大学院、修士課程修了。11年間の文部科学省勤務の後、ITベンチャーにてメール配信システムやウェブサイトの開発に従事。

ご意見・ご相談、料金のお見積もりなど、お気軽にお問合わせください

お問合せ メルマガ登録 ダウンロード資料一覧

TOP