Webサイトを作ったら、検索結果に表示されるよう、検索エンジンに登録を依頼するとよいでしょう。
変更を検索結果へ早く反映するには、検索エンジンに
インデックス登録のリクエスト
を送ることが大切です。従来はサイトマップの提出や手動の登録依頼が中心でしたが、
IndexNow
という標準プロトコルで通知を自動化できるようになりました。
特にNaverは2023年からIndexNowを正式にサポートしており、開発者がページを検索に反映させやすくなりました。今回は公式ドキュメントをもとに、IndexNowの流れとNaverに連携する手順を整理します。
- 検索エンジンにすばやくインデックス登録を依頼できます。
- sitemap.xmlがなくても、URLの変更を通知できます。
- 複数の検索エンジンに
一度に
リクエストを送れます。
IndexNowに対応する代表的な検索エンジンには、次のものがあります。
IndexNowの基本動作は次のとおりです。
キーの生成と認証
サイトの所有者であることを示すために、固有のキーを作り、サイトのルートにアップロードします。
URLを送信する
ページを作成または更新したとき、そのURLをIndexNow APIへPOSTで送信します。
検索エンジンに反映される
検索エンジンが通知を受け取り、URLをクロールして検索結果に反映します。
まず固有のキーを作ります。キーには文字、数字、ハイフンが使え、長さは8〜128文字です。
ここではBingで生成します。
Bing - IndexNow↗を開き、次のようにキーを作ります。
形式は
abc123... のようになります。生成したら、キーと同じ名前のtxtファイルをWebサイトのルートにアップロードします。
abc123....txt
このファイルには https://yourdomain.com/abc123... からアクセスできる必要があります。別のディレクトリに置くこともできますが、ここではルートへの配置を推奨します。
URLを1つだけ送る場合はGETを使えます。URLはクエリ文字列で渡します。
https://<searchengine>/indexnow?url=url-changed&key=your-key
例えば https://yourdomain.com/updated-page を通知するなら、次のようにリクエストします。
https://<searchengine>/indexnow?url=https://yourdomain.com/updated-page&key=abc123...
複数のURLをまとめて送る場合はPOSTを使います。TypeScriptの例です。
import axios from 'axios'
const INDEXNOW_API = '<searchengine-host-url>'
async function sendToIndexNow(urls: string[], key: string) {
await axios.post(INDEXNOW_API, {
host: 'yourdomain.com',
key,
keyLocation: `https://yourdomain.com/${key}`,
urlList: urls
})
}
この関数にURLの一覧とキーを渡すと、検索エンジンに通知されます。1回で最大10,000件を送れます。必要なら、HTTPとHTTPSのURLを混在させることもできます。
Naver Search Advisorと連携する 🔗
{
"host": "yourdomain.com",
"key": "naver-issued-key",
"keyLocation": "https://yourdomain.com/naver-issued-key",
"urlList": [
"https://yourdomain.com/updated-page"
]
}
IndexNowを使うときによくある問題と対処をまとめます。
- キーファイルを開けない場合は、ファイル名と配置先を確認します。
- 400または403が出る場合は、リクエスト形式の誤りや認証失敗が考えられます。
- NaverとBingには別々のキーを使うことも、同じキーを使うこともできます。
ブラウザからIndexNowを呼ぶと、CORSエラーが出ることがあります。そのため、サーバーから直接リクエストする方法が適しています。例えば、Node.jsサーバーでaxiosを使う場合は次のとおりです。
import axios from 'axios'
const INDEXNOW_API = '<searchengine-host-url>'
async function sendToIndexNow(urls: string[], key: string) {
await axios.post(INDEXNOW_API, {
host: 'yourdomain.com',
key,
keyLocation: `https://yourdomain.com/${key}`,
urlList: urls
})
}
これでCORSの問題を避けられます。サーバーから送るのが、より安全で効率的な方法です。
curl -X POST -H "Content-Type: application/json" -d '{
"host": "yourdomain.com",
"key": "naver-issued-key",
"keyLocation": "https://yourdomain.com/naver-issued-key",
"urlList": [
"https://yourdomain.com/updated-page"
]
}' https://api.searchadvisor.naver.com/indexnow
この形式でリクエストを送れます。手早く試すのに便利です。Postmanなどのツールを使う方法もあります。
IndexNowは、サイトの変更を検索結果に早く反映するのに役立ちます。Naverが正式に対応したことで、検索最適化が必要な韓国のサイト運営者にも便利になりました。
Search Advisorでのキー発行とAPIリクエストには設定が必要ですが、一度済ませればコード1行で登録を依頼でき、作業の効率を高められます。
- 更新を検知する処理とIndexNowをつなぎ、通知を自動化する。
- sitemap.xmlを維持しながらIndexNowを併用すると、インデックスの漏れを減らせます。
- GoogleはまだIndexNowをサポートしていません。今後の動向も確認していきましょう。