seo-unlighthouse
GitHub通过 Unlighthouse CLI 对网站所有 URL 进行批量 Lighthouse 审计,聚合结果以生成站点级性能报告。适用于大站超出 PageSpeed 配额、离线测量或部署后回归检查场景。
触发场景
安装
npx skills add AgriciDaniel/claude-seo --skill seo-unlighthouse -g -y
SKILL.md
Frontmatter
{
"name": "seo-unlighthouse",
"metadata": {
"version": "2.3.1"
},
"description": "Multi-page Lighthouse audit via the MIT-licensed Unlighthouse CLI. Free-tier alternative to running PageSpeed against every URL on a site, no API quota burn, runs locally.",
"compatibility": "Requires Node 18+ and the unlighthouse npm package. Run extensions\/unlighthouse\/install.sh to pre-warm."
}
seo-unlighthouse
Run Lighthouse against every URL on a site (up to a configurable cap) and aggregate the results. Useful when:
- PageSpeed Insights' free quota (25k QPD) isn't enough for a large site.
- You want offline / local CWV measurement (CI integration, restricted environments).
- You need a quick site-wide regression check after a deploy.
Prerequisites
- Run
extensions/unlighthouse/install.sh(no API key needed). - Node 18+ on
$PATH.
Routing
| Command | Effect |
|---|---|
/seo unlighthouse <url> |
Mobile audit, up to 200 routes, JSON+HTML report in a temp dir |
/seo unlighthouse <url> --device desktop |
Desktop form factor |
/seo unlighthouse <url> --max-routes 50 --output-dir ./reports |
Cap + persist |
All flags forward through "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run unlighthouse_run.py, which handles
url_safety pre-flight and subprocess timeout management.
Output handling
The wrapper reads ci-result.json from the Unlighthouse output dir, normalizes
it (the default jsonSimple reporter writes a flat JSON array of per-route
results; a tolerant fallback also accepts the jsonExpanded object shape),
and returns:
route_count: number of routes actually auditedaggregate_scores: median score per Lighthouse category across all audited routes (performance,accessibility,best-practices,seo)routes: the per-route breakdown (also on disk at<output_dir>/ci-result.json)
Route cap and per-page timeout are set via a generated unlighthouse.config.mjs
passed with --config-file (the only CLI-documented way to set scanner.maxRoutes;
unlighthouse-ci has no --max-routes flag). Use --page-timeout <seconds> to
change the per-page Lighthouse task timeout (default 60s); this is separate
from the overall --timeout subprocess guard (default 600s).
Cross-skill delegation
- For single-URL field data (CrUX), use
seo-google psi/seo-google crux. - For LCP subpart decomposition on slow pages, use the
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run lcp_subparts.pyworkflow (Phase C).
版本历史
-
55c7914
当前 2026-09-11 13:23
修复了 Unlighthouse 传递 CLI 标志及解析 ci-result.json 数据结构的 Bug,并更新了输出字段的命名规范。
- a1480c7 2026-08-27 21:31


