Communitygithub.com

Valdiss-Valdiss/ai-marketing-ru-landing

Используется, когда пользователь запрашивает CRO-анализ посадочной страницы.

ai-marketing-ru-landing 是什么?

ai-marketing-ru-landing is a Claude Code agent skill that используется, когда пользователь запрашивает CRO-анализ посадочной страницы.

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Valdiss-Valdiss/ai-marketing-ru-landing/tree/main/skills/market-ru-landing

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

CRO-анализ посадочной страницы (научный подход)

Назначение навыка

Выполнение комплексного CRO-анализа (оптимизация коэффициента конверсии) любой посадочной страницы на основе 5 метрик: CRO Score (MECLABS), LIFT Score, Scannability Score, Trust Factor, Resonance Rate.

Данный навык производит поэлементный разбор страницы с приоритизированными, практически применимыми исправлениями, основанными на психологии поведения пользователя.

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

  • Пользователь предоставляет URL лендинга и просит CRO-анализ
  • Пользователь запрашивает оптимизацию конверсии
  • Пользователь хочет улучшить регистрацию, сбор лидов или продажи
  • Запускается командой /market-ru-landing <url>

Как выполнить

Шаг 0: Определение ICP

ICP определяется автоматически:

  • Если пользователь указал ICP в команде → используется предоставленный
  • Если ICP не указан → используется "generic problem-aware audience"

Примеры ICP: "B2B SaaS, CTO, growth stage", "Малый бизнес, хочет снизить расходы", "E-commerce владельцы магазинов"

Почему это важно: Страница должна соответствовать уровню осознанности аудитории — если пользователь знает о проблеме, но видит оффер для "полностью осведомлённых" — возникает разрыв в коммуникации.

Шаг 1: Получить контент страницы

Используйте WebFetch или другой доступный метод для получения HTML-контента страницы.

Шаг 2: Анализ по 5 метрикам

Анализ состоит из 5 независимых метрик. Для КАЖДОЙ метрики:

  1. Оцените факторы/блоки/триггеры/боли по таблицам критериев
  2. Рассчитайте итоговый score по формуле
  3. Для КАЖДОГО фактора запишите findings (что найдено на странице) и fixes (рекомендации) в JSON

2.1. CRO Score (MECLABS)

ВАЖНО: CRO Score вычисляется СТРОГО по формуле. НЕ оценивайте его "на глаз". Следуйте алгоритму ниже шаг за шагом.

Алгоритм расчёта (ОБЯЗАТЕЛЬНО)

Шаг 1: Оцените каждый фактор от 1 до 10 по таблицам критериев ниже.

Шаг 2: Рассчитайте каждый компонент ОТДЕЛЬНО:

  • M_component = M × 4 = [значение]
  • V_component = V × 3 = [значение]
  • I_component = I × 2 = [значение]
  • F_component = F × 2 = [значение]
  • A_component = A × 2 = [значение]

Шаг 3: Сложите все компоненты:

  • CRO = M_component + V_component + I_component + F_component + A_component

Шаг 4: ПЕРЕД записью в JSON — проверьте:

  • cro_score ДОЛЖЕН РАВНЯТЬСЯ сумме из Шага 3
  • Если не совпадает — пересчитайте

Формула:

C = (M × 4) + (V × 3) + (I × 2) + (F × 2) + (A × 2)
Таблицы критериев
M (Motivation) — Мотивация (вес ×4)
ОценкаКритерии
1-3Пользователь не понимает свою проблему, ищет информацию
4-6Пользователь знает проблему, ищет решение
7-10Пользователь готов к покупке, сравнивает варианты
V (Value Proposition) — Ценностное предложение (вес ×3)
ОценкаКритерии
1-3Неясное, размытое, generic
4-6Понятно что делают, но не почему именно эта компания
7-10Чёткое УТП, отличие от конкурентов, конкретные выгоды
I (Incentive) — Стимулы (вес ×2)
ОценкаКритерии
1-3Нет ограничений, нет urgency, нет бонусов
4-6Есть 1-2 триггера (скидка ИЛИ urgency ИЛИ бонус)
7-103+ триггера одновременно
F (Friction) — Трение (вес ×2)
ОценкаКритерии
1-3Форма 1-2 поля, простой процесс, понятный CTA
4-6Форма 3-5 полей, есть дополнительные шаги
7-10Форма 6+ полей, сложный процесс, непонятный CTA
A (Anxiety) — Тревога (вес ×2)
ОценкаКритерии
1-3Гарантия рядом с CTA, отзывы видны, политика есть
4-6Гарантия где-то на странице, частичные отзывы
7-10Нет гарантии, нет отзывов, нет политики рядом с CTA
Пример расчёта (allokna.ru)

Шаг 1 — Оценка факторов:

ФакторОценкаОбоснование
M5Локальный бизнес, боль известна, но не акцентирована
V4"тепло и комфорт" — эмоция без конкретики
I2Нет urgency, нет бонусов
F6Форма 2 поля (хорошо), но 15+ пунктов навигации
A6Нет гарантии, нет отзывов рядом с CTA

Шаг 2 — Компоненты:

  • M × 4 = 5 × 4 = 20
  • V × 3 = 4 × 3 = 12
  • I × 2 = 2 × 2 = 4
  • F × 2 = 6 × 2 = 12
  • A × 2 = 6 × 2 = 12

Шаг 3 — Итого: CRO = 20 + 12 + 4 + 12 + 12 = 60/100 (Средний)

Шаг 4 — Валидация: 60 = 20+12+4+12+12 ✓

Для каждого фактора запишите в JSON:
  • score (1-10)
  • findings — конкретные факты со страницы
  • fixes — рекомендации с приоритетами HIGH/MEDIUM/LOW

2.2. LIFT Score

Формула:

LIFT_raw = (Релевантность + Ясность + Срочность + Ценность) - (Тревога + Отвлечение)
LIFT = ((LIFT_raw + 16) / 54) × 100

Где:

  • -16 = минимум (все драйверы=1, все ингибиторы=10)
  • +16 = сдвиг чтобы получить 0
  • 54 = диапазон (38 - (-16))

Диапазон: 0-100%

  • <40% = Низкий
  • 40-70% = Средний
  • 70% = Высокий

Таблицы критериев
Релевантность (Драйвер)
ОценкаКритерий
1-2Заголовок не отвечает на потребность ICP. "Кто мы" вместо "Что получишь"
3-4Заголовок отдалённо связан с потребностью, но не точно
5-6Заголовок частично отвечает на главную боль ICP
7-8Заголовок точно отвечает на главную боль ICP
9-10Заголовок полностью резонирует с ICP — "Это для меня!"
Ясность (Драйвер)
ОценкаКритерий
1-2Непонятно что предлагается. Жаргон, абстракции
3-4Понятно в общих чертах, но детали размыты
5-6Большинство поймёт. Нет жаргона
7-8Всё чётко: что, кому, зачем
9-10Мгновенное понимание. Каждое слово работает
Срочность (Драйвер)
ОценкаКритерий
1-2Нет ограничений. "Приходите когда угодно"
3-4Намёк на ограничение, но нечёткий
5-6Есть 1-2 триггера срочности
7-8Чёткие ограничения: время, количество, условия
9-10Сильная срочность: countdown, "последний товар", deadline
Ценность (Базис)
ОценкаКритерий
1-2Цена неясна или указана без выгоды
3-4Выгоды размыты, цена есть
5-6Выгоды понятны, но не уникальны
7-8Чёткое соотношение цена/выгода
9-10Явная ценность: "Дорогие аналоги = X, Наш = X-Y, Выгода = Z"
Тревога (Ингибитор)
ОценкаКритерий
1-2Гарантия, отзывы, политика рядом с CTA. Ноль сомнений
3-41-2 сигнала доверия, но не рядом с CTA
5-6Сигналы есть, но слабые или размытые
7-8Сомнения присутствуют: нет гарантии, нет отзывов
9-10Максимальная тревога: нет доверия вообще
Отвлечение (Ингибитор)
ОценкаКритерий
1-2Фокус на одной цели. Нет лишних ссылок
3-41-2 отвлекающих элемента, но некритично
5-6Много навигации, но цель видна
7-8Много отвлечений: баннеры, ссылки, popup
9-10Хаос: всё отвлекает, цель потеряна
Пример расчёта
LIFT_raw = (4 + 4 + 2 + 4) - (7 + 6) = 14 - 13 = 1
LIFT = ((1 + 16) / 54) × 100 = 31.5%
Для каждого фактора запишите в JSON:
  • score (1-10)
  • findings — конкретные факты со страницы
  • fixes — рекомендации с приоритетами

2.3. SS — Scannability Score

Формула:

SS = Σ(оценка_блока × вес_блока) × 100%

Диапазон: 0-100%

  • <50% = Плохая
  • 50-70% = Средняя
  • 70% = Хорошая

Таблица блоков
БлокВес1-23-45-67-89-10
H120%Нечитаем, >15 словчитаемо, но длинно<10 слов, выгодакороткий, <8 слов<6 слов, точное УТП
Subheadline15%Отсутствуетдлинный, без структурыпонятен, но длинныйкороткий, конкретный1-2 предложения, ценность
CTA кнопка20%невидима, мелкаявидна, цвет сливаетсяконтраст, текст genericтекст с выгодойтекст=выгода, first person
Структура H2-H315%нет заголовков1-2 заголовказаголовки естьчёткая иерархияscannable за 3 сек
Визуал15%стоковые фотофото релевантны, стокреальные фотофото + текстфото клиентов/результатов
Пробелы/воздух15%текст сливаетсяпробелы неравномернодостаточно воздухачистый дизайнотличная читаемость
Пример расчёта
SS = (4×0.2 + 4×0.15 + 4×0.2 + 3×0.15 + 3×0.15 + 4×0.15) × 100
SS = (0.8 + 0.6 + 0.8 + 0.45 + 0.45 + 0.6) × 100 = 37%
Для каждого блока запишите в JSON:
  • score (1-10)
  • findings — конкретные факты со страницы
  • fixes — рекомендации с приоритетами

2.4. TF — Trust Factor

Формула:

TF = Σ (присутствующий_тип × вес)

Диапазон: 0-N

  • 0-1.5 = ❌ Критично
  • 2-4.5 = ⚠️ Недостаточно
  • 5-7.5 = ✅ Есть база
  • 8-10+ = ✅✅ Сильное
Таблица триггеров
Тип триггераВесОписаниеПример
Отзывы клиентов2.0Именованные, с фото, должностью"Анна К., владелец квартиры" + фото
Результаты клиентов2.0Конкретные цифры (деньги, %, время)"Сократил расходы на отопление на 40%"
Видео-отзывы2.0Запись с реальным клиентомСсылка на YouTube с клиентом
Кейсы до/после1.5Фото + описание результатаФото окна ДО/ПОСЛЕ
Логотипы клиентов1.5Узнаваемые компании"Работаем с Газпром, Сбербанк"
Рейтинги第三方1.5Яндекс.Карты, Google, 2ГИС"4.9 на Яндекс.Картах (247 отзывов)"
Гарантия1.5Явная, рядом с CTA"Гарантия 10 лет на конструкции"
Сертификаты1.0Отраслевые, не supplier"ISO 9001", "Лицензия"
Статистика компании1.0Цифры опыта"15 лет на рынке", "5000+ окон"
Политика возврата1.0Чёткая, visible"Вернём деньги за 30 дней"
Соцсети0.5Активные профили с подписчиками"10K подписчиков в VK"
Контакты0.5Адрес, телефон, emailг. Ярославль, +7(4852)66-27-21
Supplier badges0.3Логотипы поставщиковЛоготип Rehau в футере
Пример расчёта
ТипПримерВесБалл
Supplier badgesRehau, Roto, Axor (3 шт)0.3 × 30.9
Статистика компании"15 лет на рынке"1.01.0
Контактыадрес, телефон, email0.5 × 31.5
ИТОГО3.4
В JSON запишите:
  • triggers[] — массив найденных триггеров с type, count, weight, score
  • missing[] — массив отсутствующих типов триггеров
  • findings — общие находки
  • fixes — рекомендации

2.5. RR — Resonance Rate

Формула:

RR = (Σ оценка_боли / количество_болей) × 100%

Диапазон: 0-100%

  • <30% = Слабое
  • 30-60% = Среднее
  • 60% = Сильное

Алгоритм определения болей ICP

Шаг 1: Определить тип бизнеса (Окна/двери, SaaS, E-commerce, Услуги, Локальный бизнес)

Шаг 2: Взять универсальные боли + типовые по бизнесу

Универсальные боли (для всех):

  • "Дорого"
  • "Не доверяю"
  • "Сделают/пришлют не так"
  • "Не разберусь"
  • "Не уложусь в срок"

Типовые боли по бизнесу:

Тип бизнесаБоли
Окна/двери"Холодно зимой", "Шумно", "Сделают криво/косо", "Долго ждать", "Сложно выбрать"
SaaS"Сложно внедрить", "Не интегрируется", "Дорого для команды", "Не удержу пользователей"
E-commerce"Не придёт вовремя", "Товар не тот", "Не вернут деньги", "Сломалось через неделю"
Таблица оценки каждой боли
ОценкаКритерий
0%Боль НЕ упомянута на странице
25%Боль упомянута, но решения НЕТ
50%Есть решение, но БЕЗ доказательств
75%Есть решение + 1 доказательство
100%Есть решение + сильное доказательство (цифры, видео-отзыв)
Пример расчёта
БольОценка
Дорого50%
Холодно50%
Шумно50%
Криво50%
Долго0%
Сложно25%
ИТОГО(50+50+50+50+0+25)/6 = 37.5%
В JSON запишите:
  • pains[] — массив болей с pain, score (0-100), evidence
  • findings — общие находки
  • fixes — рекомендации

Шаг 3: Мобильный аудит

  • CTA в thumb-zone (нижняя половина)
  • Текст ≥16px
  • Формы удобны для tap
  • Нет горизонтального скролла
  • Sticky CTA при скролле

Шаг 4: Генерация A/B тестов

Для КАЖДОГО HIGH-priority fix из метрик 2.1-2.5 сгенерируйте A/B тест:

Шаблон:

{
  "hypothesis": "Если мы [конкретное изменение], тогда [метрика] [улучшится], потому что [причина]",
  "metric": "что измерять (CTR, conversion rate, bounce rate)",
  "variant_a": "текущий текст/элемент со страницы (точная цитата)",
  "variant_b": "рекомендуемое изменение (полный текст)"
}

Требования:

  • Variant A — ТОЧНАЯ цитата с анализируемой страницы
  • Variant B — конкретный рекомендуемый текст
  • Метрика — конкретная метрика для измерения
  • Гипотеза — привязана к конкретному finding

Пример:

{
  "hypothesis": "Если изменим headline с функционального на выгодный, тогда CTR hero-секции увеличится, потому что пользователь мгновенно увидит выгоду",
  "metric": "CTR hero-секции",
  "variant_a": "Производство и установка ПЛАСТИКОВЫХ и АЛЮМИНИЕВЫХ ОКОН",
  "variant_b": "Холодно зимой? Установите тёплые окна за 5 дней — гарантия 10 лет"
}

Шаг 5: Приоритизированные действия

Соберите ВСЕ fixes из ВСЕХ метрик (2.1-2.5 + мобильный аудит) в единый массив all_fixes[]:

"all_fixes": [
  {"priority": "HIGH", "text": "...", "impact": "...", "source": "cro.motivation"},
  {"priority": "HIGH", "text": "...", "impact": "...", "source": "lift.urgency"},
  {"priority": "MEDIUM", "text": "...", "impact": "...", "source": "ss.h1"},
  ...
]

Поле source указывает, из какой метрики пришла рекомендация:

  • cro.motivation, cro.value_proposition, cro.incentive, cro.friction, cro.anxiety
  • lift.relevance, lift.clarity, lift.urgency, lift.value, lift.anxiety, lift.distraction
  • ss.h1, ss.subheadline, ss.cta, ss.structure, ss.visuals, ss.whitespace
  • trust, resonance, mobile

Метрики скилла

МетрикаОписаниеДиапазон
CRO ScoreИтоговая оценка (MECLABS)0-100%
LIFTКонверсионный потенциал (LIFT Framework)0-100%
SSScannability Score (% при 5-сек просмотре)0-100%
TFTrust Factor (взвешенная сумма триггеров)0-N
RRResonance Rate (% болей ICP закрыто)0-100%

Генерация отчётов

Шаг 5a: Проверка Python

  1. Проверь доступность Python (универсальная команда для всех ОС):

    py -3 --version 2>&1; if ($?) { $true } else { python3 --version 2>&1; if ($?) { $true } else { python --version 2>&1 } }
    
    • На Windows сработает py -3 или python
    • На Linux/Mac сработает python3 или python
    • Если ни одна команда не сработала → Python недоступен
  2. Если Python доступен → агент ОБЯЗАН использовать скрипты для генерации отчётов

  3. Если Python недоступен → LLM генерирует Markdown и HTML напрямую (fallback)

ВАЖНО: Fallback (LLM) — только для случая когда Python НЕ установлен. Если Python установлен — скрипты ОБЯЗАТЕЛЬНЫ, fallback ЗАПРЕЩЁН.

Шаг 5b: Поиск скриптов генерации отчётов

ВАЖНО: Проверяй пути напрямую через Test-Path (PowerShell) или test -f (bash). НЕ используй Glob или рекурсивный поиск по всему диску.

Выполни проверки последовательно. Первая успешная = используемый путь.

Алгоритм поиска (PowerShell):

$SCRIPTS_DIR = $null

# 1. CWD (ручное копирование, git clone в проекте)
if (Test-Path "scripts/generate_landing_md.py") {
    $SCRIPTS_DIR = "scripts"
    Write-Host "Найдены скрипты в: scripts/"
}
# 2. Local npm (npm install без -g)
elseif (Test-Path "node_modules/market-ru-landing/scripts/generate_landing_md.py") {
    $SCRIPTS_DIR = "node_modules/market-ru-landing/scripts"
    Write-Host "Найдены скрипты в: node_modules/market-ru-landing/scripts/"
}
# 3. Global npm (npm install -g)
else {
    $NPM_ROOT = (npm root -g).Trim()
    if (Test-Path "$NPM_ROOT/market-ru-landing/scripts/generate_landing_md.py") {
        $SCRIPTS_DIR = "$NPM_ROOT/market-ru-landing/scripts"
        Write-Host "Найдены скрипты в: $NPM_ROOT/market-ru-landing/scripts/"
    }
    # 4. Claude Code install.sh
    elseif (Test-Path "$env:USERPROFILE/.claude/skills/market-ru-landing/scripts/generate_landing_md.py") {
        $SCRIPTS_DIR = "$env:USERPROFILE/.claude/skills/market-ru-landing/scripts"
        Write-Host "Найдены скрипты в: ~/.claude/skills/market-ru-landing/scripts/"
    }
}

if (-not $SCRIPTS_DIR) {
    Write-Host "Скрипты не найдены — используется fallback режим (LLM генерирует отчёты напрямую)"
}

Алгоритм поиска (bash — Linux/Mac):

SCRIPTS_DIR=""

# 1. CWD
if [ -f "scripts/generate_landing_md.py" ]; then
    SCRIPTS_DIR="scripts"
# 2. Local npm
elif [ -f "node_modules/market-ru-landing/scripts/generate_landing_md.py" ]; then
    SCRIPTS_DIR="node_modules/market-ru-landing/scripts"
# 3. Global npm
else
    NPM_ROOT=$(npm root -g)
    if [ -f "$NPM_ROOT/market-ru-landing/scripts/generate_landing_md.py" ]; then
        SCRIPTS_DIR="$NPM_ROOT/market-ru-landing/scripts"
    # 4. Claude Code install.sh
    elif [ -f "$HOME/.claude/skills/market-ru-landing/scripts/generate_landing_md.py" ]; then
        SCRIPTS_DIR="$HOME/.claude/skills/market-ru-landing/scripts"
    fi
fi

if [ -z "$SCRIPTS_DIR" ]; then
    echo "Скрипты не найдены — fallback режим"
fi

Если $SCRIPTS_DIR установлен → переходи к Шагу 5c. Если пустой → fallback: LLM генерирует отчёты напрямую (Шаг 5d).

Шаг 5c: Валидация JSON (ОБЯЗАТЕЛЬНО)

Перед запуском скриптов проверь JSON на валидность. LLM может сгенерировать JSON с ошибками (дубликаты ключей, пропущенные скобки).

PowerShell:

try {
    $json = Get-Content <analysis.json> -Raw | ConvertFrom-Json
    Write-Host "JSON валиден"
} catch {
    Write-Host "JSON НЕ валиден: $_"
    Write-Host "Исправь JSON и повтори проверку"
}

bash:

python3 -m json.tool <analysis.json > /dev/null 2>&1 && echo "JSON валиден" || echo "JSON НЕ валиден"

Если JSON НЕ валиден — исправь ошибки и повтори проверку. Только после успешной валидации запускай скрипты генерации.

Шаг 5d: Генерация отчётов (Python найден)

Используй $SCRIPTS_DIR из Шага 5b.

# Windows (PowerShell):
py -3 "$SCRIPTS_DIR/generate_landing_md.py" --json <analysis.json>
py -3 "$SCRIPTS_DIR/generate_landing_html.py" --json <analysis.json>
# Linux/Mac (bash):
python3 "$SCRIPTS_DIR/generate_landing_md.py" --json <analysis.json>
python3 "$SCRIPTS_DIR/generate_landing_html.py" --json <analysis.json>

Отчёты сохраняются в:

  • {cwd}/LANDING-CRO-{domain}-{timestamp}.md — в папку запуска
  • {cwd}/LANDING-CRO-{domain}-{timestamp}.html — в папку запуска

Шаг 5e: Fallback (без Python)

Если Python недоступен, LLM генерирует:

  1. Markdown-отчёт напрямую (формат как в examples/example-landing-cro.md)
  2. HTML-отчёт напрямую (формат как в examples/example-landing-cro.html)
  3. Оба файла сохраняются в текущую директорию

Формат вывода JSON

При использовании Python-скриптов автоматически создаётся файл {cwd}/landing_analysis-{domain}-{timestamp}.json.

Обязательная структура JSON:

{
  "url": "https://example.com",
  "icp": "описание целевой аудитории",
  "business_type": "окна/двери | saas | e-commerce | услуги | локальный",
  "analysis": {
    "metrics": {
      "cro_score": 60,
      "motivation": 5,
      "value_proposition": 4,
      "incentive": 2,
      "friction": 6,
      "anxiety": 6,
      "lift_score": 31.5,
      "lift_relevance": 4,
      "lift_clarity": 4,
      "lift_urgency": 2,
      "lift_value": 4,
      "lift_anxiety": 7,
      "lift_distraction": 6,
      "scannability_score": 37,
      "trust_factor": 4.0,
      "resonance_rate": 37.5
    },

    "cro": {
      "factors": {
        "motivation": {
          "score": 5,
          "findings": ["конкретный факт со страницы"],
          "fixes": [{"priority": "HIGH", "text": "конкретная рекомендация", "impact": "ожидаемый эффект"}]
        },
        "value_proposition": { "score": 4, "findings": [...], "fixes": [...] },
        "incentive": { "score": 2, "findings": [...], "fixes": [...] },
        "friction": { "score": 6, "findings": [...], "fixes": [...] },
        "anxiety": { "score": 6, "findings": [...], "fixes": [...] }
      }
    },

    "lift": {
      "factors": {
        "relevance": { "score": 4, "findings": [...], "fixes": [...] },
        "clarity": { "score": 4, "findings": [...], "fixes": [...] },
        "urgency": { "score": 2, "findings": [...], "fixes": [...] },
        "value": { "score": 4, "findings": [...], "fixes": [...] },
        "anxiety": { "score": 7, "findings": [...], "fixes": [...] },
        "distraction": { "score": 6, "findings": [...], "fixes": [...] }
      }
    },

    "scannability": {
      "blocks": {
        "h1": { "score": 4, "findings": [...], "fixes": [...] },
        "subheadline": { "score": 4, "findings": [...], "fixes": [...] },
        "cta": { "score": 4, "findings": [...], "fixes": [...] },
        "structure": { "score": 3, "findings": [...], "fixes": [...] },
        "visuals": { "score": 3, "findings": [...], "fixes": [...] },
        "whitespace": { "score": 4, "findings": [...], "fixes": [...] }
      }
    },

    "trust": {
      "triggers": [
        { "type": "supplier_badges", "count": 5, "weight": 0.3, "score": 1.5 },
        { "type": "company_stats", "count": 1, "weight": 1.0, "score": 1.0 }
      ],
      "missing": ["client_reviews", "guarantee", "ratings"],
      "findings": ["конкретный факт"],
      "fixes": [{"priority": "HIGH", "text": "...", "impact": "..."}]
    },

    "resonance": {
      "pains": [
        { "pain": "Дорого", "score": 50, "evidence": "Оптовые цены, но без цифр" },
        { "pain": "Холодно зимой", "score": 50, "evidence": "тепло и комфорт, без дБ" },
        { "pain": "Долго ждать", "score": 0, "evidence": "Не упомянуто" }
      ],
      "findings": ["конкретный факт"],
      "fixes": [{"priority": "HIGH", "text": "...", "impact": "..."}]
    },

    "mobile_audit": {
      "cta_accessible": "да/нет/частично",
      "text_readable": "да/нет/частично",
      "recommendation": "конкретная рекомендация",
      "findings": [...],
      "fixes": [...]
    },

    "ab_tests": [
      {
        "hypothesis": "Если мы [изменим], тогда [метрика] [улучшится], потому что [причина]",
        "metric": "CTR hero-секции",
        "variant_a": "текущий текст со страницы",
        "variant_b": "рекомендуемый текст"
      }
    ],

    "all_fixes": [
      {"priority": "HIGH", "text": "...", "impact": "...", "source": "cro.motivation"},
      {"priority": "MEDIUM", "text": "...", "impact": "...", "source": "lift.urgency"}
    ]
  }
}

Требования к findings:

  • Каждый finding = конкретный факт с страницы
  • Формат: "Найдено: [что найдено]. Проблема: [почему это проблема]. Влияние: [как влияет на конверсию]"
  • Пример: "Найдено: заголовок 'Производство окон'. Проблема: функциональный, не выгода. Влияние: пользователь не понимает ценность за 2 секунды"

Требования к fixes:

  • Каждый fix = конкретное действие
  • Формат: "[Что изменить] на [Как изменить]. Ожидаемый эффект: [конкретное улучшение]"
  • Приоритеты: HIGH (быстрая победа), MEDIUM (среднесрочное), LOW (стратегическое)

Количество findings и fixes

Правило: Полнота важнее минимума

  • Если фактор содержит проблемы (score < 7/10):

    • findings: минимум 3 конкретных факта — запишите ВСЕ найденные проблемы
    • fixes: минимум 2 рекомендации — по одной на каждую ключевую проблему
  • Если фактор в порядке (score ≥ 7/10):

    • findings: 1-2 факта с подтверждением что всё работает хорошо
    • fixes: можно оставить пустым ИЛИ указать 1 рекомендацию для дальнейшего улучшения
  • НЕ выдумывайте проблемы которых нет на странице

  • НЕ пропускайте реальные проблемы из-за лени — ищите ВСЕ

Пример для хорошего фактора (Anxiety = 8/10):

"findings": [
  "Найдено: гарантия возврата 30 дней рядом с CTA — снижает тревогу",
  "Найдено: SSL-сертификат и badges безопасности в футере"
],
"fixes": [
  {"priority": "LOW", "text": "Добавить отзыв клиента рядом с формой для ещё большего снижения тревоги", "impact": "+5-10%"}
]

Пример для проблемного фактора (Motivation = 3/10):

"findings": [
  "Найдено: заголовок 'Добро пожаловать' — не сообщает выгоду. Влияние: пользователь не понимает ценность",
  "Найдено: нет упоминания целевой аудитории. Влияние: посетитель не уверен что это для него",
  "Найдено: подзаголовок описывает функции, не результаты. Влияние: нет эмоциональной связи",
  "Найдено: нет статистики или социальных доказательств в hero. Влияние: низкая достоверность"
],
"fixes": [
  {"priority": "HIGH", "text": "Изменить headline на 'Сократите CAC на 40% — CRM для агентств'", "impact": "+15-25%"},
  {"priority": "HIGH", "text": "Добавить подзаголовок с конкретными результатами клиентов", "impact": "+10-20%"},
  {"priority": "MEDIUM", "text": "Добавить блок '5000+ компаний используют' над CTA", "impact": "+10-15%"}
]

Ключевые принципы

  1. Влияние на выручку: Всегда связывайте рекомендации с revenue impact. "Изменение CTA на контрастный цвет увеличивает клики на 15-30%, что при 1000 пос/мес = +30-60 лидов".

  2. Приоритизация: Быстрые победы первыми. Усилие/Эффект.

  3. Конкретность: "Улучшите заголовок" бесполезно. "Измените с 'Производство окон' на 'Установите тёплые окна за 5 дней — гарантия 10 лет'".

  4. Научная база: Все рекомендации основаны на 5 моделях: MECLABS, LIFT, Scannability Score, Trust Factor, Resonance Rate.

  5. Gap-анализ: Проверяйте соответствие болей ICP → контент страницы.

  6. Математика: CRO Score и LIFT Score рассчитываются СТРОГО по формулам. НЕ оценивайте "на глаз".

Источники

  • MECLABS Heuristic — meclabs.com
  • LIFT Model — conversion.com, pageblock.io

相关技能