Skip to main content

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

Project description

AEO Auditor CLI

PyPI version 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 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

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.2.0.tar.gz (155.0 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.2.0-py3-none-any.whl (135.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aeo_audit-1.2.0.tar.gz
  • Upload date:
  • Size: 155.0 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.2.0.tar.gz
Algorithm Hash digest
SHA256 cd830ecf85f5f4317a77ed507aee53ae71ed2ec3902857f9d74054262654d083
MD5 20bd977b8c61581292a52052b5af9634
BLAKE2b-256 5014cfaba85325ce24e46ac000965597d44a8fde135437fc52874d72836da0da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aeo_audit-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 135.0 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 121eba2cf80ff319d21a560ad037053f3b18ee5ae64a9dd05788a40a178df9e8
MD5 fb98c9e388755f4faafeb8023a6614cb
BLAKE2b-256 dd4893d5ef78969d6b23fcae94c64b3e4ee3960d691f74b02f1cce303bf087e3

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