Google Indexing APIをClaude Codeから自動実行することで、記事公開後のインデックス登録を通常の数日〜数週間から数分〜数時間に短縮できます。
- 要点1: GCPでサービスアカウントを作成し、Search Consoleにオーナー権限で追加する設定が必須
- 要点2: PythonスクリプトでAPIを呼び出すと申請から約2〜3分でGooglebotがクロールに来る事例あり
- 要点3: サイトマップ連携で最大100URL/リクエストの一括申請が可能。1日の上限は200リクエスト
対象: 記事公開後のインデックス速度を改善したいSEO担当者・開発者・Claude Code活用者
今日やること: GCPコンソールでサービスアカウントを作成し、Search Consoleにオーナーとして追加する
この記事の目次
Google Indexing APIをClaude Codeから自動実行すると、記事公開直後にGoogleへ即時通知を送れます。通常は数日〜数週間かかるクローリング待ちが、場合によっては数分〜数時間に短縮されます。
「記事を公開したのに、いつGoogleに拾われるかわからない」——SEOに取り組む多くの企業が抱える課題です。コンテンツの質を高めても、インデックスされなければ検索結果に表示されません。
この記事では、GCPのサービスアカウント設定からSearch Consoleへの権限追加、Pythonスクリプトの実装、そしてClaude CodeのWP公開ワークフローへの統合まで、一連の手順を実際の構築体験をもとに解説します。
Google Indexing APIとは?記事公開後のインデックスを加速する仕組み
Google Indexing APIは、Webページの追加・更新・削除をGoogleに直接通知するためのAPIです。通常のクローラーがサイトを定期的に巡回するのを「待つ」のではなく、こちらから積極的にGoogleへURLを送り込めます。
通常のGoogleインデックスに数日〜数週間かかる理由
Googleのクローラー(Googlebot)は、インターネット上の膨大なWebページを定期的に巡回し、新しいコンテンツを検出してインデックスに登録します。しかし、クロール頻度はサイトの規模・権威性・更新頻度によって大きく異なります。
| サイトの状態 | 一般的なインデックス待ち期間 |
|---|---|
| 権威性の高い大手サイト | 数時間〜1日 |
| 中規模の更新頻度の高いサイト | 数日〜1週間 |
| 新規・小規模サイト | 数週間〜1ヶ月 |
新しく立ち上げたメディアサイトや、更新頻度が低いコーポレートサイトでは、記事を公開してもGooglebotが来るまで1〜4週間かかることがあります。
Indexing APIを使うとどのくらい速くなるか
Indexing APIを使ってURLを送信すると、Googlebotの「フレッシュクロールスケジュール」に追加されます。Google公式ドキュメントによると、送信されたURLは通常数日以内にクロールされると説明されています。
実際の活用事例では、あるメディアサイトで記事公開後すぐにAPIでURL送信を行ったところ、送信から約2〜3分でGooglebotがクロールに訪問したことが確認されています。サイトの権威性やコンテンツの質によって効果は異なりますが、通常のクロール待ちと比べて大幅な短縮が見込めます。
ポイントGoogle Indexing APIのクォータは1日あたり200リクエストが上限です(デフォルト設定)。大量のURLを一括送信したい場合は、複数日に分けて送信するか、Googleへのクォータ引き上げ申請を検討してください。
事前準備|GCPとSearch Consoleの設定手順
Indexing APIを使い始めるには、Google Cloud Platform(GCP)でのサービスアカウント作成と、Google Search Consoleへのオーナー権限追加の2つの設定が必要です。
ステップ1|GCPプロジェクトでIndexing APIを有効化する
まずはGCPコンソールでIndexing APIを有効にします。
- Google Cloud Consoleにアクセスし、プロジェクトを選択(または新規作成)
- 左メニューから「APIとサービス」→「ライブラリ」を開く
- 検索欄に「Web Search Indexing API」と入力して検索
- 「Web Search Indexing API」をクリックして「有効にする」を押す
プロジェクトはサイト単位で管理することを推奨します。複数のサイトを運営している場合は、サイトごとにプロジェクトを分けると管理が明確になります。
ステップ2|サービスアカウントを作成してJSONキーを取得する
APIを呼び出す際の認証に使うサービスアカウントを作成します。
- 「APIとサービス」→「認証情報」を開く
- 「認証情報を作成」→「サービスアカウント」を選択
- サービスアカウント名(例:
indexing-sa)を入力して「作成して続行」 - ロール設定は不要(Search ConsoleへのオーナーはGSC側で設定するため)
- 作成されたサービスアカウントをクリックし、「鍵」タブから「鍵を追加」→「新しい鍵を作成」→JSON形式でダウンロード
ダウンロードしたJSONファイルには認証情報が含まれます。.gitignoreに追加し、リポジトリにコミットしないよう注意してください。macOSを使っている場合は、Keychainで管理するのが安全です。
ステップ3|Search Consoleにサービスアカウントをオーナーとして追加する(重要)
このステップが最も重要です。 サービスアカウントにSearch Consoleの「オーナー」権限を付与しないと、API呼び出し時に Permission denied エラーが発生します。
実際のあるサイト構築の現場でも、このステップを見落として権限不足のエラーに遭遇し、Google Search Consoleへのオーナー追加で即座に解決した事例があります。
設定手順:
- Google Search Consoleを開く
- 対象のプロパティを選択
- 左メニュー最下部の「設定」をクリック
- 「ユーザーと権限」→「ユーザーを追加」
- サービスアカウントのメールアドレス(例:
indexing-sa@your-project.iam.gserviceaccount.com)を入力 - 権限を「オーナー」に設定して追加
注意事項権限が「フル」や「制限付き」では不十分です。Indexing APIの利用には必ず「オーナー」権限が必要です。この点が一般的な解説記事で見落とされがちなポイントです。
\ Claude Codeの導入、何から始めればいいかわかります /
法人向けClaude Code個別指導の無料相談はこちらPythonスクリプトで単一URLをインデックス申請する
設定が完了したら、PythonでAPIを呼び出すスクリプトを実装します。
必要なライブラリとインストール方法
# venvを作成して依存パッケージをインストールpython3 -m venv /tmp/indexing-venv/tmp/indexing-venv/bin/pip install google-auth google-auth-httplib2 google-api-python-client
認証設定とスクリプトの実装
以下は1つのURLをIndexing APIに送信する基本スクリプトです。
#!/usr/bin/env python3"""Google Indexing API - 単一URL送信スクリプト"""import jsonimport sysfrom google.oauth2 import service_accountfrom googleapiclient.discovery import build# 設定SERVICE_ACCOUNT_FILE = "/path/to/your-service-account.json" # JSONキーのパスSCOPES = ["https://www.googleapis.com/auth/indexing"]def submit_url(url: str, action: str = "URL_UPDATED") -> dict: """ 指定URLをGoogle Indexing APIに送信する Args: url: 送信するURL action: URL_UPDATED(追加/更新)またはURL_DELETED(削除) """ credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES ) service = build("indexing", "v3", credentials=credentials) body = { "url": url, "type": action } response = service.urlNotifications().publish(body=body).execute() return responseif __name__ == "__main__": target_url = sys.argv[1] if len(sys.argv) > 1 else "https://example.com/" result = submit_url(target_url) print(f"送信完了: {json.dumps(result, indent=2, ensure_ascii=False)}")
スクリプトの実行と結果確認
# 単一URLを申請/tmp/indexing-venv/bin/python3 submit_url.py "https://nexa-corp.jp/your-article-slug/"
成功すると以下のようなレスポンスが返ってきます。
{ "urlNotificationMetadata": { "url": "https://nexa-corp.jp/your-article-slug/", "latestUpdate": { "url": "https://nexa-corp.jp/your-article-slug/", "type": "URL_UPDATED", "notifyTime": "2026-03-25T10:30:00Z" } }}
notifyTime が記録されていれば申請成功です。通常、この後24〜48時間以内にGooglebotがクロールに来ます。
サイトマップから複数URLを一括送信する方法
新サイト立ち上げ時や既存記事をまとめてリカバリーしたい場合は、サイトマップからURLを取得して一括申請するアプローチが効率的です。
XMLサイトマップからURL一覧を取得する
#!/usr/bin/env python3"""Google Indexing API - サイトマップ一括送信スクリプト"""import timeimport xml.etree.ElementTree as ETimport urllib.requestfrom google.oauth2 import service_accountfrom googleapiclient.discovery import buildSERVICE_ACCOUNT_FILE = "/path/to/your-service-account.json"SCOPES = ["https://www.googleapis.com/auth/indexing"]SITEMAP_URL = "https://your-site.com/sitemap.xml"def get_urls_from_sitemap(sitemap_url: str) -> list[str]: """サイトマップからURLを取得する""" with urllib.request.urlopen(sitemap_url) as response: tree = ET.parse(response) ns = {"sm": "http://www.sitemaps.org/schemas/sitemap/0.9"} urls = [loc.text for loc in tree.findall(".//sm:loc", ns)] return urlsdef batch_submit_urls(urls: list[str], delay: float = 0.5) -> list[dict]: """URLリストを順次送信する(クォータ管理付き)""" credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES ) service = build("indexing", "v3", credentials=credentials) results = [] for i, url in enumerate(urls, 1): try: body = {"url": url, "type": "URL_UPDATED"} response = service.urlNotifications().publish(body=body).execute() print(f"[{i}/{len(urls)}] 成功: {url}") results.append({"url": url, "status": "success", "response": response}) except Exception as e: print(f"[{i}/{len(urls)}] エラー: {url} - {e}") results.append({"url": url, "status": "error", "error": str(e)}) time.sleep(delay) # API連続呼び出しへの配慮 return resultsif __name__ == "__main__": urls = get_urls_from_sitemap(SITEMAP_URL) print(f"サイトマップから{len(urls)}件のURLを取得") results = batch_submit_urls(urls) success_count = sum(1 for r in results if r["status"] == "success") print(f"\n申請完了: {success_count}/{len(urls)}件 成功")
バッチ処理で最大100URL/リクエストに束ねる
上記のスクリプトは1URLずつ送信していますが、Google API Pythonクライアントのバッチリクエスト機能を使うと、最大100URLを1HTTPリクエストにまとめられます。大量のURLを処理する場合は、HTTPコネクション数を削減できてより効率的です。
1日200件のクォータを超えないための対策
| 戦略 | 内容 |
|---|---|
| 優先度付け | 新規公開記事を最優先。リライト記事は後回し |
| 日次分割 | 200件を超える場合は複数日に分けて送信 |
| クォータ監視 | GCPコンソールで残りクォータを定期確認 |
| クォータ引き上げ申請 | 大量申請が必要な場合はGoogleへ増量申請が可能 |
実際にあるメディアサイトでサイトマップ全URLを一括申請した際は、23件のURLをすべて問題なく送信することができました。サイト規模が小さいうちは1日の上限内で全URL申請が可能です。
\ 業務自動化のお悩み、プロが30分で整理します /
法人向けClaude Code個別指導の無料相談はこちらClaude CodeのWP公開ワークフローにIndexing APIを組み込む
Claude Codeのwp-publishスキルと組み合わせると、記事公開後のインデックス申請まで一気通貫で自動化できます。
wp-publishスキルとの連携イメージ
Claude CodeでのSEO記事制作は、以下のような自動化ワークフローで運用できます。
research(リサーチ) ↓outline(構成作成) ↓writing(記事執筆) ↓review(品質チェック) ↓thumbnail(サムネイル生成) ↓wp-publish(WordPress公開) ↓indexing(Googleインデックス申請) ← ここが今回追加するステップ
WP-CLIで記事を公開した直後に投稿IDとスラッグを取得し、そのURLをIndexing APIに送信する処理をスキルとして定義しておくことで、記事公開とインデックス申請をセットで実行できます。
記事公開後に自動実行するスクリプトの組み込み方
wp-publishスキル実行後、以下のコマンドをClaude Codeから呼び出します。
# WP公開後のインデックス申請(1コマンドで完結)source /tmp/indexing-venv/bin/activate && \python3 /path/to/submit_indexing.py "https://your-site.com/[slug]/"
また、Claude Codeのカスタムスキルとして実装する場合は、SKILL.mdに以下のような手順を定義します。
1. 記事.mdのfrontmatterからslugを取得2. URLを構築(https://[site-domain]/[slug]/)3. submit_indexing.pyを実行してIndexing APIに送信4. レスポンスを確認して成功/失敗をログに記録
実務での運用上の注意点
| 注意点 | 対応策 |
|---|---|
| 記事がまだ公開されていない場合はAPI送信不要 | wp-publishスキルの完了後に実行する |
| 下書き保存やプレビューのURLは送信しない | publishステータスを確認してから実行 |
| 同じURLを短期間に繰り返し送信しない | 送信ログを残してダブル送信を防ぐ |
| クォータ超過時はエラーログに記録 | 翌日分のキューに積んで次回実行 |
Claude Codeの導入や活用方法について、個別にご相談いただけます。「どの機能から使えばいいか」「自社業務への適用方法を知りたい」といった段階から対応しています。
よくある質問
Q. Google Indexing APIは一般のブログ記事にも使えますか?
Googleの公式仕様ではJobPosting(求人情報)やBroadcastEvent(ライブ動画)に使用が限定されています。ただし、実務では一般のブログ記事や解説記事のインデックス申請に使われているケースが多く、効果も多数報告されています。公式の推奨外の利用となるため、リスクを理解した上で活用してください。
Q. Search ConsoleのオーナーはAPIで追加できますか、手動設定が必要ですか?
Search ConsoleへのオーナーはGUIの管理画面から手動で追加する必要があります。APIで権限設定することはできません。GCPでサービスアカウントを作成した後、Search Consoleの「設定」→「ユーザーと権限」から手動追加してください。
Q. 1日に何件までインデックス申請できますか?
デフォルトのクォータは1日200リクエストです。200件を超える場合は、GCPコンソールからGoogleにクォータ引き上げを申請できます。申請はGoogleのレビューが必要で、承認まで数日かかる場合があります。
Q. Claude Codeを使えばWP記事公開後に自動でインデックス申請できますか?
可能です。Claude CodeのWP公開ワークフロー(wp-publishスキル)の後にIndexing APIへの送信スクリプトを追加することで、記事公開とインデックス申請を1つの自動化フローとして実行できます。Claude CodeのカスタムSKILL.mdにスクリプト実行手順を定義するだけで組み込めます。
\ AI活用の「次の一手」を一緒に考えませんか /
法人向けClaude Code個別指導の無料相談はこちらまとめ
本記事では、Claude CodeからGoogle Indexing APIを活用して記事公開後のインデックス登録を自動化する方法を解説しました。要点を整理します。
- Indexing APIの効果: 通常数日〜数週間かかるクロール待ちを、場合によっては数分〜数時間に短縮
- 必須設定: GCPサービスアカウント + Search Consoleへの「オーナー」権限追加(この順番が重要)
- 実装: Pythonスクリプトで
URL_UPDATEDタイプを送信。1日200件のクォータに注意 - 一括送信: サイトマップからURL取得→バッチ処理で複数URLを効率的に申請
- Claude Code統合: wp-publishスキルの後処理としてスクリプトを組み込み、完全自動化を実現
まず試すべきことは、GCPコンソールでのサービスアカウント作成と、Search Consoleへのオーナー権限追加です。この2ステップが完了すれば、Pythonスクリプトで即日APIを使い始められます。
記事公開フローにインデックス申請まで統合することで、SEOの最後の1ステップも自動化が完成します。
内部リンク: SEO記事の完全自動生産ライン — KW選定から公開まで10ステップ / Claude Code × WordPressで記事公開を完全自動化
Claude Codeの導入・活用をサポートします
株式会社Nexaでは、Claude Codeを活用した業務自動化の個別指導・企業研修を提供しています。非エンジニアの方でも3ヶ月で業務自動化を実現できるプログラムです。「何から始めればいいかわからない」という段階からご支援いたします。





