Website Speed & AI-Readiness Master Prompt v1.0

The copy-paste prompt + full technical playbook to take any static website to PageSpeed 100 · Accessibility 100 · Best Practices 100 · SEO 100 · Agentic 3/3 · AEO/GEO 100 — in one pass. Proven on bydigital.in and socialkit.tools (62 pages).

Ad slot

Most sites chase a perfect PageSpeed score one fix at a time — and every fix breaks something else. This guide packages everything into a single reusable master prompt: give an AI assistant your site ZIP plus your PageSpeed, host-speed and AI-readiness reports, paste the prompt, and get back a deploy-ready ZIP with speed, CLS, accessibility, animation and SEO/AEO/GEO issues fixed together. It is a complete free website audit checklist you can rerun on every release, and the fastest way to check your website SEO score, speed score and AI-search readiness in one loop — how you master SEO online without paid suites.

What does this master prompt actually fix?

In one pass it fixes render-blocking CSS and fonts, first-visit layout shift (CLS), AdSense and analytics bloat, non-composited animations, heading-order and contrast accessibility failures, cache and security headers, and the AEO/GEO layer — llms.txt, AI-crawler permissions, question-style headings and JSON-LD schema — while hard constraints protect everything that already works.

The master prompt (copy-paste ready)

Attach: (a) your site ZIP, (b) PageSpeed Insights mobile + desktop reports, (c) your host’s speed report, (d) an AI Search Readiness report if you have one. Replace anything in [square brackets] with your own values.

=== WEBSITE SPEED & AI-READINESS MASTER PROMPT v1.0 ===
SITE: [https://example.com] | HOST: Hostinger + Cloudflare (free plan)
STACK: Static HTML/CSS/JS | DEPLOY: ZIP extract to public_html (overwrite only, no delete)
ATTACHED: site ZIP + PageSpeed mobile/desktop reports + host speed report
[+ AI Search Readiness / AEO-GEO checker report]

GOAL - in ONE pass, on ALL pages:
 PageSpeed Mobile & Desktop 95-100 | Accessibility 100 | Best Practices 100
 SEO 100 | Agentic Browsing 3/3 | CLS < 0.05 | AEO/GEO checker 100

HARD CONSTRAINTS (never violate):
 1. Do not damage SEO/AEO/GEO that is already correct: <title>, meta description,
    canonical, OG tags, all JSON-LD schema, llms.txt, sitemap.xml, robots.txt,
    ads.txt, verification files - only touch these if a report flags a specific issue.
 2. Do not change a single word of content. Heading LEVELS may change (h4->h3),
    heading TEXT may not.
 3. Visual design must stay the same - make animations composited or gate them
    on mobile, never delete them.
 4. Overwrite-only deploy: never rename/delete files; ship the new version at the
    same path. Bump ?v=N cache-bust on asset URLs.
 5. After every change run the automated verification below and print PROOF.
    Never build the ZIP without verifying.

FIX CHECKLIST - apply each item against the reports:
[A] RENDER-BLOCKING / FCP / LCP
 A1. INLINE all site CSS in <style> on every page (minified). Zero external
     stylesheet requests. (If CSS >50KB, split critical CSS.)
 A2. Google Fonts: preload as=style + stylesheet media="print"
     onload="this.media='all'" + noscript fallback. Use display=optional in the
     URL (not swap - optional means a late font is simply not used = zero CLS).
 A3. Fallback font metrics so system font and web font render the same size:
     @font-face{font-family:"X Fallback";src:local("Roboto"),local("Arial");
     size-adjust:107%;ascent-override:90%;descent-override:22%;line-gap-override:0%}
     IMPORTANT: put local("Roboto") first - PageSpeed mobile emulates Android
     where Arial does not exist.
 A4. All JS at body-end with defer. No parser-blocking scripts.
[B] CLS (target 0)
 B1. Reserve EXACT min-height on JS-injected header/footer/ad placeholders:
     #site-header{min-height:<measured px>} - use the same measured value in the
     mobile media query (never guess; count nav height + border pixels).
 B2. Fixed min-height on ad slots. width/height attributes on images.
 B3. Font CLS: covered by A2+A3. Reserve space for late-loading widgets.
[C] ADSENSE / THIRD-PARTY (Best Practices 100 + the unused-JS cure)
 C1. Keep the AdSense verification <meta name="google-adsense-account"> in head
     immediately (for the crawler), but load the adsbygoogle.js SCRIPT on first
     user interaction (scroll/touchstart/mousemove/keydown/click, passive
     listeners, removed once loaded). Lighthouse lab has no interaction ->
     script never loads -> deprecated-API warning, 200KB unused JS and ad-CLS
     all disappear. Real users still get ads normally.
 C2. Same lazy pattern for analytics (or requestIdleCallback).
[D] ANIMATIONS (non-composited -> composited, visuals unchanged)
 D1. Animate ONLY transform + opacity. Conversions:
     left/top sweep -> transform:translateX/Y (preserve skew if present)
     background-position -> make element 300% wide, seamless gradient loop
     (start=end colour), translateX(-66.667%)
     border-color -> remove border-color from keyframes, keep static
     box-shadow pulse -> transform:scale pulse (check duplicate @keyframes
     names - the last definition in CSS wins!)
     SVG fill flash -> static fill on class + opacity keyframe
 D2. Mobile (max-width:768px): animation:none !important on ambient infinite
     loops (auroras, blobs, star twinkle, flowing gradients). Do NOT touch
     entrance animations (opacity:0 + forwards ones will break).
 D3. Site-wide: @media(prefers-reduced-motion:reduce){*,*::before,*::after{
     animation-duration:.01ms!important;animation-iteration-count:1!important;
     transition-duration:.01ms!important}html{scroll-behavior:auto}}
[E] ACCESSIBILITY 100
 E1. <main id="content"> landmark on every page (after nav, before footer).
 E2. Heading order - no level skips (no h4 straight after h2). Fixes:
     content h4 after h2 -> h3 (update CSS selectors too);
     UI-panel h4 right after h1 -> h2; footer h5 -> styled
     <div class="foot-h"> (outside the heading chain). After fixing, SIMULATE
     and prove 0 skips remain (and none were created).
 E3. Label or aria-label on every input/select. role="group" on button groups.
 E4. Contrast 4.5:1 minimum - check white-on-brand buttons
     (e.g. white on #12996B = 3.35 FAIL -> darker shade), bump muted greys.
 E5. Links distinguished by underline as well as colour (content areas).
 E6. href="#" placeholder links -> real destinations.
[F] .HTACCESS (Hostinger/LiteSpeed)
 F1. Cache: css/js 1 month, images/fonts 6-12 months (immutable),
     HTML no-cache must-revalidate (checkers/proxies must not get stale HTML),
     .txt/.xml no-cache + Access-Control-Allow-Origin:* (so browser-based
     checkers can fetch llms.txt/robots directly - proxy-cache 404 bug).
 F2. Compression (mod_deflate) on all text types.
 F3. Security headers: nosniff, X-Frame-Options SAMEORIGIN, Referrer-Policy,
     Permissions-Policy.
 F4. HTTPS + non-www 301 - Cloudflare-safe loop-proof pattern:
     RewriteCond %{HTTPS} off
     RewriteCond %{HTTP:X-Forwarded-Proto} !https
     RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
 F5. Options -Indexes, UTF-8 default.
[G] SEO / AEO / GEO (when a checker report is attached)
 G1. Title 30-60 chars, meta description 120-160 - EVERY page.
 G2. Question-style H2s ("What/How/Why...?") + a 40-60 word direct-answer
     paragraph right under each question.
 G3. FAQPage JSON-LD (5+ Q&A matching the visible FAQ), WebApplication/
     SoftwareApplication schema (price 0), Organization schema with sameAs.
 G4. At least 1 table + 1 ordered list on the homepage. 2 authoritative
     external links (official/gov sources) + concrete stats.
 G5. /llms.txt at the domain root (llmstxt.org format): H1 + blockquote summary
     + tools/pages sections with links + privacy + contact + related sites.
 G6. robots.txt: explicitly Allow GPTBot, ChatGPT-User, ClaudeBot, Claude-Web,
     PerplexityBot, Google-Extended, CCBot + Sitemap line.
     Keep Cloudflare Bot Fight Mode / AI Labyrinth OFF.
[H] BUG SWEEP (run on every page)
 H1. Find truncated/corrupt HTML: missing </html>, unclosed tags, missing
     footer/script - repair by pattern-matching a working sibling page.
 H2. node --check every .js file. Duplicate @keyframes names. Dead hrefs.
 H3. Consistent script version on every page (?v=N same N everywhere).

VERIFICATION (BEFORE building the ZIP, prove with a script):
 V1. Every page: exactly 1 <main>...</main>, </html> present, v=N consistent.
 V2. Heading simulation: 0 skips on ALL pages.
 V3. Keyframe scan: nothing animated except transform/opacity.
 V4. Title/desc length report for every page.
 V5. Schema JSON-LD parses with json.loads.
 V6. node --check passes on all JS.
 V7. SEO-critical files byte-identical (the ones not to be touched).

OUTPUT: deploy-ready ZIP (flat, public_html structure) + changelog:
 what changed, why, and which report item it fixes.
=== END MASTER PROMPT ===

How do I get a 100 PageSpeed score on mobile?

Inline all CSS, ship fonts with display=optional plus a size-adjusted local fallback, defer every script, reserve exact pixel heights for anything JavaScript injects, animate only transform and opacity, and lazy-load AdSense on first interaction. Do those six things on every page and mobile 95–100 follows; the prompt above automates all of them.

Why does my CLS keep coming back?

Because layout shift is layered — fix one cause and the next one surfaces. On bydigital.in the journey from CLS 0.274 to 0 took four rounds: first the injected header needed a measured min-height (a 57px guess vs the real 65px brought CLS straight back), then the font swap needed a size-adjust fallback, then the fallback needed local("Roboto") first because PageSpeed’s Moto G has no Arial, and finally display=optional made font CLS mathematically zero. Use the Layout Shift Finder to see which element is moving.

How do I fix non-composited animations without changing the design?

Convert every animated property to GPU-friendly transform or opacity — the visuals stay identical:

Non-composited (CPU paint)Composited replacement (GPU)
left: -70% → 130% shine sweeptransform: translateX — travel% = (parent travel ÷ element width) × 100; keep the skew
background-position 0 → 300%Element 300% wide + seamless gradient (start = end colour) + translateX(-66.667%)
border-color keyframesRemove from keyframes; static border + opacity fade
box-shadow pulsetransform:scale(1↔1.07) pulse — watch duplicate @keyframes names, the last one wins
SVG fill flashStatic fill on the class + @keyframes opacity

Scan your pages with the Animation Performance Checker to catch every offender.

What makes a site AI-search ready (AEO/GEO)?

AI engines cite sites they can crawl and parse: allow GPTBot, ClaudeBot, Claude-Web, ChatGPT-User, PerplexityBot, Google-Extended and CCBot in robots.txt; publish an /llms.txt summary at the domain root; phrase key H2s as questions with a 40–60 word direct answer underneath; and add FAQPage plus page-type JSON-LD. Keep Cloudflare Bot Fight Mode and AI Labyrinth OFF — they block legitimate AI crawlers and quietly destroy your GEO visibility. Test everything with the free AI Search Readiness Checker.

What is the deployment ritual?

Same order every deploy — skipping a step causes stale-result confusion:

  1. ZIP → host file manager → extract into public_html (overwrite only, delete nothing)
  2. Clear the hosting cache
  3. Cloudflare → Caching → Purge Everything (+ custom-purge /llms.txt, /sitemap.xml if needed)
  4. Wait 2–3 minutes
  5. Incognito → open the site → View Source → confirm the new ?v=N is live
  6. Run PageSpeed Insights mobile + desktop
  7. Run your AEO/GEO checker
  8. Save the reports → feed them back to the AI in the next iteration

If a score is not yet 100, run the same master prompt again with the new reports: “this is the new report after the previous fixes — fix what remains.” Each round reveals the next culprit.

Which issues can never be fixed (stop wasting time)?

Report itemWhy unfixableRealistic impact
Reduce unused JavaScript ~200 KBadsbygoogle.js — Google’s own scriptInvisible in lab after lazy-load
Uses deprecated APIs (1 warning)AdSense internalsGone from lab with lazy-load
Efficient cache lifetimes (fonts)fonts.googleapis.com third-party headers1–2 points max; ignore
Network dependency tree / latencyServer/CDN routing, outside your codeCloudflare proxied + HTTP/3 is enough
Mobile 89–92 run-to-run varianceLighthouse throttling variance±3–5 points normal; best of 3 runs

Which free tools cover this checklist?

Every stage of this playbook has a free checker on socialkit.tools: Core Web Vitals Checker for the speed metrics, Layout Shift Finder for CLS, Animation Performance Checker for composited animations, Web Accessibility Checker for the WCAG failures Lighthouse flags, AI Search Readiness Checker for AEO/GEO, and the Website Keyword Audit plus Keyword Research Tool for the content side. Pair this guide with the free SEO audit checklist for the on-page half of the story.

Frequently asked questions

Inline your CSS, use display=optional fonts with a size-adjusted fallback, defer all JS, reserve exact heights for injected elements and ads, animate only transform/opacity, and lazy-load AdSense on first interaction. The master prompt applies all of it in one pass.
It verifies AI engines can crawl and cite you: AI crawlers allowed in robots.txt, an /llms.txt summary at the root, question-style H2s with 40–60 word direct answers, and FAQPage + page-type schema.
Layout shift is layered: injected header heights, font swap, missing Android fallback metrics, ad slots. Fix them in order with measured values — never guessed ones — and finish with display=optional.
Animate only transform and opacity. Convert left/top sweeps to translateX/Y, background-position loops to a 300%-wide translated gradient, drop border-color from keyframes, and turn shadow pulses into scale pulses.
Yes — PageSpeed Insights is free and socialkit.tools has free checkers for vitals, CLS, animations, accessibility, AI readiness and keywords. Copy the prompt and run it with any capable AI assistant.
Google’s own adsbygoogle.js size and deprecated-API warning, third-party font cache headers, CDN routing, and ±3–5 points of Lighthouse variance. Lazy-loading hides the AdSense items from lab tests; ignore the rest.