Google PageSpeed Insights
Install
See the Install guide for the full setup, including Windows PowerShell.
curl -fsSL https://install.skippr.io/install.sh | shClick to copyInstalling Skippr means accepting the Skippr EULA.
Daily Lighthouse lab scores and CrUX field metrics (when Google returns them) via the PageSpeed Insights API v5. Pure HTTP — no browser or Playwright.
How it works
- Resolves a URL sample (
tld_samplevia robots/sitemap, orurl_list). - For each URL × strategy (
mobile,desktop), callsrunPagespeed. - Lands bronze rows with
replace_partitiononrun_date(mutable report semantics). - Resumes in-run via checkpoint on
(canonical_url, strategy)if sync is interrupted.
Discover sampling (automatic)
skippr discover uses one homepage URL, mobile only, and the performance category. Full URL sample and both strategies run on skippr sync.
Configuration
Engine skippr.yml:
pipelines:
pagespeed_daily:
data_source: data_sources.psi
data_sink: data_sinks.athena
data_sources:
psi:
GooglePageSpeed:
site: "https://example.com"
api_key: "${PAGESPEED_API_KEY}"
url_mode: tld_sample
max_urls: 50
strategies: [mobile, desktop]
max_requests_per_run: 120
requests_per_minute: 30Public skippr.yaml (via skippr connect):
source:
kind: google_pagespeed
site: "https://example.com"
api_key: "${PAGESPEED_API_KEY}"
url_mode: tld_sample
max_urls: 50| Field | Default | Description |
|---|---|---|
site | (required) | Site origin to sample (e.g. https://example.com) |
api_key | env | PageSpeed API key; use PAGESPEED_API_KEY |
url_mode | tld_sample | tld_sample or url_list |
url_list | [] | Explicit URLs when url_mode: url_list |
max_urls | 50 | Cap on distinct URLs per run |
strategies | mobile, desktop | Lighthouse form factors |
categories | performance, accessibility, best-practices, seo | Lighthouse categories (repeatable API param) |
locale | en_US | API locale |
max_requests_per_run | 120 | Cap on url × strategy API calls |
requests_per_minute | 30 | Client-side pacing |
respect_robots | true | Use robots/sitemap for tld_sample |
top_audits_per_page | 15 | Max failing audits per page row |
max_concurrent_requests | 2 | Reserved for future parallel calls |
Authentication
Create a PageSpeed Insights API key in Google Cloud and set:
export PAGESPEED_API_KEY="your-key"skippr doctor checks for PAGESPEED_API_KEY when a PageSpeed source is configured.
Namespaces
| Namespace | Description |
|---|---|
google_pagespeed.page_daily | Lab scores, vitals, URL-level CrUX categories |
google_pagespeed.field_origin_daily | Origin-level CrUX when present |
google_pagespeed.audit_daily | Top failing audits |
google_pagespeed.issue | FIELD_LCP_SLOW, LAB_PERFORMANCE_LOW, etc. |
google_pagespeed.site_run_daily | Run summary (counts, errors, median mobile performance) |
Connect
skippr connect source google-pagespeed \
--site https://example.comQuota and cost
Roughly two API calls per URL per day (mobile + desktop). Default max_urls: 50 → about 100 calls per run. Google project quotas apply; HTTP 429 is retried and recorded in site_run_daily.errors_quota.
Offline development
export SKIPPR_GOOGLE_PAGESPEED_FIXTURE_DIR=/path/to/plugins/data_source/google_pagespeed/fixturesFixtures: run_pagespeed_mobile.json, run_pagespeed_desktop.json, run_pagespeed_no_field.json, sample_urls.json.
