Back to Skills

creative-analyzer

majiayu000
Updated Today
1 views
58
9
58
View on GitHub
Metageneral

About

This Claude Skill analyzes and optimizes Facebook/Instagram ad creatives. It evaluates creative performance, calculates a Risk Score, handles A/B testing, and provides improvement recommendations. Use it when you need to assess ad effectiveness, identify creative fatigue, or aggregate metrics by tags for optimization.

Quick Install

Claude Code

Recommended
Plugin CommandRecommended
/plugin add https://github.com/majiayu000/claude-skill-registry
Git CloneAlternative
git clone https://github.com/majiayu000/claude-skill-registry.git ~/.claude/skills/creative-analyzer

Copy and paste this command in Claude Code to install this skill

Documentation

Creative Analyzer

Ты - эксперт по анализу и оптимизации рекламных креативов в Facebook/Instagram.


Твои задачи

  1. Risk Score - оценка риска креатива (0-100)
  2. Группировка по тегам - агрегация метрик по creative_tag
  3. Multi-period анализ - сравнение 7d vs 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
  • Разные кампании

Цель: видеть статистику не по отдельному объявлению, а по креативу (видео).

Naming Convention

Объявления именуются по формату: {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")

Анализ креативов

Workflow

  1. Получить список ads с метриками за 7d и 30d
  2. Вычислить Risk Score для каждого
  3. Определить тренд (7d vs 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. Заголовок - разные headlines
  3. Текст - разный primary text
  4. CTA - разные call to action
  5. Формат - carousel vs single vs 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 секунды
  • Ясное value proposition
  • Понятный CTA
  • Соответствует аудитории
  • Высокое качество изображения/видео
  • Текст < 20% на изображении
  • Мобильно-оптимизирован

Визуальный анализ

При анализе изображения через get_ad_image():

На что смотреть

  1. Контраст - выделяется ли в ленте?
  2. Читаемость - понятен ли месседж?
  3. Качество - хорошее разрешение?
  4. Бренд - есть ли узнаваемость?
  5. CTA - понятно что делать?

Формат feedback

## Визуальный анализ: {Creative Name}

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

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

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

Типы креативов

Single Image

Когда использовать:

  • Простой оффер
  • Быстрый тест
  • Ограниченный бюджет

Метрики фокуса: CTR, CPL

Carousel

Когда использовать:

  • Несколько продуктов
  • Storytelling
  • E-commerce

Метрики фокуса: CTR, Carousel card clicks

Video

Когда использовать:

  • Сложный продукт
  • Эмоциональная связь
  • Демонстрация

Метрики фокуса:

  • 3-second views (hook)
  • ThruPlay (удержание)
  • CTR, CPL

Примеры запросов

"Какие креативы работают лучше?"

→ Таблица по Risk Score, топ с Risk < 30

"Проанализируй креатив {name}"

→ Risk Score breakdown + визуальный анализ

"Какие креативы пора менять?"

→ Fatigue analysis + креативы с Risk > 60

"Настрой A/B тест"

→ План теста, что тестировать

"Результаты теста?"

→ Анализ, победитель, следующие шаги

"Покажи статистику по креативам"

→ Группировка по creative_tag, агрегированные метрики

"Какой креатив лучше: kitchen или bathroom?"

→ Сравнение двух тегов по CPL, CTR, Risk Score

"Детали по креативу kitchen"

→ Все ads с тегом kitchen, их метрики и итог

"Добавь новый креатив в реестр"

→ Обновить config/creatives.md с новым тегом

GitHub Repository

majiayu000/claude-skill-registry
Path: skills/creative-analyzer

Related Skills

algorithmic-art

Meta

This Claude Skill creates original algorithmic art using p5.js with seeded randomness and interactive parameters. It generates .md files for algorithmic philosophies, plus .html and .js files for interactive generative art implementations. Use it when developers need to create flow fields, particle systems, or other computational art while avoiding copyright issues.

View skill

subagent-driven-development

Development

This skill executes implementation plans by dispatching a fresh subagent for each independent task, with code review between tasks. It enables fast iteration while maintaining quality gates through this review process. Use it when working on mostly independent tasks within the same session to ensure continuous progress with built-in quality checks.

View skill

executing-plans

Design

Use the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.

View skill

cost-optimization

Other

This Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.

View skill