Как я два года терял бесплатный трафик и не знал об этом
Два года мой бот получал трафик — а поисковики видели пустую страницу
У меня есть телеграм-бот 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, если интересно посмотреть, что получилось в итоге.