🔍 Аудит #lighthouse #cwv #core web vitals #pagespeed #r032 #local

Local Lighthouse: CWV без Google API-ключа

Замер Core Web Vitals (R032) через локальный lighthouse-CLI вместо PageSpeed API. Появилось 2026-05-02.

Зачем

Правило R032 (Core Web Vitals — LCP/CLS/INP) раньше работало только при наличии PAGESPEED_API_KEY в .env. Без ключа правило молча скипалось, и пользователи теряли важную часть аудита.

Теперь у сервиса есть второй источник данных — локальный lighthouse-CLI. Он замеряет те же метрики, просто чуть медленнее и с нагрузкой на CPU сервера.

Как настроить

Вариант 1 — PageSpeed API (быстрее, рекомендуется)

  1. Получить бесплатный ключ: Google Cloud Console (~5 мин).
  2. Положить в .env: PAGESPEED_API_KEY=your-key.
  3. Перезапустить: systemctl restart seo-master.

Лимит: 25 000 запросов в день. Один аудит = 1 запрос. Хватит на ~1000 страниц в день для одного сайта.

Вариант 2 — Local Lighthouse (без ключа)

  1. Установить Node.js на сервер (если нет): apt install nodejs npm.
  2. Установить lighthouse: npm install -g lighthouse (~10 секунд, ~200 пакетов).
  3. Нужен Chrome / Chromium. Если установлен Playwright (для SPA-fallback в crawler) — бинарь подхватится автоматически из ~/.cache/ms-playwright/chromium-*/.
  4. Опционально: задать CHROME_PATH=/path/to/chrome в .env, если нужен конкретный бинарь.

Скорость: ~10-15 секунд на страницу (vs ~3 сек у PageSpeed API). Для еженедельной проверки топ-10 URL — приемлемо.

Как сервис выбирает источник

  1. Если PAGESPEED_API_KEY задан — используем API.
  2. Если ключа нет, но lighthouse + Chrome доступны — local fallback.
  3. Если ничего нет — R032 не запускается, в карточке URL показывается ⚠ баннер «CWV недоступны» с инструкцией.
  4. Бонус: если PageSpeed API упал (rate limit, 5xx) — автоматически fallback на local.

Как проверить что работает

На карточке URL (/ui/urls/{id}) после прогона аудита:

  • Если CWV доступны через API — никакого баннера.
  • Если через local lighthouse — синий info-баннер «Core Web Vitals замеряются локально через lighthouse-CLI».
  • Если недоступно — амбер-баннер с инструкциями по настройке.

CLI-команды

# Запустить CWV на топ-10 URL по трафику
python -m app.cli audit --site=N --discover  # автоматически в site-pass

# Прямой вызов через Python:
from app.audit.cwv import check_cwv_for_url
res = check_cwv_for_url(url_id=42)
print(res['metrics'])  # {'lcp_ms': 2488, 'cls': 0.199, ...}
🔎 ESC