Discourse-indexnow — トピックの作成または編集時にBingとYandexへ即時通知

:information_source: 概要 新規および編集されたパブリックトピックのURLをIndexNowプロトコルに自動的に送信し、BingやYandexなど参加する検索エンジンがクロールを待つのではなく、数分でコンテンツを発見できるようにします。
:hammer_and_wrench: リポジトリリンク github.com/imlotso/discourse-indexnow
:open_book: インストールガイド Discourseにプラグインをインストールする方法

さらに詳細な背景が記載された中国語の解説記事も、私のフォーラムで利用可能です: sitetalk.net/t/topic/642


機能

  • 新規のパブリックトピックを自動的に送信し、編集によってトピックの最初の投稿や主要プロパティが変更された場合にも再送信を行います。
  • Content Localizationとそのクローラーロケールパラメータが有効な場合、メインURLと並んでローカライズされたトピックURLが自動的に含まれます(Discourseの実ロケールクエリパラメータを使用し、ハードコードはしません)。
  • 1つのURLごとのリクエストではなく、プライマリURLと既存のすべてのローカライズバージョンを単一のIndexNow urlList バッチリクエストとしてまとめて送信します。
  • 履歴データのバックフィル: トピックをカテゴリと日付範囲でフィルタリングし、一致する結果をプレビューしてから、1つのバッチとして送信します。プロトコルの10,000 URL制限を超える送信を自動的に分割する同じバッチングエンジンを再利用します。
  • 手動送信: 1行に1つのURLを貼り付けて、オンデマンドで特定のリンクを送信します。外部または送信対象外のURLは自動的にフィルタリングされます。
  • 1時間ごと/1日ごとの送信上限があり、IndexNowが429を返す場合(存在する場合はRetry-Afterを尊重して)自動バックオフを行います。
  • キーローテーションのサポート — 前のキーは7日間の移行期間中も有効なままであり、進行中の送信が破綻しないようにします。
  • /<key>.txt ファイルの到達性チェックが組み込まれており、管理パネルに直接表示されます。
  • トピックがカテゴリ間で移動された場合、またはカテゴリの可視性/タグが変更された場合、トピックを自動的に再送信(または除外)します。
  • 送信ログは、バッチID、ロケール、7日間の成功/失敗トレンド、および失敗理由の内訳(レート制限 / キーエラー / ドメイン不一致 / その他)を追跡します。
  • すべての送信はSidekiqを介して非同期で実行され、自動送信と同じプライバシーフィルターを経由します — 除外ルール(プライベートメッセージ、制限付きカテゴリ、非公開/削除されたトピック、ログイン必須のサイト)をバイパスするものはありません。
  • 管理UIは英語と簡体字中国語で利用可能です。

設定

  1. プラグインをインストールし(上記のインストールガイドを参照)、コンテナを再構築します。
  2. 管理 > プラグイン > discourse-indexnow に移動します。
  3. 設定 タブで、キーを生成 をクリックします(または、他の場所で登録済みの32文字の16進数キーを貼り付けます)。
  4. IndexNow送信を有効にする チェックボックスにチェックを入れます。
  5. キーが以下でパブリックに到達可能であることを確認します:
    https://your-forum.example/<key>.txt
    
    HTTP 200を返し、キーがプレーンテキストとして表示されるはずです。管理パネルはこのチェックを自動的に実行し、「key.txt にアクセス可能」の横にキャッシュされた緑/赤のステータスを表示します。
  6. (オプション)ログ タブで、バックフィル パネルを使用して履歴トピックを送信します — カテゴリと日付範囲を選択し、プレビュー をクリックして一致するトピックの数を確認してから、送信 をクリックします。
  7. (オプション)手動送信 フィールドを使用して、通常の自動フローの外で即時送信するために、1行に1つのURLを貼り付けます。

ログタブには、7日間の成功/失敗トレンドチャートと失敗理由の内訳も表示されるため、送信がレート制限されているのか、キーの不一致で拒否されているのか、それとも別の理由で失敗しているのかを一目で判断できます。

設定項目

名前 説明
indexnow_enabled プラグインのメインスイッチ。login_required がオンになっている間は有効にできません。後から login_required がオンにされると自動的に無効になります。
indexnow_api_key 送信の認証に使用される現在の32文字の16進数キー。
indexnow_submit_on_create 新規のパブリックトピックが作成された際に自動的に送信する。
indexnow_submit_on_edit 最初の投稿やトピック属性が変更された際に自動的に再送信する。
indexnow_excluded_category_ids パブリックであっても常に除外する追加のカテゴリ。
indexnow_hourly_limit 1時間あたりに送信するURLの最大数。
indexnow_daily_limit 1日あたりに送信するURLの最大数。

既知の制限事項

  • IndexNowには削除通知がありません — トピックの削除は監査目的でログに記録されるのみで、送信は行われません。
  • GoogleはIndexNowプロトコルに参加していません。
  • ローカライズされたURLは、クローラーロケールパラメータが有効でかつそのトピックに実際にローカライズが存在する場合にのみ送信されます。

これは独立した非公式プラグインであり、Discourseチームによって保守されていません。私のフォーラムで本番環境として動作しており、すべてのプッシュ/PRでCI付きのRSpecテストカバレッジがあります。GitHub issuesまたはここでの返信によるバグ報告や機能リクエストをお待ちしております。

「いいね!」 1