Перейти к содержанию
Innovialabs

Что такое IndexNow и как он ускоряет индексацию в Яндексе и Bing

Основы3 мин

Коротко

IndexNow — открытый протокол, через который сайт сразу сообщает Bing, Яндексу и другим участникам о новых, измененных и удаленных URL; Google его не использует, поэтому sitemap по-прежнему обязателен.

Коротко

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

Протокол поддерживают Bing, Яндекс и ряд других систем (например, Seznam и Naver). Участники обмениваются полученными URL между собой, поэтому достаточно одного запроса в одну точку. Google IndexNow не поддерживает, поэтому протокол не заменяет sitemap и Search Console.

Как работает протокол

  1. Вы генерируете ключ — строку длиной от 8 до 128 символов из латинских букв, цифр и дефисов.
  2. Публикуете ключ в текстовом файле на своем домене, обычно в корне: https://example.com/<key>.txt. В файле только сам ключ.
  3. Когда контент меняется, сайт отправляет запрос с URL и ключом.
  4. Поисковик скачивает файл ключа, проверяет, что сайт ваш, и ставит адреса в очередь на обход.

Уведомление — это подсказка, а не приказ. Решение, обходить ли страницу и индексировать ли ее, остается за поисковиком.

Настройка файла ключа

  • Сгенерируйте случайный ключ и сохраните его как <key>.txt в корне сайта.
  • Проверьте, что файл открывается по HTTPS, отдает код 200 и содержит ключ обычным текстом.
  • Если положить файл в корень нельзя, разместите его в другом месте на том же хосте и передайте адрес в параметре keyLocation. Тогда отправлять можно только URL внутри этого пути.

В Next.js проще всего положить файл в папку public — он будет доступен из корня.

Отправка URL

Для одного адреса хватит GET-запроса:

curl "https://api.indexnow.org/indexnow?url=https://example.com/blog/new-post&key=YOUR_KEY"

Для нескольких адресов — POST с JSON:

curl -X POST "https://api.indexnow.org/indexnow" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{"host":"example.com","key":"YOUR_KEY","urlList":["https://example.com/blog/a","https://example.com/blog/b"]}'

Все URL в одном запросе должны относиться к одному хосту.

Из CMS

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

Из сайта на Next.js

Отправляйте уведомление на сервере после публикации — например, в route handler, который вызывает вебхук CMS:

export async function notifyIndexNow(urls: string[]) {
  await fetch("https://api.indexnow.org/indexnow", {
    method: "POST",
    headers: { "Content-Type": "application/json; charset=utf-8" },
    body: JSON.stringify({
      host: "example.com",
      key: process.env.INDEXNOW_KEY,
      urlList: urls,
    }),
  });
}

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

Коды ответа

КодЗначение
200URL приняты
202Приняты, ключ еще проверяется
400Неверный формат запроса
403Ключ недействителен или файл ключа не найден
422URL не относятся к хосту или ключ не совпадает
429Слишком много запросов, нужно снизить частоту

Почему для Google нужен sitemap

Google находит страницы по ссылкам, через sitemap и Search Console. Уведомления IndexNow до него не доходят. Поэтому базовые вещи остаются обязательными:

  • актуальная XML-карта сайта с корректными датами lastmod;
  • отправка sitemap в Search Console и Яндекс Вебмастер;
  • ссылки на новые страницы с уже существующих.

IndexNow дополняет эту схему для Bing и Яндекса. И он не помогает страницам, которые поисковик не хочет индексировать из-за низкого качества или дублей.

Частые вопросы

Нет. Участники протокола обмениваются уведомлениями, поэтому достаточно одного запроса в api.indexnow.org или в endpoint любой из поисковых систем.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.