О чём этот гайд? Короткий ответ
Короткий ответ: IndexNow в Make и на khar-ag.ru: два POST на Яндекс и IndexNow.org, ключ в корне, post_publish.py, sitemap виртуальных гайдов и llms.txt без перезаписи sitemap.xml.
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.
Что такое IndexNow и зачем Make?
IndexNow — это «кнопка вызова индексатора»: вы сообщаете поисковикам канонические URL, которые появились или изменились, вместо того чтобы ждать только обхода по sitemap.
Официальный обзор протокола — на indexnow.org. В проекте khar-ag.ru пинг дублируется на эндпоинт Яндекса и глобальный IndexNow — так настроен tools/post_publish.py (ветка ping_indexnow).
Какой 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-запроса.
Триггер
Например «Watch RSS», Custom webhook или сценарий «по завершению публикации» в вашей внутренней логике — главное, чтобы в сценарий попал список абсолютных HTTPS-URL.
Iterator / массив urlList
Соберите массив urlList (один или несколько URL). Подставьте host без схемы, key — из защищённой переменной Make, keyLocation = https://<host>/<key>.txt.
HTTP → Яндекс
Метод POST, заголовок Content-Type: application/json; charset=utf-8, тело — объект выше. Сохраните статус ответа.
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.
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