Yandex Direct API, Python, серверлесс-функции, автоматический биддер, синхронизация с каталогом через скрипты - звучит как проект команды разработчиков. Но я не программист, а предприниматель, который управляет всем этим через чат в терминале.
Полная архитектура системы - схема, скрипты, поток данных, логика биддера. PDF, бесплатно: забирайте в боте
Больше половины продаж моей компании идет из Яндекс Директа. Бюджет приближается к миллиону в месяц - расход большой, контроль минимальный. Я решил это изменить - построить свою систему управления рекламой. Код пишет Claude Code (AI-агент в терминале), а я ставлю задачи и принимаю решения. Хочу рассказать, что уже есть, куда иду, и где набиваю шишки. Кто уже проходил этот путь - буду рад советам в комментариях.
Предыстория
Сначала вели рекламу сами - потом отдали агентству, потом снова забрал. Roistat подключен, аналитика была, я видел, какие каналы приносят. Но система была шаблонная, огромная - тысячи групп, созданные в разное время по разной логике, ставки как средняя температура по больнице, тексты из шаблона который не менялся годами.
Я хотел другого - крутить настройки когда хочу, одним сообщением, без менеджера промежуточного. Не объяснять зачем, не согласовывать каждую правку с моим исполнителем или менеджером РА. И чтобы система сама ежедневно отсматривала статистику и подкручивала то, что нужно - ставки, тексты, минус-слова. Подход индивидуальный, контроль тотальный.
Масштаб задачи
Несколько тысяч товаров в каталоге. Около 50 кампаний по категориям. Около 20 000 групп объявлений. Десятки тысяч ключевых слов. Это не стартап с десятью объявлениями - это масштаб промышленный, где вручную управлять принципиально невозможно. Каждый день данные меняются, каждый день нужны решения - и человек здесь проигрывает алгоритму безоговорочно.
Что хочу получить в итоге
Две вещи:
Первое - автоматическая система на скриптах. Не ручное управление через интерфейс Директа - а код, который делает рутину за меня. Новый товар появился в каталоге - объявление создается само. Статистика собирается каждый день. Ставки корректируются по правилам - без моего участия, без пропусков, без настроения.
Второе - управление этой системой через Claude Code в терминале. Не лезть в код руками - а писать задачу человеческим языком: "подними ставки на группы где CTR выше 5% но позиция ниже третьей" или "добавь быстрые ссылки во все объявления новой кампании" - и скрипт пишется, тестируется, запускается. Терминал вместо интерфейса - мой стиль управления.
Что уже сделано
Написал четыре скрипта - каждый закрывает конкретную боль:
direct_sync.py - синхронизация рекламы с каталогом товаров. Появился новый товар - группа с объявлениями и ключами создается автоматически. Убрали товар - группа ставится на паузу. Каталог и Директ связаны намертво - рассинхрон исключен.
fetch_stats.py - сбор статистики по каждой группе: позиции, клики, CTR, расход - все в одном месте, каждый день. Раньше ковырял отчеты вручную - теперь данные текут сами, структурно и прозрачно.
bid_manager.py - свой биддер. Раньше платил за сторонний около 20 тысяч в месяц и не мог влезть в его логику - черный ящик за деньги немалые. Теперь свой, полностью под моим контролем - каждое правило написано мной, каждый порог обоснован.
patch_sitelinks.py - быстрые ссылки. Отдельный скрипт, потому что Яндекс не принимает их вместе с объявлениями через API - пришлось разбираться с отдельным эндпоинтом (sitelinks.add). Документация молчит - пришлось копать.
Все задеплоено на YC Functions - серверлесс, пять триггеров по расписанию. Инфраструктура собрана, сейчас обкатываю каждый скрипт по отдельности - смотрю что ломается, чиню, перезапускаю.
Грабли от Яндекса
Организацию из Яндекс.Бизнеса через API не проставишь - только руками через интерфейс. Документация Direct API местами врет - запрашиваешь больше 10 кампаний в одном batch-запросе и получаешь пустой ответ без объяснений. Баг, который нигде не описан - находишь только методом научного тыка. Формат объявлений для РСЯ описан тремя способами в документации - работает один, остальные декоративные.
Каждую такую штуку раскапываешь пробами, нервами, перебором вариантов. Claude Code тут реально спасает - перебирает запросы быстрее, чем я успеваю злиться. Робот терпеливый - я нет, и это прекрасный альянс.
Почему не готовые сервисы
Стартапов с AI-рекламой десятки - K50, Marilyn, Alytics, автостратегии самого Яндекса. Три причины, почему делаю свое:
Контроль. Готовый сервис - это опять черный ящик непроглядный. Алгоритм чужой, логика закрытая. Здесь я понимаю каждое правило и могу поменять логику за минуту - мгновенная перестройка вместо тикета в саппорт.
Деньги. Биддер стоил 20К/мес, нормальный сервис управления на моем масштабе - 30-50К/мес. Экономия полумиллиона в год - не абстрактная, а конкретная. YC Functions стоит копейки - буквально.
Интерфейс. Ни один сервис не дает управлять рекламой через чат - написал задачу человеческим языком, получил результат. Мой терминал - мой командный пункт.
Свой велосипед, бесплатный, и я точно знаю как он едет - каждая спица на месте, каждая шестеренка понятна, каждый узел разборный.
Что дальше
Цель - чтобы система сама каждый день смотрела статистику и принимала решения: где поднять ставку, где поменять текст, где поставить на паузу неэффективную группу. Полная автономность - я только задаю рамки и проверяю результаты.
В следующем посте расскажу как работает биддер - логика ставок, правила, первые результаты после запуска.
Кто уже делал что-то подобное - автоматизация Директа через API, свои биддеры, управление через AI - поделитесь опытом в комментариях, интересно сравнить подходы и какие еще минные поля меня ждут.
Только терминал, только хардкор.
Полная архитектура системы - схема, скрипты, поток данных, логика биддера. PDF, бесплатно: забирайте в боте