Search Console API - 検索アナリティクス

APIを利用してできること

APIを利用してできることは、今回作成したクエリデータの取得の他に、サイトの登録や削除、サイトマップの送信、クロールエラーの情報取得などができるようになります。これらの機能を利用すると、大規模サイトで多量のサイトを管理するときの、Search Consoleへの一括登録やサイトマップの一括送信、クロールエラーの監視といったことができるようになります。現状では、Fetch as Googleを利用したインデックスの送信は行えないようですが、今後機能追加されたときには、CMSなどとの連携も考えられます。

APIに関する情報

Search Console APIの開発者向けヘルプ・ドキュメントは、

Google Developers - Search Console API (Webmaster Tools API)

にあります。

ただ、プログラムを書くにはここにある情報だけでは不足します。自分もいろいろ試行錯誤しながら、約2日かけてツール開発を行いました。ライブラリ自体は、

  • Python
  • Go
  • JavaScript
  • .NET
  • Objective-C
  • PHP
  • Java

にて提供されているものの、サンプルコードはPython版の簡素なものしか書かれていません。今回は、各利用ユーザーのトークン管理が面倒だったこともあり、JavaScript版のライブラリを利用しています。ただ、ライブラリを使って、クエリデータを取得しようとすると、Cross Origin関連のエラーが発生してしまい、先に進めなかったため、結局XMLHttpRequestオブジェクトを生成して、リクエスト部分から自分で実装してしまっています。

このあたりは、PythonやPHPといったサーバー側の言語を使うようにすれば、簡単に実装できたのかもしれません。

実装コードはもう少しリファクタリングを行ったのちに、どこかで共有できればと思います。

作成したツールの使い方

作成したツールは、

https://sem-technology.info/tools/search_console

からご利用いただけます。最初に「認証処理」のボタンをクリックして、認証を行います。認証完了後、該当アカウントに登録されているサイトの一覧を取得します。APIを経由して取得したサイトデータが「対象サイト」のコンボボックスに入ってきます。

検索条件は

検索項目 必須/任意 説明
対象サイト 必須 検索クエリを取得したいサイトを選択してください。選択肢のサイトは、認証後に
データ取得期間 必須 取得データに含めたい期間を設定してください。
取得件数 任意 取得するデータの上限を設定します。1以上5,000以下の値が指定可能で、省略した場合はデフォルト値1,000が使われます。
検索タイプ 任意 Web、Image, Videoのどの検索タイプのデータを取得するかを指定します。デフォルトはWebとなっています。
ディメンション 任意 検索データをどの単位で分割するかを設定します。項目を増やすと、データ行数が増えてしまい、最大行数5,000に収まらないこともあるので注意が必要です。

となっています。これらのうち、必要な項目を指定したら、「データ取得」ボタン、または「CSV出力」ボタンをクリックしてデータ取得を行います。データの取得処理は少し時間がかかる上に、読み込み中の表示を実装していないため、処理をしているのか不安に思うかもしれませんが、お待ち下さい。数十秒あれば読み込みは終わるはずですので、数分経っても変化がない場合は、再度画面をリロードして、やり直してみてください。それでもダメな場合は、お問い合わせフォームより、ご連絡ください。

現状の機能

現状の機能としては、画面UI上から行えない取得件数の上限変更が実装されているくらいで、それ以外にこのツールを利用するメリットはありません。とはいえ、いろいろなサイトで、APIを使えば1,000件以上の検索クエリ取得ができる、と書かれていながらも、手軽にAPIを利用する方法はどこにも書かれていないことから考えると、ニッチな機能ながらも、ニーズはあるかと思います。

なお、ツールの利用頻度の計測のため、Google認証を行ったタイミングと、データ出力ボタン(CSVボタン含む)がクリックされたタイミングで、Googleアナリティクスにイベントデータとして送信しています。認証に使われたアカウント情報や、データ取得の対象となっているWebサイトの情報についてはGoogleアナリティクス、自サイトを含むいかなる場所にも送信していません。

今後の機能追加(予定)

今の所、機能追加の予定はありませんが、利用者が多く、他の機能追加の要望が出てきたら、順次対応を検討したいと思っています。

とはいっても、現在のSearch Analytics APIの仕様を見る限りでは、追加できる機能としては、出力結果のフィルタリング機能くらいでしょうか。他には、ページ単位のフィルタリング機能を自動で利用して5,000件以上の全データを取得できたら、理想かと思います(その場合は, JavaScriptの処理では限界がありそうなので、サーバーサイドでの実装になりそうです)。

参考サイト