gsc-lighthouse — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited gsc-lighthouse (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Pulls Google Search Console (sitemap status, per-URL index coverage, 28-day search analytics) and runs Lighthouse via the PageSpeed Insights API on the top 10 pages by clicks. Produces a single report a non-technical person can read.
The point: most "SEO audit" tools throw a hundred warnings at you. This one tells you what's actually broken, calibrates against false positives, and groups fixes by theme so you can ship a single PR instead of a hundred.
sc-domain:example.com, Domain property (covers all subdomains and protocols)https://example.com/, URL-prefix property (one specific protocol + host).env or shell env)yes → Lighthouse step runs.no / skip → Lighthouse step is skipped, GSC report still ships. (See README.md "Setup: PSI API key" for the 3-command setup, ~30 seconds.)That's it. No other config needed.
cd skills/gsc-lighthouse
python audit.py --site "sc-domain:example.com"Add --no-lighthouse to skip the PSI step. Add --top N to audit a different number of pages (default 10).
The script writes a JSON dump to ./out/audit-<date>.json and prints the structured report to stdout.
Read audit.py's stdout straight back to the user. Don't reformat unless they ask; the script's output is already structured for direct read.
If the user wants a TL;DR, summarize in this shape:
## GSC + Lighthouse: {today}
Sitemap: {N URLs, errors/warnings}
Indexing: {indexed} / {total}
Search (28d): {clicks}, {±%} vs prior 28d
Lighthouse: median perf {score}, median LCP {seconds}
Top 3 fixes (impact-ordered):
1. {theme}, {N pages affected}, est. {savings}
2. ...
3. ...
Bottom line: {one sentence}Apply these mental filters before flagging anything as a "problem":
Real problems worth flagging:
When you write the report (Step 3), follow these rules:
Anonymous PageSpeed Insights API hits get rate-limited fast (a single IP shares a small daily quota). With a free API key, the limit is 25,000/day, far more than you'll ever need.
# 1. Enable the API on a GCP project (any project, even a fresh one)
gcloud services enable pagespeedonline.googleapis.com --project=YOUR_GCP_PROJECT
# 2. Create the API key
gcloud beta services api-keys create \
--display-name="PageSpeed Insights" \
--project=YOUR_GCP_PROJECT \
--format='value(response.keyString)'
# 3. (Recommended) Restrict the key to PSI-only via the GCP Console:
# https://console.cloud.google.com/apis/credentials → click the key → API restrictions
# → "Restrict key" → select "PageSpeed Insights API" only.
# 4. Add to .env in the repo root or wherever you run the script
echo "PAGESPEED_API_KEY=<paste-keyString>" >> .envGoogle Search Console doesn't accept service-account emails on Domain properties (known limitation). Use ADC bound to your verified Google Account:
gcloud auth application-default login --scopes=\
https://www.googleapis.com/auth/webmasters.readonly,\
https://www.googleapis.com/auth/webmasters,\
openid,\
https://www.googleapis.com/auth/userinfo.emailSign in with the Google Account that owns the GSC property. Credentials are saved to ~/.config/gcloud/application_default_credentials.json and any Python script using google.auth.default() picks them up automatically.
If a 401 surfaces during the run, the script will print a clear "re-auth needed" hint with the exact command above.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.