Observed since 20 Oct, 20:24 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
CLI tool to scan websites and score their Agent/Engine Optimization (AEO) readiness.
PageSpeed for AI agents. Scan any website and score its Agent/Engine Optimization (AEO) readiness across 5 dimensions — Discovery, Identity, Capabilities, Commerce, and Trust — then get a graded report with prioritized, actionable fixes.
Grades are relative: a site is ranked against a benchmark corpus (A = top tier of agent-readiness today), so the score stays a meaningful, movable target while agent-native standards are still emerging.

graph TD
CLI[CLI: aeo-audit] --> Engine[ScanEngine]
Engine --> Config[ConfigLoader]
Engine --> Crawler[Playwright Crawler]
Engine --> Registry[CheckRegistry]
Crawler --> Fetch[Fetch URL & Render DOM]
Registry --> Run[Run 26 Audit Checks]
Run --> Score[Scoring Pipeline]
Score --> Reporter[ReporterFactory]
Reporter --> Terminal[Rich Terminal]
Reporter --> HTML[HTML Report]
Reporter --> PDF[WeasyPrint PDF]
Reporter --> JSON[JSON Metadata]
PDF reports require external layout libraries installed on your OS:
macOS (Homebrew):
brew install pango cairo gdk-pixbuf upx
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y libpango-1.0-0 libcairo2 libgdk-pixbuf-2.0-0 upx
pip / pipx (Recommended)pipx install aeo-audit # isolated CLI install (recommended)
# or: pip install aeo-audit
# bleeding edge from main:
# pipx install git+https://github.com/AJ-EN/aeo-audit.git
That's it — on your first scan, aeo-audit downloads the headless Chromium it needs automatically (one-time, ~30s). To pre-install it yourself:
playwright install chromium
Run the automated installation script:
curl -fsSL https://raw.githubusercontent.com/AJ-EN/aeo-audit/main/scripts/install.sh | bash
[!IMPORTANT] The binary still needs a Chromium runtime. If a scan reports a missing browser, install one with
playwright install chromiumand point the binary at it:export PLAYWRIGHT_BROWSERS_PATH="$HOME/Library/Caches/ms-playwright"(macOS) or the equivalent cache path on your OS.
git clone https://github.com/AJ-EN/aeo-audit.git
cd aeo-audit
pip install -e .
playwright install chromium
[!NOTE] If WeasyPrint throws rendering or font warnings on Python 3.14+, we recommend pinning
pydyf==0.10.0.
Scan a site and generate reports using the scan command:
# Terminal report (default)
aeo-audit scan https://api.example.com --format terminal
# Premium HTML report with embedded graphs
aeo-audit scan https://api.example.com --format html --output report.html
# Accessible PDF report
aeo-audit scan https://api.example.com --format pdf --output report.pdf
# Machine-readable JSON report
aeo-audit scan https://api.example.com --format json --output report.json
Each of the 26 checks returns a raw score (0.0–1.0). Checks roll up into 5 weighted category scores, which roll up into a single 0–100 overall score. The grade is then assigned by percentile rank against a benchmark corpus — so it reflects how a site compares to the field, not an absolute bar that nobody clears yet.
aeo-audit is foundation-weighted: dimensions where well-run APIs already differ today (Trust, Capabilities, Discovery) carry the most weight, while emerging agent-native dimensions (Identity, parts of Commerce) contribute upside without dominating the score.
| Category | Weight | What it measures |
|---|---|---|
| Discovery | 0.25 | robots/agent access, sitemap, .well-known, DNS, and MCP discovery. |
| Capabilities | 0.25 | Interface docs — OpenAPI, JSON Schema, GraphQL, async webhooks. |
| Trust | 0.25 | SLA/status page, structured errors, health checks, audit logs. |
| Commerce | 0.15 | Agent transactions — pricing, Stripe/crypto hints, usage metering. |
| Identity | 0.10 | Ownership & auth — DID docs, OAuth metadata, wallet hints. |
| Grade | Percentile | Meaning |
|---|---|---|
| A | top 10% | Leading the field on agent-readiness. |
| B | top 30% | Strong; a few high-leverage gaps. |
| C | top 60% | Foundational signals present, frontier gaps. |
| D | top 85% | Minimal agent-readiness. |
| F | bottom 15% | Not addressed. |
Weights, thresholds, and grade bands are all defined in config.yaml and overridable via a custom config. See docs/CONFIG_REFERENCE.md.
You can easily configure aeo-audit as a compliance block (exits with code 2 if scores drop below requirements). Here's a brief example for GitHub Actions:
- name: AEO Compliance Gate
run: aeo-audit scan https://preview.example.com --fail-on-grade B --format terminal
See docs/CI_RECIPES.md for GitHub Actions, GitLab CI, and Git hooks code snippets.
To implement custom checking rules, subclass BaseCheck and expose it under the aeo_audit.checks entrypoint.
See docs/CUSTOM_CHECKS.md for a complete template walkthrough.
If running the scanner for the first time, you may need to install Playwright's headless browser binaries:
playwright install chromium
By default, the SQLite cache database is created in your working directory as .aeo_cache.db to speed up consecutive audit scans. This can be customized or disabled using --no-cache.
Ensure you have installed the native pango and cairo system dependencies (see Step 1 of installation).
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.2.1 | 10 Jun 2026 | 30 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 20:24 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:00e814f9c4a2307999ba264653097e8e9de673c06de7be2b5fd131d5b6527f6d