Быстрая индексация новостей на Тильде — не в моем случае

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

Я начал копать в эту сторону и выяснил: процесс можно ускорить. Есть специальный инструмент — IndexNow. Он работает как кнопка «Постучать поисковику»: публикуешь страницу → плагин сразу отправляет сигнал Яндексу и Bing, и они быстрее забирают материал в индекс.

Звучит красиво, но есть нюанс. IndexNow живёт в плагинах для CMS — WordPress, Joomla, Drupal и прочих. А у меня сайт сделан на Тильде.

Вот тут-то подстава: ни встроенной поддержки, ни нормальных плагинов. По сути, Тильда живёт в своём закрытом мирке, и такие вещи приходится крутить руками через костыли.

Значит, нужно собрать «костыль», который работает так же надёжно, как плагин.

Вариант A (без кода в админке Тильды): Cloudflare Worker + ключ IndexNow

Подходит, если домен проксируется через Cloudflare (CNAME на Tilda + облако включено).

Что можно сделать:

  1. Сгенерировать ключ IndexNow (любой 128-битный hex, можно UUID без дефисов).
  2. Отдать key-файл на корне домена https://site.ru/<key>.txt. На Тильде положить файл в корень нельзя, зато можно отдать его через Cloudflare Worker по роуту site.ru/<key>.txt.
export default { async fetch(req) { const url = new URL(req.url); // вставь свой ключ const KEY = "0123456789abcdef0123456789abcdef"; if (url.pathname === `/${KEY}.txt`) { re turn new Response(KEY, { headers: { "content-type": "text/plain; charset=utf-8" }, }); } // Простая служебная точка /_indexnow для отправки пинга if (url.pathname === "/_indexnow" && req.method === "POST") { const { urls } = await req.json(); // ["https://site.ru/news/xxx", ...] const body = JSON.stringify({ host: url.host, key: KEY, keyLocation: `https://${url.host}/${KEY}.txt`, urlList: urls, }); const r = await fetch("https://api.indexnow.org/indexnow", { method: "POST", headers: { "content-type": "application/json" }, body, }); return new Response(await r.text(), { status: r.status }); } return new Response("OK"); }, };

Вариант B (без Cloudflare): внешний «пингер» + статический хостинг key-файла

Если Cloudflare не используешь:

  1. Подними микрохостинг (любой самый дешёвый/VPS/вердж Workers Sites, Netlify + поддомен) и через DNS/Reverse-proxy отдай /<key>.txt на корне твоего основного домена (Nginx: отдель location с переадресацией на внешний storage).
  2. На внешнем сервисе (Make/Zapier/скрипт по cron) вызывай: POST https://api.indexnow.org/indexnow body:
{ "host": "site.ru", "key": "<KEY>", "keyLocation": "https://site.ru/<KEY>.txt", "urlList": [ "https://site.ru/news/novost-123" ] }

Вариант C (без key-файла на корне, но с API): Bing URL Submission API + Яндекс.Webmaster API

Когда нет возможности нормально положить key-файл, можно использовать родные API:

  • Bing URL Submission API: отправляешь URL с API-ключом в заголовке — без key-файла на сайте.
  • Яндекс.Webmaster API: массовая отправка URL на переобход (нужен OAuth токен + id сайта).

Плюсы: работает даже при «закрытом» корне.

Минусы: две интеграции вместо одной, лимиты и авторизация.

Итог — геморой не стоит свеч

Тильда не умеет в плагины. Но можно:

  • ключ отдать через Cloudflare Worker (или прокси-правило);
  • пинги улетают батчем на api.indexnow.org;
  • для надёжности продублировать в Bing URL Submission API и Яндекс.Вебмастер API;
  • плюс базовая техподготовка: sitemap, перелинковка, JSON-LD.

В общем, я забил на это дело, и руками делаю через «переобход страниц».

1
Начать дискуссию