Skip to main content

CLI tool to scan websites and score their Agent/Engine Optimization (AEO) readiness.

Project description

AEO Auditor CLI

Build Status License: MIT Python 3.11+

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.


Architecture Overview

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]

Installation

1. System Dependencies (Required for WeasyPrint PDF)

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
    

2. Install Methods

Method A: Via pipx (Recommended for Python CLI apps)

# From GitHub (works today):
pipx install git+https://github.com/AJ-EN/aeo-audit.git

# From PyPI (once published):
# pipx install aeo-audit

After installing, download the headless browser Playwright needs:

playwright install chromium

Method B: Standalone Binary Installer (No Python Needed)

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 chromium and point the binary at it: export PLAYWRIGHT_BROWSERS_PATH="$HOME/Library/Caches/ms-playwright" (macOS) or the equivalent cache path on your OS.

Method C: Source installation

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.


Quick Start

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

Scoring & Grading

Each of the 26 checks returns a raw score (0.01.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.

Category weights

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 bands (percentile)

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.


CI/CD Pipeline Integration

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.


Extending: Custom Check Plugins

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.


FAQ

1. How do I install Playwright browser binaries?

If running the scanner for the first time, you may need to install Playwright's headless browser binaries:

playwright install chromium

2. Where is the SQLite cache stored?

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.

3. Why are my PDF files empty or raising font errors?

Ensure you have installed the native pango and cairo system dependencies (see Step 1 of installation).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aeo_audit-1.1.1.tar.gz (153.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aeo_audit-1.1.1-py3-none-any.whl (133.9 kB view details)

Uploaded Python 3

File details

Details for the file aeo_audit-1.1.1.tar.gz.

File metadata

  • Download URL: aeo_audit-1.1.1.tar.gz
  • Upload date:
  • Size: 153.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aeo_audit-1.1.1.tar.gz
Algorithm Hash digest
SHA256 26a4be0d975272e6e8e8896065d99bdaa9a44a2044e86fbd367be2e0e4b30a9f
MD5 6af67c5c884ac22bb25ebb6ff3acb0a2
BLAKE2b-256 4f7edc56b25c6b03db6734448cb508201065d596d0456d024f1dc1205fcf0f69

See more details on using hashes here.

File details

Details for the file aeo_audit-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: aeo_audit-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 133.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aeo_audit-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1aaec601003b0c132394bb0c73e795723363d8e22646495a95caf202bfe23ed
MD5 593dda3bcf2f05e71425ba0585b4f018
BLAKE2b-256 2ccfb88a986293d61b190412036f3bfb7290238e5c5c1093c62cba43cb590247

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page