← Oleksii Turovskyi
ReleasedSEOv0.2.2chrome

AEO Checker

One-click AEO audit for the page you're on — score, per-check pass/warn/fail, instant remediation list.

· Updated

What it does#

AEO Checker is a Chrome extension that audits the page you're currently on for AI-readiness — the qualities that decide whether ChatGPT, Perplexity, Google AI Overviews, and Claude can retrieve your page and quote it when answering a question.

It runs nine checks against the live page, weights them, and gives you one 0–100 AEO Score with a per-check breakdown of passes, warnings, and fails. Every warning comes with the concrete fix, and most come with a link to the article that explains the underlying signal in full.

The reason it's an extension rather than a site-wide crawler is scope. A crawler tells you your domain has 400 problems. AEO Checker tells you what's wrong with the page open in front of you, in about a second, while you're the person who can fix it.

The nine checks and what they're worth#

Weights are the raw points each check contributes. They add up to 105 rather than 100 on purpose: a check that doesn't apply to the current page is marked n/a and drops out of both sides of the fraction, so the score is always a percentage of what was actually applicable. A blog post with no Organization entity isn't punished for lacking one.

Signal Weight Passes when Deep dive
AI bots in robots.txt 25 No retrieval bot is blocked (ChatGPT-User, ClaudeBot, anthropic-ai, PerplexityBot) and fewer than four training bots are (GPTBot, CCBot, Google-Extended, Applebot-Extended, Meta-ExternalAgent, Bytespider). A wildcard Disallow: / fails outright. robots.txt for AI crawlers
Server-rendered text 20 Raw-HTML word count divided by rendered-DOM word count is ≥ 0.8. Between 0.3 and 0.8 warns; below 0.3 fails. The JavaScript trap
JSON-LD entities 20 At least one specific type is present — Article, FAQPage, HowTo, Product, ProfilePage, BreadcrumbList and eighteen others. Only WebPage / WebSite / Organization / Person warns; no parseable JSON-LD fails. JSON-LD for AI
Heading hierarchy 10 Exactly one H1 and no skipped levels. Zero or three-plus H1 fails; a skipped level warns. Heading hierarchy
Metadata bundle 10 All six of title, description, og:title, og:image, canonical and html lang check out. Four or five warns. The invisible tags
robots meta 5 The page carries no noindex. The 3-word tag
datePublished + author 5 Both present in structured data. One of the two warns. n/a on pages that aren't articles. Recency and authority
Entity authority (sameAs) 5 A Person or Organization in the JSON-LD links out to authoritative profiles. n/a when the page has no such entity to anchor.
llms.txt 5 /llms.txt answers 200 with a text/plain or text/markdown content type. HTML body or wrong MIME warns; 404 fails. Adding llms.txt

The weighting is a claim about what breaks first, and it is mine rather than anyone's published research. Access outranks everything — a blocked crawler makes the other eight checks irrelevant, which is why robots.txt alone carries a quarter of the score. Renderability and structured data come next at 20 apiece, because a bot that reaches your page still has to find text in it and know what the text is about. Presentation-layer signals sit at 5 and 10: real, cheap, and not what sinks a page.

One known divergence. The metadata check accepts a description of 50–160 characters, while this site enforces a narrower 120–165 in src/lib/snippet-limits.ts — a window that also rejects descriptions Google would pad from body text. The title bound is the same 60 on both sides.

Reading the score#

A partial pass is worth half. pass earns full weight, warn earns half, fail earns nothing, and n/a is excluded from the total — so a warning costs you real points without pretending the page is broken.

Band Score What it usually means
Excellent 90–100 Nothing structural is in the way. Remaining points are usually one warning on a 5-weight check.
Good 70–89 Retrievable and parseable. Typically a missing llms.txt or a thin metadata bundle.
Needs work 50–69 Something with real weight is failing — usually renderability or absent structured data.
Poor 0–49 Check access first. At this level a blocked crawler or a client-rendered shell is the likely cause, and fixing it moves the score more than anything else will.

Chasing 100 is the wrong instinct. The score is a diagnostic ordering, not a target: getting from 45 to 75 by unblocking PerplexityBot matters, and getting from 92 to 97 by adding sameAs to a page nobody retrieves does not.

How it compares#

Four tools, four different jobs. No judgement about which is better — they answer different questions, and the honest reason to know the others is that AEO Checker deliberately does not do what they do.

AEO Checker agent-ready.dev llms-txt.io validator Profound crawlability
Form Chrome extension Web scanner, API, GitHub Action Web form Platform, integrated at CDN or server
Scope The one page you're on Whole site — 15 site-wide plus 24 per-page checks, 71 in total A single llms.txt file, by URL or pasted Whole site, from live crawler traffic
Data source The rendered page, plus /robots.txt and /llms.txt Fetched pages The file you point at Your server logs and CDN data
Answers Is this page retrievable and parseable right now Is the site agent-ready against the Vercel Agent Readability Spec, llmstxt.org, and protocol manifests like MCP and A2A Is this llms.txt structurally valid Which AI bots actually came, what they fetched, what errored
Also covers 23 WCAG accessibility checks as a sub-score Response times and render verification per bot
Cost Free Free, with paid Pro plans Free, with paid managed-site monitoring Pricing not published; demo-led

The gap worth naming: AEO Checker tells you nothing about whether crawlers actually visited. That question needs server logs, and Profound is built for it. Equally, if you want one number for an entire domain or a check in CI, that is what agent-ready.dev does and this extension does not.

Privacy#

The extension requests two permissions, activeTab and scripting, and holds no others.

There is no remote server, no account, no telemetry — not even anonymous usage counts. A scan reads the active tab's HTML in your browser and makes same-origin requests to that site's /robots.txt and /llms.txt. Results live in the popup and are discarded when it closes. The claim is structural rather than a promise: there is no code path in the extension that calls a server I control.

Full detail on the AEO Checker privacy page.

How to use#

  1. Install from the Chrome Web Store (button below).
  2. Open any page you want to audit.
  3. Click the AEO Checker icon in the toolbar.
  4. Read the score, open the failing checks, apply the fixes, reload, re-scan.

Start with whatever is failing in the access category. Points there are worth more, and every other check is downstream of a crawler being allowed in.

FAQ#

Does AEO Checker send my page data anywhere?#

No. It requests only the activeTab and scripting permissions, processes the page entirely in your browser, and has no code path that contacts a server I run. There is no telemetry, no account, and no analytics — see the privacy page.

Why does the score not add up to 100 from the weights?#

The nine weights total 105, and checks that don't apply to the current page are marked n/a and removed from both the earned and the possible total. The score you see is the percentage of applicable weight you earned, so a page with no Person or Organization entity is never penalized for the entity-authority check.

What is a good AEO Score?#

Anything from 90 counts as excellent and 70 upward means nothing structural is blocking retrieval. Below 50, look at the access checks first — a blocked crawler or a client-rendered shell costs more points than every presentation-layer signal combined, and fixing it usually moves the score further than anything else available to you.

Does it work on any site, or only my own?#

Any page you can open in Chrome. The scan needs no ownership, no verification and no access to a dashboard, which makes it just as usable on a competitor's page as on your own.

How is this different from a site-wide AI-readiness scanner?#

Scope and moment. A crawler audits a domain and hands you a backlog; this audits the page in front of you while you are the person editing it. For whole-site scoring or a check that runs in CI, use a scanner built for that — the comparison above lays out which tool answers which question.

What's new

  • 0.2.2

    WebMCP agent-readiness detection updated for Chrome 149’s current API.

  • 0.2.1

    Fixed a scan regression so audits run reliably on every page.

  • 0.2.0

    Generator suite on on-device AI: the audit now hands you ready-to-paste JSON-LD and llms.txt — plus a ninth check, entity authority (sameAs).

Ready to try AEO Checker?

Add to Chrome

View as Markdown · for AI agents and offline reading

Other extensions