ブログ記事を公開してから、検索エンジンにインデックスされるまでに数日かかることがあります。 AI検索サービスでも同様で、コンテンツの公開から引用されるまでにタイムラグが生じます。
IndexNowは、このタイムラグを解消するためのプロトコルです。 記事の公開や更新を検索エンジンにHTTPリクエストで即座に通知でき、対応する検索エンジンはクロールを優先的に実行します。
この記事では、IndexNowの仕組みから導入手順までを解説します。
IndexNowの仕組み
IndexNowは、Webサイトが検索エンジンに「このURLが更新されました」と通知するためのプロトコルです。 2021年にMicrosoftとYandexが共同で発表しました。
従来、検索エンジンがWebサイトの更新を知る方法は「クローラによる定期巡回」と「sitemap.xmlの読み取り」の2つでした。 どちらも検索エンジン側がサイトに来るのを待つ方式です。
IndexNowはこれを逆転させます。
| 方式 | 主導権 | 通知の速度 | サーバー負荷 |
|---|---|---|---|
| クローラ巡回 | 検索エンジン側 | 数時間〜数日 | クローラのアクセス分 |
| sitemap.xml | 検索エンジン側 | 数時間〜数日 | 低い |
| IndexNow | サイト側 | 数分〜数時間 | API呼び出し1回のみ |
通知は1回のHTTPリクエストで完結します。
POST https://api.indexnow.org/indexnow
Content-Type: application/json
{
"host": "example.com",
"key": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"urlList": [
"https://example.com/blog/new-article",
"https://example.com/blog/updated-article"
]
}
所有権の証明には、APIキーをサイトのルートにテキストファイルとして配置します。
検索エンジンは通知を受け取ると、https://example.com/{api-key}.txtの存在を確認してからクロールを実行します。
対応検索エンジンとGEO対策での意味
| サービス | 対応状況 | エンドポイント |
|---|---|---|
| Microsoft Bing | 対応 | https://www.bing.com/indexnow |
| Yandex | 対応 | https://yandex.com/indexnow |
| Naver | 対応 | https://searchadvisor.naver.com/indexnow |
| Seznam | 対応 | https://search.seznam.cz/indexnow |
| IndexNow共通 | 対応 | https://api.indexnow.org/indexnow |
| 非対応 | Google Search Console APIを使用 |
1つのエンドポイントに通知すれば、対応するすべての検索エンジンに情報が共有されます。
GoogleはIndexNowに非対応ですが、BingのインデックスはCopilot(Microsoft)のAI検索に利用されます。 Perplexityなどの一部のAI検索サービスもBingのインデックスを参照しているため、IndexNowでBingへの通知を早めることは、間接的にAI検索での掲載速度を改善します。
導入手順
手順1: APIキーの取得と配置
# UUID v4を生成
python3 -c "import uuid; print(uuid.uuid4())"
# 出力例: a1b2c3d4-e5f6-7890-abcd-ef1234567890
# キーファイルを配置
echo "a1b2c3d4-e5f6-7890-abcd-ef1234567890" > public/a1b2c3d4-e5f6-7890-abcd-ef1234567890.txt
手順2: 通知のテスト
# 単一URLの通知(GET)
curl "https://api.indexnow.org/indexnow?url=https://example.com/blog/test&key=a1b2c3d4-e5f6-7890-abcd-ef1234567890"
| ステータスコード | 意味 |
|---|---|
| 200 | 通知成功 |
| 202 | 通知受理(非同期処理) |
| 400 | リクエスト不正 |
| 403 | APIキー検証失敗 |
| 429 | レートリミット到達 |
CMS別の実装
WordPress
公式プラグイン「IndexNow」をインストール・有効化するだけで、記事の公開・更新時に自動通知されます。
手動実装の場合はpublish_postフックを使います。
function notify_indexnow($post_id) {
$post = get_post($post_id);
if ($post->post_status !== 'publish') return;
$url = get_permalink($post_id);
$api_key = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890';
wp_remote_get("https://api.indexnow.org/indexnow?url=" . urlencode($url) . "&key=" . $api_key);
}
add_action('publish_post', 'notify_indexnow');
Next.js
// lib/indexnow.ts
const INDEXNOW_KEY = process.env.INDEXNOW_API_KEY
export async function notifyIndexNow(urls: string[]) {
if (!INDEXNOW_KEY) return
const response = await fetch('https://api.indexnow.org/indexnow', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
host: 'example.com',
key: INDEXNOW_KEY,
urlList: urls,
}),
})
console.log(`IndexNow: ${response.status}`)
}
revalidate APIやWebhookの処理内でnotifyIndexNowを呼び出します。
GitHub Actionsでの自動化
name: Notify IndexNow
on:
push:
branches: [main]
paths: ['src/content/blog/**']
jobs:
notify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 2 }
- name: Get changed posts and notify
run: |
URLS=$(git diff --name-only HEAD~1 HEAD -- src/content/blog/ | \
sed 's|src/content/blog/||;s|\.md$||' | \
awk '{print "https://example.com/blog/"$0}' | \
jq -R -s 'split("\n") | map(select(length > 0))')
curl -X POST https://api.indexnow.org/indexnow \
-H "Content-Type: application/json" \
-d "{\"host\":\"example.com\",\"key\":\"${{ secrets.INDEXNOW_API_KEY }}\",\"urlList\":$URLS}"
Google Search Console APIとの併用
GoogleにはIndexing APIで別途通知します。 IndexNowとGoogle Indexing APIを組み合わせることで、主要な検索エンジンすべてに即時通知できます。
import { google } from 'googleapis'
export async function notifyGoogle(url: string) {
const auth = new google.auth.GoogleAuth({
keyFile: 'service-account.json',
scopes: ['https://www.googleapis.com/auth/indexing'],
})
const indexing = google.indexing({ version: 'v3', auth })
await indexing.urlNotifications.publish({
requestBody: { url, type: 'URL_UPDATED' },
})
}
運用上の注意点
通知はインデックス保証ではありません。 IndexNowの通知が成功しても、インデックスするかどうかの判断は検索エンジン側が行います。
実質的な更新があったURLのみ通知します。 同じURLを短時間に何度も通知してもレートリミットに到達するだけです。
削除したページも通知します。 検索エンジンはそのURLにアクセスし、404レスポンスを受け取ることでインデックスからの削除を処理します。
効果の測定
| 指標 | 測定方法 |
|---|---|
| インデックス速度 | Bing Webmaster Toolsの「URL検査」 |
| クロール頻度 | サーバーログのBot別アクセス数 |
| AI検索での掲載タイミング | Perplexity等で記事URLを検索 |
Bing Webmaster Toolsの「IndexNow」セクションで、送信したURLの処理状況を確認できます。
まとめ
IndexNowは、コンテンツの公開や更新を検索エンジンにリアルタイムで通知するプロトコルです。 導入は「APIキーの生成」「キーファイルの配置」「HTTP通知の送信」の3ステップで完了します。
Bingのインデックスを介してCopilotやPerplexityなどのAI検索にも間接的に影響するため、GEO対策としてコストに対して効果の大きい施策です。