GEO Optimization Standard (2026)
Generative Engine Optimization is the successor to SEO. AI Overviews appear on 60%+ of US queries; CTR drops up to 65% where they appear. Optimizing for AI agents, not just humans, is the new baseline.
Why this skill exists
Every portfolio site needs the same GEO foundations so AI agents (Google AI Overviews, ChatGPT citations, Perplexity, Gemini, autonomous browsing agents) can extract, cite, and transact with the site. The same standard powers the Synthex client-audit module's gap analysis + remediation.
Without this skill, each repo reinvents the implementation and drifts from the standard. With it, the standard is single-source-of-truth.
When to invoke
Always invoke when:
- Adding a new public page to any portfolio site → check it has Tier-1 schema, FAQ block, front-loaded answer
- Auditing a site's GEO readiness → run the checklist in §7
- Building or extending Synthex's client-audit module → §6 is the spec
- Reviewing a PR that touches a public-facing route, contact/intake form, or product page
- Writing or auditing informational/content pages that need to be cited by AI answer engines → §11 (AEO)
Skip when: purely internal admin tooling, build scripts, infrastructure that's not user-facing.
§1 — Foundational ranking factors (2026)
| Factor | AI-citation correlation | Implication |
|---|---|---|
| Brand mentions across the web | 0.664 | Off-page brand presence > backlinks. Earn web mentions via PR, press, original research, partnerships. |
| Backlinks | 0.218 | Still matter for top-10 ranking, but weaker direct GEO signal. |
| Top-10 organic ranking | 92% of AI Overview citations | Traditional SEO is the floor — must rank top-10 to be cited. |
| Featured snippet structure | 62% overlap with AI Overview sources | Structure that wins snippets transfers directly. |
| Content extractability (≈800-token chunks) | High | Direct answer immediately after H2 = cited. Walls of text = ignored. |
| First-third placement of answers | 55% of citations | "Ski ramp" — citations drop sharply past first 30% of doc. Front-load. |
| FAQ blocks as self-contained answer units | 44% citation lift | Structured FAQ → high-leverage citation surface. |
§2 — Content structure rules
Always:
- Direct, declarative answer in the first 150–200 words of any informational page.
- H2-based section structure — AI extracts in ≈800-token chunks around H2 boundaries.
- FAQ block on every meaningful page. Answers ≤50 words, plain language, schema-marked as
FAQPage. - Original media (photos, diagrams, screenshots) — pure AI-generated header images are a May 2026 Core Update penalty signal.
- Demonstrate Information Gain — what does this page add that doesn't exist elsewhere? If the answer is "nothing", the May 2026 update demotes it.
Never:
- Dense, repetitive AI-generated text (May 2026 Core Update penalty).
- Broad topic sprawl on a single domain without demonstrated expertise (penalty).
- Keyword stuffing or academic-dense paragraphs (AI prefers plain declarative).
- Manufacturer copy on product pages — needs unique insight, original photos, expert review.
§3 — Structured data (JSON-LD)
Hard rules:
- Server-side rendered. AI crawlers do not execute JavaScript. JSON-LD must be in the initial HTML response.
- Visible counterpart required. Hidden schema with no on-page equivalent is ignored.
- Complete Tier-1 schema or no Tier-1 schema. Half-implemented Product schema (missing GTIN/MPN/price) often does more harm than none.
Tier-1 (essential — implement on every relevant page):
| Type | When | Required fields |
|---|---|---|
Product |
Every product page | name, description, brand, GTIN or MPN, price, availability |
AggregateRating |
Every Product page with reviews; LocalBusiness root | ratingValue, reviewCount. 3x lift in AI shopping citations. |
Organization |
Site root (layout) | name, url, logo, sameAs (LinkedIn, Wikidata, Crunchbase) |
LocalBusiness |
Every local-service site | address, geo, openingHours, telephone, priceRange |
Tier-2 (high leverage):
| Type | When |
|---|---|
FAQPage |
Every page with an FAQ block (every page should have one) |
Service |
Every service-detail page |
Article + Person (author) |
Every blog post — datePublished, author, hasCredential |
BreadcrumbList |
Every page deeper than root |
Tier-3 (situational):
Event— events, webinars, launchesCourse— training pages (CARSI)JobPosting— careers pagesHowTo— step-by-step guidesVideoObject— embedded video content
§4 — llms.txt standard
Place at site root (/llms.txt). Markdown-formatted, machine-readable. Pattern:
# {Site Name}
> One-line value proposition aimed at an AI agent deciding whether to cite or interact with this site.
## Business Identity
- Legal Name, ABN, Website, Coverage area
## What We Do
2–3 paragraphs. Direct, declarative, no marketing fluff.
## Services / Products
- Bullet list with short descriptions
## Agent Capabilities (WebMCP)
- POST /api/contact — submit contact enquiry (form: name, email, message)
- POST /api/claim/intake — submit a restoration claim (form: address, damage_type, urgency)
- GET /api/availability/{postcode} — check service availability
## Trust Signals
- Certifications, awards, member-of bodies
## Policies
- Privacy: /privacy
- Terms: /terms
- Contact: /contact
Implementation per stack:
- Next.js (App Router): Static
public/llms.txtis simplest. For dynamic content,app/llms.txt/route.tsreturningtext/plain. - Express/NodeJS: Dynamic
app.get('/llms.txt', ...)returningtext/plainwithgenerateLlmsTextFromDatabase(). - Shopify: No native root-level
.txtsupport. Two options:- App-based: SEO app intercepts root requests and serves dynamically (preferred).
- Liquid workaround: create
templates/page.llms.liquid, page namedllms, redirect/llms.txt→/pages/llmsvia URL redirect. Less reliable — AI agents probe/llms.txtexactly.
- Static sites: Drop the file in build output. Cloudflare Workers can intercept if SSG limits prevent it.
§5 — WebMCP (Web Model Context Protocol)
Lets autonomous AI agents in-browser execute actions on the site. Proposed W3C standard. Two flavours:
Declarative (annotate existing HTML forms):
<form toolname="submit_claim_intake"
tooldescription="Submit a disaster recovery claim for distribution to vetted contractors">
<input name="postcode"
toolparamdescription="Australian postcode (4-digit) of the damaged property">
<select name="damage_type"
toolparamdescription="Type of damage: water, fire, mould, storm, biohazard">
<option value="water">Water damage</option>
<option value="fire">Fire damage</option>
<!-- ... -->
</select>
<input name="urgency"
toolparamdescription="emergency (within 24h), urgent (within 72h), or scheduled">
</form>
Imperative (JS-registered tools):
navigator.modelContext.registerTool({
name: 'check_postcode_coverage',
description: 'Check if Disaster Recovery services this postcode and get expected response time',
parameters: { postcode: { type: 'string', pattern: '^\\d{4}$' } },
handler: async ({ postcode }) => fetch(`/api/coverage/${postcode}`).then(r => r.json())
})
Where to add:
- Every public form (contact, intake, signup, booking) → declarative annotation
- Every API endpoint that does useful work without auth → imperative registration
§6 — Lighthouse Agentic Browsing audit (CI gate)
Chrome Lighthouse 13.3+ adds an "Agentic Browsing" category. Four audits:
- Accessibility tree well-formedness — semantic HTML + correct ARIA. Agents use the a11y tree as their data model.
- WebMCP integration — declarative form annotations OR imperative JS tools detected.
llms.txtpresent — valid/llms.txtat root with# H1and adequate length.- Layout stability (CLS) — agents click faster than humans; layout shifts mid-interaction break flows.
CI integration pattern:
# .github/workflows/lighthouse-agentic.yml
on: [pull_request, push: {branches: [main]}]
jobs:
agentic-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: treosh/lighthouse-ci-action@v12
with:
urls: |
${{ vars.PREVIEW_URL }}/
${{ vars.PREVIEW_URL }}/contact
${{ vars.PREVIEW_URL }}/services
configPath: ./.lighthouserc.json
uploadArtifacts: true
.lighthouserc.json:
{
"ci": {
"collect": {
"settings": { "preset": "desktop", "onlyCategories": ["agentic-browsing", "accessibility", "seo"] }
},
"assert": {
"assertions": {
"categories:agentic-browsing": ["error", { "minScore": 0.75 }],
"categories:accessibility": ["warn", { "minScore": 0.90 }]
}
}
}
}
§7 — Audit checklist (use for every site)
Run this checklist when auditing a site or before opening a "GEO migration" PR.
-
/llms.txtat root, ≥40 lines, includes# H1+ Business Identity + Services + WebMCP capability list - Organization schema in site root layout (server-rendered JSON-LD, includes
sameAs) - AggregateRating on every Product / LocalBusiness (3x AI-citation lift)
- FAQPage schema on every page with an FAQ block (every page should have one)
- Every public form has WebMCP
toolname+tooldescriptionannotations - At least one imperative WebMCP tool registered via
navigator.modelContext - First 200 words of every informational page contains the direct answer to the page's primary question
- Lighthouse Agentic Browsing audit ≥ 0.75 (CI gate)
- No raw AI-generated header images without original media supplement
- All product copy unique (no manufacturer boilerplate)
- (AEO) Page covers the query fan-out — primary question + implicit follow-ups (what / why / how / cost / vs / best) — each an H2 with a ≤50-word lead answer
- (AEO) Every section leads with a self-contained, out-of-context-quotable claim carrying one concrete statistic
- (AEO) Entity data (name, role, core claims) consistent across site + Wikidata + LinkedIn + Crunchbase + press
- (AEO) Share-of-voice tracked: target query set sampled across ChatGPT / Perplexity / Gemini / AI Overviews
§8 — Local SEO post-May-2026 update
The May 2026 Core Update demoted directory/aggregator sites by up to 75% for "near me" queries. Provider sites that demonstrate Information Gain rose to fill the gap.
Local-business requirements (every local service site in portfolio):
- Google Business Profile fully optimised — rich media, accurate hours, consistent NAP, active review generation
- Site must demonstrate provider-specific expertise that a directory cannot replicate: detailed case studies, team bios, service methodology, certifications
- LocalBusiness schema with
geo,areaServed,openingHoursSpecification - Service-specific landing pages per geographic area (avoid thin templated location pages — each must add unique local context)
Bottom-of-funnel stability: Transactional intent pages ("emergency roof repair Austin") survived the update with minimal volatility. Top-of-funnel informational content is now AI-Overview territory — to win clicks there, you must be the cited source.
§9 — Implementation playbook (per stack)
Next.js (App Router) sites
Most of the portfolio. The pattern:
- llms.txt →
public/llms.txt(static) orapp/llms.txt/route.ts(dynamic). - Org / Site schema → JSON-LD
<script>inapp/layout.tsxhead. - Page-level schema → JSON-LD in each
app/*/page.tsx(server component). - FAQ blocks → reusable
<FAQ>server component that emits both visible Q&A AND FAQPage JSON-LD. - WebMCP → annotate form components; one global
WebMCPRegistrarclient component for imperative tools. - Lighthouse Agentic →
.github/workflows/lighthouse-agentic.ymlagainst Vercel preview URL.
Express / NodeJS sites
- llms.txt → dynamic route returning
text/plain. - Schema → server-side template (Pug/EJS/Handlebars) renders JSON-LD.
- Rest of pattern: same.
Shopify clients (Synthex audit module target)
- llms.txt → SEO app or Cloudflare Worker (Liquid workaround is brittle).
- Product schema → use Shopify's built-in JSON-LD + extend with AggregateRating from a reviews app (Yotpo, Loox, Judge.me).
- FAQPage → Liquid section embedded on PDPs with both visible + JSON-LD output.
- WebMCP → annotate the cart + product form Liquid templates.
§10 — Synthex client-audit module spec (Phase 3 target)
When this skill is invoked from Synthex's audit module:
- Input: client site URL + Shopify/NodeJS/Static/Wordpress detection
- Output: per-section pass/fail against §7 checklist, with severity (critical/high/medium) and a remediation snippet per failure
- Generates an "GEO Migration Plan" PR for client repos when authorised, OR a copy-paste implementation pack for non-repo clients
- Auto-detects May 2026 Core Update penalty risk patterns (scaled AI content, raw manufacturer copy, missing Information Gain markers)
§11 — Answer Engine Optimization (AEO)
GEO (§1–§10) makes the site machine-legible and transactable — it gets you crawled, structured, and acted on. AEO is the content-layer discipline of becoming the quoted answer inside conversational answer engines (ChatGPT, Perplexity, Gemini, Claude, Google AI Overviews). GEO gets you eligible; AEO gets you cited. They share signals (§1 citation factors, §2 structure) but optimise different units.
| GEO | AEO | |
|---|---|---|
| Optimises | infrastructure — llms.txt, JSON-LD, WebMCP, agentic browsing | answer units — extractable claims, definitions, quotable stats, Q&A |
| Unit of optimisation | the site | the passage |
| Win condition | crawlable, structured, transactable | lifted verbatim as the answer |
§11.1 — Cover the query fan-out
Answer engines decompose one prompt into many sub-queries ("fan-out") and synthesise across them. Cover the whole fan-out on one page: the primary question plus its implicit follow-ups (what / why / how / cost / vs / best / near-me), each as its own H2 with a ≤50-word lead answer. A page that answers only the literal query loses to one that pre-answers the follow-ups.
§11.2 — Craft quotable answer units
- Lead every section with a self-contained declarative claim that reads correctly out of context — the engine lifts it verbatim, with no surrounding sentences.
- Carry one concrete, attributable statistic per section ("cuts response time by 34%"). Engines preferentially cite specific numbers over vague claims.
- Put the definition in the first sentence ("X is a …") — this wins "what is X" answers.
- For decision queries, use explicit "X vs Y" framing + a comparison table — that's the structure lifted into comparison answers.
§11.3 — Entity & corpus consistency
Answer engines resolve you to a Knowledge-Graph entity before deciding to cite. Keep name, role, and core claims identical across your site, Wikipedia/Wikidata, LinkedIn, Crunchbase, G2, and press. Inconsistent entity data = low-confidence, so you're dropped from the answer. Feeds Organization.sameAs (§3) and E-E-A-T author authority (see eeat).
§11.4 — Route effort by platform behaviour
- ChatGPT — Bing index + brand corpus; strong on established-brand mentions → earn Bing rankings + off-page web mentions (§1 factor 0.664).
- Perplexity — freshness + explicit citations; favours recently-updated, well-sourced pages → keep
datePublished/dateModifiedcurrent, cite primary sources. - Google AI Overviews — top-10 organic + featured-snippet structure → traditional SEO is the floor (§1: 92% of citations rank top-10).
- Gemini — pulls from YouTube, Reddit, and Google properties → community presence matters.
- Claude / others — favour authoritative, well-structured primary sources → clean semantic HTML + llms.txt (§4/§6).
§11.5 — Measure AEO (share of voice)
The AEO KPI is citation presence, not rank. Run the target query set through each engine on a schedule; record whether and where you're cited and which competitors are cited alongside. Track share-of-voice over time. The Synthex audit module (§10) should sample this per client.
References (May 2026 source report)
- Onely — "How to Rank in Google AI Overviews"
- CXL — "Where Google AI Overviews pull their answers from"
- Nudge — "7 Schema Markup Types That Get Products Cited by AI"
- Google Search Central — "Optimizing your website for generative AI features"
- Chrome Developers — "Agentic Browsing and WebMCP Documentation"
- Stackmatix — "Structured Data AI Search: Schema Markup Guide (2026)"
- web.dev — "Build agent-friendly websites"
- Internal — "Google May 2026 Core Update Rollout and Impact"
- Internal — "May Core Update Chaos and Local SEO Shakeup"
Related skills
seo-baseline(legacy) — superseded by this skill for AI-search workaccessibility-audit— accessibility tree well-formedness overlaps with §6 audit 1synthex-client-audit(forthcoming) — will invoke this skill's §7 checklist as its core engineeeat— E-E-A-T author authority + entity trust signals feed AEO citation confidence (§11.3)