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.


Возможности

  • Автоматически отправляет новые публичные темы и повторно отправляет их, если при редактировании меняется первый пост темы или ключевые свойства.
  • Когда включены Локализация контента и параметр локали для сканера, локализованные URL тем автоматически включаются вместе с основным URL — с использованием реального параметра локали запроса Discourse (никогда не захардкожено).
  • Отправляет основной URL и все существующие локализации вместе в одном пакетном запросе urlList IndexNow, а не одним запросом на каждый URL.
  • Обратное заполнение истории: фильтрует темы по категории и диапазону дат, показывает предварительный просмотр совпавших результатов, а затем отправляет их одним пакетом — переиспользуя тот же пакетный движок, который автоматически разделяет отправки в соответствии с лимитом протокола в 10 000 URL.
  • Ручная отправка: вставьте по одному URL в строке, чтобы отправить конкретные ссылки по запросу; внешние или неподходящие URL автоматически отфильтровываются.
  • Ограничения на количество отправок в час/день с автоматическим отступом, когда IndexNow возвращает 429 (учитывает Retry-After, если он присутствует).
  • Поддержка ротации ключей — предыдущий ключ остается действительным в течение 7-дневного переходного периода, чтобы незавершенные отправки не ломались.
  • Встроенная проверка доступности вашего файла /<key>.txt, отображаемая непосредственно в панели администратора.
  • Автоматически повторно отправляет (или исключает) темы, когда они перемещаются между категориями, или когда изменяется видимость/теги категории.
  • Журналы отправки отслеживают ID пакета, локаль, 7-дневный тренд успеха/неудачи и разбивку причин неудач (ограничение частоты / ошибка ключа / несоответствие домена / другое).
  • Все отправки выполняются асинхронно через Sidekiq и проходят через те же фильтры конфиденциальности, что и автоматические отправки — ничего не обходит правила исключения (личные сообщения, ограниченные категории, скрытые/удаленные темы, сайты с требованием входа).
  • Пользовательский интерфейс администратора доступен на английском и упрощенном китайском языках.

Конфигурация

  1. Установите плагин (см. Руководство по установке выше) и пересоберите ваш контейнер.
  2. Перейдите в Админ > Плагины > discourse-indexnow.
  3. На вкладке Настройки нажмите Сгенерировать ключ (или вставьте существующий 32-символьный hex-ключ, который вы уже зарегистрировали где-либо).
  4. Отметьте поле Включить отправки IndexNow.
  5. Убедитесь, что ключ публично доступен по адресу:
    https://your-forum.example/<key>.txt
    
    Он должен возвращать HTTP 200 с ключом в виде обычного текста. Панель администратора также автоматически выполняет эту проверку и показывает кэшированный зеленый/красный статус рядом с «key.txt доступен».
  6. (Необязательно) На вкладке Журналы используйте панель Backfill (Обратное заполнение) для отправки исторических тем — выберите категорию и диапазон дат, нажмите Предпросмотр, чтобы увидеть, сколько тем совпало, а затем Отправить.
  7. (Необязательно) Используйте поле ручной отправки, чтобы вставить разовые URL, по одному в строке, для немедленной отправки вне обычного автоматического потока.

Вкладка Журналов также показывает график тренда успеха/неудачи за 7 дней и разбивку причин неудач, поэтому вы можете сразу определить, ограничиваются ли отправки по частоте, отклоняются из-за несоответствия ключа или по какой-либо другой причине.

Настройки

Название Описание
indexnow_enabled Главный переключатель плагина. Не может быть включен, пока активен login_required, и автоматически отключается, если login_required будет включен впоследствии.
indexnow_api_key Текущий 32-символьный hex-ключ, используемый для аутентификации отправок.
indexnow_submit_on_create Автоматически отправлять, когда создается новая публичная тема.
indexnow_submit_on_edit Автоматически повторно отправлять, когда меняется первый пост или атрибуты темы.
indexnow_excluded_category_ids Дополнительные категории, которые всегда следует исключать, даже если они публичные.
indexnow_hourly_limit Максимальное количество URL, отправляемых в час.
indexnow_daily_limit Максимальное количество URL, отправляемых в день.

Известные ограничения

  • В IndexNow нет уведомления об удалении — удаления тем только логируются в целях аудита, но не отправляются.
  • Google не участвует в протоколе IndexNow.
  • Локализованные URL отправляются только тогда, когда параметр локали сканера включен и для этой темы действительно существует локализация.

Это независимый неофициальный плагин — он не поддерживается командой Discourse. Он работает в производственной среде на моем собственном форуме, имеет покрытие тестами RSpec с CI при каждом пуше/PR, и я буду признателен за любые отчеты об ошибках или запросы фич через GitHub issues или ответы здесь.

1 лайк