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 независимых метрик. Для КАЖДОЙ метрики:
- Оцените факторы/блоки/триггеры/боли по таблицам критериев
- Рассчитайте итоговый score по формуле
- Для КАЖДОГО фактора запишите 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-10 | 3+ триггера одновременно |
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 — Оценка факторов:
| Фактор | Оценка | Обоснование |
|---|---|---|
| M | 5 | Локальный бизнес, боль известна, но не акцентирована |
| V | 4 | "тепло и комфорт" — эмоция без конкретики |
| I | 2 | Нет urgency, нет бонусов |
| F | 6 | Форма 2 поля (хорошо), но 15+ пунктов навигации |
| A | 6 | Нет гарантии, нет отзывов рядом с 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= сдвиг чтобы получить 054= диапазон (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-4 | 1-2 сигнала доверия, но не рядом с CTA |
| 5-6 | Сигналы есть, но слабые или размытые |
| 7-8 | Сомнения присутствуют: нет гарантии, нет отзывов |
| 9-10 | Максимальная тревога: нет доверия вообще |
Отвлечение (Ингибитор)
| Оценка | Критерий |
|---|---|
| 1-2 | Фокус на одной цели. Нет лишних ссылок |
| 3-4 | 1-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-2 | 3-4 | 5-6 | 7-8 | 9-10 |
|---|---|---|---|---|---|---|
| H1 | 20% | Нечитаем, >15 слов | читаемо, но длинно | <10 слов, выгода | короткий, <8 слов | <6 слов, точное УТП |
| Subheadline | 15% | Отсутствует | длинный, без структуры | понятен, но длинный | короткий, конкретный | 1-2 предложения, ценность |
| CTA кнопка | 20% | невидима, мелкая | видна, цвет сливается | контраст, текст generic | текст с выгодой | текст=выгода, first person |
| Структура H2-H3 | 15% | нет заголовков | 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 badges | 0.3 | Логотипы поставщиков | Логотип Rehau в футере |
Пример расчёта
| Тип | Пример | Вес | Балл |
|---|---|---|---|
| Supplier badges | Rehau, Roto, Axor (3 шт) | 0.3 × 3 | 0.9 |
| Статистика компании | "15 лет на рынке" | 1.0 | 1.0 |
| Контакты | адрес, телефон, email | 0.5 × 3 | 1.5 |
| ИТОГО | 3.4 |
В JSON запишите:
triggers[]— массив найденных триггеров с type, count, weight, scoremissing[]— массив отсутствующих типов триггеров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), evidencefindings— общие находки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.anxietylift.relevance,lift.clarity,lift.urgency,lift.value,lift.anxiety,lift.distractionss.h1,ss.subheadline,ss.cta,ss.structure,ss.visuals,ss.whitespacetrust,resonance,mobile
Метрики скилла
| Метрика | Описание | Диапазон |
|---|---|---|
| CRO Score | Итоговая оценка (MECLABS) | 0-100% |
| LIFT | Конверсионный потенциал (LIFT Framework) | 0-100% |
| SS | Scannability Score (% при 5-сек просмотре) | 0-100% |
| TF | Trust Factor (взвешенная сумма триггеров) | 0-N |
| RR | Resonance Rate (% болей ICP закрыто) | 0-100% |
Генерация отчётов
Шаг 5a: Проверка Python
-
Проверь доступность 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 недоступен
- На Windows сработает
-
Если Python доступен → агент ОБЯЗАН использовать скрипты для генерации отчётов
-
Если 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 генерирует:
- Markdown-отчёт напрямую (формат как в
examples/example-landing-cro.md) - HTML-отчёт напрямую (формат как в
examples/example-landing-cro.html) - Оба файла сохраняются в текущую директорию
Формат вывода 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%"}
]
Ключевые принципы
-
Влияние на выручку: Всегда связывайте рекомендации с revenue impact. "Изменение CTA на контрастный цвет увеличивает клики на 15-30%, что при 1000 пос/мес = +30-60 лидов".
-
Приоритизация: Быстрые победы первыми. Усилие/Эффект.
-
Конкретность: "Улучшите заголовок" бесполезно. "Измените с 'Производство окон' на 'Установите тёплые окна за 5 дней — гарантия 10 лет'".
-
Научная база: Все рекомендации основаны на 5 моделях: MECLABS, LIFT, Scannability Score, Trust Factor, Resonance Rate.
-
Gap-анализ: Проверяйте соответствие болей ICP → контент страницы.
-
Математика: CRO Score и LIFT Score рассчитываются СТРОГО по формулам. НЕ оценивайте "на глаз".
Источники
- MECLABS Heuristic — meclabs.com
- LIFT Model — conversion.com, pageblock.io