あなたは1時間前に価格ページを更新しましたが、ChatGPTはまだ先月の価格を引用しています。このギャップの原因はクロールの遅延です。検索エンジンは独自のスケジュールで変更を発見するため、場合によっては数日かかることがあります。IndexNowを使用すると、URLが変更された瞬間に通知を送信できるため、BingやYandexが数日ではなく数分で再クロールを行います。BingのインデックスはChatGPTのウェブブラウジングやMicrosoft Copilotにフィードされるため、インデックスの高速化はAI回答内でのブランドの新鮮さに直接影響を与えます。
このガイドでは、キーの生成、キーのファイルのホスティング、GETおよびPOSTによるURLの送信、公開時の送信の自動化、そして実際に機能したかの確認まで、セットアップ全体を説明します。
重要なポイント
- IndexNowはMicrosoft BingとYandexがサポートするオープンプロトコルです。1回の通知で参加しているすべてのエンジンに通知され、Cloudflareのようなプラットフォームが代わりに送信することもできます。 - BingのインデックスがChatGPTのウェブブラウジングやMicrosoft Copilotを支えているため、GEOにとって重要です。Bingに新しいページを迅速に取り込むことで、最新情報で引用される可能性が高まります。 - セットアップは3つのステップで構成されます:キーを生成する(16進数、8~128文字)、`https://yourdomain.com/<key>.txt`にホストする、そして`https://api.indexnow.org/indexnow`にURLを送信する。 - IndexNowはBingとYandexに通知しますが、Googleには通知しません。また、クロールを高速化しますが、インデックス登録やAI回答への即時反映を保証するものではありません。 - 最大の利点は、公開や更新のたびに送信を自動化し、その後Bing Webmaster Toolsで確認することです。
ステップ1: IndexNowキーを生成する
キーは、サイトの所有者であることを証明する共有シークレットです。16進数の文字列(`a`~`f`および`0`~`9`)で、8~128文字の長さである必要があります。
コマンドラインから生成する:
- macOSまたはLinuxの場合:`openssl rand -hex 16` - Nodeを使用する場合:`node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"`
Bing Webmaster Tools内のキー生成ツールを使用することもできます。これにより、キーが生成され、登録されます。この値を保存してください。すべての場所で再利用します。典型的なキーは`a1b2c3d4e5f60718293a4b5c6d7e8f90`のようになります。
ステップ2: キーファイルをホストする
検索エンジンは、キーにちなんで名付けられたテキストファイルを取得することで所有権を確認します。`<your-key>.txt`という名前のファイルを作成し、その内容全体をキーそのものにして、サイトのルートに配置します:
- ファイル名:`a1b2c3d4e5f60718293a4b5c6d7e8f90.txt` - 内容:`a1b2c3d4e5f60718293a4b5c6d7e8f90` - 場所:`https://yourdomain.com/a1b2c3d4e5f60718293a4b5c6d7e8f90.txt`
次に進む前に、公開されていることを確認してください:
`curl https://yourdomain.com/a1b2c3d4e5f60718293a4b5c6d7e8f90.txt`
レスポンスボディは正確にキーであり、`200`ステータスと`text/plain`で提供される必要があります。必要に応じて、ドメイン内の別の場所にキーをホストし、POSTペイロード内の`keyLocation`でそれを指すこともできますが、ルートパスが最も簡単です。
ステップ3: GETで単一のURLを送信する
最も簡単なテスト方法はGETリクエストです。ドメインとキーを置き換えてください:
`curl "https://api.indexnow.org/indexnow?url=https://yourdomain.com/blog/new-pricing&key=a1b2c3d4e5f60718293a4b5c6d7e8f90"`
`200`または`202`のレスポンスは、送信が受け入れられたことを意味します。GETは単発の通知に便利です。例えば、単一の投稿を公開した直後などです。ただし、1回の呼び出しで1つのURLしか送信できません。
ステップ4: POSTで複数のURLを送信する
バッチ更新の場合、JSONボディを持つPOSTを同じエンドポイントに送信します。これは、ビルドやCMSに組み込むべき方法です。
`curl -X POST "https://api.indexnow.org/indexnow" -H "Content-Type: application/json" -d '{ "host": "yourdomain.com", "key": "a1b2c3d4e5f60718293a4b5c6d7e8f90", "keyLocation": "https://yourdomain.com/a1b2c3d4e5f60718293a4b5c6d7e8f90.txt", "urlList": [ "https://yourdomain.com/blog/new-pricing", "https://yourdomain.com/products/flagship", "https://yourdomain.com/about" ] }'`
`urlList`内のすべてのURLは、宣言した`host`に属している必要があります。確認されていないドメインのURLを送信することはできません。バッチは適切なサイズ(プロトコルに基づき1リクエストあたり最大10,000 URL)に保ち、実際に変更されたページのみを送信してください。



