PHPackages                             angeo/module-aeo-audit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. angeo/module-aeo-audit

ActiveMagento2-module[Utility &amp; Helpers](/categories/utility)

angeo/module-aeo-audit
======================

Magento 2 AEO (AI Engine Optimization) audit — scores your store across 15 technical signals for AI search and agentic commerce: robots.txt AI-bot policy, llms.txt, llms.jsonl, JSON-LD (Product, Organization, FAQ), merchant return + shipping policies, sitemap.xml, UCP profile, AI product feed, Open Graph, canonical + hreflang, JSON-LD quality, .well-known endpoint matrix and Core Web Vitals via CrUX. Includes a Score Trend dashboard, admin UI, cron scheduling, dynamic fix commands and a dependency-injected extension point for custom checkers.

3.2.0(1mo ago)1139911MITPHPPHP ~8.2.0||~8.3.0||~8.4.0||~8.5.0CI passing

Since Apr 2Pushed 1mo agoCompare

[ Source](https://github.com/angeo-dev/module-aeo-audit)[ Packagist](https://packagist.org/packages/angeo/module-aeo-audit)[ Docs](https://angeo.dev)[ RSS](/packages/angeo-module-aeo-audit/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (43)Versions (10)Used By (1)

Angeo AEO Audit — AI Engine Optimization for Magento 2
======================================================

[](#angeo-aeo-audit--ai-engine-optimization-for-magento-2)

[![CI](https://github.com/angeo-dev/module-aeo-audit/actions/workflows/ci.yml/badge.svg)](https://github.com/angeo-dev/module-aeo-audit/actions/workflows/ci.yml)[![Packagist Version](https://camo.githubusercontent.com/181037bd739ce5395d9e38ac4198e35f0d5e4765bd9545dd69d1d14a2638f2b7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e67656f2f6d6f64756c652d61656f2d61756469742e737667)](https://packagist.org/packages/angeo/module-aeo-audit)[![Packagist Downloads](https://camo.githubusercontent.com/9e1bfd49fec73813964f9d1e6d68ae6077be3df57681a7f44619b03140cae938/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616e67656f2f6d6f64756c652d61656f2d61756469742e737667)](https://packagist.org/packages/angeo/module-aeo-audit)[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)[![PHP](https://camo.githubusercontent.com/9b9d2d9d7b77ca29b7a00d55a7860bd8236fd1d6d9e9533ccf5600455b7048ca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e32253230253743253230382e33253230253743253230382e34253230253743253230382e352d3838393242462e737667)](https://php.net)[![Magento](https://camo.githubusercontent.com/daa1314c15054c098be6dd5e6c1ca8495fc3f5e56e4cc5f65755013e1a0502cf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d6167656e746f2d322e342e36253230253743253230322e342e37253230253743253230322e342e38253230253743253230322e342e392d4545363732462e737667)](https://magento.com)

**One CLI command that tells you exactly why ChatGPT, Gemini, Claude, and Perplexity aren't recommending your store — and how to fix it.**

- 🏠 Project home: [angeo.dev](https://angeo.dev)
- 📦 Source: [github.com/angeo-dev/module-aeo-audit](https://github.com/angeo-dev/module-aeo-audit)
- 🐛 Issues: [github.com/angeo-dev/module-aeo-audit/issues](https://github.com/angeo-dev/module-aeo-audit/issues)
- 📖 Full guide: [Magento 2 AEO Guide 2026](https://angeo.dev/magento-2-aeo-guide/)

---

Compatibility
-------------

[](#compatibility)

ComponentVersionMagento Open Source2.4.6, 2.4.7, 2.4.8, 2.4.9Adobe Commerce2.4.6, 2.4.7, 2.4.8, 2.4.9Adobe Commerce CloudAll current versionsPHP8.2, 8.3, 8.4, 8.5ThemesLuma, HyväTested with: Magento Open Source 2.4.7-p3 + PHP 8.3 + Hyvä 1.3.

---

What's new in v3.0.0
--------------------

[](#whats-new-in-v300)

> **Major release** — see [CHANGELOG.md](CHANGELOG.md) for the breaking-change migration guide if you have custom checkers.

**15 signals** (up from 9), reflecting the actual AEO landscape of 2026: AI shopping integrations, merchant policies, agentic commerce, and structured-data quality.

**6 new checkers:**

- `merchant_policies` — `MerchantReturnPolicy` + `OfferShippingDetails` — required by Google AI Mode and ChatGPT Shopping since Jan 2026
- `organization_schema` — brand entity in AI knowledge graphs
- `ucp_profile` — Universal Commerce Protocol (`/.well-known/ucp`), with built-in security check that detects leaked JWK private keys
- `jsonld_quality` — three-page schema breadth audit (homepage / category / product), `WebSite+SearchAction`, `BreadcrumbList`, `ItemList`
- `well_known` — discovery matrix for `/.well-known/{ucp,ai-plugin.json,security.txt,mcp}`
- `core_web_vitals` — LCP / INP / CLS via Google CrUX API (free, opt-in with API key)

**Refactored architecture** (this is the BC-break):

- Shared `Service\HttpCache` — eliminates duplicate fetches across checkers (hundreds of redundant HTTP requests on multi-store audits before, dozens now)
- `Service\StoreUrlSampler` — single source of truth for product / category / CMS URL sampling
- New `--category` and `--fail-on-severity` CLI flags for CI workflows
- Per-checker exception isolation — slow or failing checkers no longer halt the audit run

> **Note on access-log monitoring**: an `ai_bot_traffic` checker was prototyped during v3 development and excluded from the release after security review — it encouraged broad read access on `/var/log/nginx/`, didn't work on Cloud/containerised hosting, and was dominated by false positives behind edge caches. AI-bot traffic is better measured at the edge (Fastly/Cloudflare Analytics) or via APM (New Relic, Datadog) than inside a PHP module. See CHANGELOG.md "Considered and rejected" for the full rationale. The `live_signal` category remains in `CheckerInterface`for third-party modules with secure live-signal sources — notably `angeo/module-aeo-brand-visibility`.

---

What it checks — 15 signals
---------------------------

[](#what-it-checks--15-signals)

\#SignalCodeWeightCategoryWhat it validates1**robots.txt — AI bots**`robots_txt`1.0technical12 AI bots, syntax errors, versioned UAs, conflicting rules2**llms.txt — content map**`llms_txt`1.0technicalSpec compliance + store-locale + currency match + cross-host links3**llms.jsonl — catalog**`llms_jsonl`0.75technicalJSON Lines validity, required fields, eCommerce fields4**sitemap.xml**`sitemap`0.8technicalXML, lastmod, `.gz`, catalog disproportion5**Product schema**`product_schema`1.0technicalJSON-LD on real product, offers, Hyvä detection6**Merchant policies** ★ NEW`merchant_policies`0.9technical`hasMerchantReturnPolicy`, `OfferShippingDetails`, `priceValidUntil`, `itemCondition`7**Organization schema** ★ NEW`organization_schema`0.8technical`Organization` / `OnlineStore` on homepage, `sameAs`, logo8**UCP profile** ★ NEW`ucp_profile`0.9technical`/.well-known/ucp`, signing keys, leaked-private-key detection9**AI product feed**`ai_product_feed`1.0feedFeed file, `/.well-known/ai-plugin.json`, REST endpoint10**JSON-LD quality** ★ NEW`jsonld_quality`0.7technicalBreadcrumb, ItemList, WebSite+SearchAction, duplicate schemas11**Canonical + hreflang**`canonical`0.7technicalCanonical agrees with og:url + JSON-LD url; hreflang on multi-store12**Open Graph**`open_graph`0.7technicalAll 5 OG tags, description length13**FAQ schema**`faq_schema`0.5technicalFAQPage JSON-LD on homepage or sampled CMS page14**Well-known matrix** ★ NEW`well_known`0.5technicalucp / ai-plugin.json / security.txt / mcp inventory15**Core Web Vitals** ★ NEW`core_web_vitals`0.5external\_apiLCP / INP / CLS via Google CrUX (API key required)★ NEW = added in v3.0.0.

---

Installation
------------

[](#installation)

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

### Official distribution channels

[](#official-distribution-channels)

This module is distributed **only** through the following channels:

ChannelURLComposer / Packagist[packagist.org/packages/angeo/module-aeo-audit](https://packagist.org/packages/angeo/module-aeo-audit)Source code[github.com/angeo-dev/module-aeo-audit](https://github.com/angeo-dev/module-aeo-audit)Issue tracker[github.com/angeo-dev/module-aeo-audit/issues](https://github.com/angeo-dev/module-aeo-audit/issues)All angeo packages[packagist.org/packages/angeo/](https://packagist.org/packages/angeo/) · [github.com/angeo-dev](https://github.com/angeo-dev/)**No custom Composer repository is required.** The `composer require` command above resolves the package directly from Packagist, which every Magento installation already trusts by default. If a third-party site instructs you to run `composer config repositories.* ...` before installing, that is **not** an official Angeo instruction — the only supported sources are:

- **Packagist** —
- **GitHub** —

Third-party sites may mirror or index this package. Those listings are not maintained by Angeo, and any quality, test, or security ratings shown there are produced by third parties using undisclosed criteria. The authoritative build status is the CI badge at the top of this file, which runs PHPCS, PHPStan and PHPUnit against PHP 8.2–8.4 on every commit.

For full coverage, install the companion modules:

```
composer require \
  angeo/module-llms-txt \
  angeo/module-rich-data \
  angeo/module-openai-product-feed \
  angeo/module-openai-product-feed-api \
  angeo/module-ucp \
  angeo/module-aeo-brand-visibility
```

---

CLI usage
---------

[](#cli-usage)

```
# Audit all stores
bin/magento angeo:aeo:audit

# Specific store
bin/magento angeo:aeo:audit --store=en_us

# JSON output (for dashboards / CI)
bin/magento angeo:aeo:audit --format=json

# Markdown report to file
bin/magento angeo:aeo:audit --format=markdown --output=/var/www/html/aeo-report.md

# Fast technical-only checks (skip external APIs)
bin/magento angeo:aeo:audit --category=technical

# Run only external-API checks (Core Web Vitals + any third-party live signals)
bin/magento angeo:aeo:audit --category=external_api,live_signal

# Fail build if score below threshold
bin/magento angeo:aeo:audit --fail-on=80

# Fail build if any critical-severity check fails
bin/magento angeo:aeo:audit --fail-on-severity=critical

# Run without saving to DB (CI / read-only environments)
bin/magento angeo:aeo:audit --no-save
```

Sample output:

```
  AEO Score: [████████████████░░░░] 81% — Good
  ✓ Pass: 12  ⚠ Warn: 3  ✗ Fail: 1

  Critical fixes needed:
  → Install angeo/module-openai-product-feed and register at chatgpt.com/merchants

  💡 Fix with angeo modules:
     composer require angeo/module-openai-product-feed angeo/module-openai-product-feed-api
     composer require angeo/module-ucp

```

---

Configuration
-------------

[](#configuration)

Some checkers need configuration. All are accessed via: **Stores → Configuration → Angeo AEO**.

SettingPurpose**CrUX API Key**Required by `core_web_vitals` checker. Free key from [console.cloud.google.com](https://console.cloud.google.com/) — enable the Chrome UX Report API. Stored encrypted.---

Admin UI
--------

[](#admin-ui)

- **Marketing → Angeo AEO → AEO Audit Results** — full history grid
- **Marketing → Angeo AEO → Score Trend** — line chart of AEO score over time
- **▶ Run Audit Now** button (on the Audit Results grid, Score Trend, and result view pages) — triggers an on-demand audit. Since 3.1.0 this is a POST action protected by the admin form key and the dedicated `Angeo_AeoAudit::run_audit` ACL permission; the old GET menu entry was removed.

---

Score interpretation
--------------------

[](#score-interpretation)

ScoreLabelTypical situation0–25%CriticalDefault Magento install. AI crawlers blocked. No schema.26–50%Needs ImprovementSome fixes applied. Feed or merchant policies missing.51–75%Needs ImprovementCore signals in place. UCP, ai-plugin.json, or hreflang missing.76–90%GoodStrong foundation. Minor gaps in well-known or CWV.91–100%ExcellentFull 2026 AEO compliance.---

Cron
----

[](#cron)

Weekly audit every Monday at 03:00 server time. Results saved to DB, last 50 per store retained.

```
bin/magento cron:run --group=default
```

For fast daily checks (without external APIs or log scans), schedule an additional cron job calling the audit with `--category=technical`.

---

Extending with custom checks
----------------------------

[](#extending-with-custom-checks)

Implement `Angeo\AeoAudit\Api\CheckerInterface` (or extend `Angeo\AeoAudit\Model\Checker\AbstractChecker`, which provides HTTP cache, URL sampling and JSON-LD parsing), and register via `di.xml`:

```

            Vendor\Module\Model\Checker\MyChecker

```

v3 interface:

```
public function getName(): string;       // "My Custom Check"
public function getCode(): string;       // "my_check"
public function getWeight(): float;      // 0.0–1.0
public function getCategory(): string;   // CheckerInterface::CATEGORY_*
public function getSeverity(): string;   // CheckerInterface::SEVERITY_*
public function getFixCommand(): string; // "composer require vendor/fix-module" or ""
public function check(\Magento\Store\Api\Data\StoreInterface $store): CheckResult;
```

Migrating from v2? See [CHANGELOG.md](CHANGELOG.md) for the migration guide.

---

Running tests
-------------

[](#running-tests)

```
vendor/bin/phpunit -c app/code/Angeo/AeoAudit/phpunit.xml
```

v3 ships with unit tests covering all 15 checkers, both services (`HttpCache`, `StoreUrlSampler`), the `AuditRunner`, and the report value objects.

---

Code quality
------------

[](#code-quality)

```
# Magento Coding Standard
vendor/bin/phpcs --standard=Magento2 \
    --extensions=php,phtml --severity=10 \
    app/code/Angeo/AeoAudit/

# PHPStan static analysis
vendor/bin/phpstan analyse -l 5 app/code/Angeo/AeoAudit/
```

---

The Angeo AI Visibility Suite
-----------------------------

[](#the-angeo-ai-visibility-suite)

ModuleSignalPurpose[`angeo/module-aeo-audit`](https://packagist.org/packages/angeo/module-aeo-audit)—**This module** — audit all 15 signals[`angeo/module-robots-txt-aeo`](https://packagist.org/packages/angeo/module-robots-txt-aeo)\#1Inject AI bot rules into robots.txt[`angeo/module-llms-txt`](https://packagist.org/packages/angeo/module-llms-txt)\#2, #3Generate llms.txt and llms.jsonl[`angeo/module-rich-data`](https://packagist.org/packages/angeo/module-rich-data)\#5, #6, #7, #13Product, Organization, FAQ JSON-LD + merchant policies[`angeo/module-openai-product-feed`](https://packagist.org/packages/angeo/module-openai-product-feed)\#9ACP product feed for ChatGPT Shopping[`angeo/module-openai-product-feed-api`](https://packagist.org/packages/angeo/module-openai-product-feed-api)\#9REST API — 6 ACP endpoints[`angeo/module-openai-instant-checkout`](https://packagist.org/packages/angeo/module-openai-instant-checkout)—Agentic Commerce Protocol — instant checkout from ChatGPT[`angeo/module-ucp`](https://packagist.org/packages/angeo/module-ucp)\#8Universal Commerce Protocol — `/.well-known/ucp`[`angeo/module-aeo-brand-visibility`](https://packagist.org/packages/angeo/module-aeo-brand-visibility)(extends)Live AI visibility across ChatGPT, Claude, Perplexity, Gemini, Groq---

Contributing
------------

[](#contributing)

Issues and PRs welcome at [github.com/angeo-dev/module-aeo-audit](https://github.com/angeo-dev/module-aeo-audit).

Before opening a PR:

1. Run `vendor/bin/phpunit -c phpunit.xml` — all tests must pass
2. Run `vendor/bin/phpcs --standard=Magento2` — no MCS violations
3. Add tests for any new checker

---

License
-------

[](#license)

MIT — see [LICENSE](LICENSE)

---

Made with care by [Ievgenii Gryshkun](https://angeo.dev) — open-source contributions to the Magento + AI commerce ecosystem.

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance94

Actively maintained with recent releases

Popularity24

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~13 days

Recently: every ~20 days

Total

9

Last Release

31d ago

Major Versions

1.0.0 → 2.0.02026-04-16

2.1.2 → 3.0.02026-05-28

PHP version history (3 changes)1.0.0PHP &gt;=8.2

2.1.2PHP ~8.2.0||~8.3.0||~8.4.0

3.2.0PHP ~8.2.0||~8.3.0||~8.4.0||~8.5.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/557748?v=4)[angeo](/maintainers/angeo)[@angeo](https://github.com/angeo)

---

Tags

adobe-commerceaeoaeo-auditai-engine-optimizationai-searchai-visibilityauditchatgptecommercegenerative-engine-optimizationjson-ldllms-txtmagentomagento2phprobots-txtsitemapstructured-dataJSON-LDstructured-dataGeminiclaudemagento2ChatGptperplexityrobots.txtmagento 2 modulecore-web-vitalsschema markupangeoagentic commerceaeollms.txtai-searchucpaeo auditai engine optimizationai visibilitychatgpt shoppingllms.jsonlmerchant return policyoffer shipping details

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/angeo-module-aeo-audit/health.svg)

```
[![Health](https://phpackages.com/badges/angeo-module-aeo-audit/health.svg)](https://phpackages.com/packages/angeo-module-aeo-audit)
```

###  Alternatives

[angeo/module-llms-txt

Magento 2 module for AI Engine Optimization (AEO). Generates spec-compliant llms.txt and llms-full.txt per llmstxt.org standard, plus streaming JSONL for vector indexing. Multi-store, multi-website, CLI, cron, async admin UI, Page Builder-aware sanitization, customer-group pricing, atomic writes, ETag/Cache-Control, .md mirrors.

132.2k](/packages/angeo-module-llms-txt)[mollie/magento2

Mollie Payment Module for Magento 2

1142.0M17](/packages/mollie-magento2)[run-as-root/magento2-prometheus-exporter

Magento2 Prometheus Exporter

69362.0k](/packages/run-as-root-magento2-prometheus-exporter)[loki/magento2-components

Core module for defining Alpine.js components with advanced AJAX features

1015.1k29](/packages/loki-magento2-components)[buckaroo/magento2

Buckaroo Magento 2 extension

32426.0k8](/packages/buckaroo-magento2)[zwernemann/module-withdrawal

Magento 2 EU Withdrawal Button Module - Adds a withdrawal/revocation button for orders in compliance with EU Directive (EU) 2023/2673

2610.9k2](/packages/zwernemann-module-withdrawal)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
