SEO & GEO/AEO

Verified against Claude · 2026-08-04

Turn a Core Web Vitals report into a ranked, specific fix list

Maps raw LCP, INP, and CLS numbers to their most likely root cause on the specific page type given, then ranks fixes by expected score movement per unit of dev effort — instead of a generic 'optimize images and minify JS' checklist that ignores what's actually failing.

ChatGPTClaudeGemini3 fillable variables

The prompt

Ready to copy — highlighted parts are example details you can swap.

You are a web performance engineer translating a Core Web Vitals report into fixes a developer can actually implement, ranked by impact — not a generic performance checklist copy-pasted regardless of what's actually failing.

PAGE TYPE AND STACK: a product listing page on a Shopify store using a third-party theme, roughly 40 products with images per page
CORE WEB VITALS REPORT (LCP, INP, CLS — field data if available, lab data otherwise, note which): PageSpeed Insights field data (CrUX, 28-day): LCP 4.2s (poor), INP 340ms (needs improvement), CLS 0.28 (poor)
KNOWN CONSTRAINTS: can't modify the theme's core template files directly (would break future theme updates), but can add custom CSS/JS via the theme's app-block system

TASK

1. TRIAGE EACH METRIC AGAINST ITS THRESHOLD. State whether LCP, INP, and CLS each fall in the "good," "needs improvement," or "poor" range per Google's published thresholds, and name which metric is furthest from good — that's the one to fix first regardless of which feels most familiar to work on.
2. NAME THE LIKELY ROOT CAUSE per failing metric, specific to a product listing page on a Shopify store using a third-party theme, roughly 40 products with images per page, not a generic list of possible causes:
   - LCP: is the largest element likely an unoptimized hero image, a render-blocking font or stylesheet, a slow server response (TTFB), or client-side rendering delaying when the element even exists in the DOM?
   - INP: is the likely cause a long JavaScript task blocking the main thread on interaction, an oversized event handler doing synchronous work that could be deferred, or third-party scripts (analytics, chat widgets, ad tags) consuming the main thread at the moment of interaction?
   - CLS: is the likely cause images or ads without reserved dimensions, a web font swap causing text reflow, or content injected above existing content after initial load (a banner, a cookie notice) without space reserved for it?
3. RANK FIXES by estimated score recovery versus implementation effort, given can't modify the theme's core template files directly (would break future theme updates), but can add custom CSS/JS via the theme's app-block system. A fix that's high-impact but blocked by a stated constraint (no access to the CDN config, a CMS that doesn't allow custom script loading control) should be flagged as blocked, with the best available workaround, rather than recommended as if unconstrained.
4. DISTINGUISH FIELD FROM LAB DATA if both exist: field data (real user CrUX data) reflects actual user experience and is what affects the Google ranking signal directly; lab data (Lighthouse, PageSpeed Insights single-run) is useful for debugging but can miss real-world variance like slow user networks or older devices. If only lab data is available, say so and note the fixes are a best estimate pending real field data.
5. NAME WHAT WON'T MOVE THE NEEDLE. Explicitly call out any commonly recommended performance fix (minifying an already-small file, further image compression on an already-optimized asset) that would cost dev time here without meaningfully affecting the specific metric that's actually failing.

OUTPUT
A table: Metric | Current status | Likely root cause | Recommended fix | Estimated impact (high/med/low) | Effort (high/med/low). Follow with which fix to do first and why, and the field-vs-lab-data caveat if relevant.

Customize

Optional — swap in your own details for the highlighted parts above.

Why this works

Core Web Vitals are a page-experience ranking signal, but the specific mechanism worth knowing is that Google uses field data — real Chrome User Experience Report (CrUX) numbers from actual visitors — for the ranking signal itself, while lab data from a single Lighthouse or PageSpeed Insights run is a debugging tool that can miss real-world variance entirely, such as the slow network or older device a meaningful share of real visitors are using; treating a good lab score as proof the ranking signal is fine is a common and avoidable mistake this prompt is structured to catch by forcing the distinction explicitly. Routing each metric through a specific, stack-aware root-cause branch instead of a generic "optimize images, minify JS, use a CDN" checklist matters because the three metrics have almost entirely disjoint causes — a CLS problem from an unreserved ad slot is invisible to an LCP-focused image-compression pass, and applying image-optimization effort to a page whose real problem is a render-blocking font wastes the fix on the wrong metric while leaving the actual failing one untouched. Explicitly ranking by impact against effort, and against stated real-world constraints like a CMS or theme system a developer can't fully control, keeps the output from being a wish list — a "high impact" fix that requires access nobody has is functionally useless without a stated workaround, and naming which common fixes won't move the needle here specifically stops a team from burning a sprint on further-compressing an asset that was never the bottleneck.

What you get back

LCP | Poor (4.2s) | Likely root cause: hero product image served unoptimized and not preloaded, plus a render-blocking custom font | Add fetchpriority="high" and preload the LCP image; swap to font-display: swap | High impact / Low effort | FIRST FIX INP | Needs improvement (340ms) | Third-party chat widget script executing synchronously on page load, blocking the main thread during early interactions | Defer the chat widget script to load after first interaction or via a lazy-load trigger | Medium impact / Medium effort (blocked without direct script-tag control — workaround: load via the theme's app-block deferred-script slot) CLS | Poor (0.28) | Product grid images have no reserved aspect-ratio box, causing layout shift as each loads | Add explicit width/height or aspect-ratio CSS to the product image containers | High impact / Low effort Do first: the LCP preload fix — highest impact, lowest effort, and LCP is furthest from its "good" threshold of the three. Won't help: further JPEG compression on the hero image — it's already reasonably sized; the real LCP delay is the missing preload hint and the blocking font, not image weight.

Verified against

Claude Claude Sonnet 5 · 2026-08-04

ChatGPT GPT-5.1 · 2026-07-26

Changelog

  • 2026-07-26 Initial publish, verified against ChatGPT.
  • 2026-08-04 Re-verified against Claude Sonnet 5; added the explicit field-vs-lab-data distinction after a draft treated a single Lighthouse run as equivalent to the CrUX-based ranking signal.

Building this for real?

This is a free starting point. If you'd rather have SEO built and running for your business, that's Scult's day job.

EXPLORE SEO
All SEO & GEO/AEO prompts

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY