Сентябрь 2025, шёл шестой год в роли мобильного разработчика, пишу приложение для туроператора Biblio Globus. В один день в общем чате CEO спрашивает "Кто что знает про GEO?" - с этого момента у меня периодически начал подогреваться интерес к этой аббревиатуре, позже я провёл небольшой локальный технический аудит фронтенда и в тихие вечера садился создавать свой продукт. Вовлеченность в рабочие процессы падала, в декабре увольнение по соглашению сторон и я ушёл в фулл-тайм разработку. Сейчас работа над продуктом поднимает меня рано утром и укладывает ночью. Откуда появился такой интерес? - не знаю, возможно оттуда, откуда и интерес к самим нейросетям (начал пользоваться ChatGPT с момента первых новостей о нем, а с марта 2025 являюсь постоянным ежедневным пользователем Claude)

Миссия платформы - дать бизнесу инструмент который возьмет всю работу с видимостью бренда в нейросетях на себя. Из этой потребности бизнеса родился термин GEO(Generative Engine Optimization) - оптимизация под генеративные движки

Как платформа решает эту потребность:

  1. Показывает видимость бренда и его конкурентоспособность в генеративных ответах, рисует графики

  2. Говорит где именно пробелы с видимостью, какие источники используют нейросети для генерации ответа

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

  4. Превращает все метрики в человекочитаемый отчет с динамикой изменений за неделю, говорит что поменялось

Мой напарник - Claude Code

Самым главным фактором моей вовлечённости, думаю, является чувство созидания, я в роли главного архитектора раздаю задачи архитекторам (сессиям Claude Code), а они в свою очередь управляют рабочими (субагентами) и мы вместе блок за блоком создаём продукт.

Собственно весь продукт реализован такими ежедневными сессиями, сам пайплайн разработки устоялся быстро:

MAIN SESSION (несколько вкладок)
    │
    ▼
RESEARCH ──► PLAN ──► IMPLEMENT ──► MANUAL REVIEW ──► CODE REVIEW
                          ▲              ▼                 │
                          └──── проблемы найдены ◄─────────┘

Основная сессия - это несколько параллельных вкладок Claude Code под разные задачи. Каждая задача проходит цикл: ресёрч → планирование (plan mode) → реализация → ручная проверка (UI/UX) → code review через отдельного агента. Если на ручной проверке/ревью находятся проблемы - итерация обратно в реализацию.

Раньше я создавал отдельных субагентов и просил Claude Code оркестрировать их, сейчас это заменила встроенная функция Agent Team.

Мой любимый подход: один агент тестирует и составляет список проблем, второй исправляет и отправляет на повторную проверку. Они итерируют между собой, пока результат не станет приемлемым, а я в это время занимаюсь другой задачей.

Agent Team — QA-ревьюер и UI-фиксер итерируют между собой
Agent Team — QA-ревьюер и UI-фиксер итерируют между собой

Agent Team - QA-reviewer и ui-fixer итерируют между собой

Отдельное внимание MCP. Они дают Claude Code прямой доступ к инфраструктуре проекта:

  • Supabase MCP - самый главный, все миграции и работа с данными через него, самое активное применение приходится на регулярный пайплайн проверки корректности обработки ответов нейросетей

  • Trigger.dev MCP - активно использую, периодически на основе него запускаю пайплайн проверки, все ли фоновые задачи завершились успешно

  • Next.js DevTools MCP - доступ к dev-серверу, особо как-то не использую, помню точно помог обновиться до Next.js 16

  • Exa MCP - поиск и ресёрч, с помощью него ищу информацию по стандартам индустрии или актуальную документацию

  • Sentry MCP - Claude Code получает реальные ошибки и фиксит, использую ежедневно

По личному опыту заметил: когда лимиты подписки подходят к концу, качество ответов падает. Не знаю, с чем это связано, но паттерн стабильный.

Стоимость 4 месяцев разработки на Max плане: 800$

В некоторые недели доходил до лимита, продолжал разрабатывать на GLM от z.ai, отдал 45$ за квартал

Экосистема платформы

                      Пользователь
                      ┌────┴────┐
                      │         │
               ┌──────▼──────┐  ┌──────▼──────┐
               │  Dashboard  │  │  Telegram   │
               │  Next.js 16 │  │  Bot grammY │
               └──┬──────┬───┘  └──────┬──────┘
                  │      │             │
      запуск      │  ┌───▼─────────────▼───┐
      задач       │  │  Self-hosted        │
                  │  │  Supabase           │
                  │  └───▲─────────▲───────┘
                  │      │         │
            ┌─────▼──────┴──┐ ┌───┴──────────────┐
            │  Trigger.dev  ├─► Mastra           │
            │  фоновые      │ │ отчёты + брифы + │
            │  задачи       │ │ генерация статей │
            └──────┬────────┘ └──────────────────┘
                   │
          ┌────────▼─────────────┐
          │  9 AI-провайдеров    │
          │  ChatGPT · Claude ·  │
          │  Gemini · Grok ·     │
          │  Perplexity ·        │
          │  DeepSeek ·          │
          │  Google AI Mode ·    │
          │  Google AI Overview ·│
          │  YandexGPT           │
          └──────────────────────┘

Плюс админ-панель для управления пользователями и подписками.

На хостинге стоит Dokploy к которому подключены github репозитории, при пуше в main идет билд и изменения оказываются на проде

Как работает платформа и что получилось

1. Конвейер мониторинга и обработка ответов. Все начинается с ежедневного сбора данных, система на этапе онбординга бренда автоматически на основе структуры сайта генерирует базовый набор кластеров (4–6) и промптов для них (4–7),

Кластер - тематический набор промптов
Промпт - запрос который отправляется в AI

Экран промптов и выбора провайдеров
Экран кластеров и выбора провайдеров

При старте мониторинга за брендом закрепляется свободный временной слот, первая отправка происходит сразу, далее в фоне в закрепленный за брендом временной слот каждый день вызывается trigger.dev task, которая отправляет активированные промпты в нейросети, обрабатывает ответы и записывает в Supabase. В этой же таске выполняется daily check технический чек сайта бренда: robots.txt, sitemap, наличие и качество Schema разметки для главной/каталога/блога - выявленные проблемы отправляются в Командный центр (о нем дальше)

Trigger.dev задача ежедневного мониторинга
Trigger.dev задача ежедневного мониторинга

Особенности некоторых провайдеров:

  • У DeepSeek нет API с веб-поиском

  • Google AI Mode и Google AI Overview можно только скрапить.

  • Google AI Overview может не дать ответы на поисковой запрос вообще.

Отдельного внимания заслуживает обработка каждого ответа, в контексте GEO большую ценность имеет контекст упоминания. Было много попыток программно обрабатывать ответ, но самым лучшим решением оказалась постобработка с помощью LLM. Каждый ответ отправляется отдельным вызовом с проработанным системным промптом, по итогу из ответа извлекаются все упомянутые бренды, которые конкурируют за внимание в промпте со следующим набором данных: тональность упоминания (позитивная - "хорошим вариантом", нейтральная "один из/сухой ответ бренда", негативная - "но есть проблемы с качеством"), рекомендация("один из лучших"), позиция в списке (2 из 8).

Здесь Claude Code проявил себя во всей красе, по сути это была долгая итерация создания брендов с разными промптами в разных нишах и последующая проверка с корректировкой системного промпта, вот как это выглядело с помощью Agent Team:
1 субагент создавал и запускал первый мониторинг -> 2 проверял и находил несоответствия -> 3 находил проблему и фиксил. По итогу для каждого ответа имеем такой ui:

Пример ответа с рекомендацией. GEO ответа 0-100 складывается из баллов тональности, рекомендации, относительной позиции и наличия ссылки на домен
Пример ответа с рекомендацией. GEO ответа 0-100 складывается из баллов тональности, рекомендации, относительной позиции и наличия ссылки на домен

Такие данные позволяют сформировать думаю один из самых интересных графиков для конкурентного сравнения, например по нему можно сделать вывод по типу "мы упоминаемся чаще, но если упоминаемся вместе с конкурентом, то стоим на позиции ниже"

Воронка видимости бренда
Бенчмарк видимости бренда

Цифры:

Затраты на API на этапах разработки и тестирования платформы: 128$ + 4800 рублей за Яндекс

Цена 1 API-вызова генеративного поиска Яндекс: 5 ₽

Цена обработки одного ответа: $0.0016

2. Визуализация данных. Весь фронтенд, как и код написан на 100% с Claude Code. Использовал shadcn(у shadcn есть mcp со всей документацией, сейчас он отключен и вся работа с компонентами выстроена через агентский skill).Все метрики считаются на лету PostgreSQL-функциями при каждом открытии дашборда через вызовы supabase sdk, а результаты кэшируются TanStack Query. Центральными метриками платформы я сделал следующие:

Охват ответов - процент ответов нейросетей, в которых бренд упомянут.

Share of Voice - доля бренда среди всех упоминаний. Считается упоминания_бренда / (упоминания_бренда + упоминания_всех_конкурентов) × 100. Если бренд упомянут 20 раз, а конкуренты суммарно 80 - SoV = 20%, такую долю внимания занимает бренд в ответах. На повышение этой метрики работает Командный центр.

Цитирование домена - процентов охваченных ответов где фигурирует домен бренда. Бренд может быть просто упомянут, может быть упомянут с ссылкой (это идеальный вариант), может быть упомянута просто ссылка(как правило в информационных запросах).

Share of Citation - это Share of Voice для доменов брендов, показывает какую долю забирает бренд в цитированиях относительно конкурентов.

Главная страница платформы
Главная страница платформы

Раздел конкурентной разведки - самое интересное здесь топ, по скриншоту частично видно почему Share of Voice нужно считать главной конкурентной метрикой в GEO. Небольшой пример: 10 брендов имеют охват 100%, но их SoV 10% - значит они в равной мере делят внимания. Если появляется еще 1 бренд, они также могут иметь 100% охват, но их SoV уже станет ниже. По сути эта цифра показывает какой % внимания имеет бренд относительно рынка

Топ конкурентов по Share of Voice
Топ конкурентов по Share of Voice

По клику на конкурента можно открыть Head-to-Head сравнение и узнать где именно бренд проигрывает конкуренту

Head-to-Head сравнение
Head-to-Head сравнение

Конкурентные пробелы - ключевые точки роста, показывают, в каких промптах бренд уступает конкурентам.

Конкурентные пробелы
Конкурентные пробелы

По клику на конкурентный пробел открывается детальная страница промпта, здесь можно посмотреть данные именно по промпту.

Детальная страница промпта
Детальная страница промпта

Раздел «Источники» - здесь есть 2 вкладки:

  1. Общая карта источников, которые использовались нейросетями

Карта источников
Карта источников

2. Страница для оптимизации - сюда попадают страницы домена, которые нейросети использовали, но не процитировали. Отсюда можно сразу запустить AI-аудит страницы, который даст рекомендации по повышению вероятности цитирования. (страницы отсюда также попадают в Командный центр в рамках ежедневного чека)

Страницы для оптимизации
Страницы для оптимизации

Для страницы можно запустить AI аудит, по сути структура страницы отправляется в агента с системным промптом который возвращает структурированный json с рекомендациями .

Рекомендации после запуска аудита страницы для оптимизации
Рекомендации после запуска аудита страницы для оптимизации


Для всех этих разделов работают фильтры по датам, нейросетям и кластерам. В фильтрах нейросетей и кластеров также виден отдельный SoV в % и охват ответов - думаю, так удобнее всего работать с аналитикой. Нажал на фильтр → увидел основную сводку → выбрал, что проседает → данные на дашборде обновились

Пример фильтра по нейросетям
Пример фильтра по нейросетям

3. Из метрик в рекомендации и отчеты. На бренд работает команда AI-агентов со всем контекстом бренда, за оркестрацию отвечает Mastra workflow. Сюда попадают данные из мониторинга и каждый агент выполняет свою задачу на основе системного промпта, некоторые работают параллельно, некоторые ждут данные от других агентов и потом делают свою работу

Mastra workflow
Mastra workflow
Mastra agents
Mastra agents

Каждую неделю они проходятся по метрикам, отдельным ответам, составляют профили конкурентов и превращают все метрики и числа в понятный для человека отчет. Отчет может быть первичным и еженедельным. Отличие в том, что первичный берет текущие данные и превращает их в обзор видимости бренда + рекомендации, еженедельный получает данные за прошлый отчет и эту неделю, генерирует отчет с динамикой изменений и корректирует уже данные рекомендации. Это учтено в системных промптах агентов, шаблон остается один

Часть первичного отчета
Часть первичного отчета


Помимо отчета они наполняют ядро продукта - Командный центр. У нас есть данные где бренд проигрывает, есть данные какие источники используются в пробелах и их тип(справочник, сообщества, конкуренты). Агенты просто на основе этих данных генерируют рекомендации и корректируют их при изменениях, они знают о уже данных рекомендациях, например если проблема исчезла могут просто ее сами закрыть, а при обновлении SoV - обновить текущую.

Сюда же попадают рекомендации из ежедневного технического чека сайта бренда (Наличие и качество Schema разметки на главной, страницах каталога/блога, проверка robots.txt на доступность AI ботами и некоторые другие)

Командный центр
Командный центр

Основным двигателем роста видимости в генеративных ответах является размещение контента на блоге сайта/источниках которые используются в генеративном ответе выбранной моделью, источники могут быть разные, но подход один - в выгодном ключе на используемом источнике разместить контент с упоминанием бренда/стимулировать изменения если источник это карта или каталог. Для этого на платформе реализован Контент конвейер. Он генерирует контент брифы со структурой нацеленной на то чтобы зацепить модель процитировать контент, отсюда также можно сгенерировать текст + Json разметку для блога. Дальше планирую добавить возможность модификации промпта с "голосом бренда", чтобы контент генерировался в стиле бренда.

Контент брифы
Контент брифы
Пример сгенерированного контента
Пример сгенерированного контента


Самой быстрой в реализации фичей в проекте стала возможность отслеживания эффективности опубликованного контента, мы просто по url отслеживаем как часто начала появляться ссылка и сколько промптов она затрагивает.

Страница маркетинговой кампании
Страница маркетинговой кампании

Итоговый результат проделанной работы за эти месяцы:

  1. Интегрировал Claude Code в 100% своих рабочих процессов

  2. Создал платформу полного цикла для работы с видимостью бренда в генеративных ответах

  3. Получилось монетизировать, сейчас 109 брендов которые попробовали и 9 платных подписок

  4. Запустил открытый рейтинг видимости российских брендов в 8 нейросетях.

  5. Разобрался с GEO, сейчас вижу результаты у бренда с которым работаю на базе своей платформы

Что дальше

  1. Буду активно продвигать платформу и улучшать ее функционал, цель перенести то качество автоматизации которое сейчас есть в моем Claude Code пайплайне для работы с брендом в Mastra). Делаю ставку что генеративный поиск станет основным каналом выбора у покупателей и поиска информации в целом.

  2. Писать для Хабра статьи как работает какая-то часть платформы или делиться опытом своей автоматизации процессов с помощью Claude Code ( напишите в комментариях если есть интерес к чему-то, мне нравится делиться своим опытом, например могу рассказать больше о генерации рекомендаций).