Рост трафика медагрегатора на 3.08🍋 млн. через парсинг 51 млн URL конкурентов, нейросемантическую кластеризацию и автоматизацию контроля ошибок
Проект с 7,1 млн посетителей в месяц не рос 3 года. Динамика по ключевым запросам отрицательная: по Москве за год выпало из топ-10 30 000 ключевых запросов; по Санкт-Петербургу и Екатеринбургу практически без изменений. 40% региональных страниц выпадали из индекса из-за статуса МПК. Клиент исчерпал ресурсы классического семантического расширения.
Рассказываем, как команда seobot добились прироста трафика на 3,08 млн через парсинг 51 млн URL, SBERT-фильтрацию дублей и полную перестройку технической инфраструктуры.
Содержание
- Кратко о результатах;
- О проекте;
- Точка старта;
- Поставленные задачи;
- Агрегация статистики/индексирования;
- Проработка точек роста;
- Технические ошибки;
- Анализ конкурентов;
- Парсинг 9 конкурентов;
- On-page;
- SSR-фикс;
- Автоматизация семантики;
- Фиксация технических ошибок;
- 🏆Результаты: рост видимости (Москва +109%, СПб +204%), трафика +3,08 млн (+43,26%);
- Выводы и профессиональный рост.
Сразу к результатам
Показываем результаты, которые находятся в нашей зоне ответственности, с учетом NDA.
Общий график роста проекта:
Абсолютный прирост: 3 080 000
Процентный прирост: ≈ 43.26%
В разрезе по поисковым системам:
«Яндекс»
Было: 4 120 000
Стало: 6 600 000
Абсолютный прирост: 2 480 000
Процентный прирост: ≈ 60.19%
«Google»
Было: 2 980 000.
Стало: 3 550 000.
Абсолютный прирост: 570 000
Процентный прирост: ≈ 19.13%
О проекте: агрегатор медицинских услуг и клиник
В этот проект было вложено много сил и времени. Благодарим команду SEO-специалистов со стороны клиента за совместную работу. Получился продуктивный тандем: было минимум типичных созвонов, старались раз в месяц ставить задачи по всей команде и сводить рабочие моменты в ежемесячные спринты. Это дало отличный результат. Итак…
Медицинский агрегатор клиента помогает находить клиники, управляет записями и упрощает взаимодействие между пациентами и медицинскими организациями. Эта ниша одна из самых сложных в SEO. Мы в этом профи: знаем, как работать от архитектуры сайта до чистоты семантики и требований к медицинским проектам EAT.
Стек проекта:
- Админка — Laravel Nova.
- Backend — Laravel.
- Frontend — Vue.js.
Точка старта
Заказчик пришел к нам, когда трафик практически не менялся и находился на одном уровне в течение 3 лет.
На скриншоте изображена динамика проекта за прошлые 3 года. Наблюдается стагнация и небольшое, но постоянное падение трафика.
На старте работы трафик на сайте составлял 7 120 000 посетителей. Мы изучили историю: команда SEO на стороне клиента пыталась расширять семантику, но этого было недостаточно для масштаба проекта.
Анализ позиций на старте
На этапе подключения команды seobot позиции отслеживались по отдельным документам. Структура проекта не соблюдалась, из-за чего было сложно произвести комплексную оценку.
Общий тренд
Стагнация и частичное падение.
Москва
Демонстрирует устойчивое снижение: от 254 864 до 224 047 посетителей. Это сигнал тревоги: проект теряет видимость в поиске или уступает конкурентам.
Санкт-Петербург и Екатеринбург
Практически без изменений. Незначительные колебания говорят о застое: проект не растет, не наращивает трафик и не улучшает охват.
Новосибирск и другие регионы
Фиксируется небольшой рост, но улучшения не носят системного характера. По итогам года позиции все еще остаются на прежнем уровне. Позитивная динамика объясняется тем, что эти регионы только начали индексироваться в поиске.
Вывод
Проект «стоит на месте». Рост позиций либо отсутствует, либо нивелируется падением в ключевых регионах. Крупные направления (Москва и Санкт-Петербург) не только не растут, но и теряют позиции, что напрямую влияет на трафик.
Необходимы системные изменения: пересмотр стратегий, технический аудит, контентное обновление и работа с региональной выдачей.
Поставленные задачи
После детального обсуждения целей проекта были сформулированы ключевые SEO-задачи и целевые показатели (KPI):
- Увеличение органического трафика. Прирост минимум на 1 000 000 посетителей в месяц (имеется в виду: было 7 млн переходов из поисковых систем, должно стать 8 млн в месяц).
- Анализ причин падения трафика. Выявить факторы, влияющие на снижение видимости в поисковых системах.
- Обеспечение стабильного роста в регионах. Устранить стагнации и выстроить системный подход к региональному продвижению.
- Решение проблем с индексацией. Высокая доля региональных страниц получает статус МПК (мало полезного контента) и выпадает из индекса «Яндекса» и Google. Требуется провести технический и контентный аудит.
- Положительная динамика по позициям. Достигнуть устойчивого роста видимости в поисковой выдаче по приоритетным запросам.
Агрегация статистики/индексирования для понимания стратегии
Диагностика проекта
Перед началом работы по любому проекту необходимо собрать данные для исследования текущей ситуации.
Этап 1. Яндекс.Вебмастер
- Переходим в раздел «Индексирование».
- Далее смотрим «Статистику обхода» и «Страницы в поиске».
С помощью этого функционала картина частично видна: какие страницы индексирует поисковая система, объем технических ошибок и т. д.
Смотрим динамику индексации, пытаемся понять, что и когда пошло не так. Находим даты появления дублей, МПК, 404 и уточняем у клиента, что происходило в течение месяца после возникновения проблемы.
Из этого раздела «Яндекс.Вебмастера» также можно сделать выгрузку в Excel или CSV, распределить каждую ошибку по статусу и передать в работу.
Этап 2. Технический аудит
На первоначальном технический аудит — это незаменимая задача. Так мы можем комплексно понять, какие ошибки есть на проекте и дополнить данные, которые дал «Яндекс.Вебмастер». Так как в проекте более 10 млн страниц, то даже при правильной сегментации по региональным папкам и направлениям, быстро выполнить эту задачу невозможно.
Для проведения аудита мы рекомендуем:
- Иметь стандартную программу технического аудита Netpeak Spider или Screaming Frog.
- Развернуть ее на сервере, на котором будет достаточно свободного места для парсинга и оперативной памяти.
Мы используем Ryzen 9 5950X, 128 GB RAM, 2×4 TB NVMe. Этого хватит, чтобы просканировать нужный объем страниц.
Вначале обращаем внимание только на критические моменты:
- Битые ссылки.
- Дубликаты.
- Все коды ответа: 3xx (перенаправления), 4xx (ошибки клиента), 5xx (ошибки сервера).
- Время ответа сервера.
- Индексируемость: разрешен в robots.txt, meta-robots, каноничность, X-Robots-Tag. Важно понять, что индексируется в проекте, а что нет.
- Распределение ссылочного веса.
- URL с неправильным форматом.
- Микроразметка: типы данных.
- По умолчанию включаем рендеринг JS.
Сам по себе аудит всегда будет стандартным, запустить и настроить его несложно. Главное — правильно интерпретировать данные:
- Оценить объем и критичность технических проблем.
- Понять их влияние на SEO.
- Определить, на каком этапе оптимизации следует сосредоточиться на технической части.
Этап 3. Анализ трафика через «Яндекс.Метрику»
После первичной диагностики индексации переходим к детальному анализу поведенческих факторов и источников трафика. «Яндекс.Метрика» дает нам полную картину о качестве органического трафика и помогает выявить проблемные зоны.
Что анализируем в первую очередь:
Источники трафика и их динамика
- Смотрим распределение между органикой, Директом, переходами и рекламой.
- Оцениваем долю поискового трафика «Яндекс» vs Google (для медицинских проектов критически важно, от этого будет зависеть итоговая стратегия по проекту).
- Выявляем падения и рост по конкретным поисковым системам за последние 12 месяцев.
Поведенческие метрики по органическому трафику
- Изучаем показатель отказов.
- Оцениваем глубину просмотра (целевая метрика 3–4 страницы за сессию).
- Смотрим среднее время на сайте (для данной тематики адекватно 2–3 минуты).
- Проверяем конверсии в целевые действия (запись к врачу, просмотр контактов клиники).
Анализ посадочных страниц
Да, вы можете сказать: «Никита, да ты погнал, зачем это смотреть на первоначальном этапе?» А я вам отвечу: важно понять, какой раздел или какие конкретные документы дают трафик на данный момент. Был бы сайт нулевой, не полез бы.
- Находим топ-100 страниц по трафику и отслеживаем динамику.
- Выявляем страницы с резким падением трафика (потеря позиций).
- Определяем страницы с высоким отказом (проблемы с релевантностью).
- Сегментируем по типам: главная, регионы, услуги, клиники, врачи.
Региональный срез
- Анализируем трафик по городам присутствия.
- Сравниваем объем трафика с количеством проиндексированных страниц по регионам.
- Выявляем регионы с наибольшим потенциалом роста.
Этап 4. Анализ ссылочного профиля через Ahrefs
Для проекта такого масштаба качество ссылочной массы может быть одним из факторов стагнации.
Проводим комплексный анализ
- Domain Rating (DR) и его динамика за год.
- Количество ссылающихся доменов и их прирост.
- Соотношение dofollow/nofollow ссылок.
- Распределение анкоров (брендовые, коммерческие, безанкорные).
Анализ качества ссылочной массы
- Выявляем токсичные домены через Ahrefs Spam Score (если кто не знает, изучите, будет полезно).
- Анализируем тематическую релевантность доноров (медицина, здоровье, общая тематика).
- Определяем долю «мусорных» ссылок (форумы, комментарии, каталоги низкого качества).
Конкурентный анализ
- Сравниваем ссылочный профиль с топ-3 конкурентами (понимаем, что не уверены в возможности тягаться ссылками, но будем вырывать качественные домены).
- Выявляем качественных доноров у конкурентов, которых нет у нас.
- Анализируем скорость прироста ссылочной массы у конкурентов.
Этап 5. Изучение существующих отчетов по проекту
Перед формированием новой стратегии критически важно изучить историю проекта и предыдущие попытки оптимизации.
Анализ предыдущих SEO-отчетов
- Изучаем отчеты за последний год.
- Выявляем, какие рекомендации были даны и что из них было внедрено.
- Определяем, какие действия давали положительный эффект.
- Фиксируем неудачные решения, чтобы не повторять ошибок.
Технические отчеты и логи изменений
- Анализируем историю редизайнов и их влияние на трафик.
- Отслеживаем изменения в структуре URL и настройке редиректов.
- Фиксируем обновления CMS и их последствия.
- Проверяем внедренные технические оптимизации (скорость загрузки, Core Web Vitals).
Контентная стратегия
- Анализируем планы по созданию контента.
- Оцениваем качество и объем публикуемых материалов.
- Проверяем соответствие контента поисковому спросу.
- Выявляем проблемы с каннибализацией запросов.
Такой комплексный подход к сбору данных позволяет сформировать полную картину текущего состояния проекта и понять, почему предыдущие попытки выйти из стагнации не дали результата. На основе этих данных разрабатываем новую стратегию с учетом всех выявленных проблем и точек роста.
Следующий шаг: проработка точек роста
Технические ошибки
Провели аудит и поняли, что исправление технических ошибок положительно повлияет на проект, поэтому с этим тянуть не нужно. Первым делом поставили задачи на устранение технических ошибок. Для начала самые основные:
1. Дубли
На практике, если просто передать разработчикам полный список дублей, задача, скорее всего, так и останется без движения. Чтобы процесс пошел, необходимо структурировать весь массив: сгруппировать дубли по причинам их возникновения, типам страниц или объединить по общим техническим признакам. Это упрощает анализ и постановку точечных задач.
Классифицировали по типам возникновения и способам решения проблем с дублями:
Технические причины
- Слетевшие или частично неотработавшие шаблоны Title. Создаются страницы с одинаковым контентом, но разными адресами.
- Отсутствие или ошибки в подстановке топонимов. Дубли в листингах при отсутствии геопривязки (например, при незаведенных городах в базе склонений).
- Ошибки генерации meta-тегов (title/description). Одни и те же мета-теги у разных страниц.
- Копии страниц по GET-параметрам без канонических ссылок. Например, ?sort=asc и ?utm=2 создают клоны основной страницы.
- Многократное индексирование paginated-страниц. Дубли с /page/1, /page/2 и т. д., особенно если контент на них пересекается.
- Редиректы, ведущие на дублируемые страницы. Особенно временные (302) или циклические.
- Несогласованность между robots.txt, canonical и мета-роботами. Противоречивые инструкции поисковым системам.
Контентные причины
- Дубли карточек организаций/клиник. Одинаковые названия и описания в разных регионах без достаточной уникализации.
- Одинаковое наполнение листингов в разных категориях. При отсутствии специфических фильтров или свойств.
- Новости и статьи, повторяющиеся по шаблону из года в год. Старый контент не архивируется, не объединяется, не канонизируется.
- Множественные авторские страницы/профили врачей с одинаковым описанием. Особенно если они работают в нескольких филиалах.
- Контентный парсинг чужих источников без доработки. Один и тот же текст публикуется в разных разделах.
Структурные и архитектурные причины
- Дубли, возникающие из-за тестовых поддоменов или технических зеркал. dev.site.ru, old.site.ru, test.site.ru.
- Дубли категорий/услуг при наличии альтернативных путей навигации. Например, /uslugi/terapiya/ и /kliniki/terapiya/.
- Дубли фильтрации и пагинации в категориях. Особенно если нет параметров canonical или запрещающих директив.
- Несоответствие структуры URL между регионами. Например, /moskva/terapiya/ и /terapiya-moskva/ ведут на один и тот же контент.
Неверно настроенная мультиязычность или мультирегиональность. Страницы на одном языке или регионе дублируются в других версиях.
2. 404 ошибки/битые ссылки
При аудите проекта мы зафиксировали долю 404-страниц и битых ссылок, которые напрямую влияют на качество индексации, пользовательский опыт и рейтинг сайта. Ниже — развернутая классификация ошибок с примерами и количеством, переданным в работу соответствующим отделам.
Ошибки шаблонов URL (динамика шаблонов)
Страницы создавались с нарушением логики URL — slug не подставлялся или часть пути терялась. Такие URL попадали в ссылки и sitemap, но не вели никуда.
Примеры: /uslugi//kardiologiya, /kliniki/--id1245
Найдено: ~11 000 404-ошибок.
Внутренние ссылки на удаленные страницы
После снятия с публикации карточек врачей, клиник или направлений, внутренняя перелинковка продолжала ссылаться на эти страницы.
Тип страниц: карточки врачей, организаций, устаревшие услуги.
Найдено: ~12 000 битых внутренних ссылок.
Ручные ссылки в админке и текстах
Редакторы вручную вставляли некорректные URL в тексты, баннеры и описания. Это привело к битым ссылкам с опечатками, лишними символами или отсутствующими частями пути.
Примеры: /uslgi/kardiologya, /klinki-moskva
Найдено: ~3 000 битых ссылок.
Ошибки в sitemap.xml
В sitemap оставались URL удаленных страниц, часть из которых давно не открывалась. Это создавало «мусорный шум» для поисковых роботов и снижало эффективность обхода.
Ошибочных ссылок: ~2 100.
Битые внешние ссылки
Некоторые внешние сайты продолжали ссылаться на несуществующие страницы проекта (устаревшие пресс-релизы, старые партнерские ссылки, акции и т. д.).
Пример: внешние ссылки на /promo/2022-leto-aktsiya
Найдено: ~900 внешних ссылок с ошибкой 404.
Устаревшие ссылки на архивные материалы
В статьях и новостях сохранялись ссылки на архивные разделы или страницы, удаленные после смены структуры.
Пример: новости со ссылками на неактуальные филиалы или устаревшие услуги.
Найдено: ~7 800 битых ссылок.
Некорректные редиректы на 404
В некоторых случаях попытка перейти на редиректируемую страницу приводила не на целевой документ, а на 404 (например, из-за неправильного правила в .htaccess).
Ошибочных редиректов: ~1 200.
3. Остальные технические ошибки с меньшей критичностью
В ходе комплексного технического аудита проекта также выявили ряд менее критичных проблем, не оказывающих прямого влияния на видимость в поиске или пользовательский опыт, но требующих корректировки для поддержания технической чистоты. Эти ошибки были зафиксированы, сгруппированы и переданы в фоновую работу.
Ошибки микроразметки
На части страниц отсутствовали атрибуты itemprop, itemscope и itemtype. Также встречались устаревшие схемы или дублирующиеся блоки Schema.org.
Типовые страницы: карточки врачей, листинги клиник, блоки с рейтингами.
Решение: обновить шаблоны разметки по рекомендациям schema.org и поисковых систем.
Перелинковка без контекста
На многих страницах присутствовала внутренняя перелинковка, но ссылки встраивались без контекстной привязки, в виде сквозных блоков или баннеров, не усиливающих смысловую структуру.
Влияние: пониженная эффективность распределения внутреннего веса и потенциальное игнорирование ссылок ботами.
Использование nofollow и noindex без необходимости
Часть служебных страниц (например, фильтры и пагинации) имели директивы noindex, но не были закрыты в robots.txt, из-за чего попадали в индекс как «частично разрешенные».
Решение: унификация логики индексации и настройка директив на уровне шаблонов.
Дубли canonical-ссылок
Некоторые страницы (особенно фильтрационные) имели одинаковый canonical, несмотря на уникальный набор условий. Это приводило к конфликту каноничности и потере веса.
Резюме
- Все ошибки зафиксированы в техническом реестре.
- Каждой ошибке назначен приоритет.
- Определены ответственные лица со стороны разработки.
- Исправления вносятся планово, в рамках спринтов, без срочной эскалации.
Анализ основных метрик конкурентов
Анализ данных конкурентов необходим для корректировки стратегии и выявления точек роста. Именно в процессе конкурентного анализа можно найти актуальные направления развития и интересные паттерны.
До проведения анализа стратегия остается стандартизированной. Но как только он выполнен, у нас появляется определенный набор метрик, на основании которых мы начинаем изучать факторы ранжирования.
Проведение конкурентного анализа — не просто рутинный этап, а ключевой элемент стратегического SEO-продвижения. До момента анализа стратегия будет лишь гипотетически обоснованной, но после — становится конкретной, основанной на фактах и приоритетах. Мы работаем с метриками, потому что именно они позволяют выявить неочевидные паттерны, указать на аномалии и дать ответ на главный вопрос: почему одни сайты в топе, а другие нет.
На изображении представлен интерфейс сводного дашборда, в котором отражены ключевые параметры: объем органического трафика, процент SEO-зависимости, количество ключевых фраз в топ-5/10/50, показатели ссылочного профиля (DR, домены-доноры, общий объем ссылок), индексируемость в «Яндексе» и Google, а также возраст домена.
Разбор показал, что абсолютные лидеры по трафику — домены 1, 2 и 3. Каждый из них имеет более 7–9 млн проиндексированных страниц, что заметно превосходит показатели нашего проекта на момент старта.
Это стало первой гипотезой: увеличение числа качественных страниц с высокой вероятностью даст прирост трафика. Мы начали декомпозицию: какие именно типы страниц генерируют трафик у конкурентов? Что нужно нам, чтобы воспроизвести аналогичный объем?
Вторым этапом анализа стали ключевые фразы. Мы провели пересечение запросов конкурентов и запросов, по которым ранжируется наш сайт. Это позволило выявить тысячи кластеров, которые у нас не представлены совсем, но стабильно находятся в топе у конкурентов. Причем часть таких кластеров неочевидна и не вытекает из стандартной семантики — это результат работы с данными и продуктовой структурой у конкурентов.
Особое внимание уделили ссылочной массе: разрыв между лидерами и большинством проектов на рынке колоссален. У лидера — более 22 000 уникальных доноров и оценка DR = 82, что напрямую коррелирует с охватом и ранжированием по конкурентным запросам. Сравнение ссылочного профиля позволяет не только понять масштаб отставания, но и выделить типы доменов, где ссылки действительно работают: тематические СМИ, отраслевые каталоги, университеты, медицинские ассоциации.
И наконец, важным оказался возраст домена. Все конкуренты, занявшие топовые позиции, имеют возраст более 9 лет. Это дает дополнительный кредит доверия поисковым системам и устойчивость в ранжировании. Сайты младше 5 лет практически не входят в топ-3 по высокочастотным кластерам.
Вывод
Анализ метрик конкурентов — это не просто «сравнение цифр», а полноценное исследование рынка. Он дает конкретные направления для расширения, наращивания ссылок и роста за счет контента. В нашем случае именно на его основе была выстроена дальнейшая модель масштабирования: от создания новых страниц до постановки приоритетов в ссылочном продвижении и усиления присутствия в целевых регионах.
Парсинг 9 конкурентов: 51 млн URL → 2,05М кластеров после SBERT-очистки от интентных дублей
После анализа конкурентных метрик стало очевидно, что ключевые игроки рынка обладают значительно более широким охватом семантики, а также существенно превосходят наш проект по объему проиндексированных страниц. Это указывает на то, что у них реализована более плотная структура охвата пользовательских интентов, в том числе за счет региональных страниц, категорий, карточек клиник и вспомогательных разделов.
В этих условиях корректным следующим шагом становится декомпозиция структуры конкурентов. Цель: выявить страницы, присутствующие у конкурентов, но отсутствующие на нашем проекте. Причем не на уровне категорий, а вплоть до конкретных документов. Задача: получить уникальный список URL и кластеров, которые потенциально принесут трафик, но пока не реализованы на нашем сайте.
Подход к решению: парсинг конкурентов и семантическое сравнение
В проектах с большим объемом (10+ млн страниц) ручной аудит структуры невозможен. Требуется построение автоматизированной системы, позволяющей извлечь:
- Полную структуру URL конкурента.
- Разметку по типу страниц (услуги, врачи, категории, города, новости и т. д.).
- Сравнение с нашей структурой с выделением уникальных кластеров.
Для этого применяем парсинг конкурентов и умное семантическое сравнение. Методологически процесс разбивается на несколько этапов.
Этап 1. Сбор структуры конкурентов (парсинг) + очистка
Для проектов с объемом до 500 000 URL можно использовать Screaming Frog SEO Spider (с функцией custom extraction через XPath и RegEx) или аналогичные решения. Мы ранее подробно описывали такой подход в статье (ссылка).
Однако в рамках данного проекта мы столкнулись с иным масштабом: объемы страниц у конкурентов превышают 8–9 миллионов. Стандартные инструменты не справляются:
- Прокси быстро банятся.
- Динамическая защита определяет парсинг по активности.
- Ротация юзер-агентов уже не работает на глубокой выборке.
Решение: разработка собственных парсеров, ориентированных на архитектуру каждого конкретного конкурента. Парсеры были адаптированы под HTML-структуру, скорость ответа, антибот-систему, глубину вложенности и т. д.
Ключевые условия успешного парсинга
- Пул прокси с динамическими IP-адресами. Один из основных факторов: антибот-системы начинают блокировать при частых запросах с одного IP.
- Ротация подсетей. Использование только разных подсетей: при «палеве» одной подсети могут быть заблокированы сразу сотни IP. Мы распределяли прокси по диапазонам.
- Микс User-Agent и delay-моделирование поведения человека. Использовались как мобильные, так и десктопные User-Agent, плюс реализация случайных задержек и обхода ссылок, как в реальной сессии.
- Раздельный парсинг по типам страниц. Мы делили загрузку: сначала категории, потом листинги, далее карточки, финально корпоративные страницы (о нас, вопросы, сервисы и т. д.).
- Асинхронная архитектура и лимит на параллельные потоки. Парсеры работали по асинхронной модели с ограничением по одновременным подключениям к одному домену. Это позволяло избегать ответов 429/503 и равномерно распределять нагрузку на целевой сайт.
- Резервное кеширование и авто-дублирование. Каждый пройденный URL кешировался в отдельном слое, что позволило при сбоях быстро продолжить с последней точки. Также была реализована система проверки «битых» и «переходных» URL с повторными попытками через заданный интервал.
В результате получили масштабную выгрузку URL конкурентов, которые были далее очищены, размечены и семантически сопоставлены со структурой нашего сайта. Следующий этап — семантическое выравнивание, где каждая страница конкурента сравнивается по смыслу и интенту с нашими страницами.
С учетом объемов (от 2 до 9 млн URL на одного конкурента) критически важно было очистить собранный массив от технического, повторяющегося и нерелевантного мусора.
Первым этапом после парсинга стала глубокая очистка от топонимов и географических маркеров. Мы полностью убрали все упоминания локаций из выгрузки, чтобы впоследствии сравнить их с нашей актуальной региональной базой и определить уникальные отсутствующие местоположения, потенциально пригодные для расширения.
Был сформирован универсальный файл со всеми формами географических привязок, включая:
- Склоненные и несклоненные формы городов и регионов (в Казани, по Нижнему Новгороду, Тюмень).
- Аббревиатуры и сокращения (СПб, МО, РТ, СЗФО).
- Внутригородские районы и округи (например, ЦАО, Московский район, Химки, Красногорск).
Этот список передавался в нейросетевой модуль (на базе собственных инструментов на Python), адаптированный под задачу семантической фильтрации. Модель автоматически:
- Распознавала и исключала строки с локальной привязкой.
- Сохраняла контекст запроса (например, «УЗИ в Москве» превращалось в «УЗИ»).
- Вела трекинг всех удаленных топонимов.
Итог: на выходе мы получили 2 файла:
- Очищенный массив страниц, пригодный для нейтрального лингвистического сравнения.
- Сводный список уникальных регионов, отсутствующих в текущей структуре проекта, но которые явно представлены у конкурентов.
Таким образом, мы не просто исключили дубли, а заложили фундамент для дальнейшего масштабирования по регионам, опираясь на реальный спрос и данных о конкурентах.
Вторым шагом стала очистка URL по регулярным выражениям. Мы исключили:
- Страницы пагинации (?page=, /page/2).
- Динамические сортировки (?sort=asc, ?sort=rating).
- Технические параметры (utm_, yclid, fbclid, ref=, session_id).
- Мультиязычные зеркала (/en/, /kz/, /by/).
- Устаревшие архивы (/archive/20XX/, /old/, /beta/).
В дополнение применили фильтрацию по типам страниц, исключая:
- Страницы ошибок (/404, /error, /maintenance).
- Файлы и вложения (.pdf, .docx, .jpg).
- Вспомогательные страницы типа /rss, /subscribe, /unsubscribe.
Далее каждый уникальный URL классифицировался по типу интента (услуга, симптом, врач, локация, справка) и передавался в модуль семантического сравнения.
Этап 2. Очистка от семантических (лексических) дублей
После удаления геометок и технического мусора мы перешли к следующей критически важной задаче — устранению семантических дублей. В агрегаторных проектах с миллионами документов лексические и интентные пересечения встречаются повсеместно: разные формулировки — один и тот же интент.
Классические примеры:
- «УЗИ коленного сустава» ↔ «Ультразвуковое исследование коленного сустава» ↔ «УЗИ колена».
- «Кардиологи в Рязани» ↔ «Прием врача-кардиолога».
- «Анализ крови на гормоны» ↔ «Лабораторное исследование уровня гормонов в крови».
На поверхностном уровне такие фразы различны, но с точки зрения поисковой системы и интента пользователя они дублируют друг друга. Массовое внедрение таких дублирующих документов приводит к каннибализации запросов, размазыванию веса и ошибкам в маршрутизации на выдаче.
Решение: внедрение семантического сравнения на основе модели Sentence-BERT (SBERT), дообученной на корпусе медицинских и сервисных фраз (на базе paraphrase-multilingual-MiniLM-L12-v2). Это позволило нам:
- Сравнивать фразы не посимвольно, а по смыслу.
- Находить интентные дубли, даже при сильных лексических отличиях.
- Группировать в один кластер страницы, близкие по смыслу.
Как работал модуль:
- Каждая строка из очищенного списка URL-анкорных пар приводилась к базовой текстовой форме (удаление лишнего, декомпозиция на интенты).
- Применялась трансформация в эмбеддинги через SBERT.
- Вычислялось косинусное расстояние между всеми парами: от 1.0 (полные дубли) до ~0.7 (погранично схожие).
- Порог отсечения подбирался эмпирически:
- < 0.85 — строки исключались как дубли;
- 0.85–0.95 — отправлялись на ручную проверку;
- 0.95 — сохранялись как уникальные.
Примеры выявленных дублей системой:
Дополнительные меры:
- После фильтрации нейросетью мы применили расстояние Левенштейна для более точной постобработки. Это позволило выявить машинно-уникальные, но смысловые дубликаты.
- Часть пограничных случаев проверялась вручную (например, такие пары, как «Кардиолог Москва» ↔ «Прием кардиолога в Москве», имели высокую степень семантического сходства, но могли вести на страницы с разной специализацией или структурой — одна с выбором врача, другая с записью в клинику).
- Все дубли были либо объединены в кластеры, либо исключены из генерации посадочных страниц.
Результат:
- Очищено более 620 000 строк, признанных дублирующими по смыслу.
- Сформирован финальный набор уникальных кластеров, пригодных для генерации новых страниц без риска каннибализации.
- Существенно сокращено семантическое пересечение внутри проекта, что снизило внутренние конфликты в ранжировании и усилило сигнал по ключевым направлениям.
Этап 3. Снятие позиций по очищенному списку
После формирования семантически очищенного списка кластеров мы перешли к съему позиций. Цель — финально убедиться, что:
- Данные страницы отсутствуют в текущей структуре сайта.
- По этим кластерам у нас нет стабильных позиций в топ-10 или топ-15.
Этот шаг нужен для исключения дублей и минимизации риска каннибализации. В агрегаторных проектах это критично: даже частичное пересечение по интенту снижает релевантность и расфокусирует выдачу.
Что мы сделали:
- Взяли список очищенных запросов.
- Сняли позиции в «Яндексе» (выбрали только «Яндекс» для экономии бюджета, посчитав его достаточным для данной задачи).
- Сопоставили выдачу, чтобы отфильтровать случаи, где наш документ уже стабильно находится в топ-10/15.
Если страница попадала в топ-10, кластер исключался из дальнейшего внедрения. Это позволило оставить только те группы, которые уникальны, не охвачены и не пересекаются с текущим контентом.
Поскольку по каждому запросу собирался топ-100, дополнительно проверяли: если позиция была в пределах топ-50 и заголовок Title выглядел релевантным, такой запрос также исключался.
Пример логики проверки:
Технические детали:
- Снятие выполнялось на основе Yandex Search API.
- Парсинг выдачи велся с учетом регионального таргетинга по самому высокочастотному региону (Москва).
- Использовалась двойная фильтрация: если позиция в топ-10, то запрос сразу исключался, если в топ-50, выполнялась ручная проверка документов.
Результат этапа:
- Из общего пула потенциальных кластеров исключено около 17 % как уже занятых нашими страницами.
- Сформирован финальный список только новых и нерешенных тем, по которым отсутствовала видимость.
- Минимизирован риск внутренней конкуренции и каннибализации, что критично для масштабирования.
Итоги этапа: Работа над этой частью проекта длилась более 2-х месяцев и включала полную парсинговую декомпозицию 9 ключевых конкурентов. Всего было обработано более 51 миллиона URL.
Что было сделано:
- Написаны кастомные парсеры для каждого домена: адаптированы под структуру, защиту и скорость ответа сайта.
- Выполнена нейросетевая очистка от регионов (на входе ~50 млн, после удаления дубликатов и топонимов ~12 млн строк).
- Применена семантическая фильтрация через SBERT: выявлены лексические и интентные дубли.
- Сняты позиции по очищенному списку: удалены все кластеры, по которым уже было ранжирование.
Финальный результат: найдено 2 048 000 уникальных страниц/кластеров, отсутствующих в текущей структуре.
Эти кластеры:
- Не дублировали архитектуру сайта.
- Не имели ранжирования по ключевым фразам с нашей стороны.
- Показывали уверенную видимость у конкурентов в «Яндексе» и Google.
- Представляли устойчивые, валидированные точки роста.
Разметка по типу найденных страниц:
Что мы упустили (до аудита):
- Глубокая персонализация. У конкурентов явно выражены сценарные и жизненные кластеры, например «УЗИ органов малого таза после 40 лет», «МРТ перед операцией», «Обследование ребенка перед школой».
- Микро-услуги и ответные кластеры. «Анализ крови на ТТГ», «Скрининг на сифилис», «Онкомаркеры у мужчин».
- Тематические справочники и FAQ-блоки. Конкуренты создают контекстные образовательные блоки, что усиливает E-E-A-T и дает выдачу по информационным интентам.
- Нестандартные формы записи и навигации. «Вызов кардиолога с расшифровкой ЭКГ на дом», «Медсправка для поступления в ВУЗ», «Врач-педиатр с возможностью оформить медкарту».
Ключевые инсайты:
1. Услуги представлены в десятках сценариев
У конкурентов высокая доля сквозной связности: одна и та же услуга охвачена через разные пользовательские траектории (симптом → врач → анализ → запись).
2. Скрытые кластеры, не видимые в Wordstat и Google Keyword Planner
Более 40 % кластеров не фиксируются стандартными инструментами. На их сбор вручную потребовалось бы до 3-х лет.
3. Кластеры требуют не только SEO, но и продуктовой проработки
Нужны сопоставление услуг, фильтрация врачей и настройка маршрутов. Простая генерация страниц не даст результата.
4. Развитая региональная структура
У лидеров рынка высоко развиты подпапки и контекстные страницы (например, «УЗИ в Апрелевке»). У нас регионализация покрывала только ~28 % запросов.
Вывод по этапу:
В результате парсинга, нейросемантической очистки и позиционного анализа:
- Получили масштабную стратегическую карту роста на 2+ млн страниц.
- Выявили системные зоны недоработки в текущей структуре сайта.
- Провели полную архитектурную реорганизацию семантики.
- Подготовили платформу для пошагового внедрения нового объема с учетом частотности, конкуренции и маржинальности.
On-page: внедрение 14 E-E-A-T блоков (цена/подготовка/FAQ) на основе топ-3 в нише
После формирования расширенной карты кластеров и отбора тем для внедрения перешли к глубокой on-page-оптимизации. Этот этап был не просто «доработкой шаблонов». Мы рассматривали каждую страницу как отдельную SEO-единицу, которая должна удовлетворять интент пользователя и максимально полно отвечать на его запрос.
Один из важнейших факторов ранжирования в конкурентных тематиках (особенно в медицинской нише) — информационная полнота документа. Поисковые системы ожидают, что документ:
- Покрывает интент полностью.
- Содержит структурированные блоки (услуга, цена, врач, показания, противопоказания, клиника и т.д.).
- Имеет E-E-A-T-сигналы (отзывы, экспертность, авторство, микроразметку).
- Технически валиден и рендерится без потерь.
Что мы сделали:
- Провели полноценный on-page-анализ конкурентов, сегментируя его по типам страниц.
- Составили детализированные чек-листы блоков по каждому типу страниц: от карточек врачей до информационных справок.
- Выписали все уникальные элементы интерфейса и содержательных блоков, которые конкуренты внедряют, а мы нет.
- Провели мэппинг блоков: что уже реализовано, что отсутствует, что нуждается в улучшении.
Пример составленного документа:
Типы страниц, по которым проводился анализ
Мы приоритезировали страницы по трафикообразующему потенциалу и частоте в структуре конкурентов.
1. Карточки услуг (УЗИ, МРТ, анализы, приемы врачей)
2. Карточки врачей по специализации
3. Листинги клиник по направлению и региону
4. Информационные статьи и справки
5. Симптомные страницы / страницы по жалобам
6. Комплексные обследования / сценарии (врачи + услуга + симптом)
7. Вызов врача на дом
8. Детские и женские направления
9. Карточки анализов
Примеры блоков, которые мы нашли у конкурентов и поставили задачи по реализации на нашем сайте:
- SEO-блок с динамически сгенерированным абзацем (1–2 предложения по интенту).
- Раздел «Показания и противопоказания».
- Блок «Как проходит процедура».
- Рейтинг врача/услуги с микроразметкой AggregateRating.
- Раздел «Вопросы-ответы» (FAQ) с разметкой Schema.org.
- Интерактивная карта клиник, оказывающих услугу.
- Отзывы о врачах и клиниках (авторизованные).
- Калькулятор цен (например: «сдать 3 анализа — скидка 10%»).
- Схема подготовки к исследованию (для УЗИ, ФГДС, анализов).
- Ссылки на родительские и дочерние услуги (внутренняя иерархия).
Почему это важно:
Многие сайты в топе по медицинским запросам достигают успеха не за счет ссылок, а за счет качества и глубины on-page-оптимизации. В тематиках, где E-E-A-T критичен, структура и наполнение документа становятся основным маркером доверия. Мы не копировали конкурентов, а обобщили их паттерны, усилили и превратили это в собственный универсальный on-page-шаблон, применимый для десятков тысяч страниц.
SSR-фикс: динамические цены и E-E-A-T блоки исключены из индекса из-за JS-рендеринга
Одним из часто недооцениваемых факторов в SEO является корректность рендеринга ключевых элементов документа. Даже если страница формально полна, логично структурирована и содержит необходимый контент, это не гарантирует, что поисковая система сможет его интерпретировать и проиндексировать. Причина — отложенная подгрузка критически важных блоков через JavaScript, что может привести к частичной или полной невидимости этих данных для бота.
Что мы сделали:
В рамках технического аудита и контентной проверки протестировали корректности SSR/CSR-рендеринга. Для этого:
- Отключали выполнение JavaScript на клиенте.
- Проводили парсинг и скриншоты «сырых» HTML-версий страниц (до и после выполнения JS).
- Использовали цитатный поиск в «Яндексе» и Google для проверки, попадает ли конкретный текст в индекс.
Найденные ошибки:
- Цены на услуги (в том числе прайсы по УЗИ, МРТ, лабораторным анализам) подгружались динамически через JS. В результате страницы казались пустыми с точки зрения коммерческого предложения в глазах поисковой системы.
- Дипломы и сертификаты врачей, размещенные в виде слайдера, также были доступны только после выполнения JS, из-за чего нарушалась логика E-E-A-T-сигналов (нет подтверждения квалификации).
- Некоторые клинические рекомендации, показания и противопоказания подгружались из внешнего JSON по событию scroll, и попросту отсутствовали в initial DOM.
Почему это критично:
Поисковые боты (особенно Googlebot на слабых/глубоких страницах и «Яндекс.Бот») не гарантируют выполнение всех JS-скриптов. В результате страница теряет релевантность, не индексируется полноценно или получает статус малоинформативного контента (МПК).
Решение:
- Все элементы, критичные для индексации (цены, лицензии, описания, микроразметка), были переведены в server-side рендеринг.
- Перестроена логика шаблона: ключевые текстовые блоки теперь отдаются в HTML без ожидания JS.
- Проведена ручная проверка всех шаблонов с отключенным JS и средствами Google Search Console (Inspect as Googlebot).
Переход к постоянному обновлению семантики
При работе с проектом, структура которого насчитывает десятки миллионов потенциальных страниц, классический ручной подход к сбору семантики становится неэффективным. Один из ключевых вызовов — поддержание актуальности и полноты семантического ядра в динамике.
Запросы пользователей меняются, конкуренты добавляют новые страницы, появляются новые направления услуг, а стандартный набор запросов перестает отражать реальные паттерны спроса. Чтобы не ограничиваться разовым исследованием, мы приняли решение автоматизировать процесс парсинга семантики и внедрить систему регулярного мониторинга спроса.
Что мы реализовали:
- Все ранее полученные кластеры были обработаны и нормализованы.
- Из каждой группы выделялся представляющий H1 (или ключевой интентный заголовок).
- Эти H1 в автоматическом режиме отправлялись на периодический парсинг в KeySo и А‑парсер, в том числе:
- Сбор подсказок.
- Частотный анализ (Yandex.Wordstat).
- Вытягивание дополнительных синонимов и пересечений (например, «Анализ на ХГЧ» ↔ «Определение беременности по крови»).
Особенности реализации:
- Настроен циклический обход всех кластеров по приоритетам (сначала топовые услуги, потом вспомогательные).
- Обновление данных — раз в 60 дней.
- Все полученные запросы сравниваются с существующим ядром: дубликаты отсеиваются, новые интенты автоматически маркируются для ручного ревью.
Зачем это нужно:
Парсинг в проекте с 5+ млн посадочных страниц — не разовая задача, а постоянный процесс. Без динамического обновления ядра легко пропустить новые интенты, по которым уже завтра начнут продвигаться конкуренты. Автоматизация снижает нагрузку на SEO-команду, при этом сохраняет контроль за структурой и ее актуальностью.
Как мы построили систему, которая сама выявляет ошибочные страницы
При масштабе проекта в 5+ миллионов страниц, где большая часть посадочных генерируется полуавтоматически (на основе шаблонов, фидов, API или динамической маршрутизации), рано или поздно команда сталкивается с неконтролируемым ростом ошибок и технического мусора. Особенно это касается дублей, битых ссылок, циклических редиректов и пустых страниц.
Мы понимали, что реагировать на ошибки вручную или раз в квартал — путь в никуда. Поэтому в рамках проекта было принято решение написать собственный автоматизированный софт, отвечающий за:
- Круглосуточный мониторинг структуры сайта.
- Агрегацию и категоризацию технических ошибок.
- Интерфейс управления (админку), в которой можно отфильтровать ошибки по типу, важности, разделу.
- Объем данной автоматизации не полный, но для самых важных технических ошибок был написан.
Какие ошибки отслеживаются:
- Дубли страниц: по URL, по содержимому (в том числе через сравнение title/H1 и текстовых блоков).
- Битые ссылки: внутренняя перелинковка, которая ведет на 404 или редиректится в цикле.
- Циклические и некорректные редиректы: 301 → 302 → 301 → 404 и т.п.
- Ошибки ответа сервера (5xx, 4xx).
- Пустые страницы / страницы без полезного контента.
Как работает система:
- Все новые и измененные страницы отслеживаются через планировщика обхода (аналог cron).
- Каждая страница проходит базовую проверку: валидность, уникальность, принадлежность к типу, наличие дублей.
- Все ошибки собираются в централизованную админку с тегами:
- Тип ошибки.
- Дата обнаружения.
- Страница/раздел.
- Предполагаемая причина.
На основании этих данных SEO‑специалисты не тратят время на запуск техаудитов и обходов сайта, а могут сразу приступить к анализу ошибок. Автоматизация помогает предотвращать появление проблемных страниц, вместо того чтобы устранять их постфактум. Также сокращается нагрузка на SEO, разработку и поддержку, устраняется главный риск масштабирования — разрастание технического долга.
Результаты: рост видимости (Москва +109%, СПб +204%), трафика +3,08 млн (+43,26%)
1. Рост позиций в поисковой выдаче
Благодаря сегментированному подходу и автоматизации семантического расширения, нам удалось не только восстановить позиции, но и кратно усилить охват в выдаче по ключевым регионам:
- Москва: рост с ~214 000 до 448 094 (+109%).
- Санкт-Петербург: с 95 264 до 289 596 (+204%).
- Новосибирск: с 19 046 до 34 857 (+83%).
- Екатеринбург: с 11 003 до 17 911 (+63%).
- Казань: с 7 314 до 12 002 (+64%).
Рост позиций по направлениям:
В рамках построения новой структуры и масштабного парсинга мы перераспределили ключевые фразы по смысловым кластерам:
- Диагностика.
- Анализы.
- Врачи.
- Клиники.
- Симптомы.
- Онкоскрининг.
- Женское здоровье.
- Детское здоровье и тд.
Это позволило внедрять семантику не просто «вширь», а транслировать рост в четкие и управляемые тематические зоны.
2. Устранение основных технических ошибок
- Выполнили классификацию технических ошибок.
- Доказали важность их устранения.
- Отследили исправления по спринтам.
- Впоследствии настроили постоянный мониторинг.
- Снизили количество критичных ошибок на 80% за 7 месяцев.
3. Анализ конкурентов и их стратегий
Провели детальный анализ факторов, влияющих на ранжирование конкурентов. Полученные данные легли в основу нашей стратегии и стали драйвером расширения семантики методом парсинга и нейросетей.
4. Полная структура на основе конкурентного анализа
Собрали максимально полную структуру методом парсинга конкурентов. В результате получили большой объем уникальных кластеров, что позволило кратно расширить охват ключевых слов.
5. Контентные лидеры за счет On-page-оптимизации
- Провели анализ структуры и наполнения страниц конкурентов, используя чек-листы, основанные на 15-летнем опыте и аудите их блоков.
- Внедрили информационные и UX-блоки: частые вопросы, цены, сравнение услуг, профиль врача, отзывы, микроразметку.
- Создали лучшие по наполнению страницы по приоритетным направлениям, что обеспечило рост позиций и удержание в топ-5.
6. Обновление семантики в режиме реального времени
- Для устойчивого охвата актуального спроса внедрили автоматизированную систему парсинга семантики.
- Регулярно отправляли H1 и ключевые фразы из новых кластеров на массовый сбор.
- Это позволило своевременно фиксировать изменения в спросе, новые формулировки и уточнения, а также оперативно пополнять контент и структуру сайта.
- Благодаря автоматизации исключили ручные простои и сформировали непрерывный цикл обновления семантики с высокой релевантностью.
7. Мониторинг технического состояния проекта
- Разработали и внедрили мониторинговый модуль, встроенный в административную панель.
- Система отслеживает в реальном времени дубли, битые ссылки, 404-ошибки, циклические редиректы и автоматически классифицирует их.
- Время реакции на ошибки сократилось с дней до часов. Обеспечена стабильность при масштабировании.
8. Рост органического трафика и достижение KPI
По итогам внедрения комплекса SEO-мероприятий проект показал устойчивый рост органического трафика:
- Сентябрь 2023 — 7,12 млн визитов.
- Октябрь 2024 — 10,2 млн визитов.
Прирост: +3,08 млн визитов (+43,26%).
Основной рост обеспечил «Яндекс»: +2,48 млн (+60,19%) за счет глубокой региональной проработки и устранения технических ограничений.
Google: +570 тыс. визитов (+19,13%). Рост подтвердил эффективность выбранной стратегии: техническая оптимизация, автоматизация семантики и покрытие новых кластеров обеспечили устойчивое масштабирование проекта.
Общий график роста проекта:
Выводы и профессиональный рост команды в процессе работы над проектом
Этот проект стал для нашей команды не просто масштабной задачей, а настоящим вызовом, который дал сильнейший толчок к профессиональному росту. Мы выстроили частично автоматизированную экосистему: от парсинга миллионов URL и семантической фильтрации до контроля качества рендеринга и мониторинга динамики спроса.
Нам пришлось решать нестандартные задачи в условиях постоянного роста объемов и очень жестких требований к качеству
Важнейший результат — не только рост органического трафика на 3+ миллиона визитов в месяц, но и устойчивые процессы, которые теперь масштабируются на другие проекты. Это тот случай, когда в ходе работы создается не просто SEO-решение, а полноценная операционная модель с глубокой экспертизой, продуманной архитектурой и прицельной аналитикой.
Такие кейсы становятся мощным катализатором и для бизнеса, и для команды. Именно через них мы становимся настоящими экспертами рынка.
Если кейс был полезен, ставьте реакции, задавайте вопросы в комментариях и делитесь мнением. Мы ценим обратную связь и всегда открыты к диалогу.
Связаться с нами в Телеграмм: