База знаний / IndexNow в Make.com: пинг URL для Яндекса и поисковиков
IndexNow в Make.com: пинг URL для Яндекса и поисковиков — обложка гайда

О чём этот гайд? Короткий ответ

Короткий ответ: IndexNow в Make и на khar-ag.ru: два POST на Яндекс и IndexNow.org, ключ в корне, post_publish.py, sitemap виртуальных гайдов и llms.txt без перезаписи sitemap.xml.

Формат Авторская база знаний, AI-автоматизация, сайты и Telegram-боты
Регион работы Россия, онлайн
Раздел Подключение платформ
Дата публикации 27.04.2026
Обновлено 27.04.2026
Подключение платформ

IndexNow в Make.com: пинг URL для Яндекса и поисковиков

Протокол мгновенного уведомления Яндекса, Bing и других систем о новых URL: тот же JSON в Make и в post_publish.py — два POST, ключ в корне сайта, отдельный sitemap для виртуальных гайдов.

Короткий ответ: сгенерируйте ключ IndexNow, выложите в корень домена файл <ключ>.txt с одной строкой (сам ключ), укажите INDEXNOW_KEY и INDEXNOW_HOST в .env. В Make добавьте два модуля HTTP с Content-Type: application/json на yandex.com/indexnow и api.indexnow.org/IndexNow с полями host, key, keyLocation, urlList. Для виртуальных гайдов WordPress пересоберите sitemap-virtual-docs.xml и llms.txt командой python3 tools/post_publish.py --write-assets и не затирайте плагином корневой sitemap.xml. См. также indexnow.org.

Автор: Андрей Харченко Дата публикации: 27.04.2026 Обновлено: 27.04.2026

Что такое IndexNow и зачем Make?

Аналогия

IndexNow — это «кнопка вызова индексатора»: вы сообщаете поисковикам канонические URL, которые появились или изменились, вместо того чтобы ждать только обхода по sitemap.

Официальный обзор протокола — на indexnow.org. В проекте khar-ag.ru пинг дублируется на эндпоинт Яндекса и глобальный IndexNow — так настроен tools/post_publish.py (ветка ping_indexnow).

Обложка гайда: IndexNow, Make.com и post_publish
Оформление визуальный якорь гайда (обложка)

Какой JSON отправлять и куда?

Прямой ответ: одно тело JSON с полями host, key, keyLocation, urlList — его отправляют дважды на разные URL. Плейсхолдер YOUR_KEY берите из переменной окружения, не публикуйте ключ в открытых чатах и скриншотах.

{ "host": "example.com", "key": "YOUR_KEY", "keyLocation": "https://example.com/YOUR_KEY.txt", "urlList": [ "https://example.com/docs/new-slug/" ] }
Куда Назначение
https://yandex.com/indexnow Уведомление поиска Яндекса
https://api.indexnow.org/IndexNow Глобальная сеть IndexNow (Bing и др.)
keyLocation HTTPS-URL файла, в котором в одной строке лежит тот же key — иначе провайдеры отклонят запрос
/sitemap.xml (корень) Обычно генерируется плагином WordPress; не подменяйте вручную файлом от виртуальных гайдов
/sitemap-virtual-docs.xml Отдельная карта URL виртуальных гайдов из docs-virtual-registry.php

Как собрать сценарий в Make?

Ниже — логика без привязки к конкретному триггеру: после события (расписание, webhook, кнопка) сформируйте JSON и выполните два HTTP-запроса.

1

Триггер

Например «Watch RSS», Custom webhook или сценарий «по завершению публикации» в вашей внутренней логике — главное, чтобы в сценарий попал список абсолютных HTTPS-URL.

2

Iterator / массив urlList

Соберите массив urlList (один или несколько URL). Подставьте host без схемы, key — из защищённой переменной Make, keyLocation = https://<host>/<key>.txt.

3

HTTP → Яндекс

Метод POST, заголовок Content-Type: application/json; charset=utf-8, тело — объект выше. Сохраните статус ответа.

4

HTTP → IndexNow.org

То же тело, второй URL. Ожидаемые коды — 200 или 202 (как в проверке скрипта post_publish).

Ошибка ключа: чаще всего файл .txt в корне отдаёт 404, в теле лишние пробелы/BOM, или keyLocation указывает на другой хост, чем host.

post_publish.py, webroot и llms.txt

Короткий ответ: --write-assets пересобирает sitemap-virtual-docs.xml из docs-virtual-registry.php и llms.txt; --urls пингует IndexNow. Дальше выложите файлы из webroot-assets/ в корень сайта.

Команды из корня репозитория (где лежат tools/ и .env):

# Пересобрать sitemap-virtual-docs.xml и llms.txt python3 tools/post_publish.py --write-assets # Опционально: подмешать посты блога из WP REST python3 tools/post_publish.py --write-assets --merge-wp # Пинг IndexNow после выкладки гайда python3 tools/post_publish.py --urls "https://khar-ag.ru/docs/indexnow-make/"

Артефакты окажутся в webroot-assets/. Типовая схема выкладки в public_html (точные пути — у вашего хостинга):

Файл ключа

<KEY>.txt

Одна строка = ключ. Дублируйте путь в резерв: webroot-assets/<KEY>.txt при необходимости.

Карта

sitemap-virtual-docs.xml

При каждом новом виртуальном гайде — пересобрать и залить в корень, не путать с sitemap.xml.

LLM

llms.txt

Полный перечень гайдов для нейро-поисков; пересобирается тем же --write-assets.

robots.txt и быстрая проверка

Итог: в robots.txt держите обе строки Sitemap — от плагина и sitemap-virtual-docs.xml — тогда веб-краулеры увидят и посты, и виртуальные гайды.

Добавьте вторую строку Sitemap: (не удаляя строку плагина с основным sitemap) через Yoast, Rank Math, AIO SEO или фильтр robots_txt в functions.php — в зависимости от сайта.

Sitemap: https://example.com/sitemap.xml Sitemap: https://example.com/sitemap-virtual-docs.xml

curl -I на …/KEY.txt, …/sitemap-virtual-docs.xml, …/llms.txt — ответ 200

После пинга: в выводе post_publish.py --urls "…" оба эндпоинта в статусе 200/202

Корневой sitemap.xml плагина на месте — подкарты post-, page-, docs- и т.д.

Частые вопросы: что уточнить перед отладкой?

Ниже — краткие ответы; развёрнутые формулировки продублированы в JSON-LD FAQPage для микроразметки.

Почему в Make два одинаковых POST?

Чтобы и Яндекс, и глобальная сеть IndexNow получили тот же набор URL — дублирование осознанное, тело JSON идентично.

Можно ли залить sitemap виртуальных гайдов под именем sitemap.xml?

Нет: для WordPress на khar-ag.ru корневой индекс строит плагин; перезапись сломает цепочку подкарт. Держите отдельный файл sitemap-virtual-docs.xml и ссылку в robots.txt.

Где хранить секретный ключ IndexNow?

В .env (локально) и в защищённых переменных сценария Make. Публично доступен только URL keyLocation — сам ключ в одной строке в .txt на хосте.

INDEXNOW_KEY=your_key_value INDEXNOW_HOST=example.com SITE_PUBLIC_BASE=https://example.com