実践ログ|2026年8月8日

Claude CodeでSearch Console APIを叩いて検索データを分析した記録

Search Consoleの画面は、ページ送りが効かない・行数を増やせない・セッションが切れると最初からやり直し、と分析には向いていません。そこでClaude CodeにAPIクライアントを書かせ、複数サイトの検索データをまとめて集計できるようにしました。このログは、その構築の流れと、実際に分析して当初の方針が2回ひっくり返った経緯を残すものです。

このサイトは Anthropic や Claude の公式サイトではありません。実践ログでは、認証情報・サーバー構成・非公開の運用情報は伏せ、一般化した作業内容と考え方のみを掲載しています。

やろうとしたこと

運営している複数サイトの検索パフォーマンスを横断で比較し、「次にどのサイトのどこへ手を入れるか」を数字で決めたい、というのが目的でした。Search Consoleの画面でも1サイトずつなら見られますが、サイト数が増えると比較になりません。

そこでClaude Codeに「Search Console APIを叩いて、指定サイトの全クエリ・全ページを取得するスクリプトを書いて」と頼みました。認証方式の選定から実装まで対話で詰め、結果として次のような道具立てになりました。

  • 共通クライアント──サイト一覧の取得、期間と集計軸を指定したデータ取得、URL検査、サイトマップ状態の取得をまとめた土台
  • 1サイト詳細──全クエリ・全ページを取得し、「あと少しで1ページ目」の語と「上位なのにクリックされていない」語を自動で抜き出す
  • 全サイト一括──登録している全プロパティの実績とサイトマップの状態を一覧化する

認証方式の選び方でつまずいた

最初はOAuthで作り始めましたが、トークンの期限切れでスクリプトが止まるのが分析作業と相性が悪く、サービスアカウント方式に切り替えました。長時間の集計を回す用途では、人の再ログインを前提としない方式が正解でした。

ただしサービスアカウントには一手間があり、各プロパティの「ユーザーと権限」にサービスアカウントのメールアドレスを追加する必要があります。この追加操作はAPIには無く画面での手作業になるため、プロパティ数が多いほど地味に時間を取られます。ここは自動化を試みず、素直に手で入れるのが早いと割り切りました。

いちばん危なかった落とし穴──クエリ次元の合計は真値ではない

今回いちばんの収穫は、この罠に気づけたことでした。

Search Console APIで集計軸に「クエリ」を指定して合計すると、それを「サイトの表示回数」と思ってしまいがちです。ところがGoogleは検索数の少ないクエリを匿名化して返さないため、クエリ軸の合計は実際の値をかなり下回ります。今回の実測では、クエリ軸の合計は真値の26〜31%にしかなりませんでした。

実際、このサイトの90日実績を最初「8クリック/95表示」と読み違えていて、集計軸を「日付」にして取り直したら20クリック/366表示でした。4倍近く違います。

救いは、比較するサイト同士で捕捉率が近いため「比率」は壊れないことでした。今回も1ページあたり表示の差は8.4倍→7.0倍と動いた程度で、結論そのものは生き残りました。比較の結論は生き残るが、絶対値を語った瞬間に間違う──この整理に落ち着きました。真値が要るときは集計軸を「日付」にするのが対処です。

分析して方針が2回ひっくり返った

ここが、画面をぼんやり眺めていたら絶対に辿り着かなかった部分です。

1回目。「10〜20位を押し上げる」をやめた。SEOの定石なので当然やるつもりでしたが、順位帯ごとに表示量とCTRを集計したら、その帯には13語・388表示しかありませんでした。全部5位まで上げても増えるのは約19クリック/90日で、サイト全体の2%です。手つかずで残っていたのは、そこに賞金が無かったからでした。

代わりに見えたのが「10位以内なのにCTR5%未満」の11語で807表示という帯です。こちらを直す方が3倍大きく、しかも新規記事ではなくtitleとdescriptionの修正で済みます。順位帯ごとの表示量を先に出してから、どの帯を触るか決めるという順番の大切さを実感しました。

2回目。「エラー系の記事を量産する」をやめた。このサイトは「claude 障害」「claude 復旧」といった障害系のクエリで1〜4位を取れていたので、同じ調子でClaude Codeのエラー系も狙えると考えていました。ところがキーワード調査を重ねると、Claude Code側のエラー語はほぼ全部が月10〜100件規模で、広告主もいませんでした。チャット製品の利用者数と開発ツールの利用者数を混同していたわけです。エラー系は個別ページ化せず、1本にまとめる判断に変えました。

Claude Codeに任せて良かった点・注意した点

  • 良かった:試行錯誤の速さ──「順位帯ごとに集計して」「10位以内で低CTRのものを抜き出して」といった思いつきを、その場で使い捨てスクリプトにしてもらえます。分析は仮説を何度も変える作業なので、この速さがそのまま結論の質になりました
  • 良かった:ライブラリの事故の復旧──途中でAPIのライブラリが壊れて全ツールが起動しなくなりましたが、エラーの読解から再インストールまで任せて数分で復旧しました
  • 注意した:出てきた数字を鵜呑みにしない──上記のクエリ次元の罠は、まさにAIが出した集計をそのまま信じかけた場面でした。結論が方針を左右する数字は、必ず別の集計軸で検算するのを習慣にしました
  • 注意した:認証情報を会話に出さない──鍵ファイルはパスで参照させ、中身を表示させない運用にしています

次にやること

この分析の結論として、Claude Code関連の記事群を作り直す方針を決めました。その実装側の記録はキーワード調査から12ページを設計した記録に分けて残しています。サイトへの反映作業そのものについてはFTP経由でサイトを編集した記録にまとめました。

FAQ

プログラミングができなくてもAPIを使えますか?

今回の作業でこちらが書いたコードは1行もありません。やったのは「何を知りたいか」を日本語で伝えることと、出てきた数字を疑うことだけです。ただし後者は必須で、丸投げでは今回の落とし穴に気づけませんでした。

APIでインデックス登録もできますか?

Indexing APIは求人情報と配信イベント向けで、通常のページには使えません。インデックス登録のリクエストは画面での手作業が必要です。URL検査のAPIは1日あたりの上限がある点も、まとめて処理したい時の制約になります。

検索データは当日分も取れますか?

おおむね2日ほど遅れて確定します。スクリプト側で終了日を数日前に設定しておかないと、直近の空データを見て「急に落ちた」と誤解します。

同じことをCodexでもできますか?

できます。今回Claude Codeを選んだのは、仮説を変えながら試行錯誤する作業だったためです。この使い分けの考え方はCodexとの比較ページにまとめています。