SEO -

[Index Now 使い方] 検索エンジン「Bong」にページ更新通知をするPHPサンプルコード

目次

  1. Index Now で検索エンジンにページ更新通知を行う
  2. IndexNowを使うサイトの準備
  3. IndexNow 検索エンジンBingにページ更新通知を行うPHP
  4. 本当に検索クローラーがすぐにやってくる?

Index Now で検索エンジンにページ更新通知を行う

[Index Now 使い方] Bing用ページ更新通知PHP

Index Nowとは、検索エンジンのMicrosoft Bing、Yandex、Seznam.cz、Naverなどが採用している、ウェブサイト上でコンテンツが作成、更新、削除されたときに、検索エンジンにリクエストを送信するモジュール(仕組み)。通常、検索エンジンはサイト上のサイトマップ(xml)を読み取ってサイト内をクロールして、その結果をインデックスするんですが、クロールの頻度にはばらつきがあって、せっかく新しい有意義なページを作っても検索エンジンのクロールが遅いとなかなか検索結果に反映されません。

でもこのIndex Nowを利用すれば、検索エンジンのクローラーの自動巡回を待たずにクロールをリクエストできるので、サイトマップを作って待つだけよりも非常に早くページのインデックス化が期待できます。

IndexNowの通知はWordPressなどではプラグインがあって簡単に導入できるのですが、私のようにWordPressを使ってない自作ウェブサイトでは、自分でプログラムを組んで検索エンジンに通知する、もしくは通知用URLにアクセスして通知させる必要があります。

そこで今回は、IndexNowのモジュールを使って、Microsoftの検索エンジン「Bing」にページの更新通知を行うPHPサンプルコードを紹介。IndexNowの通知を自分でやりたい人は参考にどうぞ。


IndexNowを使うサイトの準備

BingにIndexNowでページ更新通知を送る前準備として、BingのIndexNowページでAPIキーを作成し、txtファイルをダウンロードしてサイトのルートディレクトリにアップロードしておきます。

IndexNowは、ページ更新通知の際にサイトのルートディレクトリにあるAPIキー.txtを認証して通知を受け取る仕組みになっているので、まずはこの作業を行っておきます。


IndexNow 検索エンジンBingにページ更新通知を行うPHP

APIキーをサイトルートに置いたら、あとはPHPコードなどを使ってページの更新通知を行います。そのときに使える「IndexNowで検索エンジンBingにページ更新通知を行うPHPサンプルコード」は下記となります。

%H%function bingnow($urls){
*t*if(is_string($urls)){
*t**t*$urls=[$urls];
*t*}
*b**t*$post="https://www.bing.com/indexnow";
*t*$seachengine="www.bing.com";
*t*$key="yourAPIKey"; //APIキー
*t*$site="yoursite.com"; //サイトのトップURL
*b**t*$param=[
*t**t*'host'=>$site,
*t**t*'key'=>$key,
*t**t*'keyLocation'=> "https://".$site."/".$key.".txt",
*t**t*'urlList' => $urls
*t*];
*b**t*$header=['Content-Type: application/json; charset=utf-8','Host: '.$seachengine];
*b**t*$opt=[
*t**t*'http' => [
*t**t**t*'method'=>'POST',
*t**t**t*'header' => implode("\n",$header),
*t**t**t*'content' => json_encode($param),
*t**t**t*'ignore_errors' => true,
*t**t**t*'protocol_version' => '1.1'
*t**t*]
*t*];
*b**t*file_get_contents($post, false, stream_context_create($opt));
*t*$statusCode = http_response_code();
*b**t*return $statusCode;
}%H%

このPHPサンプルコードは一番簡単な file_get_contents 関数でRequest header を付けてBingのindexnowを読み込んで、ページ更新通知を送るものになっています。

$key にはサイトトップに置いたAPIキーを、$site には自分のサイトドメイン(www.example.comなど。https://部分は入れない)を設定してください。

関数の変数 $urls には更新通知をしたいページURlを入れれば単独ページを更新通知してくれますが、配列形式で複数のURLを入力すれば複数ページをまとめて更新通知を送ってくれ、更新通知が終わったら、最後に http レスポンスコードを返してくれます。

単純なプログラムになっているので、直感的にもわかりやすいと思うので、あとは自由に使いやすいようにカスタマイズしてください。


本当に検索クローラーがすぐにやってくる?

このBingのIndexNowを実践してみたときに、本当にBingのクローラーがすぐにやってくるのかというのが気になるところですが、実際にやってみたところ、既存のすでにBingにインデックスされているページのクロールは早いのですが、新しいページには数日経ってからやってくるぐらいでした。

本来であれば新しいページの通知を送信すれば、すぐにクローラーがやってきて即座にインデックス化してくれる…というのが理想なのですが、実際は新しいページには結構な時間が掛かって検索クローラーがやってくるのが実情のようです。

ただ、サイトマップを作ってクローラーがそれを読み込むのを待つよりは早いと思うので、SEO的にはやらないよりはやったほうがいいぐらいの感覚で、このIndexNow対応実装をすると良いと思います。