New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Multi-page Lighthouse audit via the MIT-licensed

SEO unlighthouse

by AgriciDaniel · MIT license · ★ 17,394 on GitHub · updated Sep 11

SEO unlighthouse cover

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.

---
name: seo-unlighthouse
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.
metadata:
  version: "2.3.1"
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

Overview

Run Lighthouse against every URL on a site (up to a configurable cap) and aggregate the results. Useful when:

What you get

  • route_count: number of routes actually audited
  • aggregate_scores: median score per Lighthouse category across all audited
  • routes: the per-route breakdown (also on disk at <output_dir>/ci-result.json)

The SKILL.md below is the copy AgentAlley read and checked. The repo has changed it since; the other files are from commit e77e783.

Manual install (npx, ZIP)
Claude Codenpx skills add AgriciDaniel/claude-seo --skill seo-unlighthouse -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/AgriciDaniel/claude-seo/tar.gz/e77e783e38ee \ | tar -xz -C ~/.claude/skills --strip-components=4 claude-seo-e77e783e38ee/extensions/unlighthouse/skills/seo-unlighthouse
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/470cc820990d26a88a0c/seo-unlighthouse.zip" -OutFile "$env:TEMP\seo-unlighthouse.zip"; Expand-Archive "$env:TEMP\seo-unlighthouse.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md2.4 KB
Read the files here
AgriciDaniel/e77e7831 file
SKILL.md
Show the full text57 lines
seo-unlighthouse/SKILL.md57 lines · 2.4 KB

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 audited
  • aggregate_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.py workflow (Phase C).
1---
2name: seo-unlighthouse
3description: 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.
4metadata:
5 version: "2.3.1"
6compatibility: "Requires Node 18+ and the unlighthouse npm package. Run extensions/unlighthouse/install.sh to pre-warm."
7---
8 
9# seo-unlighthouse
10 
11Run Lighthouse against every URL on a site (up to a configurable cap)
12and aggregate the results. Useful when:
13 
14- PageSpeed Insights' free quota (25k QPD) isn't enough for a large site.
15- You want offline / local CWV measurement (CI integration, restricted environments).
16- You need a quick site-wide regression check after a deploy.
17 
18## Prerequisites
19 
20- Run `extensions/unlighthouse/install.sh` (no API key needed).
21- Node 18+ on `$PATH`.
22 
23## Routing
24 
25| Command | Effect |
26|---|---|
27| `/seo unlighthouse <url>` | Mobile audit, up to 200 routes, JSON+HTML report in a temp dir |
28| `/seo unlighthouse <url> --device desktop` | Desktop form factor |
29| `/seo unlighthouse <url> --max-routes 50 --output-dir ./reports` | Cap + persist |
30 
31All flags forward through `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run unlighthouse_run.py`, which handles
32url_safety pre-flight and subprocess timeout management.
33 
34## Output handling
35 
36The wrapper reads `ci-result.json` from the Unlighthouse output dir, normalizes
37it (the default `jsonSimple` reporter writes a flat JSON array of per-route
38results; a tolerant fallback also accepts the `jsonExpanded` object shape),
39and returns:
40 
41- `route_count`: number of routes actually audited
42- `aggregate_scores`: median score per Lighthouse category across all audited
43 routes (`performance`, `accessibility`, `best-practices`, `seo`)
44- `routes`: the per-route breakdown (also on disk at `<output_dir>/ci-result.json`)
45 
46Route cap and per-page timeout are set via a generated `unlighthouse.config.mjs`
47passed with `--config-file` (the only CLI-documented way to set `scanner.maxRoutes`;
48unlighthouse-ci has no `--max-routes` flag). Use `--page-timeout <seconds>` to
49change the per-page Lighthouse task timeout (default 60s); this is separate
50from the overall `--timeout` subprocess guard (default 600s).
51 
52## Cross-skill delegation
53 
54- For single-URL field data (CrUX), use `seo-google psi` / `seo-google crux`.
55- For LCP subpart decomposition on slow pages, use the
56 `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run lcp_subparts.py` workflow (Phase C).
57 
View all files on GitHub →

Details

Updated
Sep 11, 2026
License
MIT
Stars on the repo
★ 17,394
Checked
Source
AgriciDaniel/claude-seo ↗
Creator
AgriciDaniel · 130 listings
View creator

Made with seo-unlighthouse

SEO unlighthouse — Claude SEO /seo command demo in Claude Code terminal (from the AgriciDaniel/claude-seo README)
SEO unlighthouse — Claude SEO /seo command demo in Claude Code terminal (from the AgriciDaniel/claude-seo README)

by AgriciDaniel

SEO unlighthouse — Claude SEO /seo audit demo: parallel subagents producing a prioritized action plan (from the AgriciDaniel/claude-seo README)
SEO unlighthouse — Claude SEO /seo audit demo: parallel subagents producing a prioritized action plan (from the AgriciDaniel/claude-seo README)

by AgriciDaniel

Similar skills

See all →
SkillThe Lighthouse Agentic Browsing fractionAgentic Browsing ReadinessAgriciDaniel/claude-seo · by AgriciDanielAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).★ 17.4k GitHub starsSkillReferring domains, anchor text distributionBacklink Profile AnalysisAgriciDaniel/claude-seo · by AgriciDanielBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.★ 17.4k GitHub starsSkillConnect a CMS to notfair SEO tools/setup-cmsnowork-studio/notfair-plugin · by nowork-studioConnect a CMS to notfair SEO tools. Guides users through configuring WordPress, Strapi, Contentful, or Ghost — tests the connection, and writes credentials to .env.local. Once set up, seo-analysis automatically cross- references CMS content against Google Search Console data. Use whenever the user says "connect my CMS", "set up WordPress", "configure Strapi", "add Contentful", "connect Ghost", or "CMS setup". Also trigger if the user asks why no CMS data appears in a seo-analysis report.★ 3.9k GitHub starsSkillBacklink profile for any domainBacklink checkRyze-AI-Adgent/open-seo-mcp-skills · by Ryze-AI-AdgentBacklink profile for any domain — referring domains, authority, anchors, new/lost links, and a side-by-side vs a competitor. Use when asked "check my backlinks", "backlink profile of X", "who links to them", or "link gap vs competitor".★ 3.1k GitHub starsSkillOptimize Core Web Vitals for better page experienceCore Web Vitals optimizationaddyosmani/web-quality-skills · by addyosmaniOptimize Core Web Vitals (LCP, INP, CLS) for better page experience using field and lab evidence. Use when asked to "improve Core Web Vitals", "fix LCP", "reduce CLS", "optimize INP", "page experience optimization", or "fix layout shifts".★ 2.8k GitHub starsSkillRun an SEO page observation-action-review loopRun the SEO page looptsingyuai/growth-lab · by tsingyuaiRun an SEO page observation-action-review loop with persistent Memory by coordinating demand research, page creation, adversarial review, image generation, IndexNow submission, and performance review. Use when taking an SEO page from opportunity discovery through publication, measurement, iteration, or continuing a previous SEO loop from Memory.★ 2k GitHub stars

More from AgriciDaniel

SkillThe Lighthouse Agentic Browsing fractionAgentic Browsing ReadinessAgriciDaniel/claude-seo · by AgriciDanielAudit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).★ 17.4k GitHub starsSkillOptimize content for AI Overviews , ChatGPT web searchAI Search / GEO Optimization (May 2026)AgriciDaniel/claude-seo · by AgriciDanielOptimize content for AI Overviews (formerly SGE), ChatGPT web search, Perplexity, and other AI-powered search experiences. Generative Engine Optimization (GEO) analysis including brand mention signals, AI crawler accessibility, llms.txt compliance, passage-level citability scoring, and platform-specific optimization. Use when user says "AI Overviews", "SGE", GEO", "AI search", "LLM optimization", "Perplexity", "AI citations", ChatGPT search", or "AI visibility".★ 17.4k GitHub starsSkillReferring domains, anchor text distributionBacklink Profile AnalysisAgriciDaniel/claude-seo · by AgriciDanielBacklink profile analysis: referring domains, anchor text distribution, toxic link detection, competitor gap analysis. Works with free APIs (Moz, Bing Webmaster, Common Crawl) and DataForSEO extension. Use when user says backlinks, link profile, referring domains, anchor text, toxic links, link gap, link building, disavow, or backlink audit.★ 17.4k GitHub starsSkillYou share your Amazon advertising numbers and goals; you getAmazon Ads AuditAgriciDaniel/claude-ads · by AgriciDanielYou share your Amazon advertising numbers and goals; you get back a plain-language review of what's draining your budget and what to change first.★ 9.5k GitHub starsSkillPaste what you're spending on Apple Search AdsApple Ads AuditAgriciDaniel/claude-ads · by AgriciDanielPaste what you're spending on Apple Search Ads and your recent numbers; get back a plain review of what's wasting money and what to fix first.★ 9.5k GitHub starsSkillPaste the sales and spend numbers each ad platform claimsAttribution AuditAgriciDaniel/claude-ads · by AgriciDanielPaste the sales and spend numbers each ad platform claims, and get back a plain explanation of why they disagree and which figure to trust.★ 9.5k GitHub stars