
Управление контекстной рекламой — это много механической работы. Открыть статистику, выгрузить срез, свести два периода в таблице, заметить просевшую кампанию, пойти в другой отчёт, поднять минус‑слова, вернуться, поправить ставку. Каждый шаг по отдельности занимает приличное количество времени, с учетом того, что в больших РК этот процесс еще и подвисает (буквально подвисает, на больших отчетах статистика может грузиться минуты). Все вместе половина рабочего дня уходит на то, чтобы просто понять, что происходит в аккаунте. И таких аккаунтов у специалистов/фрилансеров обычно больше одного, у меня сейчас, например — 7.
Естественно, что регулярно собирать статистику по большому количеству срезов руками просто не получится. Директ тоже не сильно помогает, рекомендации там сейчас достаточно общие и верхнеуровневые.
Пробовал автоматизировать это выгружая эксель со статой и загружая его напрямую в клод, но по факту это не сильно ускорило работу — все равно нужно самому пройти по аккаунтам и выгрузить достаточно много срезов. А когда они выгружены, там уже и самостоятельно это можно сделать достаточно быстро. Короче говоря, не особо это и автоматизация.
Последние полгода я достаточно активно работал с различными ИИ и решил, что созрел на то что бы сделать свой сервис, который снимет эти проблемы. Логика, как я её видел, должна была быть простой — даёшь ИИ доступ к АПИ Директа, а дальше он сам делает всю магию, и я просто запросами в чате получаю все необходимые данные и управляю кампаниями.
Что может быть проще?)
На деле все это оказалось сильно тяжелей, дороже и больней, но итог есть, и им хочется поделиться. Ниже расскажу про то, как устроен сервис и с какими подводными камнями я столкнулся пока его делал.
Что такое MCP и почему я выбрал именно его
Как я писал выше, путь к нему был тернистым: начиналось все с выгрузок экселей, после них — веб интерфейс и финал — как раз MCP.
MCP (Model Context Protocol) — открытый стандарт, по которому ИИ‑ассистент подключается к внешним сервисам. Ассистент получает набор настоящих инструментов: «запросить статистику кампании за период», «найти неэффективные расходы», «поставить корректировку ставок». Модель сама решает, какой инструмент вызвать, с какими аргументами, и получает структурированный ответ.
Разница с обычным чатом простая. Спросите ChatGPT «как у меня дела в Директе» — он про ваш аккаунт не знает ничего и ответит общими словами. С MCP‑коннектором он сначала вызовет get_master_dashboard, получит реальные KPI, потом find_budget_leaks — и ответит по вашим данным конкретными цифрами.
Что важно — для этого не нужно грузить в него десятки экселей, просто один раз дать доступ и все, управление и анализ прямо из чата.
Что было не так с веб‑интерфейсом? На самом деле ничего, веб‑интерфейс — отличное решение для верхнеуровневого мониторинга показателей, эдакий светофор основных показателей с самыми базовыми элементами управления. Изначально я пробовал добавить в него весь функционал, но достаточно быстро понял, что это чрезмерно усложняет и визуал, и взаимодействие с данными, и в таком сетапе выступал просто дублером самого Директа. Поэтому в финальном решении он остался, но скорее во вспомогательной роли.
Немаловажный нюанс — чтобы интегрировать ИИ в сайт его нужно подключить по АПИ, и в такой схеме за каждый запрос придется заплатить. В случае же с MCP весь этот функционал вкладывается в уже рабочую подписку и не берет дополнительно десятки и сотни долларов в виде токенов.
Архитектура: одно ядро на три потребителя
Главное решение — провайдер‑паттерн и общее ядро.
Весь доступ к Direct API спрятан за интерфейсом DirectProvider — это 55 методов: getCampaigns, getCampaignStats, setBidAdjustments, setCampaignStrategy и так далее. Есть две реализации: ApiProvider (реальный Direct API v5) и MockProvider (рабочие моки с заложенными проблемами — на них удобно разрабатывать и показывать демо). Аналитика — поиск неэффективных расходов, тренды, аудит аккаунта, ИИ‑автопилот — работает только через этот интерфейс и не знает, откуда пришли данные.
Поверх одного ядра — три независимых потребителя:
· веб‑приложение (дашборд, аналитика)
· Telegram‑бот (быстрые отчёты по клику)
· MCP‑сервер (для Claude и ChatGPT).
MCP‑сервер живёт в двух транспортах с общей регистрацией инструментов:
· stdio — для локальной разработки;
· хостовый HTTP (Streamable HTTP) — как роут внутри Next.js, без отдельного процесса. Пользователь добавляет в Claude URL вида https://app.marketscore.ru/api/mcp как удалённый коннектор.
Авторизация — OAuth 2.1, у каждого пользователя своя. Человек добавляет просто URL, Claude сам открывает вход, пользователь авторизуется и разрешает доступ. Токен Яндекса остаётся на нашей стороне и ассистенту не передаётся — наружу уходят только результаты вызовов.
Подводные камни Direct API
Особенности получения доступа к АПИ неиронично стали одной из основных причин, по которой я подумал о том, чтобы сделать сервис не только для себя, но и для дистрибуции.
Чтобы получить этот доступ нужно показать Яндексу работающее приложение, к которому нужно выдать также демо доступ и показать его пользу для конечных пользователей. Иными словами, нельзя сделать сервис для себя, тебя сразу стимулируют к тому, чтобы делиться этим. И это только начало, про технические трудности — ниже. И честно скажу, техническую часть мне помогал писать коллега клод код.
Тихие ошибки записи
Самая дорогая по времени находка. Сервисы .add / .update / .set отвечают HTTP 200, даже когда правка не применилась. Ошибка лежит внутри, в Results[].Errors, а верхнеуровневого error в ответе нет.
Мой низкоуровневый клиент сначала проверял только верхний error и считал такой ответ успехом. Итог: ассистент «ставит бюджет», рапортует «готово», а в кабинете ничего не изменилось. Поймал случайно — попросил поставить дневной бюджет на кампанию с автостратегией. Лечится тем, что клиент собирает пер‑элементные Errors и явно бросает исключение. С тех пор правило: на запись у Direct API нельзя верить статусу 200, надо читать тело.
Дневной бюджет несовместим с автостратегией
Продолжение предыдущего. Direct отбивает дневной бюджет на автостратегии кодом [6000] — «дневной бюджет можно использовать только совместно с ручными стратегиями». А недельный бюджет, наоборот, живёт только внутри автостратегии. То есть на вопрос «поставь бюджет N» правильного ответа без уточнения нет. Сделал так, что ассистент сам уточняет — дневной или недельный — и подсказывает, что доступно на текущей стратегии.
Корректировок на планшет в API не существует
Кажется логичным, что устройства — это десктоп, мобильные и планшеты. На запись Direct принимает MobileAdjustment и DesktopAdjustment, а TabletAdjustment просто нет: Яндекс относит планшеты к десктопу. Попытка задать корректировку на планшет возвращает «условия в корректировках пересекаются». Теперь на такой запрос ассистент честно говорит, что через API нельзя, и предлагает внести вручную.
Историю изменений Direct не отдаёт
Мне она нужна, чтобы оценивать, ведётся ли вообще работа над аккаунтом (для владельца это важнее, чем ROAS: платит подрядчику — хочет видеть, что тот не спит). API историю не возвращает — копим сами: ежедневный крон дёргает changes.check и пишет дельты кампаний, групп и объявлений в свою таблицу.
Что в итоге умеет ассистент
Пройдя все уровни боли и правок выше наконец можно рассказать и про то, что получилось на выходе. Честно скажу — продолжаю дорабатывать его постоянно, но уже текущий результат превосходит мои ожидания и сильно помогает в ускорении анализа.
Как и писал выше, в сервис зашито 3 блока каждый их которых я сейчас использую на дейли основе:
· Telegram‑бот — для супер оперативной утренней выгрузки, понять есть ли крит события
· веб‑приложение — собирает широкими мазками самые значимые факторы, влияющие на компании
· MCP‑сервер через клод — собственно говоря, само управление и генерация отчетов.
Из классного — с ИИ можно общаться обычным языком, он сам считывает запрос:
· «Где у меня уходят деньги впустую за последние 14 дней?»
· «Покажи кампании с ROAS меньше 1 и предложи, что отключить.»
· «Поставь кампанию X на паузу.»
· «Задай недельный бюджет 50 000 ₽ для кампании Y.»
· «Собери сводку по аккаунту за неделю.»

Поверх сырых данных — слой ИИ‑выводов: прогноз расхода и оценка, на сколько хватит баланса; разбор просадки конверсий по составляющим (трафик, конверсия, цена клика); аудит аккаунта со score 0–100; готовый еженедельный бриф одним вызовом. Для агентств — обзор сразу по всем подключённым аккаунтам.
Вместо вывода
Я начинал это не как продукт, а как попытку снять с себя большой пласт рутинной работы руками. Комбинация mcp+tg+веб‑интерфейс оказалась оптимальной, потому что каждый из этих инструментов закрывает отдельную задачу и вместе полностью выполняет то, что я хотел — минимум ручного копания кампаний. Можно оставаться внутри клода, а вся сложность — доступ к API, обработка его странностей, аналитика — прячется за набором инструментов.
Комментарии (10)

gl_uk
05.07.2026 13:28Что ваши безопасники говорят, когда вы доверяете такие данные какому-то облаку?
А ваши клиенты?
Как проходит проверка на валидность данных?

Marketscore Автор
05.07.2026 13:28У облака данные ограниченные в любом случае + никакие чувствительные данные туда не попадают, только данные рекламных кампаний.
Клиенты только рады, что ИИ помогает в оптимизации, тут пока что негатива ни разу не встречал.
По поводу проверки на валидность данных - тут на самом деле постоянная итеративная работа с улучшением. Когда только начинал постоянно перезаливал в клод анализ кампаний и методы, которыми его осуществлял. По сути научил его делать свою работу. Сейчас тоже регулярно проверяю выводы, но галлюцинаций уже нет вообще.

exelens
05.07.2026 13:28Можно взять мак мини ) поднять доступную модель локально и повесить это все в гермес и никакие утечки не страшны.

Marketscore Автор
05.07.2026 13:28Идея отличная, но увеличит стоимость сервиса примерно на стоимость мака мини))

exelens
05.07.2026 13:28Осталось прописать сценарии и затем покрыть тетестами. После этого оно будет работать как часы.

Marketscore Автор
05.07.2026 13:28Так сценарии и тесты уже есть) Юнит-тесты на денежное ядро, гейтинг, антифрод гоняются на каждом билде, плюс смоук-проверки на проде.
А так, уже сейчас это постоянно работает у меня на проде, и работает как часы
gevals
Во сколько обходится такое счастье? Ведь получается по итогу Claude всем управляет? Или на подписке работает?
Marketscore Автор
Тут 2 части:
1. Управляю всем в конечном счете я, claude - вспомогательный инструмент, который помогает быстро анализировать данные и делать на их основе правки. Особенно это актуально при запуске большого количества новых кампаний, там поначалу когда обучение идет там контроль постоянный нужен
2. во сколько обходится по факту - базовая подписка клод/гпт + сверху сервис, если только с мсп подключением то 990 р.