Зачем агентству это всё
Классическое SEO-агентство — это, если честно посмотреть, огромный конвейер ручной работы. Три SEO-специалиста на 30 клиентов — это значит, что каждый в среднем тратит на клиента 1,5–2 часа в неделю, из которых примерно час уходит на «посмотреть позиции, посмотреть трафик, обновить отчёт, закинуть файлик в шаблон». Реально продвижение — в оставшееся время.
К нам пришёл руководитель такого агентства с понятным запросом: «у меня команда не масштабируется. Каждый новый клиент требует нового человека. Я хочу расти, но не через найм, а через инструменты». Разобрались, какие именно операции съедают больше всего времени, и собрали под них пайплайн на базе нашей платформы.
Структура агентства до внедрения
Прежде чем рассказывать про решение, честно зафиксируем, что было.
| Процесс | Время / клиент / месяц | Кто делал |
|---|---|---|
| Семантика (сбор + чистка + кластеризация) | 6–8 ч (разово на старте) | SEO-специалист |
| Контент-план и ТЗ копирайтерам | 4 ч | SEO-специалист |
| Ручной research конкурентов под статьи | 3 ч | Копирайтер |
| Проверка текстов от копирайтеров | 2 ч | SEO-специалист |
| Съём позиций и ручной отчёт | 1,5 ч | SEO-специалист |
| Разбор трафика в Метрике | 1 ч | SEO-специалист |
| Ежемесячный отчёт клиенту (pdf/презентация) | 2 ч | SEO-специалист |
Итого на одного клиента — ~13,5 часов в месяц. На 30 клиентов — 405 часов. Три человека по ~135 часов в месяц — это уже за пределами комфортной загрузки, учитывая отпуска и форс-мажоры. Все трое жаловались, что работа превратилась в отчётность.

Какие модули мы подключили
ИСПОЛИН — это не «один SEO-инструмент», а набор модулей, которые можно включать поштучно. Под задачу агентства мы подключили семь.
1. Генерация и расширение семантики
Первый модуль — базовый: из seed-ключей собрать полное ядро, проставить частоты, разметить коммерческость, кластеризовать по интенту.
Внутри это — цепочка:
- AI-генерация кластеров по seed-у (
lib/semantic-gen-runner.ts). - Расширение через Yandex Suggest — алфавитная перебивка, бесплатный источник. Hit rate по длине запроса: 81% на 2-словах, 61% на 3-словах, 20% на 4-словах, 4% на 5-словах. Длина используется как prior в scoring, а не как фильтр — длинные запросы тоже иногда имеют частоту.
- Расширение через Bukvarix — база Yandex Wordstat. Здесь мы учли ловушку free-тарифа:
searchMultiKeywords(AND-запрос) отдаёт 429, поэтому делаем поштучныеsearchKeywords(OR) с дедупликацией через 2-словные корни. Это превращает запрос из 208 ключей в 20–40 вызовов API. - Сбор частот через XMLRiver Wordstat (до 10 параллельных воркеров) с учётом выбранного региона.
- AI-скоринг и коммерческая классификация — помечаем каждый ключ informational / commercial / navigational и выставляем приоритет публикации.
На старый ручной процесс сбора семантики уходило 6–8 часов; теперь — 10–25 минут на нажатие кнопки, плюс 20–30 минут финального ручного обзора.
2. SERP-кластеризация и каннибализация
Второй модуль — менее очевидный, но он спас двух клиентов агентства. Идея простая: кластеризовать ключи по пересечению SERP-выдачи (если по двум ключам ранжируется один и тот же набор URL, они должны ранжироваться одной страницей).
Это сразу показывает каннибализацию — ситуацию, когда у сайта несколько страниц борются за один пул запросов и топят друг друга. Типичная картинка: на сайте клиента четыре статьи «как выбрать X», «рейтинг X», «топ X», «лучшие X» — все с одинаковым пулом SERP-выдачи, все на 15–40 позициях, ни одна в топе. Объединение в одну страницу и перераспределение ссылочного — и страница за месяц переезжает в ТОП-10.
3. Контент-пайплайн: research → techspec → статья
Третий модуль — тот, ради которого всё обычно и затевается. Это полный цикл генерации статьи, от ключа до готового драфта.
Keyword
│
▼
Research: SERP ТОП-10
│ — скачиваем страницы через Readability
│ — считаем TF-IDF корпус
│ — вытаскиваем LSI и n-grams
▼
TechSpec (AI)
│ — структура H2/H3
│ — обязательные подтемы
│ — тон, аудитория, целевой объём
▼
Article (DRAFT)
│
▼
GENERATING_STRUCTURE → GENERATING_TEXT
│
▼
REVIEWING (AI review)
│
▼
COMPLETED → Export (Google Drive / DOCX / HTML)
Критический момент: TechSpec собирается из живой SERP-выдачи, а не из головы. Это даёт статье структуру, точно бьющую в интент запроса. Копирайтер получает не «пожелания», а конкретный скелет: вот такие H2, вот такие подтемы обязательно раскрыть, вот такие LSI-слова встретить в тексте.
Для агентства это означало, что копирайтеров не нужно было учить — они получают структурированное ТЗ. И правок стало меньше: TechSpec и AI-драфт автоматически закрывали 80% типичных замечаний SEO-специалиста.
4. Пакетная обработка (BatchJob)
Четвёртый модуль — это infra-слой, который делает всё вышеперечисленное массовым. Агентство не запускает research и генерацию по одной статье — оно запускает по 30–50 статей за раз, на всё ядро клиента.
Мы используем модель BatchJob → BatchTask с пайплайном, который параллелит research и article-generation по списку ключей. Прогресс хранится в БД и отображается в реальном времени на фронте. Если что-то упало (таймаут на SERP, 529 от Anthropic, битая страница конкурента) — задача помечается как failed и перезапускается отдельно, не роняя весь батч.
Воркеры бегут параллельно, ограничение — пул БД (max 10 коннектов на процесс) и рейт-лимиты LLM-провайдеров.
5. Аналитика трафика (Yandex Metrika)
Пятый модуль — автоматическое чтение Yandex Metrika по клиенту. Мы интегрируемся через API Метрики, сами делим запросы на чанки (по 31 дню, задержка 350 мс между чанками), выгружаем визиты, отказы, время на сайте, источники по страницам.
Для агентства это означает: SEO-специалист больше не открывает Метрику по каждому клиенту в начале месяца, не копирует цифры в Excel, не строит графики. Всё подгружается автоматически, сравнивается с прошлым месяцем, помечаются просадки (например, «главная потеряла 40% трафика за неделю»).
6. Мониторинг позиций
Шестой модуль — съём позиций по пулу ключей. Работает на нашем же провайдере SERP (XMLRiver, lib/xmlriver.ts, тариф Basic 25 ₽ / 1000 запросов). Ядро агентства — около 14 000 ключей на всех клиентов; еженедельный съём позиций стоит ~350 ₽ на всю сеть. Раньше агентство платило за отдельный сервис мониторинга в разы больше.
Позиции хранятся в БД с историей, на фронте — графики движения, сравнение с конкурентами, пометки «просадка > 10 позиций за неделю».
7. Генерация отчётов клиенту
Седьмой модуль — автоматические отчёты. Это оказалось одним из самых ценных для агентства, хотя звучит скучно. Каждый месяц SEO-специалист собирал по каждому клиенту отчёт: трафик, позиции, проделанные работы, план на следующий месяц. На одного клиента — 2 часа, на 30 клиентов — 60 часов, на команду из трёх — 20 часов на каждого. Это больше половины рабочей недели только на отчётность.
Мы сделали генератор HTML-отчётов (lib/html-report/), который собирает отчёт автоматически: трафик из Метрики, позиции из мониторинга, выполненные работы из внутреннего планировщика агентства, план — из текущего контент-пайплайна. Ручной труд остался только на «комментарий SEO-специалиста» в начале — 5–10 минут вместо двух часов.

Экономика: −80% ручной работы
Итоговая табличка по часам.
| Процесс | До, ч / клиент | После, ч / клиент | Экономия |
|---|---|---|---|
| Семантика | 6–8 (разово) | 0,5 | −93% |
| Контент-план и ТЗ | 4 | 0,3 | −93% |
| Research конкурентов | 3 | 0,1 | −97% |
| Проверка текстов | 2 | 0,7 | −65% |
| Съём позиций и отчёт | 1,5 | 0 | −100% |
| Разбор трафика | 1 | 0,2 | −80% |
| Ежемесячный отчёт | 2 | 0,2 | −90% |
| Итого (месячных) | ~13,5 ч | ~2,7 ч | −80% |
30 клиентов × 2,7 ч = 81 час в месяц вместо 405. Три специалиста стали свободны на 80% по рутинным операциям — это не значит, что они сидят без дела. Агентство перенаправило освободившееся время на то, что реально растит бизнес: работа с ключевыми клиентами, запуск новых проектов (агентство выросло с 30 до 47 клиентов за 6 месяцев без найма), внутренняя аналитика и отработка новых ниш.
Стоимость пайплайна
Честный расчёт операционных расходов на всё перечисленное, на агентство из 30+ клиентов.
SERP / XMLRiver (research + мониторинг) ~ 8 500 ₽ / мес
LLM (Anthropic + OpenAI) ~ 18 000 ₽ / мес
Wordstat XMLRiver ~ 2 500 ₽ / мес
Bukvarix free tier 0 ₽
Yandex Metrika API 0 ₽
Инфраструктура (своя) ~ 4 500 ₽ / мес
─────────────────────────────────────────────────────
Итого ~ 33 500 ₽ / мес
Для сравнения, одна ставка middle SEO-специалиста в штате — от 120 000 ₽/мес. Пайплайн окупает себя примерно на четвёртый день месяца.
Что оказалось неочевидным
Данные важнее моделей
Мы начинали проект с предположения «главное — хорошая LLM для генерации статей». Через месяц стало очевидно, что главное — правильный research. Claude Sonnet пишет одинаково неплохо по любому разумному ТЗ, а вот качество ТЗ определяется тем, насколько точно мы распарсили SERP и вытащили из неё структуру. Перекос усилий — 70% на research, 30% на генерацию.
Фильтры Bukvarix на источнике
Первая версия пайплайна собирала из Bukvarix «всё, что есть» и дальше пыталась чистить в пост-фильтре. Это не работало: Bukvarix стабильно выдавал 100 000+ кластеров на скелетную генерацию, мы вываливали всё в XMLRiver Wordstat и жгли бюджет на бесполезные запросы.
Починили — ставим фильтры на источнике: exact_from=5, words_from=2. На free-тарифе эти параметры игнорируются сервером, так что мы ещё и делаем client-side safety net, дропающий freqExact < 5. В итоге объём ключей из Bukvarix стал управляемым, и Wordstat-бюджет перестал утекать.
Пагинация для больших review-списков
Когда на одного клиента приходится 50 000+ ключей (крупный интернет-магазин), интерфейс с ними не справлялся: попытка отрендерить их как обычную таблицу кладёт браузер. Решение — пагинированный API (GET /jobs/[jobId]/clusters?offset&limit&search&sort) и @tanstack/react-virtual на фронте. Нативный <table> не виртуализуется, пришлось перевести на grid-раскладку. Это был отдельный инфраструктурный этап, который занял около недели чистой работы, но без него масштабирование на крупных клиентов было невозможно.
Главное
Если агентство упёрлось в потолок по числу клиентов и думает, как расти — почти всегда ответ не в найме, а в выкорчёвывании рутины. 80% времени SEO-специалиста — это одни и те же операции: сбор семантики, парсинг конкурентов, съём позиций, генерация отчётов. Всё это автоматизируется. А интересное у специалиста остаётся — стратегия, нестандартные задачи, работа с клиентом.
В этом кейсе мы не сделали ничего «волшебного». Мы просто сложили семь модулей в один пайплайн и выкинули ручные шаги. Вся магия — в том, чтобы эти модули работали вместе, а не каждый сам по себе, и чтобы прогрессом по всем клиентам можно было управлять с одного экрана.



