SEO для малого бизнеса

IndexNow для Яндекса: как ускорить индексацию новых страниц

Как работает протокол IndexNow, где взять ключ, как отправлять URL из WordPress и что делать, если Яндекс всё равно не спешит.

обновлено 8 минут чтения 1 Дмитрий Акиндинов
Содержание
  1. Что такое IndexNow и чем он отличается от sitemap и переобхода
  2. Ключ и файл подтверждения
  3. Отправка URL: curl вручную и пакетом
  4. Автоматически из WordPress при публикации
  5. Сколько URL можно слать и когда прилетит игнор
  6. Чего IndexNow не делает
  7. Что ещё влияет на скорость индексации
  8. Что сделать сегодня
  9. Частые вопросы

IndexNow это протокол, которым сайт сам сообщает поисковику о новой или изменённой странице, вместо того чтобы ждать планового обхода. Нужны две вещи: ключ и файл подтверждения в корне сайта. Успешным ответом считается и код 200, и 202.

Опубликовали новую страницу услуги или свежую статью в блоге и хотите, чтобы Яндекс увидел её не через неделю, а сегодня. Стандартный путь: sitemap.xml обновится сам, робот придёт по расписанию, обычно раз в несколько дней на небольшом сайте с невысокой посещаемостью. Инструмент «Переобход страниц» в Яндекс Вебмастере выручает не всегда: квота на новые и небольшие сайты маленькая, и по факту она уходит не только на новые URL, а на любые правки, которые вы туда добавляете. Разберу, как работает протокол IndexNow, откуда взять ключ, как отправить URL руками и настроить автоматическую отправку из WordPress, и главное, чего этот протокол не гарантирует.

Бумажный самолётик летит от браузера к иконке поискового индекса

Что такое IndexNow и чем он отличается от sitemap и переобхода

IndexNow — открытый протокол, который в 2021-2022 годах вместе представили Microsoft и Яндекс. Идея простая: вместо того, чтобы поисковый робот периодически заходил на сайт и сам искал изменения, сайт сам сообщает «вот тут что-то поменялось, приходи». Сейчас к протоколу подключены Bing, Яндекс, Seznam.cz, Naver и ещё несколько локальных поисковиков. Google IndexNow официально не поддерживает, у него своя история с Indexing API, о ней ниже.

Разница с sitemap.xml принципиальная. Sitemap — это пассивный список: вы кладёте файл, робот заходит когда сочтёт нужным и сверяет lastmod. IndexNow — это активное уведомление: вы отправляете конкретный URL прямо сейчас, и по спецификации протокола участники обмениваются присланными адресами между собой. То есть теоретически можно отправить URL в одну точку входа, и информация дойдёт до нескольких поисковиков сразу. На практике я всё равно рекомендую слать явно на адрес Яндекса, если задача именно ускорить индексацию у него, не полагаясь на то, что чужой сервис честно передаст данные дальше.

С «Переобходом страниц» в Вебмастере разница в масштабе и автоматизации. Инструмент в панели рассчитан на ручную точечную работу: зашли, вставили несколько адресов, нажали кнопку. Квота у него скромная и общая на весь сайт, поэтому если вы обновляете контент часто, вы либо забываете про инструмент, либо тратите время каждый день. IndexNow можно один раз подключить кодом и забыть.

Ключ и файл подтверждения

Чтобы Яндекс поверил, что запрос действительно от владельца сайта, нужен ключ и файл подтверждения на сервере.

Ключ — произвольная строка из букв и цифр длиной от 8 до 128 символов. Годится обрезанный md5-хеш от домена и текущей даты, вывод любого генератора паролей без спецсимволов, да хоть UUID без дефисов. Специальной регистрации ключа делать не нужно, никакого личного кабинета для этого заводить не надо.

Дальше кладёте на сайт файл с именем <ключ>.txt в корень сайта. Содержимое файла — ровно этот ключ, без HTML, без переносов строк, без ничего лишнего. Проверяется это открытием адреса в браузере:

https://example.ru/a1b2c3d4e5f6.txt

Ответ должен быть 200 и Content-Type: text/plain, а в теле только сама строка ключа. Если у вас нет доступа в корень сайта (например, сайт живёт в поддиректории), в запросах на отправку URL можно указать параметр keyLocation с полным адресом, где реально лежит файл, тогда класть его строго в корень не обязательно.

Отдельный совет для тех, у кого на WordPress уже стоит Rank Math. В настройках плагина есть модуль Instant Indexing, который поддерживает именно протокол IndexNow: он сам генерирует ключ, сам кладёт файл подтверждения и сам отправляет URL при публикации и обновлении записей. Прежде чем писать что-то руками, загляните туда, велика вероятность, что задача уже решена парой кликов.

Отправка URL: curl вручную и пакетом

Одиночный запрос отправляется GET-запросом с параметрами прямо в адресной строке:

curl "https://yandex.com/indexnow?url=https://example.ru/blog/novaya-statya/&key=a1b2c3d4e5f6"

Если нужно отправить сразу несколько URL, есть общий эндпоинт протокола, который принимает POST с JSON-телом. Он рассылает список по всем участникам сразу:

curl -X POST "https://api.indexnow.org/indexnow" 
  -H "Content-Type: application/json; charset=utf-8" 
  -d '{
    "host": "example.ru",
    "key": "a1b2c3d4e5f6",
    "keyLocation": "https://example.ru/a1b2c3d4e5f6.txt",
    "urlList": [
      "https://example.ru/blog/novaya-statya/",
      "https://example.ru/uslugi/novaya-usluga/"
    ]
  }'

Поле host обязано совпадать с доменом всех URL из списка, за один запрос нельзя мешать разные домены. Ответы сервиса стоит различать, потому что 200 и 202 это не одно и то же с точки зрения дальнейших действий.

КодЗначениеЧто делать
200запрос принятничего, ждать обхода
202принято, ключ ещё не подтверждёнподождать несколько минут и не слать повторно
400некорректный запроспроверить JSON, кодировку UTF-8, обязательные поля
403ключ не найден или не совпадаетпроверить, доступен ли файл ключа по прямой ссылке
422URL не с указанного host или невалиденсверить домен в urlList с полем host
429слишком много запросовсократить частоту отправки

Автоматически из WordPress при публикации

Если Rank Math по каким-то причинам не используется или нужен свой контроль над логикой, отправку можно повесить на хук публикации записи. Важный момент: запрос не должен тормозить сохранение поста в админке, поэтому делаем его неблокирующим.

add_action('transition_post_status', function ($new_status, $old_status, $post) {
    if ($new_status !== 'publish' || $old_status === 'publish') {
        return;
    }
    if (!in_array($post->post_type, ['post', 'page', 'service'], true)) {
        return;
    }

    $key = 'a1b2c3d4e5f6';
    wp_remote_post('https://api.indexnow.org/indexnow', [
        'headers'  => ['Content-Type' => 'application/json; charset=utf-8'],
        'body'     => wp_json_encode([
            'host'        => parse_url(home_url(), PHP_URL_HOST),
            'key'         => $key,
            'keyLocation' => home_url("/{$key}.txt"),
            'urlList'     => [get_permalink($post)],
        ]),
        'timeout'  => 3,
        'blocking' => false,
    ]);
}, 10, 3);

Обратите внимание на blocking => false: без него WordPress будет ждать ответа от чужого сервера прямо во время публикации записи, и если сторонний сервис подвиснет на пару секунд, у вас на пару секунд подвиснет и админка. С blocking => false запрос уходит в фоне, а WordPress не ждёт ответа вообще, поэтому коды ответа из таблицы выше в такой схеме не проверяются автоматически, и если хотите логировать ошибки, нужен отдельный крон-обработчик очереди, а не прямой вызов на публикации.

Условие на post_type тоже не для красоты. Без него хук сработает на любую публикацию, включая служебные типы записей от плагинов, которых у Яндекса в индексе быть не должно.

Сколько URL можно слать и когда прилетит игнор

Формального лимита «не больше N запросов в сутки» в открытой спецификации не прописано жёстко, но на практике стоит держать себя в руках. Несколько правил, которые снижают шанс, что ключ начнут игнорировать:

  • не отправлять один и тот же URL повторно в течение короткого времени без реальных изменений на странице,
  • не заливать пакетами тысячи адресов на сайте, где реально обновляется десяток страниц в неделю,
  • следить, что файл ключа остаётся доступным: если при переезде на новый дизайн или чистке корня файл случайно удалили, все следующие запросы начнут падать с 403,
  • не путать IndexNow с инструментом прогона по каталогам, это не сервис накрутки посещаемости и не способ загнать в индекс страницы с дублирующимся или тонким контентом.

Если увидели массовые 429 или 403 без видимой причины, первым делом откройте файл ключа напрямую в браузере, в девяти случаях из десяти дело именно в нём.

Чего IndexNow не делает

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

Мне встречались случаи, когда владелец сайта настраивал автоматическую отправку, видел в логах стабильные коды 200 и был уверен, что дело сделано, а страницы неделями не появлялись в поиске. Причина была не в протоколе, а в контенте: рерайт чужой статьи без единого своего абзаца. IndexNow тут ни при чём, он честно сообщил «вот новый URL», просто у Яндекса были свои резоны его не индексировать.

Что ещё влияет на скорость индексации

Краулинговый бюджет для сайта малого бизнеса на несколько десятков или сотен страниц редко бывает реальным узким местом, эта тема больше про крупные каталоги на десятки тысяч URL. Для типичного сайта услуг или блога на индексацию сильнее влияют три вещи.

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

Актуальный sitemap с честными датами lastmod. Если карта сайта не обновляется автоматически или в ней стоят одинаковые даты на все страницы, поисковик перестаёт доверять этому полю и хуже расставляет приоритеты обхода. Как собрать карту сайта правильно, разбирал в статье про sitemap.xml.

Базовая настройка самого Вебмастера: подтверждённые права, корректный robots.txt, отсутствие случайного noindex на новых страницах. Если этого нет, никакой IndexNow не поможет, потому что робот в принципе не доверяет сайту. Если панель ещё не настроена как следует, у меня есть отдельный разбор для Яндекс Вебмастера для новичков.

Кстати про Google: у него с 2023 года собственный Indexing API официально доступен только для страниц с разметкой JobPosting и BroadcastEvent, IndexNow он не поддерживает вообще. Если работаете и с Google, и с Яндексом одновременно, для первого остаётся обычная отправка через Google Search Console и стандартное ожидание обхода.

Что сделать сегодня

Если решили подключить протокол, порядок действий такой:

  • [ ] сгенерировать ключ и положить файл <ключ>.txt в корень сайта,
  • [ ] открыть файл напрямую в браузере и убедиться, что отдаётся 200 и чистый текст ключа,
  • [ ] на WordPress с Rank Math просто включить модуль Instant Indexing в настройках,
  • [ ] без Rank Math повесить неблокирующий запрос на публикацию записи,
  • [ ] проверить один тестовый запрос через curl и посмотреть код ответа,
  • [ ] не забыть про перелинковку и sitemap, без них эффект от протокола будет почти нулевым.

Двадцать минут настройки экономят дни ожидания, когда речь про свежую страницу под конкретный запрос или сезонное предложение. Если нужна помощь с технической частью или общим аудитом индексации сайта, пишите через форму на главной, обычно разбираю такие вопросы за один созвон.

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

Что такое IndexNow

Открытый протокол, по которому сайт отправляет поисковику список изменённых адресов. Поддерживают Яндекс и Bing. Заменяет ручной переобход и ускоряет реакцию на публикацию.

Как подключить IndexNow

Сгенерировать ключ, положить в корень сайта текстовый файл с этим ключом в имени и содержимым, затем отправлять адреса на конечную точку протокола. В WordPress это делается автоматически при публикации.

Гарантирует ли IndexNow индексацию

Нет. Он ускоряет обход, но решение включать страницу в индекс поисковик принимает сам. Карта сайта при этом остаётся нужной, одно другое не заменяет.

Сколько адресов можно отправлять

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

Передайте техническую часть в надёжные руки.

Слежу за хостингом, бэкапами и обновлениями. Когда что-то пойдёт не так – звоните мне, не своему программисту, не в спортзал и не маме.

Короткие вопросы по теме

Все вопросы по теме "SEO для малого бизнеса"

Заявка

Обсудим задачу

Напишите имя и телефон, выберите удобный канал. Перезвоню или напишу в течение часа в рабочее время.

Куда удобнее ответить?