| Сводка | Автоматически отправляет публичные URL тем при создании, редактировании, удалении и ответах в протокол IndexNow, чтобы Bing, Yandex и другие совместимые поисковые системы могли обнаружить или удалить ваш контент в течение минут, не дожидаясь сканеров. | |
| Репозиторий | github.com/imlotso/discourse-indexnow | |
| Руководство по установке | Как установить плагины в Discourse |
Также доступна статья на китайском языке с дополнительной информацией на моем форуме: sitetalk.net/t/topic/642
Возможности
- Автоматическая отправка новых публичных тем; повторная отправка при изменении первого сообщения или критических атрибутов темы.
- Отправка при ответе: Автоматически отправляет URL с пагинацией (например,
?page=3) при публикации новых ответов, с настраиваемым временем ожидания (cooldown) для каждого URL для предотвращения спама. - Автоматическая отправка URL тем при удалении, чтобы помочь поисковым системам обнаружить ошибки 404/410 и быстро удалить их из выдачи.
- Автоматически группирует локализованные URL тем, когда активны локализация контента и параметры запроса локали сканера. Использует фактически настроенный параметр локали, а не захардкоженное значение.
- Объединяет канонические и локализованные URL в единые пакетные запросы
urlListIndexNow, вместо отправки по одному. - Заполнение истории (Backfill): Фильтрация по категории и диапазону дат, предпросмотр количества совпадений и пакетная отправка. Автоматическое разбиение на части для пакетов, превышающих лимит протокола в 10 000. Активные задачи можно отменить на вкладке Журнал.
- Ручная отправка: Отправка пользовательских URL по запросу, строка за строкой; внешние или неподходящие ссылки автоматически отфильтровываются.
- Умное ограничение частоты: Применяет почасовые и суточные лимиты, используя алгоритм скользящего окна с высокой точностью. Автоматически замедляет работу при ошибке
429(с учетом заголовкаRetry-After). В административном интерфейсе есть визуальные Полосы квоты, показывающие текущее использование и точное время до освобождения квоты. - Исключение определенных категорий и тегов как правила бизнес-логического уровня поверх автоматических фильтров конфиденциальности.
- Ротация ключей с диалогом подтверждения случайного перезаписывания; предыдущие ключи немедленно аннулируются.
- Административная проверка публичной доступности
/<key>.txt. - Перемещение тем, изменение видимости категорий и обновление тегов вызывают асинхронную повторную отправку или исключение в фоновых задачах, чтобы предотвратить блокировку интерфейса.
- Подробные записи журнала с ID пакетов, локалью, причинами срабатывания, диаграммами тенденций успеха/неудачи за 7 дней и категоризированными причинами сбоев (Ограничение частоты, Ошибка ключа, Несоответствие домена).
- Полностью асинхронная отправка с соблюдением границ конфиденциальности: личные сообщения, ограниченные категории, скрытые/удаленные темы и сайты, требующие входа, никогда не отправляются.
- Доступно на английском и упрощенном китайском языках.
Шаги настройки
- Установите плагин, следуя руководству выше, и пересоберите ваш контейнер.
- Перейдите в Администрирование > Плагины > discourse-indexnow.
- В разделе Настройки нажмите Сгенерировать ключ (или вставьте существующий 32-символьный hex-ключ).
- Отметьте Включить отправки IndexNow.
- Проверьте публичную доступность ключа:
https://your-forum-domain.com/<key>.txt
Должен возвращать HTTP 200 со строкой ключа. Панель администратора также отображает индикатор (зеленый/красный) из кэша.
6. (Необязательно) На вкладке Журнал используйте панель «Backfill»: выберите критерии, нажмите Предпросмотр, затем Отправить.
7. (Необязательно) Используйте поле ручной отправки для отправки отдельных URL вне автоматического процесса.
Страница журнала также содержит полосы использования квоты, диаграмму тенденций за 7 дней и метрики разбивки сбоев для легкого диагностирования проблем с отправкой.
Настройки конфигурации
| Настройка | Описание |
|---|---|
indexnow_enabled |
Главный переключатель. Автоматически отключается, если включен login_required. |
indexnow_api_key |
32-символьный hex-ключ для верификации отправки. |
indexnow_submit_on_create |
Автоотправка при создании новой публичной темы. |
indexnow_submit_on_edit |
Автоповторная отправка при изменении первого сообщения или атрибутов темы. |
indexnow_submit_on_reply |
Автоотправка конкретного URL с пагинацией при публикации новых ответов. |
indexnow_url_cooldown_minutes |
Период ожидания (cooldown) для каждого URL (в минутах) для предотвращения дублирования отправки. |
indexnow_excluded_category_ids |
Категории, которые следует исключить, даже если они публичные. |
indexnow_excluded_tag_names |
Теги, которые следует исключить, даже если категория темы подходит. |
indexnow_hourly_limit |
Максимальное количество URL для отправки в час (скользящее окно). |
indexnow_daily_limit |
Максимальное количество URL для отправки в день (скользящее окно). |
Известные ограничения
- Google в настоящее время не участвует в протоколе IndexNow.
- Локализованные URL отправляются только тогда, когда активны параметры локали сканера и существует локализованный контент.
- В настоящее время поддерживаются редактирование первого сообщения и пагинация новых ответов, но редактирование промежуточных ответов не вызывает отправку независимо.
Это независимый неофициальный плагин — он не поддерживается командой Discourse. Он работает в продуктивной среде на моем собственном форуме, имеет покрытие тестами RSpec с CI при каждом пуше/PR, и я буду признателен за любые сообщения об ошибках или запросы функций через GitHub issues или ответы здесь.
