IndexNow продают как «скажи поисковику про страницу — и он придёт за часы». Протокол без OAuth и капчи, 30 строк на Node.js без единой зависимости. Казалось бы, берёшь и пользуешься.
Но там три грабли, о которых в документации пусто.
Первая: встроенный `fetch` в Node падает с `fetch failed` на том же запросе, который `curl` отправляет с первого раза. Причина — undici, внутренняя реализация, прячет настоящую ошибку в `e.cause`. Большинство разработчиков логируют `e.message`, получают бессодержательную строку и уходят гуглить. Нужен ретрай и явное логирование `e.cause`.
Вторая: файл с ключом нельзя трогать при чистке репозитория. Удалил — получаешь тихий 403 без объяснений. Vercel с настройкой `cleanUrls` вообще редиректит файл верификации, так что проверка права не проходит в принципе.
Третья, и самая неприятная: IndexNow ускоряет обход, а не индексирование. Новый домен может ждать попадания в индекс неделями — протокол на это не влияет. Все слышали про IndexNow, но мало кто читает эту строчку мелким шрифтом.
Рабочий скрипт и разбор всех шести кодов ответа — на Хабре