どんぶらアニマル さんぽ道

CBR250RR(MC22)とNSR80(HCO6)とAPE50(AC16)を中心とした備忘録。

PythonでGoogle Search Console APIを使って検索パフォーマンス(検索クエリ)を取得:下準備

bloggerにいた頃は、2022年10月までは(超少ないけど)それなりに流入が合って、Search Consoleを見るのが楽しかったけど、2022年の10月のgoogleのアップデートでスパムと判断されたのかそこからぱったりと流入が無くなっていた。

bloggerの検索パフォーマンス

 

はてなブログに移行してからは、(やっぱり恥ずかしいくらいしょぼいけど)それなりに流入があって、記事に手を加えると上がることも見えてきたのでまた面白くなってきた。(けどなかなか記事は書けてない...)

はてなブログの検索パフォーマンス

 

検索パフォーマンスのクエリを見てると、予想してなかったクエリが多かったりするので、いろんな視点でクエリを見てみたくなった。

概要

Search Consoleを使いこなせてないだけかもしれないけど、

  • クエリに含まれるワード単位の変化をグラフで見たい
  • 16か月以上前のデータも取っておきたい(多分、現在は16か月以前のデータは消える)

等の思いから毎日、自動で取得してMySQL(mariaDB)に突っ込む環境を作ってみた。

 

Google Search Console APIを使うには、以下の手順が必要だとわかったので、これを順次実行していく。

  • Google Search Console API の登録
  • Google Search Console APIの認証情報を作成
  • API実行ユーザの登録

 

ググって調べながらやったけど、Search ConsoleのUIが変わっていて、見つけた記事で説明しているのがどこのことかすらわからなかったり、画面遷移が多い上にConsoleの仕様変更でUIデザインが変わってたりでスムーズに進められなかったので、スクリーンショット多めでメモってとく。また仕様変更で変わるんだろうけど...

 

前提条件

  • Google Search Consoleにログインできてる
  • Google Search Consoleにブログサイトを登録済である

 

Google Search Console API の登録

主に参考にしたのはQiitaのマインドウッドさんの記事の「Google Search Console API の登録」の章。とても簡潔に書かれていて、Search Consoleを使いこなしてない自分はこれを見ながら簡潔さの裏を補完できななくてググりながらやった。使い慣れてる人はこれで十分なんだろうなぁ。

 

まずは下記のGoogle Cloud Platformを開く。


Google Cloud Platformを開いてログインすると、こんな感じの画面になる。過去にプロジェクトを作っていれば、そのプロジェクトも「プロジェクトの選択」の中に表示される。API Projectを新規に作って行くので「API Project」をクリックする。

search consoleのAPI登録


「選択中のプロジェクト」の右の「API project」をクリック。

search consoleのAPI登録

 

こんなポップアップが表示されるので、右上の「新しいプロジェクト」をクリック。

search consoleのAPI登録

 

任意のプロジェクト名(searchConsoleAPI01とした)を入力し、組織はなししか選べなかったのでなしで。作成をクリック。

search consoleのAPI登録

 

しばらく待つと、プロジェクトの作成が終わったことを示すポップアップが表示されるのでポップアップの「プロジェクトを選択」をクリック。

search consoleのAPI登録

 

もし、ポップアップが消えてしまって「プロジェクトを選択」が無くなった場合は、最初に開いたGoogle Cloud Platformのリンクを開くと、「最近のプロジェクトの選択」の中にさっき作ったプロジェクト(searchConsoleAPI01)があるので、それをクリックすれば良い。

 

プロジェクトを選択すると赤線で示した箇所がさっき作ったプロジェクト名(searchConsoleAPI01)になる。

search consoleのAPI登録

 

左上のハンバーガーメニューから「APIサービス」→「有効なPIサービス」をクリック。

search consoleのAPI登録

 

「APIとサービスの有効化」をクリック。

search consoleのAPI登録

検索バーに「Google Search Console API」と入力して検索を実行する。

search consoleのAPI登録

 

検索結果に出てきた「Google Search Console API」をクリック。

search consoleのAPI登録

 

上部のプロジェクトが作ったプロジェクト(searchConsoleAPI01)を選択していなかったら選択し直して、「有効にする」をクリック。

search consoleのAPI登録

 

以上で、APIの登録は完了。

search consoleのAPI登録

 

Google Search Console APIの認証情報を作成

API登録完了の画面から続けて、「認証情報を作成」をクリック。

search consoleのAPI登録

API登録完了後、別の画面に行ってしまってたら、左上のハンバーガーメニューの右のAPIをさっき作ったAPI(searchConsoleAPI01)に切り替えてから「APIサービス」→「有効なPIサービス」をクリックするとここに来ることができる。

 

左ペインの「OAuth同意画面」を選択して作成をクリック。

search consoleのAPI登録

 

「アプリ名」に任意の名前、「ユーザサポートメール」にgoogleアカウントのメールアドレスを入れて、

search consoleのAPI登録

 

下の方にスクロールして、「デベロッパーの連絡先情報」にもgoogleアカウントのメールアドレスを入れて、「保存して次へ」をクリック。

search consoleのAPI登録

 

ここは何も変更せず、下の方にスクロールして、

search consoleのAPI登録

 

一番下にある、「保存して次へ」をクリック。

search consoleのAPI登録

 

「ADD USERS「をクリックして、googleのアドレスを設定し、追加をクリック、

search consoleのAPI登録

複数のユーザーがサーチコンソールAPIを使う場合は、すべてのユーザを「ADD USERS」で追加すれば良いらしい。

 

追加された。「保存して次へ」をクリック。

search consoleのAPI登録

 

これでOAuthの同意手順は完了。

search consoleのAPI登録

 

ここからは、アプリで使う鍵を手に入れるためにサービスアカウントを作ってダウンロードする。

ハンバーガーメニューから「IAMと管理」→「サービスアカウント」をクリック。

search consoleのAPI登録

 

「サービスアカウントを作成」をクリック。

search consoleのAPI登録

 

「サービスアカウント名」に任意の名前を付けて、「サービスアカウントID」は自動入力されたままで、必要なら説明を書いて「作成して続行」をクリック

search consoleのAPI登録

「サービスアカウントID」は後でSearch Consoleでユーザを追加する際に使う。

 

鍵を作る。メールのとこのリンクをクリック。

search consoleのAPI登録

 

タブの「キー」をクリック。

search consoleのAPI登録

 

「鍵を追加」をクリックして「新しいかぎを作成」クリック。

search consoleのAPI登録

 

JSONを選択して「作成」をクリック。

search consoleのAPI登録

 

鍵ができてダウンロードが始まり、保存ダイアログが出るので保存する。

search consoleのAPI登録

この鍵をpythonからAPIを叩くときに使う。

 

終わるとこんな感じで鍵が有効になってるっぽい表示になった。

search consoleのAPI登録

 

API実行ユーザの登録

Search Consoleにログインして、ユーザを追加する。左上のハンバーガーメニューから「設定」→「ユーザと権限」をクリック。

search consoleのAPI登録

 

認証情報を作ったときの「サービスアカウントID」をメールアドレスに入れて「追加」をクリックして追加する。

search consoleのAPI登録

 

追加できるとこんな感じで、ユーザが追加されてる。

search consoleのAPI登録

 

このユーザ追加をやってなくて、この先のPythonアプリを作って実行した際に下記のエラーで悩んでしまった。

>>> response = webmasters.searchanalytics().query(siteUrl=url, body=request).execute()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/kirin/.local/lib/python3.10/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/home/kirin/.local/lib/python3.10/site-packages/googleapiclient/http.py", line 938, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/webmasters/v3/sites/https%3A%2F%2Fdonbura.hatenablog.com%2F/searchAnalytics/query?alt=json returned "User does not have sufficient permission for site 'https://donbura.hatenablog.com/'. See also: https://support.google.com/webmasters/answer/2451999.". Details: "[{'message': "User does not have sufficient permission for site 'https://donbura.hatenablog.com/'. See also: https://support.google.com/webmasters/answer/2451999.", 'domain': 'global', 'reason': 'forbidden'}]">
>>>

 

以上で、APIの登録、鍵の入手、アプリを実行するユーザの追加が終わったので次はアプリを作って行くけど、内容が薄い割には手順が長かったので今日はここまで。

次回、アプリ作成に続く。

気が向いたら感想をお願いします。(ログイン不要、ボタンを押すだけです)