How SEO AI Assistant Calculates SEO, AEO and GEO Scores
Short answer: SEO AI Assistant runs 39 checks on the page you are viewing: 13 for SEO, 13 for AEO and 13 for GEO. Each score is the share of that column's measurable checks the page passes, rounded to a whole number. Every check counts equally. Two checks can only be judged by a person, so they are shown as reminders and never scored. The scores are ExtCafe's own diagnostic, not a rating from Google, OpenAI or any other company.
How is each score calculated?
For each column:
score = round( checks passed / measurable checks × 100 )
- Equal weights. A missing title tag counts the same as a missing changelog. We chose this so the number is easy to verify by hand.
- Manual checks are excluded. "Backlinks" (SEO) and "Originality" (GEO) cannot be measured from one page, so they always show "Check manually" and are left out of the total.
- Unmeasurable checks are excluded. If the browser has no paint timing for the page (for example, it loaded in a background tab), "Page speed" is shown as "Couldn't measure" instead of failing.
- Everything is computed in your browser. The scores come from the page as it is rendered in your tab, plus the site's public robots.txt, sitemap.xml and llms.txt, fetched by your browser.
This page describes scoring version 2, used by extension version 1.3.x. The code that defines every check is in the extension's shared-scoring.js file, which anyone can inspect in an installed copy.
What do "measured" and "heuristic" mean?
- Measured checks test something objective, such as whether a tag exists or a number is in a range.
- Heuristic checks use a simple text rule as a stand-in for something harder to judge, such as whether a paragraph is a definition. They can be wrong in both directions. Treat a heuristic result as a prompt to look, not a verdict.
- Manual checks are reminders only.
SEO checks (13)
| Check | Passes when | Type |
|---|---|---|
| Title tag | The title is 50 to 60 characters long. | Measured |
| Meta description | The meta description is 150 to 160 characters long. Google sets no fixed length; this range is our target for a full, untruncated snippet. | Measured |
| URL slug | The path is 75 characters or less, lowercase, has no underscores, spaces or encoded characters, has 4 or fewer segments and no query string. A homepage always passes. | Measured |
| H1 + headings | Exactly one H1 and at least one H2. | Measured |
| Keyword research | The page's most frequent word (ignoring common words such as "the" and "and") appears in the title. | Heuristic |
| Keyword placement | That same word appears in the first 100 words and in an H1 or H2. | Heuristic |
| Image alt text | No image is missing an alt attribute. | Measured |
| Page speed | First Contentful Paint is 1.8 seconds or less and Cumulative Layout Shift is below 0.1, from your browser's own timing of this page load. | Measured (one load) |
| Mobile-friendly | A viewport meta tag with width=device-width exists and the page does not scroll sideways at the current window width. | Measured |
| Schema markup | At least one JSON-LD schema type is found. | Measured |
| Internal linking | The page links to at least 3 different paths on the same site. | Measured |
| Backlinks | Not scored. Check your backlinks in Google Search Console or an SEO tool. | Manual |
| Technical hygiene | All of: HTTPS, a canonical tag, no broken links among the first 20 same-site links (checked with a HEAD request), a robots.txt file and a sitemap (sitemap.xml or a Sitemap: line in robots.txt). | Measured |
AEO checks (13)
| Check | Passes when | Type |
|---|---|---|
| Intent matching | Exactly one H1, and the page's most frequent word appears in the title. | Heuristic |
| Answer-first structure | At least one question heading (H2 or H3) is followed by a paragraph of 40 to 60 words. | Heuristic |
| Question headings | At least 2 H2 or H3 headings are questions: they end in "?" or start with what, how, why, when, where, who, which, is, are, can, does, do, should or will. | Heuristic |
| FAQ section | FAQ schema is present with at least 8 Question items. | Measured |
| Concise definitions | One of the first three content paragraphs contains "is a", "is an", "is the", "are a", "are an" or "are the" within its first 30 words. | Heuristic |
| Lists and tables | At least one list with 2+ items (outside the header, nav, footer and sidebars) or a table. | Measured |
| How-to content | HowTo schema, or a numbered list with at least 3 steps in the page content. | Measured |
| Conversational phrasing | "you", "your" or "yours" make up at least 1% of the words, and the page has at least 3 question marks. | Heuristic |
| Snippet formatting | At least 3 content paragraphs (8+ words each) that average 60 words or fewer. | Heuristic |
| Entity clarity | The JSON-LD has a description of 20+ characters and the Concise definitions check passes. | Heuristic |
| Comparison content | A heading or link contains "vs", "versus", "compare", "compared", "comparison", "alternative" or "alternatives". | Heuristic |
| People Also Ask | At least 5 question-style items in total across FAQ schema, <summary>/<dt> elements and question headings. | Heuristic |
| Freshness signals | The newest date found in schema (dateModified or datePublished), article meta tags or <time> elements is within the last 365 days. | Measured |
GEO checks (13)
| Check | Passes when | Type |
|---|---|---|
| Citations | The page links to at least 2 external domains, not counting Facebook, X/Twitter, Instagram, LinkedIn, Pinterest or TikTok. | Heuristic |
| Originality | Not scored. Ask yourself what this page offers that competing pages do not. | Manual |
| Original data | At least 3 numbers followed by a unit such as %, ms, seconds, users, downloads, customers, installs, reviews, stars or "x". | Heuristic |
| Quotable statements | At least half of the sentences (5+ words) are 8 to 25 words long. | Heuristic |
| Expert authorship | An author meta tag, Person schema, or Article schema with an itemprop="author" element. This detects that an author is named, not their expertise. | Measured |
| Brand consistency | The brand name (from og:site_name, else the Organization schema name, else the domain) appears in the title. | Heuristic |
| Third-party mentions | The page links to Reddit, Product Hunt, GitHub, YouTube, Trustpilot, G2, Capterra, the Chrome Web Store, Medium or Wikipedia, or its schema has sameAs. This looks at links on your page; it cannot see mentions of you on other sites. | Heuristic |
| Allow AI crawlers | robots.txt does not block the whole site for GPTBot, ClaudeBot, PerplexityBot or Google-Extended. A site with no robots.txt passes. It does not yet check OAI-SearchBot, the crawler ChatGPT search uses, so check that one yourself. | Measured |
| llms.txt | /llms.txt returns plain text (not an HTML page) longer than 20 characters. | Measured |
| Crawlable plain text | The raw server HTML, with scripts and styles removed, contains at least 50% as many words as the page shows after JavaScript runs. | Measured |
| Case studies | The page mentions a case study, testimonial, customer story or "what our users say", has Review or AggregateRating schema, or contains a blockquote. | Heuristic |
| Scannable content | At least 3 H2 headings and at least one list or table. | Measured |
| Freshness + changelog | A heading or link mentions a changelog, release notes, "what's new" or version history, or the page has an element with "changelog" in its id or link. | Heuristic |
What the scores do not mean
- They are not rankings. 100/100 does not guarantee better Google rankings, indexing, traffic, rich results or AI citations. Those also depend on competition, content quality, authority and each provider's own systems.
- They are not official. Google, OpenAI, Perplexity, Anthropic and other providers do not publish page scores. Ours describe how a page does against the checklist on this page, nothing more.
- They cover one page at a time, as it loaded in your browser. A logged-in view, a cookie banner or a slow connection can change a result.
- The page-speed check is a single lab-style reading. For real-user Core Web Vitals, including INP, use PageSpeed Insights or Search Console.
- The topic list is a word count. The "entities" panel shows the five most frequent words on the page (4+ letters). It is a quick way to spot what the text emphasises, not a model of how an AI understands the page.
Where do the recommendations come from?
After the scores are calculated, the extension sends the check results and basic page details to ExtCafe's server, which returns the written recommendation for each failed check. Those recommendations come from fixed rules that match the checklist above; no AI is used. On Pro, "Generate AI fixes" asks an AI model (NVIDIA's API) to write fixes such as JSON-LD or meta descriptions for your page. What is sent, and when, is listed in the privacy policy.
How we change the methodology
When a check changes, we update this page and the "Last reviewed" date at the top, and note it in the changelog. If you think a check gives the wrong result for your page, email aio@extcafe.com with the URL and what you expected. Reproducible reports get fixed first.
Scoring questions
How does SEO AI Assistant calculate its SEO, AEO and GEO scores?
Each score is the percentage of that column's measurable checks the page passes, rounded to a whole number. All checks count equally, and the two manual checks, Backlinks and Originality, are not included.
Does a 100 score mean my page will rank or be cited by AI?
No. A 100 means the page passes every measurable check on ExtCafe's checklist. Rankings and AI citations also depend on competition, content quality, authority and each provider's own systems, which no page-level tool can see.
Why did my score change when I analyzed the same page again?
Some checks depend on how the page loaded, such as page speed, layout shift and broken links. A different network speed, cookie banner or logged-in state can change those results between runs.
Is the scoring done on ExtCafe's servers?
No. All 39 checks and the three scores are calculated in your browser. The server only returns written recommendations for the failed checks and, on Pro, AI-generated fixes.