サチコことGoogle Search Console。 更新が2日ごととは言うものの、実際はがっつり更新されない期間があったりする。

しかも自分で見に行くのは結構めんどくさいと来た。 Androidのアプリもないしね(たぶん)。

というわけでcronで更新をチェックして通知するなんかを作ろう。

Google Search Console APIのリファレンス

この記事でも書いたけど、今回もサービスアカウントを使ってバッチプログラムからアクセスさせる。

Hugoでよく読まれている記事を表示する - Unresolved

あ、Pythonでやります。 なんか公式にJavaとPythonのチュートリアルしかないので。

サンプルプログラムは以下を参照。 このページではサービスアカウントではなくてOAuthのIDを発行してやるやり方になってる。

Quickstart: Run a Search Console App in Python  |  Search Console API (Webmaster Tools API)  |  Google Developers

以下のページのサンプルプログラムだと結構ガッツリとデータを取るところまであって、 こっちはサービスアカウントの認証情報が書いてあるjsonファイルを読み込む方式でやってる。

Query your Google Search data  |  Search Console API (Webmaster Tools API)  |  Google Developers

当たり前だけど、基本的にGoogleのAPIは認証とかが共通化されてるので、僕はGoogle Analytics APIのサンプルプログラムの認証をそのまま持ってきました。

あ、あとサービスアカウントはSearch Consoleのメンバーに追加しとかなきゃだめ。

作ったもの

dim0627/searchconsole_notify: Check google search console lastmod script.

requirements.txtにあるやつをインストールして、

pip install -r requirements.txt

context.jsonに必要な情報を載っけて実行すればいけるはず。

{
  "SITE_URL": "https://example.com",
  "CLIENT_ID": "yourserviceaccount@privatenotify.iam.gserviceaccount.com",
  "KEY_FILE_LOCATION": "./secret.p12",
  "KEPT_FILE": "/tmp/searchconsole_lastmod_date",
  "RUN_COMMAND": "echo {regulated_value}"
}

あーそう、めんどくさくてp12ファイルでの認証にしちゃった。 あとrequirements.txtもあんまり確認せずに作ったから足りないかもなあ。

RUN_COMMANDは取ってきたデータをメールでも他のシェルでもなんか汎用的に使いたいなあと思って、 苦肉の策でPythonからos.systemを通してシェルを呼ぶようにしてしまった。危ないね。

僕はここにmailgunのcurlを叩くようにしてメールで飛ばすようにしてる。

あとはcronで1時間ごとにやっちゃえばとりあえず満足なんじゃなかろうか。