🔍 Аудит
#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 (быстрее, рекомендуется)
- Получить бесплатный ключ: Google Cloud Console (~5 мин).
- Положить в
.env:PAGESPEED_API_KEY=your-key. - Перезапустить:
systemctl restart seo-master.
Лимит: 25 000 запросов в день. Один аудит = 1 запрос. Хватит на ~1000 страниц в день для одного сайта.
Вариант 2 — Local Lighthouse (без ключа)
- Установить Node.js на сервер (если нет):
apt install nodejs npm. - Установить lighthouse:
npm install -g lighthouse(~10 секунд, ~200 пакетов). - Нужен Chrome / Chromium. Если установлен Playwright (для SPA-fallback в crawler) — бинарь подхватится автоматически из
~/.cache/ms-playwright/chromium-*/. - Опционально: задать
CHROME_PATH=/path/to/chromeв .env, если нужен конкретный бинарь.
Скорость: ~10-15 секунд на страницу (vs ~3 сек у PageSpeed API). Для еженедельной проверки топ-10 URL — приемлемо.
Как сервис выбирает источник
- Если
PAGESPEED_API_KEYзадан — используем API. - Если ключа нет, но lighthouse + Chrome доступны — local fallback.
- Если ничего нет — R032 не запускается, в карточке URL показывается ⚠ баннер «CWV недоступны» с инструкцией.
- Бонус: если 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, ...}