Index Now
IndexNowプロトコルを使用して、Drupalウェブサイトでコンテンツが作成、更新、または削除された際に、自動的にURLを検索エンジンに送信します。
index_now
インストール
composer require 'drupal/index_now:^3.1'
composer require 'drupal/index_now:^2.0'
概要
Index Nowモジュールは、コンテンツの変更が発生した際にウェブサイトオーナーが検索エンジンに即座に通知できるIndexNowプロトコルを実装しています。これにより、検索エンジンのクローラーが自然に変更を発見するのを待つ必要がなくなります。
ノードやタクソノミータームが作成、更新、または削除されると、モジュールは設定された検索エンジンのIndexNowエンドポイントに自動的にHTTPリクエストを送信します。2021年11月以降、互換性のあるすべての検索エンジンは送信されたURLを相互に共有するため、1つのエンジンに通知すれば、参加しているすべてのエンジンに同時に通知されます。
このモジュールは7つの検索エンジンをサポートしています:Amazon、Microsoft Bing、IndexNow(汎用)、Naver、Seznam.cz、Yandex、Yep。どのコンテンツタイプとタクソノミーボキャブラリーがインデックスリクエストをトリガーするか、どのイベント(作成、更新、削除)を処理するかを細かく制御できます。
セキュリティとドメイン検証のため、モジュールはUUIDベースの一意のAPIキーを生成し、検索エンジンはこれを使用してインデックスリクエストを処理する前にサイトの所有権を確認します。
Features
- ノードが作成、更新、または削除された際に検索エンジンへ自動的にURLを送信
- タクソノミータームが作成、更新、または削除された際に検索エンジンへ自動的にURLを送信
- 7つの主要な検索エンジンをサポート:Amazon、Microsoft Bing、IndexNow、Naver、Seznam.cz、Yandex、Yep
- 検索エンジンのドメイン検証用にUUIDベースのAPIキーを生成
- 特定のコンテンツタイプをインデックスから除外
- 特定のタクソノミーボキャブラリーをインデックスから除外
- 特定のイベント(挿入、更新、削除)をインデックストリガーから除外
- パスエイリアスのサポート - 新しいパスエイリアスが作成された際にインデックスをトリガー
- 多言語対応 - URL構築時にエンティティの言語を尊重
- アクセス制御 - 匿名ユーザーがアクセス可能なコンテンツのみをインデックス
- カスタムURL送信用のプログラマティックAPIサービス
- デバッグとモニタリング用の詳細ログモード
- APIキー再生成用のDrushコマンド
Use Cases
ニュースサイトの即時検索エンジンインデックス
時間的に重要なコンテンツを頻繁に公開するニュースウェブサイトは、Index Nowを使用して、検索エンジンのクローラーを待つことなく、数分以内に新しい記事が検索結果に表示されるようにできます。編集者が速報ニュースを公開すると、URLは即座にすべての主要な検索エンジンに送信されます。
ECサイトの商品更新
在庫や価格が頻繁に変更されるオンラインストアは、Index Now(Index Now Commerceモジュールと組み合わせて)を使用して、商品の更新を検索エンジンに通知し、ショッピング検索結果に正確な情報が表示されるようにできます。
コンテンツ移行の通知
ウェブサイトの再構築やコンテンツの移行時に、Index Nowは更新されたURLと削除されたコンテンツが検索エンジンのインデックスに迅速に反映されるようにし、検索結果でのリンク切れを防ぎます。
コンテンツタイプによる選択的インデックス
ウェブサイトでは、記事やニュースなどの公開コンテンツタイプを即座にインデックスし、スタッフプロフィールや内部アナウンスなどの内部コンテンツタイプを除外したい場合があります。除外設定により、どのコンテンツがインデックスをトリガーするかを細かく制御できます。
API経由のカスタムURLインデックス
開発者はIndexNowサービスをプログラム的に使用して、標準のノードやタクソノミーターム以外のURL(カスタムルートや外部ページジェネレーターなど)を送信できます:\Drupal::service('index_now.indexnow')->sendRequest($custom_url);
Tips
- Config Splitを使用して、Index Nowが本番環境でのみアクティブになるようにしてください - 検索エンジンはlocalhostやステージングサーバーをクロールできません
- 初期設定中に詳細モードを有効にして、インデックスリクエストが正常に送信されていることを確認し、その後ログノイズを減らすために無効にしてください
- 2021年11月以降、すべてのIndexNow対応検索エンジンがURLを共有するため、1つの検索エンジンを選択するだけですべてに通知されます
- 多言語サイトでは、Index Nowは自動的にエンティティの言語を尊重し、正しい言語固有のURLを送信します
- コンテンツをインデックスするには、匿名ユーザーがアクセス可能である必要があります - モジュールは匿名ユーザーが表示できないコンテンツを自動的にスキップします
- カスタム実装にはAPIサービスを使用してください:\Drupal::service('index_now.indexnow')->sendRequest($url);
- 検索エンジンに通知する前にコンテンツをレビューしたい場合は、「insert」イベントを除外することを検討してください - 更新は引き続きインデックスをトリガーします
Technical Details
Admin Pages 1
/admin/config/services/index_now
検索エンジンの選択、コンテンツタイプの除外、タクソノミーの除外、ログオプションなど、Index Nowモジュールの設定を構成します。APIキーのステータスが表示され、キーがない場合はこのページから生成できます。
権限 1
Hooks 5
hook_ENTITY_TYPE_insert (path_alias)
新しいパスエイリアスが作成された際にトリガーされます。PathAliasOperationsを呼び出して、基になるエンティティのインデックスをトリガーします。
hook_ENTITY_TYPE_update (node)
ノードが更新された際にトリガーされます。更新されたノードのインデックスリクエストを検索エンジンに送信します。
hook_ENTITY_TYPE_delete (node)
ノードが削除された際にトリガーされます。URLをインデックスから削除するよう検索エンジンに通知します。
hook_ENTITY_TYPE_update (taxonomy_term)
タクソノミータームが更新された際にトリガーされます。更新されたタームのインデックスリクエストを検索エンジンに送信します。
hook_ENTITY_TYPE_delete (taxonomy_term)
タクソノミータームが削除された際にトリガーされます。URLをインデックスから削除するよう検索エンジンに通知します。
Drush Commands 1
drush index_now:keygenerate
Index Nowドメイン検証用の新しいUUIDベースのAPIキーを生成します。新しいキーは設定に保存され、出力に表示されます。
Troubleshooting 6
/admin/config/services/index_now にアクセスしてAPIキーが生成されていることを確認してください。キーが存在しない場合は、「APIキーを生成」をクリックするか、「drush index_now:keygenerate」を実行してください。また、モジュールが本番環境でのみ有効になっていることを確認してください(ステージング/ローカルではなく)。
ブラウザで /index_now_api_key_{YOUR_API_KEY}.txt にアクセスしてAPIキーファイルがアクセス可能であることを確認してください(実際のUUIDキーに置き換えてください)。ページはAPIキーをプレーンテキストとして返す必要があります。
/admin/config/services/index_now の設定で、コンテンツタイプが除外リストに含まれていないことを確認してください。また、新しいコンテンツがインデックスをトリガーする必要がある場合、「エンティティ作成時」イベントが除外されていないことを確認してください。
Index Now設定で「詳細モード」を有効にしてください。デフォルトでは、エラーと警告のみがログに記録されます。詳細モードを有効にすると、成功したインデックスリクエストもログに記録されます。
モジュールはインデックスに送信する前に、コンテンツが匿名ユーザーにアクセス可能かどうかを自動的にチェックします。非公開コンテンツがインデックスされている場合は、コンテンツの権限を確認して、匿名ユーザーがコンテンツを表示できないようにしてください。
「drush index_now:keygenerate」を実行して新しいAPIキーを生成するか、管理設定ページから生成してください。
Security Notes 4
- APIキーは設定に保存され、検索エンジンの検証用に公開URLパスで公開されます - これは設計によるもので、IndexNowプロトコルで必要です
- 「configure index now」権限は「アクセス制限」としてマークされており、信頼できる管理者にのみ付与する必要があります
- モジュールは匿名ユーザーがアクセス可能なコンテンツのみをインデックスし、非公開コンテンツが誤って検索エンジンに公開されることを防ぎます
- APIキー検証エンドポイントは設計上公開されています。検索エンジンがインデックスリクエストを受け入れる前にドメイン所有権を確認する必要があるためです