smithery/neversight

creative-analyzer

Эксперт по анализу креативов Facebook Ads. Используй для оценки эффективности креативов, Risk Score, A/B тестирования и рекомендаций по улучшению.

Installation

$ npx skills add smithery/neversight --skill creative-analyzer

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/neversight · top by installs.

npx skills add smithery/neversight

Browse all from smithery/neversight

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 16,518 B
  • docs SUMMARY.md 272 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

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-25 Low 🟢 Приоритет для масштабирования
26-50 Medium 🟡 Использовать с мониторингом
51-75 High 🔴 Требует оптимизации
76-100 Critical Рекомендуется пауза

Группировка по Creative Tags

Зачем это нужно

Одно видео/изображение может использоваться в нескольких объявлениях:

  • Разные аудитории (возраст, гео, lookalike)
  • Разные adsets
  • Разные кампании

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

Naming Convention

Объявления именуются по формату: {creativetag}{описание}

kitchen_30-45_msk
kitchen_lookalike
kitchen_retarget_7d
bathroom_cold_audience
  • Первая часть до = creativetag = идентификатор видео/изображения
  • Остальное = любая информация (аудитория, гео, заметки)

Подробности: .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)?

Метрики креативов

Основные

Метрика Формула Хорошо Плохо
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%

Получение данных

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-25 Low Масштабировать, использовать в новых adsets
26-50 Medium Продолжать использовать, мониторить тренды
51-75 High Снизить использование, готовить замену
76-100 Critical Пауза, заменить срочно

По типу проблемы

Проблема Возможная причина Решение
Низкий CTR Скучное изображение Ярче, контрастнее
Низкий CTR Плохой заголовок Тест заголовков
Высокий CPL Нерелевантный креатив Ближе к продукту
Высокий Frequency Маленькая аудитория Расширить таргет
Падает CTR Выгорание Новые креативы

Чек-лист хорошего креатива

  • Привлекает внимание в первые 1-2 секунды
  • Ясное value proposition
  • Понятный CTA
  • Соответствует аудитории
  • Высокое качество изображения/видео
  • Текст < 20% на изображении
  • Мобильно-оптимизирован

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

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

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

  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 с новым тегом