angeo / module-aeo-audit
angeo/module-aeo-audit
Magento 2 AEO (AI Engine Optimization) Audit. v3 covers 15 signals — robots.txt AI bots, llms.txt + llms.jsonl, Product / Organization / FAQ schema, merchant return + shipping policies, sitemap.xml, UCP profile, AI product feed, OG tags, canonical + hreflang, JSON-LD quality, well-known endpoint matrix, Core Web Vitals via CrUX. Score Trend dashboard, Admin UI, cron, dynamic fix commands, dependency-injected extension point for custom checkers.
Angeo AEO Audit — AI Engine Optimization for Magento 2
One CLI command that tells you exactly why ChatGPT, Gemini, and Perplexity aren't recommending your store — and how to fix it.
What's new in v2.0.0
- Deep checks — robots.txt is now fully parsed (not string-searched); Product schema validates
offers.availability; sitemap checks XML validity and lastmod freshness; llms.txt validated against the actual spec - Weighted scoring — critical checks (robots, schema, feed) have weight 1.0; informational checks have lower weights; score reflects real impact
- Hyvä theme detection — Product schema check auto-detects Hyvä and gives a specific fix recommendation
- Admin UI — full results grid under Marketing → Angeo AEO → AEO Audit Results
- Cron scheduling — automatic weekly audit every Monday at 03:00; results saved to DB
- Run from Admin — Marketing → Angeo AEO → Run Audit Now
- Extensible via di.xml — third-party modules can inject custom
CheckerInterfaceimplementations - Safety net in
AuditRunner— uncaught exceptions in checkers are caught and recorded as FAIL, never crash the process
What it checks
| Check | Weight | Why it matters |
|---|---|---|
| robots.txt — AI bot access | 1.0 | GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended + 5 more; full parser |
| llms.txt — AI content map | 1.0 | H1 title, markdown links, section count, llms-full.txt bonus |
| sitemap.xml | 0.8 | XML validity, URL count, lastmod freshness, robots.txt reference |
| Product schema — JSON-LD | 1.0 | Real product page, offers.availability, Hyvä detection |
| FAQPage schema | 0.5 | Homepage + CMS FAQ pages |
| AI product feed | 1.0 | CSV/JSON feed, /.well-known/ai-plugin.json, REST API |
| Open Graph tags | 0.7 | All 5 required tags, description length check |
| Canonical tags | 0.6 | Presence + domain mismatch detection |
Installation
composer require angeo/module-aeo-audit
bin/magento setup:upgrade
bin/magento cache:flush
CLI usage
# Audit all stores
bin/magento angeo:aeo:audit
# Specific store
bin/magento angeo:aeo:audit --store=en_us
# JSON output (for dashboards)
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
# CI pipeline — fail build if score below 80%
bin/magento angeo:aeo:audit --fail-on=80
# Run without saving to DB (CI / read-only environments)
bin/magento angeo:aeo:audit --no-save
Admin UI
Navigate to Marketing → Angeo AEO → AEO Audit Results to view the full audit history grid with score, pass/warn/fail counts, triggered-by, and date columns.
Click View on any row for a detailed breakdown of all checks with messages and recommendations.
Click Run Audit Now to trigger an on-demand audit for all stores.
Cron
The module registers a weekly cron job that runs every Monday at 03:00 server time:
bin/magento cron:run --group=default
Results are saved automatically to the DB and visible in the Admin Grid. The last 50 results per store are retained; older records are pruned automatically.
To test the cron manually:
bin/magento angeo:aeo:audit # saves to DB same as cron
Extending with custom checks
Implement Angeo\AeoAudit\Api\CheckerInterface and register via di.xml:
<type name="Angeo\AeoAudit\Model\AuditRunner">
<arguments>
<argument name="checkers" xsi:type="array">
<item name="my_check" xsi:type="object">Vendor\Module\Model\Checker\MyChecker</item>
</argument>
</arguments>
</type>
Your checker must implement:
public function getName(): string; // "My Custom Check"
public function getCode(): string; // "my_check" — unique, used in JSON output
public function getWeight(): float; // 0.0–1.0
public function check(string $baseUrl): CheckResult;
Running tests
vendor/bin/phpunit -c app/code/Angeo/AeoAudit/phpunit.xml
The Angeo AI Suite for Magento 2
| Module | Purpose |
|---|---|
angeo/module-aeo-audit |
This module — audit your AI readiness |
angeo/module-llms-txt |
Generate llms.txt for ChatGPT, Claude, Gemini |
angeo/module-openai-product-feed |
AI product feed for ChatGPT Shopping |
angeo/module-openai-product-feed-api |
Full ACP REST API — 6 endpoints |
License
MIT — see LICENSE
No changelog yet
The vendor hasn't published a changelog. Tagged releases appear in the Versions tab.
| Version | Stability | QA Status | Released |
|---|---|---|---|
| 3.0.0 | stable | Fail | 2026-05-28 18:54:28 |
| 2.1.2 | stable | Not tested | 2026-05-15 10:02:00 |
| 2.1.1 | stable | Not tested | 2026-04-24 20:27:14 |
| 2.1.0 | stable | Not tested | 2026-04-24 19:37:35 |
| 2.0.1 | stable | Not tested | 2026-04-19 18:21:18 |
| 2.0.0 | stable | Not tested | 2026-04-16 19:27:52 |
| 1.0.0 | stable | Not tested | 2026-04-02 18:37:34 |
Requires 8
| Package | Constraint |
|---|---|
| magento/framework | ^103.0 |
| magento/module-backend | ^102.0 |
| magento/module-catalog | ^104.0 |
| magento/module-cms | ^104.0 |
| magento/module-config | ^101.2 |
| magento/module-store | ^101.1 |
| magento/module-ui | ^101.2 |
| php | ~8.2.0||~8.3.0||~8.4.0 |
Requires-dev 3
| Package | Constraint |
|---|---|
| magento/magento-coding-standard | ^33.0 |
| phpstan/phpstan | ^1.10 |
| phpunit/phpunit | ^10.0 |
Suggests 2
| Package | Reason |
|---|---|
| angeo/module-llms-txt | Automatically generate llms.txt after audit. |
| angeo/module-openai-product-feed | Generate AI product feed after audit. |
No QA results yet
QA pipelines haven't run for this version. Status appears here once the vendor publishes a tagged release that gets ingested.
Turn an existing module into recurring revenue.
If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.