Суть урока
Рекламный копирайтер работает 8 часов, пишет 5 вариантов объявления, устаёт и уходит домой. Claude пишет 50 вариантов за несколько минут, разбирает результаты тестов и помогает понять, что работает лучше.
Это не просто быстрее. Это другая игра: больше проверок → больше данных → лучше реклама → часто ниже цена клика.
В уроке много кода на Python: так рекламную работу можно поставить на поток. Если не программируешь, читай теорию ради идей и запросов к Claude, а в практике есть путь без кода: те же запросы вставляются в обычный чат.
Ключевые концепции
- Тексты объявлений с Claude — 50 вариантов заголовков одной командой
- Реклама Meta (Facebook и Instagram) — тексты и картинки с помощью AI
- Адаптивные объявления Google Ads (по-английски RSA) — ты даёшь набор заголовков, Google сам их комбинирует; Claude помогает написать заголовки
- A/B-тест — показываешь разным людям два или несколько вариантов и сравниваешь результат. Главные показатели: CTR (доля показов, после которых кликнули), CPC (цена клика), CPL (цена одной заявки), CVR (доля кликов, которые стали заявками). Claude считает и помогает выбрать победителя
- Performance Max — кампании Google, которые сами выбирают, где показывать рекламу; Claude помогает подготовить для них материалы
- Adspirer MCP — управление рекламными кабинетами прямо из Claude (MCP — способ подключать к Claude внешние сервисы)
- Автоматические отчёты — данные → разбор → конкретные рекомендации
Теория
Рекламные тексты: 50 вариантов за 3 минуты
Хорошая реклама начинается с проверки. Чтобы проверять, нужно много вариантов. Раньше это стоило много времени и денег. Теперь намного меньше.
import anthropic
import json
def text_of(response) -> str:
"""Собирает текст ответа: у новых моделей перед текстом могут идти блоки «размышления»."""
return "".join(block.text for block in response.content if block.type == "text")
def generate_ad_variants(
product: str,
target_audience: str,
key_benefit: str,
platform: str,
count: int = 10
) -> list:
"""Генерирует варианты рекламных текстов"""
client = anthropic.Anthropic()
# Рекомендуемая длина текстов по справке Meta и Google Ads на октябрь 2026.
# Она меняется: перед запуском сверь со справкой площадок
platform_specs = {
"facebook": {
"headline_chars": 27, # заголовок в ленте Facebook
"primary_text_chars": 150, # основной текст: Meta советует 50-150 знаков
},
"google_rsa": {
"headline_chars": 30,
"description_chars": 90,
"headline_count": 15
},
"instagram": {
"caption_chars": 2200,
"first_line_chars": 125 # видно без "ещё"
}
}
specs = platform_specs.get(platform, platform_specs["facebook"])
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=8000, # с запасом: «размышления» модели тоже входят в этот лимит
messages=[{
"role": "user",
"content": f"""Создай {count} вариантов рекламы для {platform}.
Продукт: {product}
Целевая аудитория: {target_audience}
Главная выгода: {key_benefit}
Ограничения площадки: {json.dumps(specs, ensure_ascii=False)}
Для каждого варианта используй разный подход:
- Эмоциональный (страх упустить)
- Рациональный (цифры и факты)
- Социальное доказательство (отзывы, клиенты)
- Любопытство (вопрос или неожиданный факт)
- Прямой (выгода в лоб)
Используй только то, что правда об этом продукте. Не выдумывай цифры, отзывы и число клиентов.
Верни только JSON-массив, без пояснений и без тройных обратных кавычек вокруг:
[
{{
"variant_id": 1,
"approach": "название подхода",
"headline": "заголовок",
"primary_text": "основной текст",
"cta": "призыв к действию",
"target_emotion": "какую эмоцию вызывает",
"hypothesis": "почему должно сработать"
}}
]"""
}]
)
return json.loads(text_of(response))
# Пример: продукт выдуман
variants = generate_ad_variants(
product="Онлайн-курс Excel для финансистов",
target_audience="Бухгалтеры и финансисты 25-45 лет, тратят 2-3 часа на отчёты",
key_benefit="Сократить время на отчёты с 3 часов до 20 минут",
platform="facebook",
count=10
)
for v in variants[:3]:
print(f"\n--- Вариант {v['variant_id']}: {v['approach']} ---")
print(f"Заголовок: {v['headline']}")
print(f"Текст: {v['primary_text']}")
print(f"CTA: {v['cta']}")⚠️ Каждое утверждение в рекламе должно быть правдой. Законы о рекламе и защите прав потребителей касаются любой рекламы, в том числе написанной AI: никаких выдуманных отзывов и числа клиентов, никаких результатов, которые ты не можешь подтвердить. Проверь правила своей страны (в США, например, за этим следит Федеральная торговая комиссия, FTC). У каждой площадки (Google, Meta, LinkedIn, TikTok) ещё и свои правила рекламы, с особыми требованиями к чувствительным темам: жильё, работа, кредиты, здоровье. AI пишет черновик, а за то, что ушло в показ, отвечаешь ты. Если сомневаешься в формулировке, прочитай правила площадки или спроси юриста.
Реклама Meta: тексты и картинки
Meta — рекламный кабинет сразу для Facebook и Instagram. Claude помогает с текстами, а картинки делает в паре с генераторами изображений.
Как собрать рекламу:
1. Claude → 10 вариантов текстов
2. Flux / Midjourney / генератор картинок в ChatGPT → картинка под каждый текст
3. Запуск A/B-теста (по 5 вариантов)
4. 3-5 дней → собираем данные
5. Claude → разбирает результаты
6. Увеличиваем показы победителяdef create_meta_campaign_brief(
product: str,
budget_daily: float,
target_audience_description: str
) -> str:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=8000,
messages=[{
"role": "user",
"content": f"""Составь подробный план рекламной кампании в Meta Ads.
Продукт: {product}
Дневной бюджет: ${budget_daily}
Аудитория: {target_audience_description}
Включи:
1. **Структура кампании**: сколько групп объявлений и по какой логике
2. **Аудитория**: интересы, возраст, география
3. **Похожие аудитории (lookalike)**: на основе каких клиентов их строить
4. **Форматы**: какие форматы рекламы использовать и почему
5. **Бюджет**: как распределить между группами
6. **Показатели успеха (KPI)**: цена клика (CPC), доля кликов (CTR), цена заявки (CPL)
7. **План проверок**: что тестируем в первую очередь
Пиши конкретно: цифры, проценты, рекомендации."""
}]
)
return text_of(response)Google Ads: адаптивные объявления и ключевые слова
Адаптивное поисковое объявление Google (RSA, Responsive Search Ad): ты даёшь до 15 заголовков и до 4 описаний, Google сам их комбинирует. Claude помогает написать 15 заголовков, которые хорошо работают в любых сочетаниях.
def generate_google_rsa(
product: str,
landing_page_theme: str,
keywords: list[str]
) -> dict:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=8000,
messages=[{
"role": "user",
"content": f"""Создай адаптивное поисковое объявление (RSA) для Google Ads.
Продукт: {product}
Тема посадочной страницы: {landing_page_theme}
Ключевые слова: {', '.join(keywords)}
Требования:
- 15 заголовков, каждый до 30 символов
- 4 описания, каждое до 90 символов
- Заголовки должны хорошо работать в любых сочетаниях
- Ключевые слова в 3-4 заголовках (не во всех!)
- Разнообразие: выгоды, действия, отличия от других, срочность
Верни только JSON, без пояснений и без тройных обратных кавычек вокруг:
{{
"headlines": ["заголовок 1", ... "заголовок 15"],
"descriptions": ["описание 1", ... "описание 4"],
"pinning_recommendations": {{
"headline_position_1": "какой заголовок закрепить на 1 позиции",
"reason": "почему"
}}
}}"""
}]
)
return json.loads(text_of(response))
# Пример для юридической фирмы
rsa = generate_google_rsa(
product="Юридические услуги по недвижимости",
landing_page_theme="Оформление купли-продажи квартиры быстро и безопасно",
keywords=["юрист недвижимость", "оформление сделки", "купля продажа квартира"]
)
print("Заголовки:")
for i, h in enumerate(rsa["headlines"], 1):
chars = len(h)
status = "✅" if chars <= 30 else "⚠️"
print(f"{i}. {status} {h} ({chars} симв)")LinkedIn и TikTok: тот же подход
Функции выше не привязаны к Meta и Google. Реклама в LinkedIn обычно нужна тем, кто продаёт бизнесу: там можно выбрать аудиторию по должности, отрасли и размеру компании, поэтому текст обращается к роли («для HR-менеджеров средних компаний»), а не к интересу. В TikTok объявление — это короткое вертикальное видео, поэтому «текст» от Claude — это в основном сценарий первых секунд и подпись. Чтобы добавить любую из этих площадок, допиши в platform_specs новую запись с актуальными ограничениями из справки самой площадки (они меняются, поэтому не бери цифры из старых статей) и запусти те же generate_ad_variants() и analyze_ab_test().
A/B-тест: Claude разбирает, кто победил
Результаты тестов часто выглядят запутанно. У одного варианта доля кликов (CTR) выше, но и клик дороже (CPC). Заявок меньше, но они дешевле. Claude помогает распутать это за секунды. Проценты он посчитает, а вывод о том, хватает ли данных, проверяй сам: на десятках заявок случайность легко принять за победу.
def analyze_ab_test(test_results: list[dict]) -> dict:
"""
test_results: список словарей с результатами каждого варианта
Пример: [{"variant": "A", "impressions": 5000, "clicks": 150, "conversions": 12, "spend": 200}]
"""
client = anthropic.Anthropic()
# Добавляем вычисленные показатели
for r in test_results:
r["ctr"] = round(r["clicks"] / r["impressions"] * 100, 2)
r["cpc"] = round(r["spend"] / r["clicks"], 2) if r["clicks"] > 0 else 0
r["cpl"] = round(r["spend"] / r["conversions"], 2) if r["conversions"] > 0 else 0
r["cvr"] = round(r["conversions"] / r["clicks"] * 100, 2) if r["clicks"] > 0 else 0
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=8000,
messages=[{
"role": "user",
"content": f"""Разбери результаты A/B-теста рекламы и дай рекомендации.
Результаты:
{json.dumps(test_results, ensure_ascii=False, indent=2)}
Нужно:
1. **Победитель**: какой вариант лучше и ПОЧЕМУ (учти все показатели)
2. **Статистическая значимость**: хватает ли данных для уверенного вывода
3. **Выводы**: что результаты говорят об аудитории
4. **Следующий шаг**: что тестировать дальше
5. **Масштаб**: насколько увеличить бюджет победителя
Будь конкретен: называй цифры, проценты."""
}]
)
return {
"raw_results": test_results,
"analysis": text_of(response)
}
# Тест на выдуманных данных
results = [
{"variant": "A — Страх (потеря)", "impressions": 10000, "clicks": 180, "conversions": 9, "spend": 350},
{"variant": "B — Выгода (экономия)", "impressions": 10000, "clicks": 220, "conversions": 18, "spend": 350},
{"variant": "C — Социальное доказательство", "impressions": 10000, "clicks": 195, "conversions": 14, "spend": 350}
]
analysis = analyze_ab_test(results)
print(analysis["analysis"])
# Пример ответа на эти данные:
# Победитель: B — CTR 2.2%, CPL $19.4, CVR 8.2%
# Вариант A проигрывает несмотря на интригующий заголовок
# Рекомендация: данных мало (9 и 18 конверсий), продолжить тест и поднимать бюджет B постепенноPerformance Max: Claude помогает с группами ресурсов
Performance Max (PMax) — кампании Google, которые сами выбирают, где показывать рекламу: в поиске, на YouTube, в Gmail, на сайтах-партнёрах (Display), в Discover и на Картах. Качество материалов (в интерфейсе их называют ресурсами, по-английски assets) здесь решает многое. Для поисковых кампаний у Google есть ещё AI Max: на октябрь 2026 AI-функции встроены в сами кампании, поэтому названия и настройки сверяй со справкой Google Ads.
def create_pmax_assets(
product: str,
key_benefits: list[str],
audience_persona: str
) -> dict:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=8000,
messages=[{
"role": "user",
"content": f"""Создай все нужные материалы (ресурсы) для кампании Performance Max.
Продукт: {product}
Главные выгоды: {', '.join(key_benefits)}
Портрет аудитории: {audience_persona}
Верни только JSON, без пояснений и без тройных обратных кавычек вокруг:
{{
"headlines": ["5 заголовков до 30 символов, хотя бы один до 15 символов"],
"long_headlines": ["5 длинных заголовков до 90 символов"],
"descriptions": ["5 описаний до 90 символов"],
"business_name": "название компании (до 25 символов)",
"call_to_actions": ["список из 5 призывов к действию"],
"image_prompts": ["5 промптов для генерации изображений через Midjourney/Flux"],
"audience_signals": {{
"interests": ["интересы для сигналов аудитории"],
"custom_intent_keywords": ["ключевые слова, по которым видно намерение купить"],
"remarketing_segments": ["группы для повторного показа тем, кто уже был на сайте"]
}}
}}"""
}]
)
return json.loads(text_of(response))Adspirer MCP: управление рекламой прямо из Claude
Adspirer — сторонний сервис для рекламных кабинетов, который подключается к Claude через MCP. Он ставится как плагин в Claude Code и Cowork (о них в модуле 12) и на октябрь 2026 работает с Google Ads, Meta Ads и рядом других площадок. Claude видит настоящие данные кампаний и даёт советы по фактам, а не по догадкам. Сервис умеет и создавать кампании, поэтому прочитай его условия, посмотри, какой доступ к кабинетам он просит, и оставляй запуск рекламы и изменение бюджета за собой: Claude готовит, ты подтверждаешь.
# В Claude Code с подключённым Adspirer MCP:
"Покажи кампании с CTR ниже 1% за последние 7 дней"
→ Claude видит данные → выдаёт список с рекомендациями
"Какие ключевые слова тратят деньги без заявок?"
→ Claude разбирает → список на паузу
"Сделай отчёт об окупаемости (ROI) всех кампаний за месяц"
→ Claude готовит → сравнение, выводы, рекомендацииАвтоматические отчёты: данные → выводы
def generate_weekly_ad_report(campaigns_data: dict) -> str:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=8000,
messages=[{
"role": "user",
"content": f"""Составь еженедельный отчёт по рекламным кампаниям.
Данные:
{json.dumps(campaigns_data, ensure_ascii=False, indent=2)}
Формат отчёта:
## Итоги недели
[3-4 ключевые цифры]
## Что работает
[3 самых удачных пункта с цифрами]
## Что не работает
[3 главные проблемы с цифрами]
## Действия на следующую неделю
[5 конкретных шагов с ожидаемым эффектом]
## Бюджет
[рекомендации по перераспределению]
Пиши как аналитик: конкретно, с цифрами, без воды. Бери цифры только из данных."""
}]
)
return text_of(response)Практика
Задача: создать 10 вариантов рекламного текста и разобрать тест
Без программирования. Скопируй текст запроса из функции create_ad_batch() ниже, подставь данные своего продукта и отправь в чат Claude. Для части 2 вставь в чат таблицу с результатами теста и попроси разобрать её по пяти пунктам из analyze_ab_test().
С кодом. Нужны Python, библиотека anthropic (pip install anthropic) и ключ API Anthropic в переменной окружения ANTHROPIC_API_KEY. Ключ создаётся в Claude Console (platform.claude.com) и оплачивается по токенам отдельно от подписки.
Часть 1: Генерация вариантов (15 минут)
# ad_generator.py
import anthropic
import json
client = anthropic.Anthropic()
def text_of(response) -> str:
"""Собирает текст ответа без блоков «размышления»."""
return "".join(block.text for block in response.content if block.type == "text")
def create_ad_batch(product_info: dict) -> list:
"""Создаёт пачку рекламных объявлений для теста"""
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=8000,
messages=[{
"role": "user",
"content": f"""Создай 10 вариантов рекламных объявлений для Facebook.
ПРОДУКТ: {product_info['name']}
ОПИСАНИЕ: {product_info['description']}
ЦЕНА: {product_info['price']}
АУДИТОРИЯ: {product_info['audience']}
ГЛАВНАЯ ВЫГОДА: {product_info['main_benefit']}
БОЛЬ АУДИТОРИИ: {product_info['pain_point']}
Создай по 2 варианта для каждого подхода:
1. Страх потери ("если не сделаешь X, то потеряешь Y")
2. Выгода ("получи X и сэкономь Y")
3. Социальное доказательство ("1000 клиентов уже...")
4. Любопытство ("Знаете ли вы, что...")
5. Прямое предложение ("Купить X за Y прямо сейчас")
Бери факты только из описания продукта выше. Не выдумывай цифры, отзывы и число клиентов.
Верни только JSON, без пояснений и без тройных обратных кавычек вокруг:
[{{
"id": 1,
"approach": "название",
"headline": "до 27 символов",
"text": "до 150 символов",
"cta": "кнопка",
"image_direction": "что должно быть на картинке"
}}]"""
}]
)
return json.loads(text_of(response))
# Подставь свой продукт (ниже выдуманный пример)
my_product = {
"name": "Онлайн-школа делового английского для IT-специалистов",
"description": "Английский для работы в американских командах за 3 месяца",
"price": "$99 в месяц",
"audience": "Разработчики и IT-специалисты 25-40 лет, для которых английский не родной",
"main_benefit": "Уверенно чувствовать себя на собеседованиях и встречах команды",
"pain_point": "Знаю технический английский, но теряюсь на быстрых созвонах с носителями языка"
}
ads = create_ad_batch(my_product)
print("=== СГЕНЕРИРОВАННЫЕ ОБЪЯВЛЕНИЯ ===\n")
for ad in ads:
print(f"#{ad['id']} — {ad['approach']}")
print(f"Заголовок: {ad['headline']}")
print(f"Текст: {ad['text']}")
print(f"CTA: {ad['cta']}")
print(f"Картинка: {ad['image_direction']}")
print()Часть 2: Разбор результатов теста (25 минут)
После запуска теста вводим данные и получаем разбор. Скопируй в тот же файл функцию analyze_ab_test() из теории.
# После 5 дней теста подставь свои данные (числа ниже выдуманы для примера)
test_data = [
{"id": 1, "approach": "Страх потери", "impressions": 8500, "clicks": 102, "conversions": 4, "spend": 180},
{"id": 2, "approach": "Страх потери 2", "impressions": 8200, "clicks": 115, "conversions": 5, "spend": 175},
{"id": 3, "approach": "Выгода", "impressions": 8800, "clicks": 185, "conversions": 12, "spend": 182},
{"id": 4, "approach": "Выгода 2", "impressions": 8600, "clicks": 172, "conversions": 10, "spend": 178},
{"id": 5, "approach": "Соц.доказательство", "impressions": 8300, "clicks": 166, "conversions": 11, "spend": 176},
{"id": 6, "approach": "Соц.доказательство 2", "impressions": 8700, "clicks": 143, "conversions": 8, "spend": 181},
{"id": 7, "approach": "Любопытство", "impressions": 9100, "clicks": 228, "conversions": 7, "spend": 185},
{"id": 8, "approach": "Любопытство 2", "impressions": 8900, "clicks": 214, "conversions": 6, "spend": 183},
{"id": 9, "approach": "Прямое предложение", "impressions": 8400, "clicks": 126, "conversions": 9, "spend": 177},
{"id": 10, "approach": "Прямое предложение 2", "impressions": 8600, "clicks": 138, "conversions": 8, "spend": 179}
]
analysis = analyze_ab_test(test_data)
print(analysis["analysis"])Инструменты и ресурсы
- Meta Business Suite и Ads Manager — business.facebook.com (кабинет для запуска рекламы в Facebook и Instagram)
- Google Ads — ads.google.com
- Adspirer MCP — сторонний сервис для разбора рекламы через Claude
- Flux — bfl.ai, сайт Black Forest Labs (картинки для рекламы по текстовому описанию)
- Meta Ad Library (библиотека рекламы) — facebook.com/ads/library (посмотреть рекламу конкурентов)
- Google Keyword Planner — планировщик ключевых слов
- Anthropic SDK — чтобы встроить Claude в свои рекламные процессы; названия моделей в коде даны на октябрь 2026, актуальные цены и версии: Актуальное сейчас
Ключевые выводы
Реклама — это всегда проверка. Кто проверяет больше вариантов, тот быстрее учится. Claude делает проверку дешёвой: 50 вариантов вместо 5, за минуты вместо дней.
Разбор данных часто становится узким местом в небольших рекламных командах. Claude снимает эту нагрузку: видит все показатели сразу, не теряется в таблицах, даёт конкретный вывод с обоснованием.
Главное правило: Claude пишет тексты и разбирает данные, а запускает и масштабирует рекламу человек. Окончательное решение всегда за тобой, AI только ускоряет путь к нему.
Следующий урок
→ AI в продажах — отбор заявок, повторные письма, ответы на возражения
Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс