Search Console確認をAIで5倍速化|7回の処理時間とトークン推移の実測録
作成日:

Search Console確認をAIで5倍速化|7回の処理時間とトークン推移の実測録


論旨

Google Search Console(GSC)の API 連携やインデックス台帳、生成 AI 引用レポートなど、便利な分析ツールを増やしていくと、思わぬ落とし穴にはまります。「今日の GSC 何かある?」と AI エージェントに一言聞いただけなのに、AI が巨大化したレポート群を次々と読み漁り、確認だけで 6 分以上・約 200 万トークンも溶かしてしまう 「レポート肥大化の逆説」 です。

結論からお伝えすると、毎日の定例確認を最速・最小コストに保つ秘訣は、重い集計と異常判定を Pure Rust と macOS launchd の毎朝自動診断へ押し出して 2.4KB の要約 1 枚に凝縮し、生 JSON 直読み禁止と SQLite 階層索引を組み合わせること にあります。実際に全 7 回の確認ターンを生ログから追跡した結果、所要時間は 6.3分 ➔ 1.2分(5.2倍速)、新規入力トークンは 58.2%削減 され、さらに 100 件のライブ URL 検査を走らせた朝でもトークン消費が一切跳ね上がらない構造へ到達しました(なお、もうひとつの定例業務である API自動収集と記事作成の全16回・5世代進化の折れ線グラフ実測録 もあわせて公開しています)。

合わせて読みたい深まる関連情報
対象となる方
  • Search Console やアクセス解析の自動化スクリプトを組んだものの、AI に状況確認を頼むと毎回何分も待たされる方

  • 記事数やレポート項目が増えるにつれて、AI コーディングツールの週間クォータや API トークン消費がじわじわ重くなっている方

  • CLI の単体高速化・定期バッチ・SQLite 階層化が 「実際のチャット 1 ターンの時間とトークン」にどう効くのか定量データで見たい方

結論:毎日のGSC確認を蝕む「レポート肥大化」の罠

当サイト(現在公開 706記事)では、Google Search Console API と URL Inspection API を連携させ、検索順位・CTR の変化やインデックス登録状況を毎日チェックしています。ところが、分析機能を充実させていく途中で「ある違和感」に気づきました。

質問するおじさん

最初はサッと答えが返ってきとったのに、全記事インデックス台帳や 90 日データ、生成 AI 引用レポートを増やしてから、「気になる点あった?」と聞くだけでずいぶん待たされるようになった時期があったんよね。

解説ナビゲーター

まさにそこが「自動化ツールの盲点」でした! プログラム側が親切に何種類もの詳細な Markdown 台帳や CSV・JSON を出力するようになると、真面目な AI ほど「見落としがあってはいけない」と考えて、何百キロバイトもあるレポートを端から順番に read_file でめくり始めてしまうんです。

全7セッションの初回ターン同条件比較ルール

本当に各改修でどれだけ速くなり、どれだけトークンが減ったのかを確かめるには、感覚ではなく生ログの一次計測が欠かせません。ただし、チャット履歴を丸ごと 1 会話単位で比べてしまうと、「確認だけで終わった日」と「確認のあとそのまま記事を 1〜3 本執筆・改修した日」が混ざり、正しい比較ができなくなります。

そこで今回は、Antigravity がローカルに記録している Protocol Buffers(Protobuf)形式の実行ログ(StepMetadata)を Pure Rust 製アナライザ(kb-search brain --max-turn 1)でデコードし、全 7 回のセッションすべてで「最初の質問(GSC 確認依頼)を投げてから初回レポート回答が完了するまでの Turn #1 のみ(サブエージェント 0 体)」 を厳密に切り出して同条件で比較しました。

処理時間と総トークン変化の2軸折れ線グラフ

2026 年 11 月 3 日の API 導入初期(当時 539 本規模)から、本日 11 月 10 日朝(691 本規模)までの全 7 回における 「AI 純稼働時間(左軸:分)」 と 「総プロンプト評価量(右軸:万トークン、キャッシュ読込込み)」 の推移が次の折れ線グラフです。

GSC定例確認(初回Turn #1)における処理時間と総プロンプト量の推移
レポート肥大化で11/07に6.3分・192.2万tokのピークへ達した後、Pure Rust統合+朝自動要約で1.2分・67.8万tokへ急降下
定例確認時間:6.3分 → 1.2分 (5.2倍速)総Prompt量:192.2万 → 67.8万tok (-64.7%)
AI純稼働時間(Turn #1)(分・左軸)総プロンプト評価量(Cache込)(万tok・右軸)
02468[分]0100200300[万tok]3.1分3.1分4.3分6.3分1.2分3.0分7.1分109.4万tok123.8万tok96.0万tok192.2万tok67.8万tok134.1万tok103.4万tok43ツール乱発ピークRust+自動要約(1.2分)URL検査100件ライブ実行11/03API初期11/04SEO網確認11/05台帳追加11/07肥大ピーク11/09朝自動要約後11/09夕複数バッチ11/10朝生API100件
※全7セッションともサブエージェント0体・初回質問に対する回答完了時点(--max-turn 1)のProtobuf実測値です。11/10朝のみ自動巡回前のライブAPI取得+URL検査100件(通信40.3秒)を含みます。

グラフとあわせて、各ターンのステップ数・ツール呼び出し内訳・新規(Fresh)入力トークン・キャッシュ読込・AI 出力トークンの全実測値も一覧表で整理します。

日時 (JST) / ID先頭 当時の運用世代・確認内容 AI純稼働時間 推論Steps / Tool数 新規Fresh入力 Cache読込 (Hit率) 総Prompt評価量 AI出力tok
11/03 18:23
cefb0c26
初期(539本) :GSC API 初期分析確認 3.1 分 12 steps / 24 tools 177,909 tok 915,959 (83.7%) 1,093,868 tok 11,955 tok
11/04 20:05
1a7d84f2
拡大期 :クローラー巡回・SEO網確認 3.1 分 13 steps / 37 tools 120,570 tok 1,117,738 (90.3%) 1,238,308 tok 13,607 tok
11/05 09:49
11fa8bb2
機能追加期 :URL検査・全記事台帳追加 4.3 分 13 steps / 22 tools 111,680 tok 848,180 (88.4%) 959,860 tok 15,500 tok
11/07 23:03
7a07e7ff
肥大化ピーク(650本) :全レポート横断確認 6.3 分 14 steps / 43 tools 265,592 tok 1,656,037 (86.2%) 1,921,629 tok 27,126 tok
11/09 08:51
638720fd
完成形(オフライン即答) :朝8:15自動診断後 1.2 分 9 steps / 20 tools 110,967 tok 567,233 (83.6%) 678,200 tok 6,696 tok
11/09 17:05
a7999708
手動バッチ直後 :第4〜8弾バッチ結果確認 3.0 分 13 steps / 38 tools 186,769 tok 1,154,074 (86.1%) 1,340,843 tok 13,372 tok
11/10 07:38
41b3ded5
691本・自動巡回前 :ライブAPI+URL検査100件込 7.1 分 17 steps / 26 tools 111,879 tok 922,172 (89.2%) 1,034,051 tok 8,932 tok

11 月 7 日夜(7a07e7ff)には公開記事が 650 本へ増え、1 回で 43 個ものツール(うち read_file 24 回) を叩いて 6.3 分・総プロンプト 192.2 万トークン まで膨れ上がっていました。それが Pure Rust 統合と朝 8:15 自動要約を導入した直後の 11 月 9 日朝(638720fd)には、わずか 1.2 分(75 秒)・9 ステップ・総プロンプト 67.8 万トークン(64.7%減) へと一気に 5 分の 1 以下に縮まっています。

なぜ最終回は時間だけ伸びてトークンが跳ねないのか

ここで先ほどの折れ線グラフの右端(11/10朝)をご覧になると、きっと鋭い疑問が浮かぶはずです。

質問するおばさん

ちょっと待って! 11 月 9 日の朝に 1.2 分まで下がったのに、今日の朝(11 月 10 日)は緑色の時間の線がまた 7.1 分に上がっとるじゃないの! これじゃあ元に戻ってしまったんじゃない?

解説ナビゲーター

いいえ、そこが今回の計測で一番面白い大発見だったんです! クォータ消費の本体である「新規(Fresh)入力トークン」と「AI 出力・思考トークン」だけを抜き出した 2 本目の折れ線グラフを見ると、まったく逆の現象が起きていることが一目でわかります!

新規入力とAI出力トークンの2軸折れ線グラフ

コンテキストキャッシュ(Context Caching)が効かない純粋なコンテキスト増分である 「新規 Fresh 入力トークン(左軸:万トークン)」 と、最も計算コストが重い 「AI 出力・思考トークン(右軸:千トークン)」 の推移をプロットしたのが次のグラフです。

新規Fresh入力トークンとAI出力・思考トークンの推移(Turn #1)
11/10朝は100件のライブAPI検査を実行したにもかかわらず、新規トークン消費は11.2万tokの底に張り付いたまま跳ね上がらない
Fresh入力削減:26.6万 → 11.1万tok (-58.2%)ライブ時誤差:+912 tok (+0.8%で横ばい)
新規Fresh入力トークン(万tok・左軸)AI出力・思考トークン(千tok・右軸)
0102030[万tok]0102030[千tok]17.8万tok12.1万tok11.2万tok26.6万tok11.1万tok18.7万tok11.2万tok12.0千tok13.6千tok15.5千tok27.1千tok6.7千tok13.4千tok8.9千tok生データ読込で26.6万tok爆発オフライン最速(11.1万tok)ライブ100件でも11.2万tok維持!11/03API初期11/04SEO網確認11/05台帳追加11/07肥大ピーク11/09朝自動要約後11/09夕複数バッチ11/10朝生API100件
※11/09朝(オフライン即答:110,967 tok)と11/10朝(ライブAPI 100件検査込:111,879 tok)の新規入力トークン差はわずか912トークン(0.8%)です。

ご覧の通り、青い実線(新規 Fresh 入力)もオレンジの破線(AI 出力)も、11 月 10 日朝はまったく跳ね上がっていません。オフライン最速だった 11 月 9 日朝の 110,967 tok に対し、今朝は 111,879 tok ── その差はわずか +912 tok(誤差 0.8%) で、ピーク時(265,592 tok)と比べて 57.9%削減 された底値にピタリと張り付いています。

朝8時15分の境界線と時間・トークンの完全分離

なぜ今朝だけ「時間は 7.1 分かかったのに、トークンは一切増えなかった」のでしょうか。理由は 声をかけた時刻と外部 API の物理通信時間 にあります。

⏰ 08:51 確認(1.2分)と 07:38 確認(7.1分)を分けた決定的な違い
  1. 11月9日 08:51 JST(638720fd:1.2分) : 毎朝 08:15 に macOS の launchd がバックグラウンドで自動実行するオンライン定期診断がすでに終わっていたため、AI は生成済みの軽量サマリー(2.4KB)を読むだけで 75 秒で即答完了 しました。

  2. 11月10日 07:38 JST(41b3ded5:7.1分) : 自動診断が走る 08:15 より 37 分早く 確認したため、手元のデータは昨晩のままでした。そこで AI がその場でオンライン定期診断を起動し、28 日間・90 日間の検索データ取得に加えて 新着・未登録記事 100 件の URL Inspection API ライブ照会(20 並列でも Google 側の応答待ちに実測 40.3秒) とサンドボックス外実行の承認・非同期通知待機を経た上で最新結果を報告しました。

  3. 時間とトークンの完全分離(デカップリング)に成功 : 以前の設計なら、その場で API バッチを走らせると大量のログや巨大 JSON(246KB〜1.3MB)がコンテキスト窓へ流れ込み、トークン量まで 26 万超へ爆発していました。現在は「外部通信と全件突合は Pure Rust が裏で済ませ、AI は圧縮された結果サマリーだけを読む」設計になっているため、たとえ 100 件のライブ検査を回しても AI の脳内トークン消費は一切汚れなくなった のです。

数字を劇的に変えた3段階のアーキテクチャ改修

ここまでの改善は、一足飛びに魔法のツールを作ったわけではありません。日々の運用でぶつかったボトルネックを 1 つずつ潰していった 3 段階のボトムアップ改修 が、そのまま折れ線グラフの減少カーブになっています。

GSC定例確認とSEO改善を軽量化した3段階の基盤進化
第1段階(11/06〜08)
Pure Rust 完全統合

旧Node.js版のnpm読込1.3秒を撤廃し、全記事台帳+2段SVG推移グラフ生成を0.15秒(10倍以上高速)へ短縮。

第2段階(11/08〜09朝)
朝8:15自動診断と要約化

launchdで毎朝5大SEO健康診断を無人実行し、2.4KBの要約1枚へ凝縮。生JSON丸読みを禁止し確認1.2分化を達成。

第3段階(11/09夜〜10)
階層索引とprep一括化

SQLite階層目次でルール・コードの丸読みを断ち、GSC改善下調べもprep gsc 1発(出力73%減)へ集約。

ランタイムの刷新、定期バッチによる事前要約、そしてAI往復を減らす階層・一括化の3層で無駄を削ぎ落としました。

第1段階:脱Node.jsで台帳生成を10倍高速化

最初の転機は、Node.js(fetch_gsc_analytics.mjs)で書いていた取得・集計スクリプトを、外部クレート依存ゼロの Pure Rust(kb-search gsc-fetch / gsc-audit)へ統合したことです。

Node.js 版では googleapis と gray-matter の 2 パッケージを import するだけで 1,283.4 ms(約 1.3 秒) かかっていましたが、RAM ディスク上のネイティブ機械語バイナリにしたことで、公開 706記事 すべての URL 台帳・CSV・2 段カラー SVG 推移グラフの生成まで含めて 152.0 ms(0.15 秒) で終わるようになりました。

GSC関連ローカル処理の改修前後スピード比較(ミリ秒)
各枠とも上段『従来』・下段『現在』の順で密着配置(小さいほど高速)
※桁差視認用・平方根スケール台帳+SVG生成:1,283ms超 → 152msGSC改善下調べ:10回呼出 → prep 1発 (118.5ms)
従来(Node.js / 個別CLI直列)現在(Pure Rust 統合 / prep一括)
GSC上位3記事の改善下調べ従来:10コマンド個別+git検問重複 ➔ 現在:prep gsc --top 3 1発集約
6,453 ms118.5 ms出力も73.2%削減
従来
現在
全記事SEO健康診断(FM・リンク切れ・孤立監査)従来:旧Node.js版 ➔ 現在:Pure Rust単一バイナリ走査
約 2,000 ms545.5 ms約3.6倍高速
従来
現在
全記事インデックス台帳+2段SVGグラフ生成従来:npm読込だけで1,283.4ms ➔ 現在:CSV/JSON/SVG全完了
1,283.4 ms+152.0 ms10倍以上高速化
従来
現在
※平方根スケールで描画しています。prep gsc の 118.5ms は本日(691記事規模)の実作業中に計測した一次実測値です。

第2段階:毎朝8時15分の自動診断と2.4KB要約化

ローカル CLI が 0.15 秒になっても、AI が 246KB のクエリ生 JSON や 1.3MB の全記事ステータス JSON を直接 read_file してしまえば、コンテキスト窓は一瞬でパンクします。

そこで macOS 標準の launchd で毎朝 08:15(スリープ時は復帰直後)に kb-search gsc-audit を無人実行させ、以下の 5 大項目と主力エース・お宝候補を _local_db/gsc/gsc_routine_latest.md(わずか 2.4 KB・32 行) へアトミック出力する仕組みに切り替えました。

🩺 2.4KB の日次サマリーに凝縮されている 5 大自動監査
  • 守りの異常ゼロ確認 : URL 検査エラー(404 / Soft404 / noindex 事故)、.htaccess 未対応の未知 URL、内部リンク切れ・孤立記事、フロントマター欠損、7 日間クリック急落(-55% 以上)の有無を 1 行で判定し、異常時のみ 不具合.txt へ自動起票します。

  • 攻めのお宝提案とクールダウン制御 : 検索 1 ページ目圏内で低 CTR の記事を抽出しつつ、直近 14 日以内にタイトル改善済みの記事は「効果測定中」として自動除外し、無駄な連続いじりを防ぎます。

  • 大型生 JSON の直読み禁止ルール : AI には「大型生 JSON を直接 read_file せず、必ず 2.4KB の日次サマリーと専用サブコマンドを使うこと」を明文化し、11 月 9 日朝の 1.2 分・67.8 万トークン を達成しました。

第3段階:SQLite階層索引とprep一括カルテ化

さらに 11 月 9 日夕方(a7999708:複数バッチ手動実行後の確認で 3.0分・18.7万tok)のログを振り返ると、複数のレポートやルール文書・記事構造を確認する際にまだ細かな read_file が重なっていました。

そこで同日夜に SQLite 階層ナビゲーション(kb-search tree) と 前後一括サンドイッチコマンド(prep gsc / gemini-gate finish) を投入しました。今朝のセッション(41b3ded5)で GSC 仕様確認が kb-search docs 1 発(21.91ms)で済み、上位 3 記事の改善カルテも prep gsc --top 3 1 発(118.51ms・標準出力 36,288 B ➔ 9,742 B で 73.2%削減)に収まったのは、この第 3 段階が効いているためです。

浮いた余力で即解決!発射台リンクの2ミリ秒解剖

定例確認が軽く・速くなる最大のメリットは、人間も AI も「ただ現状を確認するだけで疲弊せず、その場で一歩踏み込んだ改善まで一気に片付けられること」にあります。

実際に今朝のセッションでも、公開 691 本中 644 本(登録率 93.2%・検証録に限れば 315 本中 309 本で 98.1%!) がインデックス登録済みと確認した直後、「残る未登録記事の発射台リンクを点検しよう」という話になりました。その際もファイルを 1 本ずつ開いて探すのではなく、SQLite の article_links テーブルへ Pure Rust の kb-search sql を投げるだけで、わずか 1.4〜2.8 ミリ秒 で次の 3 つの構造ボトルネックがあぶり出されました。

🔍 2ミリ秒の SQL 診断で見抜いた『クローラー視点の3大詰まり』と即日処置
  1. 再クロール保留記事の弱点特定 : 昨日 Googlebot が再巡回した上で保留中だったデータセンター記事を調べると、被リンク 9 本中 3 本(親ハブ含む)が未登録記事であり、さらに本文中の公的出典インラインリンクと視覚図解が 0 個だった真因が即判明しました。その場で 4 つの一次出典リンクと比較図解、暖房・電力系主力エース記事からの双方向リンクを補強しました。

  2. 未登録の「章ハブ片方向ボトルネック」解消 : 未登録記事の 3 割超が特定の 2 つの章に集中していた原因は、親である章ハブ自体が「子記事へ大量に発リンクしているのに、登録済み子記事からの逆リンクが少ない片方向状態」で未登録になっていたためでした。

  3. 新着クラスタ内循環へのハシゴ架け : 検証録で未登録だった新着 2 本も、リンク元が「今週公開したばかりの新着記事同士」に閉じていたため、検索上位(平均 3.6 位・CTR 22.2%)の既存エース記事から gemini-gate finish --related-from で逆リンクを一括注入し、関連 22 記事の検問(379.2ms)から本番デプロイまで数分で完遂できました。

ノルウェージャンフォレストキャット

人間が朝からログの海に溺れず、おいしいコーヒーを飲んでいる間に「詰まっている水路」だけをピンポイントで開通できるのが一番にゃ。

母艦マシンの1日単価とAI再現プロンプト

こうした「毎朝の launchd 自動巡回」「SQLite 知識 DB のインメモリ検索」「Pure Rust 2 大バイナリのミリ秒実行」をクラウドの有料バッチサーバーを使わず維持費 0 円で回せているのは、手元の母艦 Mac に十分なメモリ(64GB)と RAM ディスクを持たせているからです。

5年稼働の64GB母艦と技術書の1日あたり快適コスト

大容量メモリの Mac や専門書は購入時の金額だけを見ると高く感じますが、毎日 AI を 24 時間働かせる基盤として耐用年数(5 年=1,825 日)で割ると、1 日あたりの実質負担はごくわずかです。

  • 現行 64GB クラスの Mac mini 母艦(約 30 万円前後想定) :5 年間毎日稼働させた場合、1 日あたり 約 164 円(自販機の缶コーヒー 1 本分)でクラウド実行枠の課金や I/O 待ちストレスをゼロにできます。

  • 中古 27 インチ 5K iMac + Crucial 64GB メモリ増設(合計約 12 万〜15 万円前後・推論試算) :5K 広大画面で折れ線グラフや Search Console 台帳を並べて確認でき、5 年換算なら 1 日あたり 約 66〜82 円 という圧倒的なコストパフォーマンスになります。

  • Rust の体系的な定番技術書(約 5,000 円前後) :AI が書いた Rust コードの所有権やメモリ安全性を人間側で監督する一生モノの地図として、5 年換算で 1 日 約 3 円未満 で元が取れます。

Apple Mac mini(M4 Pro 等 Appleシリコン Pro系チップ・64GBユニファイドメモリ構成)

Apple Mac mini(M4 Pro 等 Appleシリコン Pro系チップ・64GBユニファイドメモリ構成)

【中古・整備済品】Apple iMac 27インチ Retina 5K (2020年モデル / Intel最終世代・メモリ自己増設対応)

【中古・整備済品】Apple iMac 27インチ Retina 5K (2020年モデル / Intel最終世代・メモリ自己増設対応)

【Intel Mac増設用】Crucial iMac 27インチ(2019/2020)・ノートPC用 メモリ DDR4-2666 SO-DIMM (16GB×2 / 32GB×2)

【Intel Mac増設用】Crucial iMac 27インチ(2019/2020)・ノートPC用 メモリ DDR4-2666 SO-DIMM (16GB×2 / 32GB×2)

オライリー・ジャパン『プログラミングRust 第2版』

オライリー・ジャパン『プログラミングRust 第2版』

最上位AIに定例確認の軽量化を組ませる指示プロンプト

ご自身のブログや Web サイト運用でも、「毎日のアクセス解析や Search Console チェックで AI の応答が重くなってきた」と感じたら、以下のプロンプトを参考に段階的な軽量化を組ませてみてください。ファイル構造や既存スクリプトを壊さないよう、必ず 『Gemini 4 Argon』または同等以上の最上位推論モデル を選び、いきなり書き換えさせず事前調査と計画合意から進めるのが鉄則です。

🤖 コピペ用:最上位AIに『定例確認の自動要約化&トークン削減』を組ませる指示文

以下の記事の設計思想(重い API 取得・全件突合の定期バッチ分離、2〜3KB の日次要約 Markdown 化、大型生 JSON 直読み禁止、初回確認ターンのトークン計測)を参考にして、私の現在のプロジェクトの Search Console / 分析確認ワークフローを軽量化したいです。

参考記事:https://lab.chihouzakki.com/blog/review/gsc-daily-check-token-time-linechart-rust-evolution/

【厳守ルール】

  1. いきなりコードを書き換えたりファイルを削除したりせず、まず現在の私の環境にある分析スクリプト・出力ファイルサイズ・AI が毎回読んでいるファイルを調査して報告してください。
  2. その上で、①定期実行(launchd / cron 等)で事前生成する軽量サマリー(3KB 以内)の設計案、②生データの誤読込を防ぐルール追記案、③段階的な高速化(必要に応じた Rust / SQLite 化)の実装計画を提示し、私の合意を得てから 1 段階ずつ実装してください。

まとめ:機能を増やすほどAIに読ませる量は減らす

最後に、全 7 回の Search Console 定例確認ターンの追跡から得られた教訓をまとめます。

📌 GSC定例確認の高速化・省トークン化 3つの結論
  1. 自動化レポートを増やすほど「AI の拾い読みコスト」を疑う : 詳細な CSV や JSON をそのまま AI に探させると、機能追加に比例してツール呼び出しが 40 回超・約 200 万トークンへ膨張します。

  2. 毎朝の無人診断 + 2.4KB 要約 1 枚で「5.2倍速・トークン58%減」 : 異常判定とクールダウン選別を Pure Rust × launchd に任せれば、日常確認は 75 秒・最小トークンで終わります。

  3. 外部 API の通信待ちと脳内コンテキスト消費を分離する : 生データ直読みを禁じて SQLite 階層索引と prep カルテを通すことで、朝一番に 100 件のライブ URL 検査を走らせてもトークン消費は 0.8% 差の横ばいに封じ込められます。

毎日のルーチン確認が 1 分ちょっとで片付くようになると、朝の時間にゆとりが生まれ、本当に頭を使うべき「次の企画」や「構造的なリンク改善」をじっくり楽しめるようになります。ぜひ手元の AI 運用でも、「分析機能を増やしたら、AI に読ませる入り口は逆に小さく絞る」 という引き算の設計を取り入れてみてくださいね!

朝の定例チェックが1分で終わって安心し、日向で気持ちよさそうに熟睡する猫