Every signal we score, documented
Every signal the audit checks, in one place: what it measures, why it matters for AI citation, the fix when it’s missing, and its source. Use it as a working checklist.
This is the checklist. How much each signal counts toward the score is not published.
Structure
How parseable your page is to an AI engine. Schema, headings, lists, tables, alt-text, OG meta. The substrate that makes everything else legible.
13 signals in this class
Structural depth (GEO-SFE)
structural-depth
- What
- Heading hierarchy + nested structure depth: H1→H2→H3 nesting that mirrors a real outline.
- Why
- arXiv:2603.29979 shows a +17.3% citation lift for pages with measurable structural depth vs flat documents.
- Fix
- Group your content under named H2 subsections. Use H3 for sub-points. Don't skip levels.
- Source
- GEO-SFE (arXiv:2603.29979) + Aggarwal et al., KDD 2024
Internal linking
internal-linking
- What
- Links from this page to other pages on your site, a signal of a navigable graph.
- Why
- AI crawlers expand context via internal links the same way they crawl. Isolated pages get under-indexed.
- Fix
- Add 5–10 internal links per page to related concepts, glossary terms, or supporting pages.
- Source
- Anthropic web-search retrieval docs
Page weight
page-weight
- What
- Total HTML size, lower is better. We flag pages over 500 KB.
- Why
- AI render bots have shorter timeouts than humans. Heavy pages get truncated or skipped.
- Fix
- Strip unused JS, defer below-the-fold images, kill render-blocking third-party scripts.
- Source
- Google SGE crawler docs
JSON-LD presence
json-ld-presence
- What
- Whether the page ships at least one schema.org JSON-LD block.
- Why
- Schema.org is the single highest-leverage signal for AI Overview eligibility: engines parse it before text.
- Fix
- Add at minimum an Organization or Article block. Our /tools/schema-generator outputs valid JSON-LD.
- Source
- Google SGE evaluation guide
JSON-LD validity
json-ld-validity
- What
- Whether the JSON-LD parses, has @context = schema.org, and a valid @type.
- Why
- Malformed JSON-LD is worse than absent: engines log a parse error and downrank trust.
- Fix
- Run your JSON-LD through Google's Rich Results Test before shipping.
- Source
- Google SGE evaluation guide
JSON-LD type relevance
json-ld-relevance
- What
- Whether the @type matches the page intent (Article on a blog, Product on a PDP, FAQPage on a FAQ).
- Why
- Wrong-type schema gets ignored: Article markup on a homepage is parsed as noise.
- Fix
- Pick the closest schema.org type for the page's actual content, not a generic catch-all.
- Source
- schema.org documentation
FAQ schema
faq-schema
- What
- FAQPage JSON-LD with at least 2 Q&A pairs.
- Why
- FAQPage is the highest single-type lift for AI Overview citations per Google's own SGE guidance.
- Fix
- Add FAQPage schema with 3–5 question/answer pairs that mirror real buyer queries.
- Source
- Google SGE evaluation guide
H1 quality
h1-quality
- What
- Exactly one H1, length 20–70 chars, contains a primary query token.
- Why
- AI engines treat H1 as the page's claim. Multiple H1s confuse the topical model.
- Fix
- One H1 per page, descriptive, 30–60 chars, includes the page's primary topic.
- Source
- Google SGE crawler docs
H2 coverage
h2-coverage
- What
- ≥3 H2 subsections that segment the content for skim-readability.
- Why
- AI engines extract H2s as section anchors. Pages without them are harder to summarize.
- Fix
- Break content into 3–6 H2 subsections, each addressing a sub-question.
- Source
- Aggarwal et al., KDD 2024
Lists
lists
- What
- ≥1 <ul> or <ol> with ≥3 items.
- Why
- Lists are the unit AI engines preferentially extract for 'how to X' and 'best Y' queries.
- Fix
- Convert at least one paragraph of enumerated reasons or steps into a real <ul>/<ol>.
- Source
- Aggarwal et al., KDD 2024
Tables
tables
- What
- ≥1 <table> with proper <thead>/<tbody> for structured data.
- Why
- Tables are the highest-extraction-rate format for comparison and spec-sheet queries.
- Fix
- If you have specs, prices, or comparisons, render them as real <table>s, not images.
- Source
- Aggarwal et al., KDD 2024
Alt-text
alt-text
- What
- ≥80% of <img> tags have non-empty alt attributes.
- Why
- Multi-modal engines (Gemini, Claude, GPT-4o) read alt-text as page semantic context.
- Fix
- Add descriptive alt to every meaningful image. Decorative images get alt="".
- Source
- Google SGE evaluation guide
Open Graph metadata
open-graph
- What
- og:title, og:description, og:image, og:type all present.
- Why
- AI engine link previews + social shares use OG meta as the citation card.
- Fix
- Add the 4 OG tags. Use 1200×630 og:image. Our /tools/og-checker validates them.
- Source
- Open Graph Protocol
Content
Whether the page actually answers the buyer query directly, completely, and in the right register. BLUF, query coverage, sub-question coverage, readability.
11 signals in this class
Direct answer to query
direct-answer
- What
- Whether the buyer query appears answered in the first 200 chars.
- Why
- AI engines preferentially extract direct answers. Burying the answer = no citation.
- Fix
- Lead the page with a 1–2 sentence direct answer to the primary query. Then expand.
- Source
- GEO paper §3.2
BLUF (Bottom Line Up Front)
bluf-answer
- What
- A clear thesis statement in the first paragraph stating the page's main claim.
- Why
- BLUF is a military-doctrine writing style that dramatically improves AI extractability.
- Fix
- Open with 'The answer is X. Here's why.' Don't bury the lede.
- Source
- U.S. military writing doctrine + adopted by Anthropic prompt eng team
Query token coverage
query-coverage
- What
- Fraction of query tokens that appear in the page body (target ≥80%).
- Why
- Coverage is a baseline relevance signal: missing tokens means the page misses the query.
- Fix
- Make sure every meaningful query token appears at least once in body content.
- Source
- BM25 + cosine retrieval fundamentals
Entity coverage
entity-coverage
- What
- Named entities mentioned that match the query's entity space.
- Why
- AI engines build an entity graph per page. Missing related entities reduces topical authority.
- Fix
- If the page is about X, mention X's known related entities (people, places, products).
- Source
- Knowledge graph extraction literature
Readability (Flesch)
readability
- What
- Flesch Reading Ease score (target 50–70 for general audiences).
- Why
- Engines extract from content humans can read. Sub-30 (academic) and 80+ (childlike) both underperform.
- Fix
- Shorten sentences. Cut adverbs. Aim for 16-word average sentence length.
- Source
- Flesch (1948) + adapted by SGE
Page length
length
- What
- Word count in the main content (target 800–3000).
- Why
- Too short = thin; too long = engines truncate. Sweet spot is medium-long form.
- Fix
- If under 600 words, expand with examples + sub-sections. If over 4000, split into hub + spokes.
- Source
- Empirical GEO paper data
Information density
info-density
- What
- Ratio of substantive content to filler.
- Why
- Dense content gets preferentially cited. Engines model 'value per token' implicitly.
- Fix
- Cut throat-clearing sentences. Replace 'It is important to note that' with the actual point.
- Source
- Empirical GEO paper data
Mega-page coverage
mega-page-coverage
- What
- Whether the page covers multiple closely-related sub-topics under one URL.
- Why
- Mega-pages outrank thin pages on AI engines because they cover entity neighborhoods.
- Fix
- Consolidate 3 thin pages into one comprehensive page with H2-segmented sub-topics.
- Source
- Ahrefs research + Cleartopic.io
YouTube embed
youtube-embed
- What
- Embedded YouTube video alongside the article.
- Why
- Multi-modal engines weight pages with on-topic video. 0.737 correlation with citation rate.
- Fix
- Create or embed a 2–4 minute video on the page topic. Mark up with VideoObject schema.
- Source
- Ahrefs 2025 study
Sub-query coverage
sub-query-coverage
- What
- Fraction of decomposed sub-questions answered in body content.
- Why
- Engines decompose seed queries into 4–6 sub-queries (Profound 'fanouts'). Missing answers = missing citations.
- Fix
- Add a Q&A section that explicitly addresses the top 5 sub-questions for your topic.
- Source
- Profound Query Fanouts methodology
In-line definitions
definitions
- What
- First-mention terms defined inline ('X (definition…)').
- Why
- Defined-in-place pages get cited as glossary sources. AI engines preferentially link to them.
- Fix
- Define the key 3–5 terms on first use, in-line.
- Source
- Stanford NLP citation extraction work
Trust
Crawl-time + share-time trust signals: HTTPS, canonical, viewport, AI-bot access via robots/llms.txt, Twitter card, meta description.
7 signals in this class
AI bot access (robots.txt)
ai-bot-access
- What
- Whether robots.txt explicitly addresses GPTBot/ClaudeBot/PerplexityBot.
- Why
- Default-allow gets you crawled, but explicit allow signals intent + unlocks niche AI bots.
- Fix
- Add User-agent: GPTBot/ClaudeBot/OAI-SearchBot/PerplexityBot rules to robots.txt.
- Source
- OpenAI / Anthropic / Perplexity bot docs
llms.txt presence
llms-txt-presence
- What
- Whether /llms.txt exists per the llmstxt.org proposal. Informational only: it carries no weight in the score.
- Why
- SE Ranking's study of ~300,000 domains (Nov 2025) found llms.txt doesn't affect how AI systems see or cite pages, so it isn't scored.
- Fix
- Optional. If you want one, generate it with the /audit/llms-txt tool and add it to the site root.
- Source
- llmstxt.org proposal; SE Ranking llms.txt study (Nov 2025)
HTTPS
https
- What
- Site responds correctly over TLS without mixed content.
- Why
- AI crawlers refuse to crawl mixed-content pages. HTTPS is table stakes.
- Fix
- Migrate to HTTPS. Force redirect with HSTS. Fix mixed-content warnings.
- Source
- Web standards + Google ranking docs
Canonical URL
canonical
- What
- <link rel=canonical> pointing to the page's preferred URL.
- Why
- Without canonical, AI engines may split citations across duplicate URLs and downrank each.
- Fix
- Add <link rel=canonical href=…> to every page. Self-canonical on canonical pages.
- Source
- Google canonical docs
Viewport meta
viewport
- What
- <meta name=viewport content=…> present.
- Why
- Mobile rendering signal: AI crawlers favor mobile-first content.
- Fix
- Add <meta name=viewport content="width=device-width, initial-scale=1">.
- Source
- Google mobile-first indexing docs
Twitter card
twitter-card
- What
- <meta name=twitter:card> + twitter:image present.
- Why
- AI engines fall back to Twitter card on platforms without OG support.
- Fix
- Add twitter:card=summary_large_image + twitter:image (can reuse og:image).
- Source
- X (Twitter) card docs
Meta description
meta-description
- What
- <meta name=description> with 80–160 chars of summary text.
- Why
- AI engines use meta description as a primary summary candidate when generating cites.
- Fix
- Write a 130-char meta description for every page. Include the primary query.
- Source
- Google docs + SGE evaluation guide
E-E-A-T
Google's framework for Experience, Expertise, Authoritativeness, Trustworthiness. First-person evidence, case studies, author credentials, brand entity in Wikidata, press mentions, privacy policy, contact info.
8 signals in this class
First-person evidence
first-person
- What
- First-person language indicating real experience ('we tested', 'I built').
- Why
- Google's E-E-A-T update prioritizes lived experience. First-person signals it.
- Fix
- Use first-person sparingly but precisely: 'we tested', 'in our experience', 'I found that…'.
- Source
- Google E-E-A-T quality rater guidelines
Case study evidence
case-study-evidence
- What
- Named customer outcomes, numbers, or before/after evidence in-line.
- Why
- Case studies are the highest-conversion E-E-A-T signal: prove it, don't just claim it.
- Fix
- Name one customer. Quote one outcome with numbers. 'We helped X go from Y → Z.'
- Source
- Google E-E-A-T guidelines
Byline depth
byline-depth
- What
- Byline links to a real author bio page with sufficient detail.
- Why
- Byline → bio page → credentialed author chain is the E-E-A-T graph engines trace.
- Fix
- Make every byline link to /authors/[name] with bio, photo, credentials, prior work.
- Source
- Google E-E-A-T guidelines
Brand entity in Wikidata
brand-entity
- What
- Brand has a Wikidata entity (Q-number) that AI engines can dereference.
- Why
- Wikidata is the canonical entity database: engines use it to validate brand identity. No entity = no trust anchor.
- Fix
- Get a Wikidata entry: requires 2–3 press mentions as citations. Submit at wikidata.org.
- Source
- Wikidata + knowledge graph literature
Press mentions
press-mentions
- What
- References to or links from top-tier press (NYT, WaPo, Bloomberg, FT, etc.).
- Why
- Press mentions transfer authority across the citation graph and validate brand entity claims.
- Fix
- Earn press. Display logos. Link back to the original article (not your case study).
- Source
- Empirical brand-citation research
Privacy + terms
privacy-terms
- What
- Linked privacy policy + terms of service from every page.
- Why
- YMYL (Your-Money-Your-Life) categories require these, and engines treat them as legitimacy signals everywhere.
- Fix
- Footer-link privacy and terms on every page. Real pages, not coming-soon stubs.
- Source
- Google YMYL + E-E-A-T guidelines
Contact info
contact-info
- What
- Real contact info: email, phone, or address visible on the page or linked /contact.
- Why
- Anonymous brands fail E-E-A-T. Real contact info signals real entity behind the content.
- Fix
- Add an email + physical address (real or registered office) to the footer.
- Source
- Google E-E-A-T guidelines
Score your page on all 47
This page is the documentation. The free audit runs the rubric against your real HTML.
