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.

magento2-module 2.4.6-2.4.9 Compatible Based on composer requirements only QA: failed MIT
Viewing version 2.0.1. Latest version is 3.0.0. Switch to latest

Angeo AEO Audit — AI Engine Optimization for Magento 2

Packagist Version
License
PHP

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 CheckerInterface implementations
  • 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.

Versions
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.

License
MIT
Homepage
https://angeo.dev
Authors
Make it pay

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.