Сервис развивается: тестируем формат, собираем идеи, улучшаем сервис. Есть идеи? Написать
Дайджесты новостей
Архитектура дисциплины Marketing Engineering: консольный агент Claude Code координирует команду четырех специализированных агентов в общем Git-репозитории через защитный шлюз Human-in-the-Loop.

Маркетинг как код: строим автономную команду агентов в Claude Code

Долгое время автоматизация маркетинга опиралась на визуальные no-code конструкторы. Связки в Zapier, Make или n8n казались удобным способом соединить таблицы, рекламные кабинеты и генераторы текстов без привлечения программистов. Однако по мере усложнения бизнес-логики этот стек превратился в узкое место: смена структуры данных в стороннем сервисе ломает цепочки шагов, отладка скрытых ошибок отнимает часы, а масштабирование упирается в стоимость операций на платформе.

Сооснователь компании Graphed Коди Шнайдер и директор по маркетингу Кипп Боднар предложили альтернативный подход — дисциплину маркетинговой инженерии (Marketing Engineering). Вместо хрупких визуальных графов все процессы маркетинга описываются структурированным кодом, а в роли ведущего исполнителя и координатора выступает консольный агент разработки Claude Code.

Практический результат внедрения такого конвейера впечатляет: за четыре недели работы автономной системы стоимость привлечения целевого лида (CPL) в рекламных кампаниях Meta Ads снизилась с 82 до 15 долларов при сохранении исходного бюджета. Эффект был достигнут за счет непрерывного тестирования десяти свежих гипотез в сутки.

Архитектура четырех специализированных агентов

Конвейер маркетинговой инженерии разделен на четыре автономных агента, каждый из которых решает узкую задачу и управляется через терминальные команды:

  1. Meta Ads Creative Agent. Агент ежедневно анализирует статистику кликабельности и конверсий в рекламном кабинете, выявляет паттерны успешных объявлений и генерирует десять новых вариантов. Он формулирует цепляющие текстовые хуки, пишет основной текст объявления и формирует брифы для генерации графических баннеров.
  2. Google Ads Keyword Agent. Модуль отслеживает поисковые фразы, по которым происходили показы, оценивает стоимость перехода и показатель отказов. Обнаружив нецелевой трафик, агент самостоятельно вносит изменения в конфигурационный файл минус-слов и актуализирует списки исключений в аккаунте.
  3. SEO Research & Content Agent. С помощью прямого обращения к DataForSEO API агент анализирует поисковую выдачу в целевой нише, выявляет пробелы в семантическом ядре конкурентов, пишет развернутые экспертные статьи и автоматически загружает их в headless CMS в статусе черновиков.
  4. Cold Outreach Agent. Инструмент сегментирует базу потенциальных клиентов, проверяет валидность корпоративных доменов и составляет персонализированные цепочки электронных писем с учетом контекста компании адресата.

В отличие от разрозненных no-code скриптов, агенты работают в едином Git-репозитории. Если внешняя платформа меняет формат ответа API, кодинг-агент сам считывает ошибку типизации TypeScript и вносит исправления в сигнатуру вызова функции.

Защита от блокировок: Human-in-the-Loop и Slack-гейт

Прямая автоматическая публикация рекламных материалов таит критический риск: массовое создание объявлений с мгновенной активацией неизбежно привлекает внимание автоматических систем безопасности Meta и приводит к блокировке Business Manager.

Архитектурная схема шлюза безопасности Human-in-the-Loop: агент передает рекламный креатив на ручное утверждение человеку перед отправкой в API со статусом паузы.

Для исключения этого риска в архитектуру встроен обязательный барьер ручной проверки — Human-in-the-Loop. Агент генерирует креатив, но не имеет прав публиковать его напрямую в активную кампанию. Вместо этого сформированный объект отправляется через вебхук в закрытый канал Slack, где маркетолог проверяет предложение и принимает решение в один клик.

import axios from 'axios';

// Строгая типизация рекламного креатива для исключения некорректных полей
export interface AdCreativePayload {
  headline: string;
  bodyText: string;
  callToAction: 'LEARN_MORE' | 'SIGN_UP' | 'CONTACT_US';
  targetAudience: string;
  sourceHypothesis: string;
}

// Отправка сгенерированного креатива на верификацию человеку через Slack Webhook
export async function submitCreativeForReview(
  creative: AdCreativePayload,
  slackWebhookUrl: string
): Promise<void> {
  const slackPayload = {
    blocks: [
      {
        type: 'header',
        text: { type: 'plain_text', text: 'Новая рекламная гипотеза требует одобрения' }
      },
      {
        type: 'section',
        fields: [
          { type: 'mrkdwn', text: `*Гипотеза:*\n${creative.sourceHypothesis}` },
          { type: 'mrkdwn', text: `*Целевой сегмент:*\n${creative.targetAudience}` }
        ]
      },
      {
        type: 'section',
        text: { type: 'mrkdwn', text: `*Заголовок:* ${creative.headline}\n*Текст:* ${creative.bodyText}` }
      }
    ]
  };

  await axios.post(slackWebhookUrl, slackPayload);
}

Человек видит структурированную карточку со всеми параметрами объявления. Если текст соответствует стандартам бренда, сотрудник нажимает кнопку подтверждения, инициируя следующий этап пайплайна.

Публикация в Meta Graph API в безопасном режиме

После получения подтверждения в Slack агент активирует функцию отправки данных в Meta Marketing API. Даже на этом этапе соблюдается строгое правило безопасности: объявление создается исключительно в статусе PAUSED. Это дает возможность дополнительно проконтролировать финальный рендер креатива в веб-интерфейсе Ads Manager перед списанием рекламного бюджета.

// Отправка одобренного креатива в Meta Graph API с принудительной паузой
export async function deployApprovedMetaCreative(
  adAccountId: string,
  accessToken: string,
  creative: AdCreativePayload
): Promise<string> {
  const endpoint = `https://graph.facebook.com/v21.0/act_${adAccountId}/adcreatives`;

  const payload = {
    name: `Agent Creative: ${creative.headline.slice(0, 35)}`,
    object_story_spec: {
      page_id: process.env.META_PAGE_ID,
      link_data: {
        message: creative.bodyText,
        name: creative.headline,
        call_to_action: { type: creative.callToAction }
      }
    },
    // Критически важный параметр: объявление создается выключенным
    status: 'PAUSED'
  };

  const response = await axios.post(endpoint, payload, {
    headers: {
      Authorization: `Bearer ${accessToken}`,
      'Content-Type': 'application/json'
    }
  });

  return response.data.id;
}

Такая двухступенчатая схема полностью устраняет риск случайных трат и снижает вероятность санкций со стороны модераторов площадки до нуля.

Бренд-профиль Taste Profile в репозитории

Чтобы агент не генерировал шаблонные тексты с клише и не нарушал правила платформы, ключевые требования бренда фиксируются в файле CLAUDE.md в корне репозитория. Этот профиль служит для модели несменяемой инструкцией при каждом запуске:

  • Тональность и стиль: запрет на агрессивные манипуляции, призывы в стиле кликбейта и превосходные степени («лучший», «номер один в мире»).
  • Словарь бренда: перечень предпочтительных терминов, отраслевых понятий и формулировок УТП.
  • Список стоп-слов Meta: слова и обороты, гарантированно вызывающие ручную проверку или блокировку рекламы (обещания быстрого обогащения, гарантии медицинских результатов, дискриминационные маркеры).

Чек-лист безопасности маркетинговой автоматизации

  • Все вызовы к рекламным API используют токены с минимально необходимым уровнем привилегий.
  • Создание кампаний и объявлений программным путем выполняется строго в статусе PAUSED.
  • Внедрен обязательный Human-in-the-Loop барьер через корпоративный мессенджер для утверждения текстов.
  • В репозитории зафиксирован актуальный список стоп-слов рекламных площадок и стандартов бренда.
  • Настроены жесткие суточные лимиты расходов на уровне каждого рекламного аккаунта.

Переход от экспериментов к постоянному конвейеру

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

Снижение стоимости лида с 82 до 15 долларов произошло не благодаря одной удачной формулировке, а за счет системного перебора десятков вариантов в день с автоматическим отсевом неэффективных объявлений. Разработчики получают прозрачную систему с версионированием через Git, а бизнес — предсказуемый и масштабируемый поток входящих заявок.