agentsclimarketplace

Seo core web vitals

Skill lionkiii/claude-seo-skills/skills/seo-core-web-vitals

Dedicated Core Web Vitals deep-dive: pull field data (CrUX / PageSpeed Insights), fall back to Lighthouse lab data, score LCP, INP, and CLS against Google's thresholds at the 75th percentile, and run per-metric diagnosis playbooks with concrete fixes. Use when user says "core web vitals", "CWV", "LCP", "INP", "CLS", "page speed metrics", or "field data".From its SKILL.md

Install
npx -y skills add lionkiii/claude-seo-skills --skill seo-core-web-vitals

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

4 things to look at

  • reads credentialsReads from 1 credential source: `$CRUX_API_KEY`.
  • 20 stars20 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 3 commands, including `curl -s -X POST "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=$CRUX_API_KEY" -H 'Content-Type: application/json' -d '{"url": "<url>", "formFactor": "PHONE", "metrics": ["largest_co` and 2 more.
  • fetches URLsInstructs the agent to fetch 3 URLs, including https://chromeuxreport.googleapis.com/v1/records:queryRecord and 2 more.

SKILL.md

7.7 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

Core Web Vitals Deep-Dive

<!-- Updated: 2026-06-10 -->

Core Web Vitals (CWV) measure real-world loading performance, responsiveness, and visual stability. Google's position, per https://developers.google.com/search/docs/appearance/core-web-vitals: CWV are used by Google's core ranking systems and good CWV is recommended for success with Search — but good scores alone do not guarantee top rankings; there is more to page experience than CWV, and chasing a perfect score purely for SEO is not the best use of time.

INP replaced FID on March 12, 2024. FID is gone from all Chrome tooling. Never reference FID as a current metric.

Thresholds

Each metric is evaluated at the 75th percentile of real page loads, segmented by mobile and desktop. A page "passes" CWV when all three metrics are Good at p75.

MetricMeasuresGoodNeeds ImprovementPoor
LCP (Largest Contentful Paint)Loading≤ 2.5s2.5s – 4.0s> 4.0s
INP (Interaction to Next Paint)Responsiveness≤ 200ms200ms – 500ms> 500ms
CLS (Cumulative Layout Shift)Visual stability≤ 0.10.1 – 0.25> 0.25

References: https://web.dev/articles/lcp · https://web.dev/articles/inp · https://web.dev/articles/cls · https://web.dev/articles/vitals

Inputs

InputRequiredNotes
URL or originYesURL-level data preferred; origin-level as fallback
Form factorNoDefault: report both mobile (PHONE) and desktop
CrUX API keyNoDegrade to PSI API if absent

Execution

  1. Field data — CrUX API (preferred, needs an API key):

    curl -s -X POST "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=$CRUX_API_KEY" \
      -H 'Content-Type: application/json' \
      -d '{"url": "<url>", "formFactor": "PHONE", "metrics": ["largest_contentful_paint","interaction_to_next_paint","cumulative_layout_shift"]}'
    

    Docs: https://developer.chrome.com/docs/crux/api

    • If the URL has insufficient traffic (404 response), retry with "origin" instead of "url" and note that results are origin-level.
    • No API key? Degrade gracefully to step 2 — do not fail.
  2. Field data — PageSpeed Insights API (no key needed for light use):

    curl -s "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=<url>&category=performance&strategy=mobile"
    

    CrUX field data is embedded in loadingExperience (URL-level) and originLoadingExperience (origin-level): p75 percentiles and Good/NI/Poor distributions per metric. Docs: https://developers.google.com/speed/docs/insights/v5/get-started

  3. Lab fallback / diagnostics — Lighthouse. If no field data exists (low-traffic page), use the lighthouseResult from step 2 or the seo-lighthouse-audit skill. Label it clearly as lab data: lab LCP/CLS approximate field values; lab has no INP — use TBT (Total Blocking Time) as a rough proxy for interactivity problems, never as a substitute score.

  4. Score each metric against the thresholds table (Good / Needs Improvement / Poor at p75, mobile and desktop separately). Mobile is usually worse — lead with it.

  5. Diagnose failing metrics using the playbooks below, fetching the page HTML (curl -s <url>) to check for concrete causes (missing fetchpriority, unsized images, render-blocking tags, heavy third-party scripts).

Diagnosis Playbooks

LCP — break into the four subparts

SubpartTypical shareFixes
TTFB (server time to first byte)~40%CDN, edge caching, faster origin, Server-Timing header to locate backend cost, avoid redirect chains
Resource load delay (gap before LCP resource starts downloading)should be ~0<link rel="preload"> the LCP image/font, fetchpriority="high" on the LCP <img>, never loading="lazy" on the LCP element, avoid CSS background-image for hero
Resource load time (download duration)variesCompress/resize image, modern formats (WebP/AVIF), CDN, preconnect to the resource origin
Element render delay (downloaded but not painted)should be smallEliminate render-blocking CSS/JS, inline critical CSS, avoid client-side rendering of the hero

Full guide: https://web.dev/articles/optimize-lcp · Lighthouse LCP audit

INP — find the slow interaction

Common causes and fixes:

  • Long tasks on the main thread — break work into <50ms chunks, yield with scheduler.yield() / setTimeout; see Lighthouse TBT audit
  • Heavy event handlers — debounce, move computation to Web Workers, defer non-visual work until after the next paint
  • Large DOM — keep under ~1,500 nodes; big DOMs make style/layout recalc slow on every interaction (dom-size audit)
  • Third-party JS — tag managers, ads, chat widgets competing for the main thread; lazy-load or facade them (third-party-summary)
  • Excessive hydration (SPA frameworks) — partial/progressive hydration, server components

Full guide: https://web.dev/articles/optimize-inp

CLS — find what moved

Common causes and fixes:

  • Unsized images/embeds/iframes — always set width/height or CSS aspect-ratio so the browser reserves space
  • Injected content (ads, banners, late-loading UI) — reserve slots with fixed min-height; never insert above existing content except on user interaction
  • Web fonts (FOIT/FOUT swaps)font-display: swap plus size-adjust/fallback font metric matching; preload critical fonts (font-display audit)
  • Animations using layout properties — animate transform instead of top/left/width/height

Full guide: https://web.dev/articles/optimize-cls

Output

# Core Web Vitals Report: <url>

## Field Data (CrUX, 75th percentile, last 28 days)
| Metric | Mobile p75 | Desktop p75 | Rating (mobile) |
|--------|-----------|-------------|-----------------|
| LCP | X.Xs | X.Xs | ✅ Good / ⚠️ NI / ❌ Poor |
| INP | XXXms | XXXms | ✅/⚠️/❌ |
| CLS | 0.XX | 0.XX | ✅/⚠️/❌ |

CWV Assessment: PASS / FAIL (all three Good at p75 → pass)
Data level: URL / Origin (note if origin-level fallback was used)

## Distribution (per metric)
Good XX% | Needs Improvement XX% | Poor XX%

## Lab Data (Lighthouse — diagnostics only)
LCP X.Xs · TBT XXXms (INP proxy, not a substitute) · CLS 0.XX

## Diagnosis & Fixes (per failing metric)
### LCP (if failing): subpart breakdown + top 3 fixes
### INP (if failing): suspected cause + top 3 fixes
### CLS (if failing): shifting elements + top 3 fixes

## Context
- CWV is used by Google's ranking systems, but good CWV alone does not
  guarantee rankings — see
  https://developers.google.com/search/docs/appearance/core-web-vitals
- For the broader experience checklist (HTTPS, interstitials, mobile),
  see the seo-page-experience skill.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most marketing audience skills give in ~1.9k tokens

Counted across 690 of the 894 authors here whose files we hold, read 2026-08-07

  • Apply Poppins font to headingsin 41 of 690, across 6 files
  • Apply Lora font to body textin 41 of 690, across 6 files
  • Use Arial fallback for headingsin 39 of 690, across 4 files
  • Use Georgia fallback for body textin 39 of 690, across 4 files
  • Maintain text hierarchy and formattingin 39 of 690, across 4 files
  • Use accent colors for non-text shapesin 38 of 690, across 3 files
  • Use RGB values for precise color matchingin 38 of 690, across 3 files
  • Use brand colors for primary text and backgroundsin 36 of 690, across 1 file
  • Read product marketing context file before asking questions, starting, or auditingin 35 of 690, across 23 files
  • Use active voice instead of passive voicein 26 of 690, across 10 files
  • Implement or generate appropriate JSON-LD structured datain 24 of 690, across 17 files
  • Prioritize clarity over clevernessin 22 of 690, across 8 files

Said here and by no other author read

  • evaluate metrics at the 75th percentile
  • report both mobile and desktop data
  • lead with mobile results
  • fall back to origin if URL data is missing
  • use pagespeed insights api if crux key is missing
  • label lighthouse data as lab diagnostics

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.