| Сводка | Автоматически отправляет URL новых и отредактированных публичных тем в протокол IndexNow, чтобы Bing, Yandex и другие поддерживающие поисковые системы могли обнаружить ваш контент за считанные минуты, а не ждать ползучего сканирования. | |
| Ссылка на репозиторий | github.com/imlotso/discourse-indexnow | |
| Руководство по установке | Как установить плагины в Discourse |
Также доступна статья на китайском языке с дополнительной информацией на моем форуме: sitetalk.net/t/topic/642.
Возможности
- Автоматически отправляет новые публичные темы и повторно отправляет их, если при редактировании меняется первый пост темы или ключевые свойства.
- Когда включены Локализация контента и параметр локали для сканера, локализованные URL тем автоматически включаются вместе с основным URL — с использованием реального параметра локали запроса Discourse (никогда не захардкожено).
- Отправляет основной URL и все существующие локализации вместе в одном пакетном запросе
urlListIndexNow, а не одним запросом на каждый URL. - Обратное заполнение истории: фильтрует темы по категории и диапазону дат, показывает предварительный просмотр совпавших результатов, а затем отправляет их одним пакетом — переиспользуя тот же пакетный движок, который автоматически разделяет отправки в соответствии с лимитом протокола в 10 000 URL.
- Ручная отправка: вставьте по одному URL в строке, чтобы отправить конкретные ссылки по запросу; внешние или неподходящие URL автоматически отфильтровываются.
- Ограничения на количество отправок в час/день с автоматическим отступом, когда IndexNow возвращает
429(учитываетRetry-After, если он присутствует). - Поддержка ротации ключей — предыдущий ключ остается действительным в течение 7-дневного переходного периода, чтобы незавершенные отправки не ломались.
- Встроенная проверка доступности вашего файла
/<key>.txt, отображаемая непосредственно в панели администратора. - Автоматически повторно отправляет (или исключает) темы, когда они перемещаются между категориями, или когда изменяется видимость/теги категории.
- Журналы отправки отслеживают ID пакета, локаль, 7-дневный тренд успеха/неудачи и разбивку причин неудач (ограничение частоты / ошибка ключа / несоответствие домена / другое).
- Все отправки выполняются асинхронно через Sidekiq и проходят через те же фильтры конфиденциальности, что и автоматические отправки — ничего не обходит правила исключения (личные сообщения, ограниченные категории, скрытые/удаленные темы, сайты с требованием входа).
- Пользовательский интерфейс администратора доступен на английском и упрощенном китайском языках.
Конфигурация
- Установите плагин (см. Руководство по установке выше) и пересоберите ваш контейнер.
- Перейдите в Админ > Плагины > discourse-indexnow.
- На вкладке Настройки нажмите Сгенерировать ключ (или вставьте существующий 32-символьный hex-ключ, который вы уже зарегистрировали где-либо).
- Отметьте поле Включить отправки IndexNow.
- Убедитесь, что ключ публично доступен по адресу:
Он должен возвращать HTTP 200 с ключом в виде обычного текста. Панель администратора также автоматически выполняет эту проверку и показывает кэшированный зеленый/красный статус рядом с «key.txt доступен».https://your-forum.example/<key>.txt - (Необязательно) На вкладке Журналы используйте панель Backfill (Обратное заполнение) для отправки исторических тем — выберите категорию и диапазон дат, нажмите Предпросмотр, чтобы увидеть, сколько тем совпало, а затем Отправить.
- (Необязательно) Используйте поле ручной отправки, чтобы вставить разовые 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 или ответы здесь.