
IndexNow отучил меня обновлять выдачу и гадать, когда же поисковый робот доберётся до свежей статьи: сайт теперь сам стучится в поиск через несколько секунд после публикации, а первые заходы из Яндекса на новый адрес я вижу в тот же день. До внедрения свежая страница блога ждала робота от двух суток до полутора недель, после — типичный срок сократился до нескольких часов. Ниже — весь путь внедрения на реальном проекте: как устроен протокол, какой код я держу в теме, где спрятана ловушка, из-за которой половина страниц не отправляется, и как понять, что всё работает, а не просто «вроде бы настроено».
Что меняется в схеме «сайт — поисковик»
Обычный порядок такой: робот приходит на сайт по своему расписанию, сравнивает содержимое с тем, что у него сохранено, и решает, переиндексировать страницу или нет. Расписание зависит от того, как часто сайт обновлялся раньше, сколько у него страниц, насколько он быстрый и стабильный, какой у него общий вес. Молодой блог с тремя публикациями в месяц робот навещает лениво. Большой магазин с десятками тысяч карточек робот обходит по кругу неделями, и обновлённая позавчера цена запросто провисит в выдаче старой ещё дней десять.
IndexNow переворачивает инициативу. Не поиск решает, когда прийти, а сайт сообщает: вот эти адреса изменились, приходите. Это односторонний сигнал-уведомление, короткий HTTP-запрос со списком ссылок. Поисковая система принимает уведомление, ставит адреса в очередь на обход с повышенным приоритетом и дальше действует по своим правилам. Никакой оплаты, никакой регистрации, никаких квот по договору — протокол открытый и бесплатный.
Важно сразу зафиксировать границу. Уведомление ускоряет обход, а не заменяет его. Робот всё равно придёт, всё равно скачает страницу, всё равно оценит её содержимое и всё равно сам решит, брать её в индекс или нет. Экономится только время ожидания в очереди — но именно это время чаще всего и раздражает владельца сайта.
Кто участвует в протоколе, а кто нет
Инициаторами были Яндекс и Microsoft, позже подключились ещё несколько систем. Ключевая честная оговорка, которую в рекламных статьях про IndexNow обычно проглатывают: Google в протоколе не участвует. Компания заявляла, что будет тестировать сигнал, но участником так и не стала и продолжает опираться на собственное расписание обхода, карты сайта и внутренний инструмент запроса индексирования. Поэтому если у проекта весь трафик из Google, эффект от внедрения будет близок к нулю — и это нужно понимать до того, как вы начнёте измерять результат.
| Поисковая система | Поддержка IndexNow | Что делать на практике |
|---|---|---|
| Яндекс | Да, один из авторов протокола | Основной получатель уведомлений для рунета |
| Bing | Да, один из авторов протокола | Отправлять обязательно, обход ускоряется заметно |
| Seznam | Да | Актуально для чешского рынка |
| Naver | Да | Актуально для корейского рынка |
| Yep | Да | Небольшая система, влияния почти нет |
| Нет | Только карта сайта, внутренняя перелинковка и запрос индексирования в панели | |
| Mail.ru, DuckDuckGo | Нет собственного приёма | Косвенно получают данные партнёров, отдельно отправлять некуда |
Ещё одна деталь протокола: участники обмениваются полученными уведомлениями между собой. То есть теоретически достаточно отправить сигнал в одну точку, и остальные участники его получат. На практике я всё равно шлю в две точки — почему, объясняю ниже.
Как это устроено технически
Механика простая до неприличия, и в этом её главное достоинство. Нужны три вещи.
- Ключ. Произвольная строка из латинских букв, цифр и дефисов длиной от 8 до 128 символов. Ключ придумываете вы сами, никто его не выдаёт и не подтверждает.
- Файл с ключом в корне сайта. Обычный текстовый файл, имя которого совпадает с ключом, а внутри лежит тот же самый ключ и больше ничего. Это доказательство, что вы владеете сайтом: раз вы смогли положить файл в корень, значит доступ у вас есть.
- Запрос на эндпоинт. POST со списком адресов или GET с одним адресом в параметрах.
Файл ключа выглядит так — адрес и содержимое:
https://example.ru/abc123def456abc123def456.txt
содержимое файла:
abc123def456abc123def456
Простейший вариант уведомления — один адрес обычным GET-запросом:
https://yandex.com/indexnow?url=https://example.ru/blog/statya/&key=abc123def456abc123def456
Рабочий вариант — POST с телом в JSON, куда можно положить сразу список адресов:
POST /indexnow HTTP/1.1
Host: yandex.com
Content-Type: application/json; charset=utf-8
{
"host": "example.ru",
"key": "abc123def456abc123def456",
"keyLocation": "https://example.ru/abc123def456abc123def456.txt",
"urlList": [
"https://example.ru/blog/pervaya-statya/",
"https://example.ru/blog/vtoraya-statya/",
"https://example.ru/uslugi/"
]
}
То же самое из консоли, чтобы проверить руками, не дожидаясь плагина:
curl -X POST "https://api.indexnow.org/indexnow" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{"host":"example.ru","key":"abc123def456abc123def456","keyLocation":"https://example.ru/abc123def456abc123def456.txt","urlList":["https://example.ru/blog/statya/"]}' \
-i
Поле keyLocation нужно, если файл ключа лежит не в корне, а, например, в подпапке. Если файл в корне и назван по ключу, поле можно опустить — система найдёт его сама. Я всё равно указываю явно: меньше поводов для ошибки.
Что означают коды ответа
Сразу после отправки вы получаете HTTP-код. Он не говорит «страница проиндексирована», он говорит только «уведомление принято или отклонено». Разница принципиальная, и на ней спотыкаются чаще всего.
| Код | Что означает | Действие |
|---|---|---|
| 200 | Уведомление принято, ключ проверен | Ничего, всё в порядке |
| 202 | Принято, ключ ещё проверяется | Убедиться, что файл ключа отдаётся по прямой ссылке |
| 400 | Некорректный запрос: битый JSON, нет обязательного поля | Проверить тело запроса и заголовок Content-Type |
| 403 | Ключ не найден или не совпадает с содержимым файла | Открыть файл ключа в браузере и сверить строку символ в символ |
| 422 | Адреса не принадлежат указанному хосту или не совпадает схема | Проверить http/https, www и адрес хоста в поле host |
| 429 | Слишком много запросов, сработало ограничение частоты | Снизить темп, слать пачками с паузой |
Отдельно про 403. Девять случаев из десяти — это не «не работает протокол», а закрытый доступ к txt-файлу. Кэширующий плагин отдаёт вместо файла HTML-страницу 404, nginx перехватывает запрос по маске, хостинг подставляет свою заглушку. Первое, что нужно сделать после создания ключа, — открыть его прямую ссылку в браузере и убедиться, что видна голая строка, а не оформленная страница.
Два эндпоинта и зачем слать на оба
Формально участники протокола пересылают уведомления друг другу, и достаточно одной точки. Фактически я держу отправку на две.
Если нужны детали, смотрите «От чего зависит позиция сайта в Яндекс ».
- https://yandex.com/indexnow — точка Яндекса. Для рунета это главный получатель, и я хочу, чтобы сигнал попадал к нему напрямую, без промежуточных звеньев и без зависимости от чужой пересылки.
- https://api.indexnow.org/indexnow — общая точка протокола, откуда уведомление расходится по остальным участникам, включая Bing.
Причина дублирования прозаичная. Пересылка между системами — вещь, на которую я никак не влияю и которую никак не вижу. Если одна точка временно недоступна или подтормаживает, вторая отработает. Стоит это одного лишнего HTTP-запроса на публикацию, то есть буквально ничего. Дублей поисковик не боится: повторное уведомление о том же адресе не считается нарушением и не наказывается, оно просто игнорируется, если ничего не изменилось.
Чего делать не надо — так это дёргать эндпоинт по кругу, отправляя одни и те же неизменённые адреса каждый час «на всякий случай». Толку ноль, а ограничение частоты вы поймаете.

Лимиты и массовая заливка
За один POST-запрос разрешено передать до 10 000 адресов. Это очень много: у среднего блога столько статей нет вообще. Но при массовых операциях лимит становится актуальным.
Помогу с продвижением: заказать продвижение сайта — вывожу сайты в топ Яндекса белыми методами.
Типичный случай — переклейка структуры, смена адресов, массовое обновление сотен карточек товара или, как было у меня, серия SQL-патчей по блогу сразу на несколько сотен страниц. Здесь важны не только лимиты на объём, но и здравый смысл.
- Резать список пачками по 500–1000 адресов, а не гнать десять тысяч одним куском: так проще ловить ошибку и понимать, какая именно пачка не ушла.
- Ставить паузу в 2–5 секунд между пачками, чтобы не словить 429.
- Не отправлять всё разом в первый же час после большой правки: если правки затронули 3000 страниц, растяните уведомления на сутки-двое. Резкий всплеск нагрузки от робота на слабом хостинге сам по себе может уронить сайт, и вместо ускоренной индексации вы получите пятисотые ошибки в момент обхода.
- Проверять, что все адреса в пачке принадлежат одному хосту и одной схеме. Смешали http и https или основной домен с поддоменом — получите 422 на всю пачку целиком.
Отдельная рекомендация для магазинов: не надо уведомлять обо всём каталоге ежедневно. Слать нужно только то, что реально изменилось, — карточки, где поменялась цена, наличие, описание или состав комплектации. Уведомление о неизменённой странице обесценивает сигнал.
Подключение на WordPress: плагин или свой код
Развилка, на которой стоит остановиться. Оба пути рабочие, выбор зависит от того, насколько вам нужен контроль.
| Критерий | Готовый плагин | Свой код в теме |
|---|---|---|
| Время внедрения | 10 минут | 1–2 часа с отладкой |
| Нагрузка на сайт | Плюс один плагин в стеке | Ничего лишнего |
| Контроль над списком адресов | Ограничен настройками плагина | Полный: любые фильтры и исключения |
| Лог отправок | Есть не у всех, формат чужой | Свой формат, свои поля |
| Отправка на два эндпоинта | Часто только один | Сколько нужно |
| Работа с правками через базу | Не видит их вообще | Можно вызвать вручную из скрипта |
| Риск при обновлении | Обновление плагина может сломать логику | Код меняете только вы |
Мой выбор — свой код. Причина не в снобизме, а в конкретной задаче: значительная часть правок на проекте прилетает не через админку, а SQL-патчами, и ни один плагин про них не узнает. Плюс мне нужен собственный лог в понятном мне формате.
Если сайт обычный, публикации идут только руками через редактор и никаких массовых операций не планируется — берите плагин, это честно нормальное решение. Проверьте только два пункта: куда он шлёт и пишет ли он лог.
Как выглядит собственная реализация
Логика делится на две части: функция отправки и хуки, которые её дёргают. Функция принимает массив адресов, режет на пачки и шлёт на оба эндпоинта.
<?php
function my_indexnow_ping( array $urls ) {
$key = 'abc123def456abc123def456';
$host = 'example.ru';
$endpoints = array(
'https://yandex.com/indexnow',
'https://api.indexnow.org/indexnow',
);
$urls = array_values( array_unique( array_filter( $urls ) ) );
if ( empty( $urls ) ) {
return;
}
foreach ( array_chunk( $urls, 500 ) as $chunk ) {
$body = wp_json_encode( array(
'host' => $host,
'key' => $key,
'keyLocation' => 'https://' . $host . '/' . $key . '.txt',
'urlList' => $chunk,
) );
foreach ( $endpoints as $endpoint ) {
$res = wp_remote_post( $endpoint, array(
'timeout' => 10,
'headers' => array( 'Content-Type' => 'application/json; charset=utf-8' ),
'body' => $body,
) );
$code = is_wp_error( $res ) ? $res->get_error_message() : wp_remote_retrieve_response_code( $res );
my_indexnow_log( $endpoint, $code, $chunk );
}
}
}
Дальше — точки вызова. В WordPress достаточно двух хуков: смена статуса записи и явное обновление.
<?php
add_action( 'transition_post_status', function ( $new, $old, $post ) {
if ( 'publish' !== $new ) {
return;
}
if ( ! in_array( $post->post_type, array( 'post', 'page' ), true ) ) {
return;
}
if ( 'publish' === $old && $new === $old ) {
return;
}
my_indexnow_ping( array( get_permalink( $post->ID ) ) );
}, 10, 3 );
Для массовых операций я держу отдельный CLI-скрипт: он берёт список идентификаторов из файла, собирает адреса и вызывает ту же функцию. Так одна и та же логика обслуживает и обычную публикацию, и заливку двухсот статей разом.
Отдельный практический момент: отправку лучше уводить в фон, а не держать в момент сохранения записи. Два внешних запроса по 10 секунд таймаута в худшем случае превращают сохранение статьи в двадцатисекундное ожидание белого экрана. Планировщик задач или отложенный крон-вызов решают вопрос.
Подробнее об этом — в статье «Гарантии продвижения сайта в Яндекс — это 100% обман».

Главная ловушка: дата изменения
Эту грабельку я поймал лбом и считаю самой важной частью статьи. Любая автоматика — и плагин, и мой код — опирается на события WordPress или на дату модификации записи. Пока правка идёт через редактор, всё честно: дата обновляется, хук срабатывает, уведомление уходит.
А теперь ситуация из жизни. Нужно поправить перелинковку сразу в четырёхстах статьях. Делается это одним UPDATE по базе — быстро, предсказуемо, без риска сломать вёрстку редактором. Контент меняется, страницы на сайте выглядят по-новому, всё замечательно. Только вот post_modified остался прежним. Никаких хуков SQL-запрос не вызывает, никакая автоматика о правке не узнаёт, IndexNow молчит, и поисковик обнаружит изменения через месяц, когда придёт по своему расписанию.
Правило, которое я теперь соблюдаю без исключений: любой SQL-патч обязан менять дату модификации.
UPDATE wp_posts
SET post_content = REPLACE(post_content, 'старый фрагмент', 'новый фрагмент'),
post_modified = NOW(),
post_modified_gmt = UTC_TIMESTAMP()
WHERE post_type = 'post'
AND post_status = 'publish'
AND post_content LIKE '%старый фрагмент%';
Обратите внимание: обновляются оба поля, и локальное, и по Гринвичу. Обновите одно — и у вас появится рассинхрон, на который потом будут странно реагировать и плагины, и выгрузки. И не забывайте про wp_cache_flush либо сброс объектного кэша после массовых правок, иначе сайт какое-то время будет отдавать старую версию, а робот придёт как раз в этот момент.
После правки я отдельно прогоняю список изменённых адресов через свой скрипт отправки — не полагаясь на то, что «что-нибудь само сработает».
Лог отправок: без него вы ничего не докажете
Самая частая ситуация в переписке с клиентом: «страница не в индексе, вы вообще её отправляли?» Без лога ответить нечего. С логом ответ занимает десять секунд.
Мой формат минимальный, одна строка на одну отправку:
2026-08-14 11:42:07 | yandex.com | 200 | 1 url | /blog/uskorennaya-indeksacziya/
2026-08-14 11:42:08 | api.indexnow.org | 202 | 1 url | /blog/uskorennaya-indeksacziya/
2026-08-14 18:03:55 | yandex.com | 200 | 500 urls | batch: perelinkovka-avgust
2026-08-14 18:04:02 | yandex.com | 429 | 500 urls | batch: perelinkovka-avgust (retry)
Что обязательно должно быть в строке: время, эндпоинт, код ответа, количество адресов и либо сам адрес, либо метка пачки. Этого хватает, чтобы через месяц восстановить картину.
Если нужна помощь по теме — настройка Яндекс Директа.
Где хранить. Простой текстовый файл вполне годится, но класть его в открытый корень нельзя — там будут все ваши адреса, включая ещё не опубликованные. Я держу лог вне публичной директории, а для быстрого просмотра сделал страницу по неочевидной ссылке с проверкой доступа. Ротацию тоже стоит настроить сразу: за год такой файл разрастается до неприличных размеров.
Что лог даёт в реальной работе:
- показывает, что уведомление ушло и с каким кодом, — снимает половину споров;
- ловит систематические 403, когда файл ключа перестал отдаваться после переезда или обновления настроек сервера;
- ловит 429 и подсказывает, что темп отправки надо снизить;
- показывает пропуски: если в логе нет адресов, которые вы точно правили, значит автоматика их не увидела — скорее всего, привет от неизменённой даты модификации;
- позволяет посчитать реальный эффект: у вас есть точное время отправки и можно сравнить его с моментом появления страницы в поиске.
Что проверить после внедрения
| Что проверяем | Как | Правильный результат |
|---|---|---|
| Файл ключа доступен | Открыть прямую ссылку в браузере в режиме инкогнито | Голый текст с ключом, код 200 |
| Ключ совпадает | Сверить строку в файле и в коде посимвольно | Полное совпадение, без пробелов и переносов |
| Файл не режется кэшем | Запросить с параметром и без него | Одинаковый ответ в обоих случаях |
| Уведомление уходит при публикации | Опубликовать тестовую запись, посмотреть лог | Две строки, коды 200 или 202 |
| Уходит при обновлении записи | Изменить текст существующей статьи | Новые строки в логе |
| SQL-патчи меняют дату | Проверить post_modified после патча | Дата равна моменту правки |
| Черновики не отправляются | Сохранить черновик и запланированную запись | В логе пусто |
| Адреса канонические | Сверить отправленные адреса со ссылкой rel=canonical | Совпадают, без слеша-разнобоя и параметров |
| Сохранение записи не тормозит | Замерить время сохранения в редакторе | Без заметной задержки |
Пункт про канонические адреса недооценивают. Если отправлять адрес с UTM-меткой, со слешем на конце там, где сайт отдаёт без слеша, или с параметром сортировки — вы уведомляете поиск о странице-дубле. Ускорять индексацию мусора точно не входило в планы.
Тему разбирал отдельно: «Яндекс Директ понижает позиции сайта когда его отключаешь».

IndexNow против переобхода в панели вебмастера
Инструмент переобхода в Яндекс.Вебмастере решает похожую задачу, но это не одно и то же. Их удобнее не сравнивать «что лучше», а использовать вместе.
| Параметр | IndexNow | Переобход в панели вебмастера |
|---|---|---|
| Кто получает сигнал | Яндекс, Bing, Seznam, Naver | Только та система, в чьей панели работаете |
| Суточный лимит | До 10 000 адресов в запросе | Обычно десятки адресов в сутки |
| Автоматизация | Полная, встраивается в публикацию | Руками или через отдельный API |
| Скорость реакции | Часы, иногда минуты | Часы или сутки |
| Подтверждение прав | Файл с ключом в корне | Полноценная верификация сайта |
| Обратная связь | Только код ответа | Видно статус страницы после обхода |
| Для чего подходит | Поток обновлений, рутина | Точечные важные страницы |
Практический вывод: IndexNow вешаете на поток — все публикации и обновления идут через него автоматически. Ручной переобход тратите на то, что действительно важно: новые посадочные, страницы услуг, разделы после переработки. Лимит переобхода маленький, и разбазаривать его на рядовые статьи блога бессмысленно, когда есть протокол без лимитов.
Чего IndexNow не делает
Ожидания стоит приземлить, иначе разочарование будет неизбежным.
- Не поднимает позиции. Уведомление не является фактором ранжирования. Страница, попавшая в индекс быстрее, ранжируется ровно так же, как попавшая туда медленно.
- Не гарантирует индексацию. Робот придёт, посмотрит и может решить, что страница малополезна, дублирует другую или не отвечает требованиям. Тогда её просто не возьмут — быстрее, но не возьмут.
- Не чинит технические проблемы. Если страница закрыта в robots.txt, отдаёт noindex, ведёт на редирект или возвращает 404, уведомление ничего не изменит. Вы лишь быстрее сообщите поиску о неработающем адресе.
- Не заменяет карту сайта. Sitemap остаётся базовым способом донести структуру, особенно для Google, которому уведомления не приходят вовсе.
- Не улучшает содержимое. Пустая или скопированная страница останется пустой и скопированной. Скорость доставки к качеству отношения не имеет.
- Не влияет на краулинговый бюджет магическим образом. Если сайт медленный и робот тратит время на ожидание ответа сервера, приоритет очереди не спасёт.
Как измерить эффект честно
Измерять «на глазок» нельзя — субъективное ощущение «вроде быстрее стало» не аргумент. Метрика простая: время от публикации до появления страницы в поиске.
Порядок действий такой:
- До внедрения набираете базу: 15–20 последних публикаций, для каждой фиксируете дату публикации и дату первого показа в поиске. Дату первого показа удобно брать из статистики поисковых запросов в панели вебмастера или из отчёта по страницам входа в системе аналитики.
- Считаете медиану, а не среднее. Одна статья, провисевшая три недели, перекосит среднее и обманет вас.
- Внедряете протокол, ждёте месяц-полтора и набираете такую же выборку по новым публикациям.
- Сравниваете медианы. Дополнительно смотрите разброс: часто важнее не то, что медиана упала с трёх суток до шести часов, а то, что исчезли хвосты по две недели.
| Показатель | Где смотреть | Что считается улучшением |
|---|---|---|
| Время до первого показа | Статистика запросов в панели вебмастера | Сокращение медианы в разы |
| Доля страниц в индексе | Раздел страниц в поиске | Рост доли, но эффект косвенный |
| Скорость подхвата правок | Сохранённая копия страницы в выдаче | Копия обновляется за дни, а не за недели |
| Обход роботом | Отчёт по обходу в панели вебмастера | Рост числа загруженных страниц после отправок |
| Пропуски отправок | Собственный лог | Ноль изменённых страниц без строки в логе |
Мой результат по блогу: медиана времени до первого показа в Яндексе упала с трёх суток до примерно четырёх часов, а самые долгие случаи с двух недель сжались до полутора суток. По Google, как и ожидалось, не изменилось ничего — там всё по-прежнему решают карта сайта и внутренние ссылки.
Кому протокол даёт больше всего
Выгода распределяется очень неравномерно. Есть проекты, где эффект бросается в глаза, и есть те, где его не заметишь.
- Блоги и медиа с частыми публикациями. Чем чаще выходит контент, тем дороже каждый день ожидания. Если тема сезонная или новостная, разница между «в индексе сегодня» и «в индексе через неделю» равна разнице между трафиком и его отсутствием.
- Интернет-магазины с меняющимися ценами и наличием. Самый показательный случай. Устаревшая цена в сниппете — это не просто неточность, это отказы: человек кликает на одну сумму, видит другую и уходит. То же с наличием: попасть на «нет в наличии» после клика по товару из выдачи — верный способ потерять покупателя.
- Новостные проекты. Здесь счёт вообще идёт на часы, и любой инструмент ускорения работает в плюс.
- Сайты, где идёт активная переработка. Переписали двести старых статей — хотите, чтобы поиск увидел новую версию не через квартал.
- Крупные каталоги. Когда страниц десятки тысяч, робот физически не успевает обходить всё часто. Точечные уведомления по изменённым адресам расставляют приоритеты за него.
Кому эффект будет минимальным: сайту-визитке из семи страниц, которые не менялись два года; проекту, у которого весь трафик из Google; сайту с техническими проблемами индексации, где страницы не берут не из-за скорости обхода, а из-за качества. В последнем случае внедрение только чётче покажет проблему: уведомления уходят с кодом 200, робот приходит, а страниц в индексе как не было, так и нет.
Ошибки, на которых теряют время
- Считать код 200 подтверждением индексации. Это подтверждение приёма уведомления, не более.
- Слать неканонические адреса. Разнобой со слешем, схемой, www и параметрами превращает отправку в уведомление о дублях.
- Слать черновики и запланированные записи. Проверка статуса в коде обязательна, иначе робот придёт на 404.
- Забыть про SQL-правки. Самая дорогая ошибка: правки есть, уведомлений нет, и вы неделями не понимаете, почему выдача показывает старое.
- Держать ключ только в коде, забыв про файл. Получите стабильный 403 и решите, что протокол не работает.
- Потерять файл ключа при переезде. Файл лежит в корне, а корень при миграции переносят не всегда. Внесите проверку в чек-лист переезда.
- Отправлять всё подряд каждый день. Сигнал обесценивается, а вы упираетесь в ограничение частоты.
- Не вести лог. Потом невозможно понять, что уходило, а что нет.
- Держать отправку синхронной в момент сохранения. Редактор начинает тормозить, и авторы жалуются на «зависший» сайт.
Частые вопросы
Нужно ли получать ключ у Яндекса или Microsoft?
Нет. Ключ вы придумываете сами: любая строка из латинских букв, цифр и дефисов длиной от 8 до 128 символов. Никакой регистрации и подтверждения не требуется. Единственное доказательство прав — файл с этим ключом в корне сайта, доступный по прямой ссылке.
Можно ли получить санкции за слишком частые уведомления?
Фильтров и наказаний за это нет, но есть ограничение частоты: при избыточном темпе вы начнёте получать код 429, и часть уведомлений просто не будет принята. Кроме того, регулярная отправка неизменённых страниц снижает доверие к вашему потоку сигналов. Отправляйте только то, что действительно изменилось.
Заменяет ли протокол карту сайта?
Не заменяет. Sitemap описывает структуру целиком и остаётся основным каналом для Google, который в протоколе не участвует. IndexNow работает как оперативный сигнал о конкретных изменениях. Правильная схема — держать оба инструмента одновременно.
Что делать, если стабильно приходит 403?
В подавляющем большинстве случаев виноват файл ключа. Откройте его прямую ссылку в браузере в режиме инкогнито: должна открыться голая строка с ключом и код 200. Если видите оформленную страницу или 404, проблема в кэше, правилах сервера или в том, что файл лежит не в корне. Затем посимвольно сверьте строку в файле со строкой в коде — лишний пробел или перенос строки тоже дают отказ.
Влияет ли IndexNow на позиции сайта?
Напрямую нет, фактором ранжирования уведомление не является. Косвенная польза есть: страница раньше попадает в индекс и раньше начинает собирать трафик, а обновлённые цены и данные быстрее отражаются в сниппете, что улучшает поведенческие показатели. Но подняться в топ за счёт одной только скорости индексации нельзя.
Разбор живого сайта: что мешает ему продвигаться:
Коротко
- Сайт сам сообщает поиску об изменённых адресах коротким POST-запросом с ключом — вместо ожидания робота по его расписанию.
- Протокол поддерживают Яндекс, Bing, Seznam и Naver; Google в нём не участвует, и для него по-прежнему работают карта сайта и внутренние ссылки.
- Для запуска нужны три вещи: ключ, текстовый файл с ключом в корне сайта и отправка списка адресов на эндпоинт; коды 200 и 202 означают, что уведомление принято.
- Главная ловушка — правки напрямую в базе: они не меняют дату модификации, автоматика такие страницы не видит, поэтому каждый SQL-патч обязан обновлять post_modified и post_modified_gmt.
- Лог отправок обязателен: без него не докажешь, что запрос ушёл, и не найдёшь пропущенные страницы; при этом ускоряется только обход, а качество страницы и её позиции протокол не меняет.
Настроить ускоренную индексацию вашего сайта помогу на SEO-консультации.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →Комментарии
Дмитрий Ковалёв
Поставил плагин, файл ключа отдаётся, а в ответ стабильно 403. Оказалось, кэширующий плагин подсовывал вместо txt свою страницу. Полчаса искал, спасибо за подсказку про инкогнито.
Марина Соловьёва
У нас магазин, цены обновляются выгрузкой из 1С каждую ночь. Правильно ли я понимаю, что нужно слать только те карточки, где цена реально поменялась, а не весь каталог?
Анатолий Кузнецов автор
Именно так. Выгрузка обычно и так знает, какие позиции затронуты, — этот список и берите. Каталог целиком слать вредно вдвойне: сигнал обесценивается, а робот приходит толпой и грузит сервер в самый неудачный момент. Если позиций много, режьте на пачки по 500 и растягивайте отправку на несколько часов. И проверьте, что выгрузка меняет дату модификации записи, иначе часть автоматики её пропустит.
Игорь Пантелеев
Отдельное спасибо за честность про Google. В трёх статьях подряд читал, что «все крупные поисковики поддерживают», и уже собрался ждать чуда.
Ольга Терентьева
Скажите, а есть смысл отправлять повторно страницу, которую уже отправляли неделю назад, но она так и не появилась в поиске?
Анатолий Кузнецов автор
Один повтор через неделю не повредит, но если после него ничего не изменилось, проблема точно не в скорости обхода. Смотрите статус страницы в панели вебмастера: часто там прямо написано, что она признана дублем или малополезной. Проверьте канонический адрес, метатег robots и уникальность содержимого. Долбить эндпоинт в такой ситуации бесполезно — это лечится содержимым, а не уведомлениями.
Алексей Жуков
Сделал по вашей схеме отправку на два эндпоинта, но вынес её в отложенную задачу. Сохранение записи перестало висеть по десять секунд, авторы довольны.
Наталья Бирюкова
Мы правим тексты пакетно через базу. После вашей статьи проверили — действительно, post_modified не менялся ни разу за полгода. Теперь понятно, почему выдача жила своей жизнью.
Роман Гущин
А как быть с многоязычным сайтом, где языковые версии на поддоменах? Один ключ на всё или для каждого поддомена свой?
Анатолий Кузнецов автор
Каждый поддомен для протокола — отдельный хост, поэтому файл ключа должен лежать в корне каждого из них. Саму строку ключа можно использовать одну и ту же, это не запрещено, просто положите одинаковый файл на все поддомены. А вот в запросе поле host и все адреса в списке обязаны относиться к одному поддомену: смешаете — получите 422 на всю пачку. Проще всего сделать отправку по одному хосту за раз в цикле.
Светлана Ермакова
Замерила по вашей методике до и после. Медиана упала с четырёх дней до примерно шести часов. Самое приятное — пропали случаи, когда статья висела вне индекса по две недели.
Виктор Лапшин
Подскажите, лог обязательно писать в файл? У меня хостинг с ограничениями на запись, думал складывать в таблицу базы.
Анатолий Кузнецов автор
Формат хранения роли не играет, важно само наличие записи. Таблица в базе даже удобнее: проще фильтровать по коду ответа и искать пропущенные адреса запросом. Только заложите чистку старых записей, иначе таблица за год раздуется. И не выводите лог на публичную страницу без проверки доступа — там видны в том числе адреса, которых ещё нет в открытом доступе.
Егор Савельев
Переехали на новый сервер и забыли перенести txt-файл из корня. Три недели уведомления уходили в 403, и никто не заметил, потому что лога не было. Теперь есть.
Юлия Панкратова
Полезно про лимит переобхода в панели. Раньше тратила его на рядовые заметки блога, теперь оставляю только под посадочные страницы услуг. Правильно распределяю?
Анатолий Кузнецов автор
Логика верная. Ручной переобход — дефицитный ресурс, его стоит держать под коммерческие страницы и крупные разделы после переработки. Рутинный поток публикаций пусть уходит через протокол, там ограничений практически нет. Ещё удобно комбинировать: сначала уведомление при публикации, а если через неделю страница так и не появилась и с ней всё в порядке технически, тогда уже добавлять её в переобход руками.
Станислав Черных
Код из статьи взял почти без правок, добавил только исключение для служебных типов записей. Работает третью неделю, в логе ровные двухсотые.
Спасибо, будем пробовать!
Спасибо. будем пробовать