findXpand
← All categories

GEO (Generative Engine Optimization)

← Back to Home

Checks specific to how generative AI models (the ones answering questions directly, not just linking out) read, ground, and cite a page — entity disambiguation, JS-dependent content, quotability, statistic density. Source: src/lib/geoAudit.ts (analyzeGEO).

19 rules in this category.

IDRuleSeverityWeight
geo-x-robots-noindexThe server sends X-Robots-Tag: noindexCritical14 pts
geo-js-rendered-contentPage content requires JavaScript to renderHigh10 pts
geo-entity-grounding-missingEntity schema has no sameAs links to authoritative profilesMedium6 pts
geo-noai-directivePage includes a generative-AI opt-out directiveMedium6 pts
geo-statistics-densityNo statistics, percentages, or figures found in the contentMedium5 pts
geo-schema-incompleteStructured-data items are missing required fieldsLow4 pts
geo-table-headersN of N table(s) on the page has/have no header cellsLow4 pts
geo-unsourced-statsN of M statistics have no sourceLow4 pts
geo-attributed-quotes-missingNo directly attributed quotations foundLow3 pts
geo-content-chunkingAt least one section runs to roughly N words without a subheadingLow3 pts
geo-entity-name-mismatchThe brand name in structured data doesn't match the pageLow3 pts
geo-sentence-lengthAverage sentence length is N wordsLow3 pts
geo-stale-yearThe title or headings present a past year as currentLow3 pts
geo-section-contextSections start by referring back to earlier textLow2 pts
geo-summary-missingLong page has no summary near the topLow2 pts
geo-vague-openingThe page opens with filler instead of the pointLow2 pts
geo-acronymsAcronyms are never spelled outInformational1 pts
geo-attributed-quotesContent includes N directly attributed quote(s)Positive signal0 pts
geo-entity-groundingOrganization/Person schema includes sameAs links to authoritative external profilesPositive signal0 pts

geo-js-rendered-content

Page content requires JavaScript to render

SeverityWeightCategory
High10 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Most AI crawlers fetch raw HTML and don't run JavaScript, so content that appears only after hydration is invisible to them. Confirmed by rendering when "Render JavaScript" is on, estimated otherwise. Gate: while this fails, the category score is capped at 40, so strengths elsewhere can't hide it.

How to fix it & effect on score: Server-render or prerender the primary content. Fixing this removes the 10 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: measured on the live site at scan time.


geo-entity-grounding-missing

Entity schema has no sameAs links to authoritative profiles

SeverityWeightCategory
Medium6 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: The page's Organization/Person structured data doesn't include a sameAs property pointing to an external authoritative profile (Wikipedia, Wikidata, LinkedIn, Crunchbase, GitHub, etc.). Generative engines rely heavily on entity grounding to disambiguate brands and people before deciding what to say about them; without it, an AI answer engine may confuse this entity with a similarly named one or simply have less confidence citing it.

How to fix it & effect on score: Add a sameAs array to your Organization/Person JSON-LD listing this entity's Wikipedia/Wikidata page (if one exists) and other authoritative profiles. Fixing this removes the 6 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.


geo-noai-directive

Page includes a generative-AI opt-out directive

SeverityWeightCategory
Medium6 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: The robots meta tag includes (comma-separated list of the specific items found), an emerging token that some AI crawlers and training pipelines respect as an explicit opt-out. If this content is meant to be eligible for AI answer engines, this directive works directly against that.

How to fix it & effect on score: Remove noai/noimageai from the robots meta tag if you want this content eligible for generative-engine answers; keep it only if the opt-out is intentional. Fixing this removes the 6 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

What a pass looks like: No noai/noimageai directive blocking generative use


geo-statistics-density

No statistics, percentages, or figures found in the content

SeverityWeightCategory
Medium5 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: The page has roughly N words of body text but no detectable numeric statistics, percentages, or dollar figures. Generative engines disproportionately lift and cite pages that back claims with concrete, quotable numbers rather than purely qualitative statements.

How to fix it & effect on score: Where relevant, back key claims with specific figures (percentages, counts, dates, dollar amounts) rather than vague qualifiers like "many" or "significant". Fixing this removes the 5 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

What a pass looks like: Content includes N quotable statistic(s)/figure(s)


geo-table-headers

N of N table(s) on the page has/have no header cells

SeverityWeightCategory
Low4 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Tables without <th> header cells (in a <thead> or the first row) don't tell an extraction pipeline what each column or row represents, so generative engines are far less likely to lift the data accurately into a generated answer or comparison.

How to fix it & effect on score: Add <th scope="col"> (or scope="row") header cells to every data table so each value's meaning is unambiguous without visual layout. Fixing this removes the 4 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

What a pass looks like: Data tables use proper header cells, making them reliable for generative engines to extract


geo-attributed-quotes-missing

No directly attributed quotations found

SeverityWeightCategory
Low3 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: No quoted statements tied to a named source (e.g. '"...", said/according to...') were found in the body text. Attributed quotes give generative engines a low-risk, verifiable snippet to reproduce, which increases the odds a page gets cited rather than paraphrased or skipped.

How to fix it & effect on score: Where you're citing an expert, customer, study author, or spokesperson, quote them directly and attribute the quote by name. Fixing this removes the 3 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.


geo-content-chunking

At least one section runs to roughly N words without a subheading

SeverityWeightCategory
Low3 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Generative engines and RAG pipelines typically retrieve content in heading-bounded chunks. A long run of text under a single heading is harder to retrieve precisely and more likely to be partially or incorrectly quoted.

How to fix it & effect on score: Break long sections into smaller subsections with their own H3 headings, each covering one idea. Fixing this removes the 3 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

What a pass looks like: Content is broken into well-sized, heading-bounded sections


geo-sentence-length

Average sentence length is N words

SeverityWeightCategory
Low3 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Generative engines tend to extract and quote short, self-contained sentences rather than paraphrase long, clause-heavy ones. This page's prose runs long on average, making individual sentences harder to lift cleanly into a generated answer.

How to fix it & effect on score: Break long sentences into shorter, single-idea statements, especially in sections most likely to be quoted (openings, key claims, definitions). Fixing this removes the 3 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

What a pass looks like: Average sentence length (N words) is easy to quote


geo-attributed-quotes

Content includes N directly attributed quote(s)

SeverityWeightCategory
Positive signal0 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: This rule only ever surfaces as a passing signal in the current source — it fires (as a pass) when: Content includes N directly attributed quote(s). There is no separate failing issue() call under this exact id; the failure condition is the logical negation of the pass condition, and in most cases is covered by a related rule id documented elsewhere in this category (see the table above for a sibling rule on the same feature).

Effect on score: Meeting this condition costs nothing and confirms a positive signal. Missing it doesn't directly deduct points under this id — it typically shows up as a deduction under the related failing rule instead.


geo-entity-grounding

Organization/Person schema links to Wikipedia or Wikidata for entity disambiguation

SeverityWeightCategory
Positive signal0 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: This rule only ever surfaces as a passing signal in the current source — it fires (as a pass) when: Organization/Person schema includes sameAs links to authoritative external profiles. There is no separate failing issue() call under this exact id; the failure condition is the logical negation of the pass condition, and in most cases is covered by a related rule id documented elsewhere in this category (see the table above for a sibling rule on the same feature).

Effect on score: Meeting this condition costs nothing and confirms a positive signal. Missing it doesn't directly deduct points under this id — it typically shows up as a deduction under the related failing rule instead.


geo-x-robots-noindex

The server sends X-Robots-Tag: noindex

SeverityWeightCategory
Critical14 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: The HTTP response header keeps the page out of search indexes, and so out of the AI answers built on them (Google AI Overviews, Copilot, ChatGPT search), even when the HTML has no noindex tag. Gate: while this fails, the category score is capped at 40, so strengths elsewhere can't hide it.

How to fix it & effect on score: Remove noindex from the X-Robots-Tag header unless the page is meant to be private. Fixing this removes the 14 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: official requirement (documented by the engine or standard).


geo-schema-incomplete

Structured-data items are missing required fields

SeverityWeightCategory
Low4 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Schema types lack the fields that define them (e.g. LocalBusiness without address or telephone, Article without author or datePublished, Organization without logo). Engines skip or misread incomplete schema.

How to fix it & effect on score: Fill in the missing properties with the real values shown on the page. Fixing this removes the 4 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: official requirement (documented by the engine or standard).


geo-entity-name-mismatch

The brand name in structured data doesn't match the page

SeverityWeightCategory
Low3 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: The Organization/LocalBusiness schema name differs from og:site_name or the title (legal suffixes like LLC are ignored). Conflicting names can split mentions between two "different" businesses.

How to fix it & effect on score: Use one brand name across schema, og:site_name and the title. Fixing this removes the 3 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: heuristic (a best-practice signal; thresholds are judgement calls).


geo-unsourced-stats

N of M statistics have no source

SeverityWeightCategory
Low4 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Most statistics on the page have no link or "according to" attribution nearby. Engines prefer figures they can trace to a source. (Idea from geo-lint; the Princeton GEO study found cited sources and statistics raise visibility.)

How to fix it & effect on score: Link each statistic to its source or say who measured it. Fixing this removes the 4 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: research-backed (Aggarwal et al., "GEO: Generative Engine Optimization", KDD 2024).


geo-stale-year

The title or headings present a past year as current

SeverityWeightCategory
Low3 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: A year older than last year appears in the title or H1/H2 as if current ("Best cafés in Dubai 2023"). History phrasing ("since 2015") and ranges are ignored.

How to fix it & effect on score: Update the content and the year, or drop the year. Fixing this removes the 3 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: heuristic (a best-practice signal; thresholds are judgement calls).


geo-vague-opening

The page opens with filler instead of the point

SeverityWeightCategory
Low2 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: The first paragraph starts with a greeting or scene-setting line ("Welcome to…", "In today's world…"). Engines quote opening lines most.

How to fix it & effect on score: Open with one or two sentences stating what the page offers or answers. Fixing this removes the 2 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: heuristic (a best-practice signal; thresholds are judgement calls).


geo-section-context

Sections start by referring back to earlier text

SeverityWeightCategory
Low2 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Two or more sections begin with "This…", "It…" or "As mentioned above…". Engines retrieve sections on their own; lifted alone, these lose their subject. (Idea from geo-lint.)

How to fix it & effect on score: Start each section by naming its subject in full. Fixing this removes the 2 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: heuristic (a best-practice signal; thresholds are judgement calls).


geo-acronyms

Acronyms are never spelled out

SeverityWeightCategory
Informational1 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Acronyms used repeatedly are never expanded. A quoted passage can't rely on the reader knowing them. (Idea from geo-lint.)

How to fix it & effect on score: Spell each out the first time, e.g. "Customer Relationship Management (CRM)". Fixing this removes the 1 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: heuristic (a best-practice signal; thresholds are judgement calls).


geo-summary-missing

Long page has no summary near the top

SeverityWeightCategory
Low2 ptsGEO (Generative Engine Optimization)

What triggers it & why it matters: Pages of 1,200+ words with no TL;DR, key takeaways or summary block early on. A short summary gives engines a ready-made answer.

How to fix it & effect on score: Add a 2–4 bullet summary after the introduction. Fixing this removes the 2 pts deduction from the GEO (Generative Engine Optimization) category score on the next scan.

Evidence: heuristic (a best-practice signal; thresholds are judgement calls).