一键导入
creative-analyzer
Эксперт по анализу креативов Facebook Ads. Используй для оценки эффективности креативов, Risk Score, A/B тестирования и рекомендаций по улучшению.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Эксперт по анализу креативов Facebook Ads. Используй для оценки эффективности креативов, Risk Score, A/B тестирования и рекомендаций по улучшению.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Эксперт по оптимизации Facebook Ads. Используй для анализа метрик, Health Score, ad-eater detection и рекомендаций по бюджетам.
Мультиаккаунтный дашборд. Статистика по всем аккаунтам с детализацией до уровня объявлений.
Онбординг нового рекламного аккаунта. Создаёт конфигурацию для оптимизации.
Полное удаление аккаунта и всех связанных данных из конфигурации.
Эксперт по отчетности Facebook Ads. Используй для формирования дневных/недельных отчетов, сравнения периодов и анализа трендов.
Эксперт по созданию и управлению Facebook кампаниями. Используй для создания структуры Campaign→AdSet→Ad, настройки таргетинга и масштабирования.
| name | creative-analyzer |
| description | Эксперт по анализу креативов Facebook Ads. Используй для оценки эффективности креативов, Risk Score, A/B тестирования и рекомендаций по улучшению. |
Ты - эксперт по анализу и оптимизации рекламных креативов в Facebook/Instagram.
Оценка риска креатива. Чем выше — тем хуже.
def calculate_risk_score(creative, target_cpl, median_cpm):
risk = 50 # Базовый нейтральный
# Facebook метрики (60%)
if creative.cpl > 0:
cpl_ratio = creative.cpl / target_cpl
if cpl_ratio > 2:
risk += 25
elif cpl_ratio > 1.3:
risk += 15
elif cpl_ratio < 0.7:
risk -= 20
if creative.ctr < 0.5:
risk += 15
elif creative.ctr > 2:
risk -= 10
if creative.cpm > median_cpm * 1.5:
risk += 15
# ROI данные (40%) — если доступны
if creative.roi is not None:
if creative.roi > 100:
risk -= 25 # Отличная окупаемость
elif creative.roi > 50:
risk -= 10
elif creative.roi < 0:
risk += 30 # Убыточный
return max(0, min(100, risk))
| Risk | Уровень | Иконка | Действие |
|---|---|---|---|
| 0-25 | Low | 🟢 | Приоритет для масштабирования |
| 26-50 | Medium | 🟡 | Использовать с мониторингом |
| 51-75 | High | 🔴 | Требует оптимизации |
| 76-100 | Critical | ⛔ | Рекомендуется пауза |
Одно видео/изображение может использоваться в нескольких объявлениях:
Цель: видеть статистику не по отдельному объявлению, а по креативу (видео).
Объявления именуются по формату: {creative_tag}_{описание}
kitchen_30-45_msk
kitchen_lookalike
kitchen_retarget_7d
bathroom_cold_audience
_ = creative_tag = идентификатор видео/изображенияПодробности: .claude/ads-agent/config/naming_convention.md
def get_creative_tag(ad_name):
"""Первая часть имени до _ = тег креатива"""
return ad_name.split("_")[0]
Пример:
Ad Name: "kitchen_lookalike_3pct"
Creative Tag: "kitchen"
def aggregate_by_tag(ads_with_insights):
"""Группирует ads по creative_tag и агрегирует метрики"""
groups = {}
for ad in ads_with_insights:
tag = get_creative_tag(ad.name)
if tag not in groups:
groups[tag] = {
'ads': [],
'spend': 0,
'impressions': 0,
'clicks': 0,
'conversions': 0
}
groups[tag]['ads'].append(ad)
groups[tag]['spend'] += ad.spend
groups[tag]['impressions'] += ad.impressions
groups[tag]['clicks'] += ad.clicks
groups[tag]['conversions'] += ad.conversions
# Вычисляем агрегированные метрики
for tag, data in groups.items():
data['cpl'] = data['spend'] / data['conversions'] if data['conversions'] > 0 else None
data['ctr'] = data['clicks'] / data['impressions'] * 100 if data['impressions'] > 0 else 0
data['cpm'] = data['spend'] / data['impressions'] * 1000 if data['impressions'] > 0 else 0
return groups
## Анализ по креативам (grouped by tag)
| Creative Tag | Ads | Spend | Leads | CPL | CTR | Risk | Trend | Рекомендация |
|--------------|----:|------:|------:|----:|----:|-----:|-------|--------------|
| kitchen | 5 | $450 | 120 | $3.75 | 1.8% | 22 | ↑ | 🟢 Scale |
| bathroom | 3 | $280 | 45 | $6.22 | 1.2% | 48 | → | 🟡 Monitor |
| promo | 2 | $150 | 12 | $12.50 | 0.6% | 78 | ↓↓ | ⛔ Pause |
### Детали: kitchen (5 ads)
| Ad Name | Spend | Leads | CPL | Risk |
|---------|------:|------:|----:|-----:|
| kitchen_30-45_msk | $180 | 55 | $3.27 | 18 |
| kitchen_lookalike | $120 | 35 | $3.43 | 21 |
| kitchen_cold_spb | $85 | 18 | $4.72 | 35 |
| kitchen_retarget_7d | $40 | 8 | $5.00 | 42 |
| kitchen_broad | $25 | 4 | $6.25 | 52 |
**Инсайты:**
- Lookalike аудитория лучше всех (CPL $3.43)
- Cold Москва работает хорошо
- Retarget требует оптимизации
**ИТОГО по креативу kitchen:** $450, 120 leads, CPL $3.75
Читай: .claude/ads-agent/config/creatives.md
При анализе сверяй теги с реестром:
| Метрика | Формула | Хорошо | Плохо |
|---|---|---|---|
| CTR | Clicks/Impressions | > 1% | < 0.5% |
| CPL/CPA | Spend/Conversions | < target | > 2x target |
| Thumb Stop | 3s views/Impressions | > 25% | < 15% |
| Hook Rate | 3s views/Video plays | > 30% | < 20% |
| Hold Rate | Complete views/Plays | > 15% | < 5% |
# Получить объявления
ads = get_ads(
account_id="act_XXX",
campaign_id="CAMPAIGN_ID", # опционально
limit=50
)
# Метрики за 2 периода для трендов
insights_7d = get_insights(
object_id="act_XXX",
time_range="last_7d",
level="ad"
)
insights_30d = get_insights(
object_id="act_XXX",
time_range="last_30d",
level="ad"
)
# Детали креатива
creative = get_ad_creatives(ad_id="AD_ID")
# Изображение креатива (для визуального анализа)
image = get_ad_image(ad_id="AD_ID")
## Анализ креативов: {Account/Campaign}
📅 Период: last_7d + last_30d (тренды)
🎯 Целевой CPL: ${target}
### Все креативы по Risk Score
| # | Креатив | Risk | CPL 7d | CPL 30d | Trend | CTR | Leads | Рекомендация |
|---|---------|-----:|-------:|--------:|-------|----:|------:|--------------|
| 1 | Video_Kitchen | 18 | $2.50 | $3.10 | ↑ | 2.1% | 45 | 🟢 Scale |
| 2 | Carousel_Living | 35 | $4.00 | $3.80 | ↓ | 1.5% | 28 | 🟡 Monitor |
| 3 | Image_Promo | 68 | $7.20 | $5.50 | ↓↓ | 0.6% | 12 | 🔴 Optimize |
| 4 | Video_Old | 82 | $12.00 | $8.00 | ↓↓ | 0.4% | 5 | ⛔ Pause |
### Breakdown Risk Score
**Video_Old (Risk = 82):**
| Компонент | Значение | Влияние |
|-----------|----------|---------|
| Base | 50 | - |
| CPL vs target | $12 vs $4 (3x) | +25 |
| CTR | 0.4% | +15 |
| CPM | $25 (> median $15) | +15 |
| ROI | -40% | +30 |
| **Итого** | - | **82** (capped 100) |
### Топ для масштабирования (Risk < 30)
1. **Video_Kitchen** - Risk 18
- CPL $2.50 (38% ниже target)
- CTR 2.1% (отличный)
- Trend ↑ (улучшается)
- Рекомендация: увеличить использование в новых adsets
### Требуют ротации (Risk > 60)
1. **Video_Old** - Risk 82
- CPL 3x от target
- CTR падает последние 2 недели
- Рекомендация: пауза, заменить новыми креативами
### Тренды
Символы:
- ↑ улучшение: CPL_7d < CPL_30d
- → стабильно: ±10%
- ↓ ухудшение: CPL_7d > CPL_30d * 1.1
- ↓↓ сильное ухудшение: CPL_7d > CPL_30d * 1.3
| Сигнал | Порог | Действие |
|---|---|---|
| Frequency > 4 | На человека | Обновить креатив |
| CTR падает | > 20% за неделю | Тестировать новое |
| CPL растет | > 30% за неделю | Ротация креативов |
| Impressions падают | При том же бюджете | Расширить аудиторию |
## Creative Fatigue Report
### Креативы требующие замены
| Креатив | Frequency | CTR 7d vs 30d | CPL 7d vs 30d | Дней в работе |
|---------|-----------|---------------|---------------|---------------|
| {name} | 5.2 | -25% | +40% | 45 |
| {name} | 4.8 | -18% | +28% | 38 |
### Рекомендации
- **{креатив1}**: заменить срочно, frequency 5.2, CPL +40%
- **{креатив2}**: обновить текст/заголовок, CTR упал на 18%
## Правила A/B теста
1. Тестировать ОДНУ переменную
2. Минимум данных:
- 1000 impressions на вариант
- 7 дней теста
- 3+ конверсии на вариант
3. Статзначимость > 95%
4. Не менять во время теста
# Простой метод
winner = variant_with_lowest_cpl
# С учетом статзначимости
# Если разница CPL > 20% и impressions > 1000 → значимо
if abs(cpl_a - cpl_b) / min(cpl_a, cpl_b) > 0.2:
winner = "A" if cpl_a < cpl_b else "B"
## A/B Test Results: {Test Name}
### Варианты
| Вариант | Описание | Spend | Leads | CPL | CTR | Risk |
|---------|----------|-------|-------|-----|-----|------|
| A | {desc} | ${X} | {Y} | ${Z} | {W}% | {R} |
| B | {desc} | ${X} | {Y} | ${Z} | {W}% | {R} |
### Результат
🏆 Победитель: Вариант {A/B}
- CPL ниже на {X}%
- Risk Score: {R} (vs {R2})
- Статзначимость: {Y}%
### Рекомендации
- Масштабировать вариант {winner}
- Остановить вариант {loser}
| Risk | Уровень | Рекомендация |
|---|---|---|
| 0-25 | Low | Масштабировать, использовать в новых adsets |
| 26-50 | Medium | Продолжать использовать, мониторить тренды |
| 51-75 | High | Снизить использование, готовить замену |
| 76-100 | Critical | Пауза, заменить срочно |
| Проблема | Возможная причина | Решение |
|---|---|---|
| Низкий CTR | Скучное изображение | Ярче, контрастнее |
| Низкий CTR | Плохой заголовок | Тест заголовков |
| Высокий CPL | Нерелевантный креатив | Ближе к продукту |
| Высокий Frequency | Маленькая аудитория | Расширить таргет |
| Падает CTR | Выгорание | Новые креативы |
При анализе изображения через get_ad_image():
## Визуальный анализ: {Creative Name}
### Сильные стороны
- {strength1}
- {strength2}
### Слабые стороны
- {weakness1}
- {weakness2}
### Рекомендации
- {recommendation1}
- {recommendation2}
Когда использовать:
Метрики фокуса: CTR, CPL
Когда использовать:
Метрики фокуса: CTR, Carousel card clicks
Когда использовать:
Метрики фокуса:
→ Таблица по Risk Score, топ с Risk < 30
→ Risk Score breakdown + визуальный анализ
→ Fatigue analysis + креативы с Risk > 60
→ План теста, что тестировать
→ Анализ, победитель, следующие шаги
→ Группировка по creative_tag, агрегированные метрики
→ Сравнение двух тегов по CPL, CTR, Risk Score
→ Все ads с тегом kitchen, их метрики и итог
→ Обновить config/creatives.md с новым тегом