bloggerにいた頃は、2022年10月までは(超少ないけど)それなりに流入が合って、Search Consoleを見るのが楽しかったけど、2022年の10月のgoogleのアップデートでスパムと判断されたのかそこからぱったりと流入が無くなっていた。
はてなブログに移行してからは、(やっぱり恥ずかしいくらいしょぼいけど)それなりに流入があって、記事に手を加えると上がることも見えてきたのでまた面白くなってきた。(けどなかなか記事は書けてない...)
検索パフォーマンスのクエリを見てると、予想してなかったクエリが多かったりするので、いろんな視点でクエリを見てみたくなった。
概要
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」をクリックする。
「選択中のプロジェクト」の右の「API project」をクリック。
こんなポップアップが表示されるので、右上の「新しいプロジェクト」をクリック。
任意のプロジェクト名(searchConsoleAPI01とした)を入力し、組織はなししか選べなかったのでなしで。作成をクリック。
しばらく待つと、プロジェクトの作成が終わったことを示すポップアップが表示されるのでポップアップの「プロジェクトを選択」をクリック。
もし、ポップアップが消えてしまって「プロジェクトを選択」が無くなった場合は、最初に開いたGoogle Cloud Platformのリンクを開くと、「最近のプロジェクトの選択」の中にさっき作ったプロジェクト(searchConsoleAPI01)があるので、それをクリックすれば良い。
プロジェクトを選択すると赤線で示した箇所がさっき作ったプロジェクト名(searchConsoleAPI01)になる。
左上のハンバーガーメニューから「APIサービス」→「有効なPIサービス」をクリック。
「APIとサービスの有効化」をクリック。
検索バーに「Google Search Console API」と入力して検索を実行する。
検索結果に出てきた「Google Search Console API」をクリック。
上部のプロジェクトが作ったプロジェクト(searchConsoleAPI01)を選択していなかったら選択し直して、「有効にする」をクリック。
以上で、APIの登録は完了。
Google Search Console APIの認証情報を作成
API登録完了の画面から続けて、「認証情報を作成」をクリック。
API登録完了後、別の画面に行ってしまってたら、左上のハンバーガーメニューの右のAPIをさっき作ったAPI(searchConsoleAPI01)に切り替えてから「APIサービス」→「有効なPIサービス」をクリックするとここに来ることができる。
左ペインの「OAuth同意画面」を選択して作成をクリック。
「アプリ名」に任意の名前、「ユーザサポートメール」にgoogleアカウントのメールアドレスを入れて、
下の方にスクロールして、「デベロッパーの連絡先情報」にもgoogleアカウントのメールアドレスを入れて、「保存して次へ」をクリック。
ここは何も変更せず、下の方にスクロールして、
一番下にある、「保存して次へ」をクリック。
「ADD USERS「をクリックして、googleのアドレスを設定し、追加をクリック、
複数のユーザーがサーチコンソールAPIを使う場合は、すべてのユーザを「ADD USERS」で追加すれば良いらしい。
追加された。「保存して次へ」をクリック。
これでOAuthの同意手順は完了。
ここからは、アプリで使う鍵を手に入れるためにサービスアカウントを作ってダウンロードする。
ハンバーガーメニューから「IAMと管理」→「サービスアカウント」をクリック。
「サービスアカウントを作成」をクリック。
「サービスアカウント名」に任意の名前を付けて、「サービスアカウントID」は自動入力されたままで、必要なら説明を書いて「作成して続行」をクリック
「サービスアカウントID」は後でSearch Consoleでユーザを追加する際に使う。
鍵を作る。メールのとこのリンクをクリック。
タブの「キー」をクリック。
「鍵を追加」をクリックして「新しいかぎを作成」クリック。
JSONを選択して「作成」をクリック。
鍵ができてダウンロードが始まり、保存ダイアログが出るので保存する。
この鍵をpythonからAPIを叩くときに使う。
終わるとこんな感じで鍵が有効になってるっぽい表示になった。
API実行ユーザの登録
Search Consoleにログインして、ユーザを追加する。左上のハンバーガーメニューから「設定」→「ユーザと権限」をクリック。
認証情報を作ったときの「サービスアカウントID」をメールアドレスに入れて「追加」をクリックして追加する。
追加できるとこんな感じで、ユーザが追加されてる。
このユーザ追加をやってなくて、この先の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の登録、鍵の入手、アプリを実行するユーザの追加が終わったので次はアプリを作って行くけど、内容が薄い割には手順が長かったので今日はここまで。
次回、アプリ作成に続く。