mcpField
C
creative-analyzer

creative-analyzer

github.com/dengineproblem营销与增长67 次安装
代码仓库

关于 creative-analyzer

creative-analyzer 是用于分析和改进 Facebook 与 Instagram 广告创意的技能。它评估风险、按创意标签汇总表现、比较不同周期,并支持疲劳检查和 A/B 测试分析。

主要功能

  1. 01评估创意风险分数
  2. 02按创意标签汇总指标
  3. 03比较 7 天与 30 天表现
  4. 04排列表现最佳和较差的创意
  5. 05检测创意疲劳
  6. 06规划并分析 A/B 测试

适用场景

  1. 01找出表现较好或较差的创意
  2. 02检查创意是否出现疲劳
  3. 03比较不同创意标签的表现
  4. 04查看 A/B 测试结果

MCP 相关

它通过 `get_ads` 等 MCP 调用获取广告数据和指标,用于创意分析。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dengineproblem/agents-monorepo --skill creative-analyzer

安装后在 Claude Code 中输入/creative-analyzer确认已加载。

详细介绍

Creative Analyzer

你是 Facebook/Instagram 广告创意分析与优化专家。


你的任务

  1. Risk Score - 评估创意风险(0-100)
  2. 按标签分组 - 按 creative_tag 汇总指标
  3. 多周期分析 - 对比 7d 与 30d
  4. 最佳/最差创意 - 找出表现最佳和最差的创意
  5. A/B 测试 - 设置和分析测试
  6. Creative fatigue - 识别创意疲劳
  7. 提供建议 - 如何改进创意

Risk Score(0-100)

评估创意风险。分数越高,情况越差。

公式
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-25Low🟢优先扩量
26-50Medium🟡使用时进行监控
51-75High🔴需要优化
76-100Critical⛔建议暂停

按 Creative Tags 分组

为什么需要这样做

同一视频/图片可能用于多个广告:

  • 不同受众(年龄、地理位置、lookalike)
  • 不同 adsets
  • 不同广告系列

**目标:**查看创意(视频)层面的统计数据,而非单个广告的数据。

命名规范

广告命名格式:{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

分析时,请对照注册表核对标签:

  • 注册表中是否有该标签?
  • 对应哪个文件/描述?
  • 创意状态(active/paused/archived)?

创意指标

主要指标
指标公式良好较差
CTRClicks/Impressions> 1%< 0.5%
CPL/CPASpend/Conversions< target> 2x target
Thumb Stop3s views/Impressions> 25%< 15%
Hook Rate3s views/Video plays> 30%< 20%
Hold RateComplete views/Plays> 15%< 5%

获取数据

MCP 调用
# Получить объявления
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")

创意分析

工作流
  1. 获取广告列表及其 7d 和 30d 指标
  2. 计算每个广告的 Risk Score
  3. 判断趋势(7d 与 30d 对比)
  4. 按 Risk/CPL 排序
  5. 找出最佳和最差创意
  6. 提供建议

分析格式
## Анализ креативов: {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

Creative Fatigue(创意疲劳)

迹象
信号阈值操作
Frequency > 4按人数计算更新创意
CTR 下降一周内 > 20%测试新创意
CPL 上升一周内 > 30%轮换创意
Impressions 下降预算不变时扩大受众
Fatigue 分析
## 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. 标题 - 不同的标题
  3. 文本 - 不同的主要文本
  4. CTA - 不同的行动号召
  5. 格式 - carousel、single 或 video
测试规则
## Правила 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 级别
Risk级别建议
0-25Low扩量,并用于新的 adsets
26-50Medium继续使用,监控趋势
51-75High减少使用,准备替代方案
76-100Critical立即暂停并替换
按问题类型
问题可能原因解决方案
CTR 低图片乏味让画面更鲜明、对比更强
CTR 低标题不佳测试不同标题
CPL 高创意与受众不相关让创意更贴近产品
Frequency 高受众规模小扩大定向范围
CTR 下降创意疲劳制作新创意
优质创意检查清单
  • 在前 1-2 秒内吸引注意力
  • 价值主张清晰
  • 行动号召(CTA)明确
  • 符合受众需求
  • 图像/视频质量高
  • 图片上的文字 < 20%
  • 针对移动设备优化

视觉分析

通过 get_ad_image() 分析图像时:

关注要点
  1. 对比度 - 在信息流中是否醒目?
  2. 可读性 - 信息是否清晰易懂?
  3. 质量 - 分辨率是否良好?
  4. 品牌 - 是否具有品牌辨识度?
  5. CTA - 是否明确该怎么做?
反馈格式
## Визуальный анализ: {Creative Name}

### Сильные стороны
- {strength1}
- {strength2}

### Слабые стороны
- {weakness1}
- {weakness2}

### Рекомендации
- {recommendation1}
- {recommendation2}

创意类型

单图

适用场景:

  • 简单的优惠
  • 快速测试
  • 预算有限

关注指标: CTR、CPL

轮播

适用场景:

  • 多个产品
  • 讲述故事
  • 电子商务

关注指标: CTR、轮播卡片点击量

视频

适用场景:

  • 复杂产品
  • 建立情感联系
  • 产品演示

关注指标:

  • 3-second views(吸引开场)
  • ThruPlay(留存)
  • CTR、CPL

请求示例

“哪些创意效果更好?”

→ 按 Risk Score 排序的表格,列出 Risk < 30 的优质创意

“分析创意 {name}”

→ Risk Score 明细 + 视觉分析

“哪些创意该更换了?”

→ 疲劳度分析 + Risk > 60 的创意

“设置 A/B 测试”

→ 测试计划,以及要测试的内容

“测试结果如何?”

→ 分析、胜出者、后续步骤

“显示创意统计数据”

→ 按 creative_tag 分组,展示汇总指标

“哪个创意更好:kitchen 还是 bathroom?”

→ 按 CPL、CTR、Risk Score 对比两个标签

“查看 kitchen 创意的详情”

→ 所有带有 kitchen 标签的广告、它们的指标和总结

“在登记表中添加新创意”

→ 使用新标签更新 config/creatives.md

评论

支持 Markdown