Долгое время автоматизация маркетинга опиралась на визуальные no-code конструкторы. Связки в Zapier, Make или n8n казались удобным способом соединить таблицы, рекламные кабинеты и генераторы текстов без привлечения программистов. Однако по мере усложнения бизнес-логики этот стек превратился в узкое место: смена структуры данных в стороннем сервисе ломает цепочки шагов, отладка скрытых ошибок отнимает часы, а масштабирование упирается в стоимость операций на платформе.
Сооснователь компании Graphed Коди Шнайдер и директор по маркетингу Кипп Боднар предложили альтернативный подход — дисциплину маркетинговой инженерии (Marketing Engineering). Вместо хрупких визуальных графов все процессы маркетинга описываются структурированным кодом, а в роли ведущего исполнителя и координатора выступает консольный агент разработки Claude Code.
Практический результат внедрения такого конвейера впечатляет: за четыре недели работы автономной системы стоимость привлечения целевого лида (CPL) в рекламных кампаниях Meta Ads снизилась с 82 до 15 долларов при сохранении исходного бюджета. Эффект был достигнут за счет непрерывного тестирования десяти свежих гипотез в сутки.
Архитектура четырех специализированных агентов
Конвейер маркетинговой инженерии разделен на четыре автономных агента, каждый из которых решает узкую задачу и управляется через терминальные команды:
- Meta Ads Creative Agent. Агент ежедневно анализирует статистику кликабельности и конверсий в рекламном кабинете, выявляет паттерны успешных объявлений и генерирует десять новых вариантов. Он формулирует цепляющие текстовые хуки, пишет основной текст объявления и формирует брифы для генерации графических баннеров.
- Google Ads Keyword Agent. Модуль отслеживает поисковые фразы, по которым происходили показы, оценивает стоимость перехода и показатель отказов. Обнаружив нецелевой трафик, агент самостоятельно вносит изменения в конфигурационный файл минус-слов и актуализирует списки исключений в аккаунте.
- SEO Research & Content Agent. С помощью прямого обращения к DataForSEO API агент анализирует поисковую выдачу в целевой нише, выявляет пробелы в семантическом ядре конкурентов, пишет развернутые экспертные статьи и автоматически загружает их в headless CMS в статусе черновиков.
- Cold Outreach Agent. Инструмент сегментирует базу потенциальных клиентов, проверяет валидность корпоративных доменов и составляет персонализированные цепочки электронных писем с учетом контекста компании адресата.
В отличие от разрозненных no-code скриптов, агенты работают в едином Git-репозитории. Если внешняя платформа меняет формат ответа API, кодинг-агент сам считывает ошибку типизации TypeScript и вносит исправления в сигнатуру вызова функции.
Защита от блокировок: Human-in-the-Loop и Slack-гейт
Прямая автоматическая публикация рекламных материалов таит критический риск: массовое создание объявлений с мгновенной активацией неизбежно привлекает внимание автоматических систем безопасности Meta и приводит к блокировке Business Manager.

Для исключения этого риска в архитектуру встроен обязательный барьер ручной проверки — 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, а бизнес — предсказуемый и масштабируемый поток входящих заявок.
