Marketing OS

Кейс · Marketing OS

SEO-агент в рабочем чате: разбор просадки с доказательствами

Маркетолог спрашивает в чате обычными словами. Выгрузки Вебмастера и спрос агент поднимает сам, выдачу снимает через расширение в браузере сотрудника, капчу при необходимости проходит человек. Затем агент меряет страницу и возвращает разбор: у каждого утверждения ссылка на данные, недоказанное вынесено отдельно.

  1. ВопросМаркетолог пишет в чат словами, что случилось со страницей или разделом.
  2. МаршрутМодель выбирает сценарий из каталога, код решает, нужен ли сбор данных.
  3. ДанныеАгент сам читает выгрузки Вебмастера, позиции и спрос из Вордстата и открывает страницу.
  4. ВыдачаБот присылает код задачи, и расширение в браузере сотрудника снимает выдачу в нужном регионе.
  5. ЗамерыКод меряет факторы по слоям и ставит рядом ориентир с происхождением.
  6. РазборМодель пишет разбор по каркасу, каждое утверждение ссылается на доказательство.
  7. ПроверкаСенсоры и гейт причинности снимают недоказанное до того, как ответ уйдёт в чат.
Содержание ↓
  1. Почему ответ пишут по памяти
  2. Как проходит один ход
  3. Шесть слоёв и гейт причинности
  4. Что получает маркетолог
  5. Грабли
  6. Порядок, который я бы повторил

Почему ответ пишут по памяти

Когда страница просела, SEO-специалист открывает пять окон: запросы и показы в Вебмастере, позиции, спрос в Вордстате, саму страницу и выдачу в том городе, о котором спросили. На частых запросах выдача Яндекса ещё и закрывается капчей. Пока всё собрано, вопрос успевает остыть, и ответ пишут по памяти: «добавьте текста, поправьте title».

Я строю SEO-агента для своей команды. Он живёт в рабочем чате в Telegram, ему пишут словами, как коллеге. Первая версия отвечала бойко и мимо: предлагала переписать нормальный title, придумала поддомен, которого у сайта нет, и советовала поставить ссылку, которая на странице уже стояла. После того прогона я перестал латать промт и занялся устройством хода.

Как проходит один ход

  1. Маршрут. Модель выбирает сценарий из каталога: просадка страницы, региональная аномалия, точки роста, разрыв с конкурентом. Нужен ли сбор, решает код. Пока эта развилка жила в промте, модель раз за разом отвечала тем, что лежало под рукой.
  2. Данные. Агент сам читает недельные выгрузки Вебмастера, позиции, спрос из Вордстата и открывает нашу страницу. Ответ любого инструмента упакован в конверт, где написано, сколько строк в источнике и сколько из них показано; обрезанная выборка там тоже помечена. Правило появилось после случая, когда агент увидел первые сто запросов и написал, что разбивки по запросам нет. Теперь фразу «данных нет» можно написать только при нуле строк. На ход — не больше 8 вызовов и 24 000 знаков результата.
  3. Выдача. Капчу я оставил человеку. Бот присылает код задачи из восьми знаков, без пар, которые легко спутать, вроде O и 0: код должен выдерживать диктовку. Сотрудник вводит его в расширении Chrome, и оно по очереди открывает выдачу, нашу страницу и страницы конкурентов, снимает факты и закрывает вкладки.
  4. Регион. Название города в параметре региона Яндекс молча игнорирует и отдаёт выдачу по месту того, кто спросил. Коды берутся из справочника на 1 098 регионов, который собирает скрипт из API. Регион готового снимка сверяется с запрошенным, и при расхождении снимок идёт в брак.
  5. Спрос. До разбора агент проверяет, есть ли что выигрывать. Бывает, три числа из Вордстата показывают, что спроса почти нет и трогать страницу незачем. Если спрос снять не удалось, это отдельный исход: агент так и пишет «спрос не снят» и советов не раздаёт.

Шесть слоёв и гейт причинности

В базе агента 39 факторов Яндекса и Google. Они разложены по шести слоям в порядке отбора: пороги (индексация, canonical, мобильная версия), релевантность, клик в выдаче, ответ на странице, доверие к сайту, гигиена. Сравнивать факторы имеет смысл только внутри одного слоя. Индексация — порог: пока страницы нет в индексе, остальные слои просто не считаются. Часть факторов с одной страницы не измерить, ссылочные например, и код отдельным списком пишет, что не мерил. Если про ссылки промолчать, это прочитают как «со ссылками порядок».

Измеритель пишет число без оценочных слов и ставит рядом ориентир с происхождением: шкала CrUX, видимая ширина сниппета или медиана топа из того же сбора. Если ориентира нет, в ячейке прочерк — выдумывать его нельзя. Две строки отчёта, пример условный:

ФакторЗначениеОриентир
Длина title72 знакав выдаче видно около 65, зависит от ширины букв
Ответ сервера950 мспо шкале CrUX до 800 мс хорошо; одна попытка замера

Вердикта «в порядке» код не ставит вообще. Хватит одной заметной нестыковки между таблицей и текстом, чтобы человек перестал верить тем тридцати строкам, которые сам проверить не может.

Разбор модель отдаёт объектом: блоки по разделам, в блоках утверждения со ссылками на доказательства вида E-001. Сами доказательства код собирает из замеров и журнала вызовов, рассуждения модели туда не попадают. Статус утверждению тоже ставит код. Нет ссылки — утверждение уезжает в раздел «не доказано данными».

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

Перед отправкой ответ проходит 10 сенсоров. Они ловят внутренние имена инструментов в тексте для человека, «плохой CTR» без сверки с ожидаемым для этой позиции, отговорку «нужно посмотреть страницу», когда факты уже подняты. Смысловую верность регуляркой не проверишь, и этого я от сенсоров не жду.

Что получает маркетолог

В чат приходит короткий ответ и HTML-документ. В документе таблица замеров по слоям, правки в формате «что сейчас → почему мешает → что изменить → что это даст», раздел недоказанного и список того, что не проверялось. Порядок правок считается в кликах: агент строит свою кривую «позиция → CTR» по типам страниц и поднимает отставание, только если оно больше случайного разброса. Задание на новый текст одной кнопкой уходит в контент-завод.

Популярные SEO-правила я в пороги не зашивал: минимум 300 слов, плотность ключа 3–5%, title ровно в 60 знаков. Title обрезается по ширине в пикселях, поэтому длинный заголовок не страшен, если ключ стоит в первых тридцати знаках: выдача срежет хвост, а ключ останется.

Грабли

Зелёные тесты. 667 тестов проходили, и ни один не смотрел на сам ответ. В журнал писались первые 600 знаков, трасса вызовов не сохранялась. Сейчас каждый ход пишется целиком, сенсоры отдельным скриптом прогоняются по боевым ходам, а сценарии из реальных ходов стоят гейтом перед выкатом.

Сочинённый отказ. Модель ответила «инструменты не подключены». В трассе того хода был один вызов и ноль ошибок: отказ она придумала. Я просил вернуть вызов JSON-текстом, и иногда модель рассказывала о вызове вместо того, чтобы его сделать. Цикл переехал на нативный вызов функций, а отдельный сенсор сверяет такие заявления с трассой.

Молчаливый дефолт. Расширение однажды не пометило страницы конкурентов, и все собранные страницы ушли в разбор как наши. Модель попыталась свести концы с концами и выдумала ярлык, которого во входе не было. Теперь роль страницы решает домен.

Правило, которое затёрли. Правило «вопрос о причине — всегда сбор» вписали в каталог сценариев, а переопределение в том же коммите его затирало. Тест был зелёным, потому что проверял текст каталога. Итоговый маршрут он не видел.

Код агента я отдаю на ревью моделям другого семейства, DeepSeek и Gemini. За одну волну приняли 12 их находок, среди них ответы 401 и 403 со страниц за авторизацией, которые агент записывал в битые ссылки, и robots.txt, прочитанный для YandexBot наоборот.

Порядок, который я бы повторил

Сначала один вопрос, который команда задаёт чаще других, например «почему упала страница». Под него инструменты поверх полных выгрузок с честным «показано N из M». Дальше замеры кодом и гейт причинности. Красивый отчёт я бы делал последним.

В каких SEO-задачах модель начинает сочинять, я разбирал в заметке ИИ для SEO. Агента под ваш сайт можно прикинуть на консультации, а если задача шире одного агента, про это страница внедрение ИИ в маркетинг.

  • Next.js 15
  • TypeScript
  • Supabase
  • API Яндекс Вебмастера
  • API Вордстата
  • расширение Chrome
  • Telegram
  • Claude
  • Gemini

Вопросы

Вопросы и ответы

Агент сам правит сайт?

Нет, сайт правит человек. От агента приходит техзадание, а если странице нужен новый текст, его пишет уже контент-завод.

Почему выдачу снимает сотрудник?

Потому что Яндекс закрывает выдачу капчей, а обходить её я не стал. Сотрудник вводит код от бота в расширение и, если выскочит капча, проходит её сам. Это пара минут.

Какая модель внутри?

Сменная. Я гонял четыре модели на одном вопросе, и с нативным вызовом инструментов формат держали все. На результат сильнее влияет другое: числа считает код, а доказательства лежат в хранилище, куда модель писать не может.

Можно собрать такой агент под свой сайт?

Да, если есть доступ к Вебмастеру и выгрузке позиций. Без них агенту нечего мерить, и он скатится к тем же советам по памяти.

Консультация

Разберём вашу задачу

Опишите в Telegram процесс, который хотите отдать ИИ: что на входе, какие данные есть, кто будет пользоваться результатом. Отвечу, с чего начать. Иногда хватает одного созвона, а иногда нужен аудит с письменным отчётом или сопровождение команды на весь пилот.

Дмитрий Щеголяев с микрофоном на Мобильном Форуме