Почему Discourse не поддерживает IndexNow?

В условиях стремительного устаревания информации в современном мире скорость индексации является одним из ключевых факторов успеха.

Но почему Discourse вообще не поддерживает этот протокол? https://www.indexnow.org/

3 лайка

Потому что никто не проявил достаточно интереса, чтобы создать плагин или отправить pull-request для поддержки этой функции. Я бы сказал, что это, скорее всего, связано с тем, что Google не поддерживает IndexNow, а это поисковая система, которая наиболее важна для большинства людей.

Но если вы хотите создать плагин для добавления этой функции, это будет очень кстати!

14 лайков

Мы хотели бы внести вклад в сообщество и разработать это расширение, но мы не программисты.

Позиция Google в отношении IndexNow заключается в том, что они его тестируют, и посмотрим, что получится.

Есть ли какие-то новости по Index Now? Теперь, когда даже Open AI запустила поисковую систему, которая использует индекс Bing и связана с IndexNow, это становится ещё более актуальным.

Тогда вы можете заказать разработку плагина в Marketplace. Я представляю решения в диапазоне от 500 до 2000 долларов. У других могут быть более интересные идеи, чем у меня.

3 лайка

Согласен, сейчас самое подходящее время для того, чтобы Discourse поддержал IndexNow :))

1 лайк

После изучения функционала IndexNow я согласен, что это должно стать одной из ключевых функций/плагинов. Я также понимаю, что ресурсы разработчиков ограничены.

Ниже представлены мои мысли относительно необходимого плагина для поддержки основной команды. Пожалуйста, не стесняйтесь добавлять свои комментарии.

Предположения:

  1. Плагин IndexNow будет использовать пакетные уведомления по расписанию — см. соображения по дизайну #1.
  2. Пакетные уведомления будут настроены с определенным временным интервалом.
  3. Уведомления будут отправляться только по публичным темам.
  4. Уведомления будут отправляться только для новых/измененных/удаленных тем, когда плагин активирован.
  5. Плагин не будет отправлять уведомления об исторических изменениях/событиях задним числом.

Инструкции для пользователей:

  1. Зарегистрируйтесь в выбранной поисковой системе IndexNow.
    • Получите ваш API-ключ
    • Получите URL конечной точки поисковой системы
  2. Установите плагин.
  3. Настройте административную панель.

Сценарий использования — Настройки администратора

  1. Предоставить пользователю возможность включать/отключать автоматическую отправку.
  2. Предоставить пользователю возможность ввести конечную точку поисковой системы IndexNow. См. соображения по дизайну #3.
    • Поле ввода — текстовый параметр
    • Поле ввода должно содержать корректный URL
    • Значение по умолчанию — URL Bing: `https://www.bing.com/indexnow`
  3. Предоставить пользователю возможность ввести и сохранить API-ключ.
    • Текстовое поле для хранения API-ключа
    • Поле ввода принимает только буквенно-цифровые символы
    • Значение по умолчанию — ""
  4. Предоставить пользователю возможность задать параметры расписания для пакетных уведомлений.
    • Параметр времени задается в часах
    • Поле ввода — строка для хранения значения часов
    • Допустимые значения — целые числа
    • Допустимый диапазон — от 1 до 24
    • Значение по умолчанию — 12

Сценарий использования — Файл ключа

  1. Система создаст файл с именем indexnowkey.txt.
  2. Файл ключа должен быть размещен в корневом каталоге.
  3. Система заполнит файл API-ключом.
  4. Файл должен быть доступен для любых удаленных пользователей/систем через HTTP/HTTPS.

Сценарий использования — Планирование процесса пакетных уведомлений

  1. Система будет планировать выполнение задач с интервалом, определенным в настройках администратора.
  2. Значение интервала определяет задержку между запусками задач в часах. Например, значение 2 означает, что задача должна выполняться каждые 2 часа. Значение 4 — каждые 4 часа. Значение 24 — один раз в день.

Сценарий использования — Процесс пакетных уведомлений

  1. Система определит, активирован ли процесс уведомлений через настройки сайта в административной панели.
  2. Система проверит наличие корректного API-ключа в настройках сайта (отличного от “”).
  3. Система сформирует список тем на основе заданного временного интервала. См. соображения по дизайну #2 относительно временных рамок запроса. Критерии включения тем:
    • Темы должны быть доступны только для публичного просмотра
    • Новые темы
    • Темы с новыми сообщениями
    • Темы, в которых были отредактированы сообщения
    • Удаленные темы
    • Список тем должен быть уникальным — без дубликатов
  4. Система создаст JSON-пакет в следующем формате:
{
  "host": "current_site",
  "key": "api_key",
  "keyLocation": "https://current_site/indexnowkey.txt",
  "urlList": [
      "https://www.example.com/url1",
      "https://www.example.com/folder/url2",
      "https://www.example.com/url3"
      ]
}
  1. JSON-пакет будет отправлен по следующему адресу:
    • URL: `sitesettings.search_engine_indexnow_endpoint`
  2. JSON-пакет будет отправлен со следующими заголовками:
    • Content-Type: application/json; charset=utf-8
    • Http/1.1
    • Host: bing
  3. Проверка подтверждения получения HTTP-запроса:
    • HTTP 200 — успешная отправка — завершение процесса
    • HTTP 429 — слишком много попыток отправки — отправить уведомление администратору о необходимости увеличить интервал времени

Соображения по дизайну:

  1. Пакетные уведомления против одиночных уведомлений — одиночные уведомления приемлемы для небольших доменов, но для крупных форумов отправка уведомления при каждом новом/обновленном сообщении может создать множество процессов событий. С точки зрения производительности индексации поисковыми системами, пакетные уведомления с часовым интервалом подходят для 80% форумов.
  2. Временные рамки запроса для пакетных уведомлений — SideKiq управляет интервалами времени. Если SideKiq занят выполнением тяжелых задач, процесс пакетных уведомлений может быть задержан. В результате процесс может пропустить новые/обновленные темы, если временной интервал запроса совпадает с интервалом планирования. Следует ли расширить временной параметр запроса, чтобы учесть задержки? Или возможно, чтобы планировщик передавал метки времени начала для контроля временных интервалов запроса? Или нам необходимо создать таблицу базы данных/значение для отправленных тем с меткой времени?
  3. Следует ли создать внутреннюю таблицу с каждой поисковой системой и соответствующим URL конечной точки IndexNow? Пользователь сможет выбирать из выпадающего списка вместо ручного ввода URL. Это исключит возможные ошибки пользователя.

Чего не хватает? Что бы вы добавили?

Можно ли использовать нашу существующую поддержку исходящих вебхуков для реализации части или всех ваших задач?

1 лайк

Кажется, это довольно приличный план. Я бы сделал только массовую/пакетную отправку, чтобы не писать, отлаживать, тестировать и поддерживать два разных метода.

Или, возможно, одна задача для массовой/пакетной отправки позволила бы избежать проблем с лимитами запросов, и тогда у нас был бы только один способ отправки данных (только пакетами, никогда по одному посту).

Версия, отправляющая данные на одну конечную точку, могла бы стоить от 2000 долларов за решение, которое вроде бы работает и имеет минимальную обработку ошибок, до 5000 долларов за решение с хотя бы некоторыми спецификациями для тестирования; и, возможно, оно могло бы обрабатывать уведомления нескольким конечным точкам?

Вы задали отличный вопрос «Как». Я не лучший человек, к которому стоит обращаться с вопросами «Как» по Discourse.

Я хорошо умею документировать, «Что» именно нужно. Четкое и точное определение того, «Что» требуется, ускорит процесс разработки и, следовательно, снизит затраты.

Чтобы ответить на вопрос «Что» в контексте вебхуков, я полагаю, речь идет о различии между одиночными и пакетными уведомлениями. У меня форум среднего размера, и я предпочитаю пакетные уведомления.

  1. Мне не нужно, чтобы поисковые системы уведомлялись о создании или обновлении темы.
  2. Я не люблю добавлять события с низким приоритетом в критические процессы, такие как создание темы или сообщения. Добавление дополнительных событий увеличивает время ожидания для пользователей. Пакетный метод требует лишь одного SQL-запроса и одного HTTP-запроса. Его можно обрабатывать как фоновое событие, независимо от взаимодействия с пользователем.

Плагин нужно будет разработать только для одной конечной точки. Согласно соглашению IndexNow, поисковые системы обязаны обмениваться между собой данными о подачах. То есть, вы отправляете данные в Bing, а затем Bing передает их другим поисковым системам, поддерживающим IndexNow.

Для разработки плагина нам необходимо собрать средства от 30 участников по 100 долларов каждый.

1 лайк