Как я два года терял бесплатный трафик и не знал об этом

Два года мой бот получал трафик — а поисковики видели пустую страницу

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

На днях полез в логи nginx по совершенно другому поводу и наткнулся на строчку:

GET /robots.txt HTTP/1.1" 404"Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"

Дальше — ещё такая же, и ещё. Яндекс-бот и Гуглбот стучались на сайт по несколько раз в день. Каждый раз получали 404 на robots.txt, читали главную страницу - и уходили.

Что увидел краулер

Открыл сайт глазами поисковика - curl с юзер-агентом YandexBot - и понял масштаб. Весь ответ сервера:

<title>SaveBot</title>

4,7 килобайта: тайтл, пара скриптов, и всё. Ни слова текста, ни одного заголовка, ни единого предложения о том, что делает продукт.

Причина банальна и знакома, наверное, половине читающих: сайт — это SPA, весь контент рендерится в браузере через JavaScript. Краулер не выполняет JS при первом проходе - он видит ровно то, что лежит в исходном HTML. А там пусто.

Иронично то, что сам продукт всё это время нормально работал — юзеры открывали Mini App внутри Telegram, где JS выполняется всегда. Проблема была не в продукте, а в витрине для внешнего мира, о существовании которой я просто не думал.

robots.txt и sitemap — их не было вообще

Проверил очевидное - оказалось, robots.txt и sitemap.xml просто не существовали, отдавали 404 на любой запрос. То есть я не просто плохо оптимизировал сайт под поиск — я не сделал вообще ничего из базового набора.

Отдельно нашёл штуку помельче, но показательную: favicon весил 5,8 мегабайта. Гуглбот его старательно скачал целиком — просто потому что запросил. Мелочь, но наглядно показывает, насколько давно на сайт никто не смотрел глазами постороннего.

Почему это вообще важно

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

При этом краулеры честно приходили каждый день, годами. Не то чтобы поисковики игнорировали домен - домен исправно посещали, просто кормить было нечем. Это меняет всю логику: не нужно было «продвигать» сайт или бороться за внимание Яндекса — внимание уже было, оставалось дать ему хоть что-то прочитать.

Что чинил

Переписывать рабочее SPA-приложение не стал - там живой продукт с активными пользователями, ломать страшно и не нужно. Решение оказалось проще: statica для поисковика может жить рядом с приложением, не мешая ему.

На уровне nginx завёл отдельные адреса - лендинг и несколько статей - которые отдаются как обычные HTML-файлы, без единой строчки JS. Основное приложение как принимало трафик на своём адресе, так и принимает, я его не трогал вообще. Плюс:

  • добавил нормальные robots.txt и sitemap.xml;
  • поправил favicon (5,8 МБ → несколько килобайт);
  • написал несколько текстов под реальные формулировки, которые люди вводят в поиск, - не "оптимизированный под ключи" текст ради текста, а честные ответы на вопросы, с которыми люди приходят.

Отдельно оказалось важно: даже честный технический текст должен быть по-настоящему честным. Например, у моего бота есть жёсткое ограничение - он не может восстановить то, что было удалено до его подключения (это в принципе невозможно технически, и это касается любого подобного сервиса). Соблазн об этом не упоминать был - но именно эта честность, подозреваю, и отличает нормальный сайт от десятков сайтов-обманок в той же нише, которые обещают невозможное и собирают номера телефонов «для восстановления».

Что я бы сказал прошлому себе

Если у тебя есть продукт с собственным сайтом - не важно, бот, SaaS или что угодно - потрать пять минут и открой свой сайт так, как его видит поисковик:

curl -A "Mozilla/5.0 (compatible; YandexBot/3.0)" https://твойсайт.ру

Если в ответе меньше текста, чем в этом абзаце, - у тебя, возможно, та же проблема. Заодно проверь /robots.txt — многие им попросту не обзаводятся.

Отдельно посмотри логи веб-сервера на упоминания YandexBot и Googlebot - эти визиты бесплатно говорят, интересен ли твой сайт поисковику в принципе. Если краулер ходит, а трафика с поиска нет - вероятно, дело не в SEO-стратегии, а в том, что ему физически нечего показать.

Сайт бота, о котором речь, — saveaiobot.ru, если интересно посмотреть, что получилось в итоге.

1