Canonical definition

AEO Score – Definition, Signals and Calculation

An AEO score is a weighted 0-100 measure of how ready an online store is for AI systems. The angeo audit checks 20 signals – crawler access, llms.txt, structured data, feeds, agent endpoints and real crawler visits – and gives each a weight. A pass earns the full weight, a warning half, a failure nothing.

In one sentence

One number for how well AI crawlers and shopping agents can reach, read and act on a store – not a prediction that an assistant will recommend it.

How the score is calculated

Each signal has a weight between 0.5 and 1.0. A check that passes earns its full weight, a warning earns half, and a failure earns nothing. The score is the earned weight divided by the total weight of the signals that ran, as a percentage.

score = round( sum(earned) / sum(weight) × 100 )

pass = 1.0 × weight
warn = 0.5 × weight
fail = 0

A signal you switch off for a store view is left out of both sides of the division, so it does not pull the score down. A signal that cannot finish is not skipped: Core Web Vitals without a CrUX API key returns a warning and counts half. Switch it off for the store view if you do not use CrUX.

ScoreLabel
85-100Excellent
65-84Good
40-64Needs Improvement
0-39Critical

Severity follows the weight unless a check sets its own: weight 0.8 or more is critical, 0.6 or more is important, the rest is informational.

The 20 signals

These are the checks registered in angeo/module-aeo-audit 4.2.3. With angeo/module-aeo-brand-visibility installed, a 21st live signal, brand_visibility (weight 1.0), joins the same score.

#SignalCodeWeightCategory
1robots.txt – AI botsrobots_txt1.0technical
2llms.txt – content mapllms_txt1.0technical
3llms.jsonl – catalogllms_jsonl0.75technical
4sitemap.xmlsitemap0.8technical
5Product schemaproduct_schema1.0technical
6Merchant policiesmerchant_policies0.9technical
7Organization schemaorganization_schema0.8technical
8UCP profileucp_profile0.9technical
9AI product feedai_product_feed1.0feed
10JSON-LD qualityjsonld_quality0.7technical
11Canonical + hreflangcanonical0.7technical
12Open Graphopen_graph0.7technical
13FAQ schemafaq_schema0.5technical
14Well-known matrixwell_known0.5technical
15Core Web Vitalscore_web_vitals0.5external_api
16WAF reality checkwaf_reality0.9technical
17AI crawler activityai_crawler_activity0.5live_signal
18A2A Agent Cardagent_card0.6technical
19llms.txt v2 link relationslink_relations0.7technical
20agents.mdagents_md0.7technical

Two ways to measure: inside and outside

CLI audit (inside Magento)Web scan (outside)
Signals20 (21 with brand visibility)14
ResultOne score per store viewTwo scores: AI Discovery and Agentic Readiness
SeesConfiguration, file freshness, real crawler visits in your logs, CrUX field dataWhat an AI crawler receives: redirects, 401 and 403 responses, WAF challenges
Runsbin/magento angeo:aeo:auditangeo.dev/ai-magento-audit, no install

AI Discovery asks whether AI systems can find, fetch and read the store. Agentic Readiness asks whether a shopping agent can act on it: a UCP profile, a reachable MCP endpoint, the well-known files. The web scan keeps them apart because agentic adoption is still early; merged into one number, a near-universal zero would hide the discovery work that already pays off.

Where the two disagree on one signal, the outside view is usually right about what an agent experiences. A feed that looks installed from inside can return 401 to an anonymous caller.

Run it

composer require angeo/module-aeo-audit
bin/magento setup:upgrade

bin/magento angeo:aeo:audit                              # all store views
bin/magento angeo:aeo:audit --store=default --format=json
bin/magento angeo:aeo:audit --fail-on=80                 # CI: exit 1 below 80%
bin/magento angeo:aeo:audit --fail-on-severity=critical  # CI: exit 1 on any critical failure
What the score does not measure

It measures whether AI systems can read and act on a store. It does not measure whether an assistant names it. In our pre-registered study of 458 businesses, four of these signals did not separate often-named shops from once-named ones. For that question, measure AI share of voice.

Questions

What is an AEO score?
A weighted 0-100 score of how ready a store is for AI systems. The angeo audit checks 20 signals; a pass earns the full weight, a warning half, a failure nothing.
How many signals does the AEO audit check?
20 in angeo/module-aeo-audit 4.2.3, and 21 when angeo/module-aeo-brand-visibility is installed. The web scan checks 14 from outside the store.
What is the difference between AI Discovery and Agentic Readiness?
AI Discovery measures whether AI systems can find and read the store. Agentic Readiness measures whether a shopping agent can act on it, through a UCP profile, an MCP endpoint and the well-known files. The web scan reports them as two scores.
Why does the CLI audit give a different score from the web scan?
The CLI audit checks 20 signals and sees inside the store; the web scan checks 14 and sees what a crawler receives. They use the same weights, so a single signal means the same in both.
What is a good AEO score?
65 or more is Good and 85 or more is Excellent. A default Magento install usually scores far lower, mostly because of robots.txt, missing llms.txt and incomplete product schema.
Does a high AEO score mean ChatGPT will recommend my store?
No. It means the store is readable and usable for AI systems. Whether an assistant names it also depends on price, reviews and coverage on other sites.

Related

Sources

Checked 24 September 2026 against the source of angeo/module-aeo-audit 4.2.3 (20 checkers registered in etc/di.xml) and angeo/module-aeo-brand-visibility 4.0.1. Web scan signal count as listed on the scan page. Disclosure: we build both modules and the scan.

More on this topic