Skip to content

aeorank scan

Scan a website URL and generate an AEO score with a dimension breakdown and the 8 files the published CLI (aeorank-cli@0.1.1) actually writes.

Terminal window
aeorank scan <url> [options]
ArgumentDescription
<url>The website URL to scan (required)
FlagDefaultDescription
--format <type>humanOutput format: human (colored terminal) or json (machine-readable)
--output <dir>./aeorank-outputDirectory to write generated files
--config <path>Path to configuration file
--max-pages <n>200Maximum pages to crawl
--no-filesoffSkip writing generated files
--overwriteoffReplace existing output files
--browser / -boffUse Playwright for JavaScript-rendered pages
--pillar <name>Filter dimensions to one pillar
--page <path>Show score for a specific page path
--fail-on-crawler-blockoffFail the PR if GPTBot is blocked. Exit 2 if GPTBot, ClaudeBot, PerplexityBot, or Google-Extended is disallowed in robots.txt. A missing robots.txt is unknown, not blocked.
Terminal window
npx aeorank-cli scan https://example.com
Terminal window
npx aeorank-cli scan https://example.com --fail-on-crawler-block --format json --no-files

Exit codes:

CodeMeaning
0Scan succeeded (unknown crawlers do not fail)
1Scan or I/O error
2--fail-on-crawler-block and a gated bot is disallowed
Terminal window
npx aeorank-cli scan https://example.com --format json --no-files

The JSON object is the contract the GitHub Action consumes next. Always present:

  • version — CLI version from package.json (one source of truth)
  • score / grade
  • dimensionCountdimensions.length (currently 36)
  • generatedFiles — names of files actually written (currently 8)
  • crawlerAccess — per-bot map: allow | block | unknown
  • crawlerGate{ checkedBots, blockedBots, unknownBots, failed, robotsTxt }
    • failed is true only when a checked bot is disallowed
    • robotsTxt: "missing" means 404 / no file — status unknown, not blocked
Terminal window
npx aeorank-cli scan https://example.com --format json --no-files | jq '.crawlerAccess.GPTBot'
  1. AI crawler table — GPTBot, ClaudeBot, PerplexityBot, Google-Extended → allow / block / unknown
  2. Overall AEO score (0–100) and letter grade, plus the true dimension and file counts
  3. 36-dimension breakdown grouped by pillar
  4. Actionable next-step recommendations

See fields above. crawlerAccess uses allow / block / unknown (not allowed / disallowed) so Actions can consume it without remapping.

Crawler allowlists plus a CI gate prevent GPTBot (and peers) from staying blocked. llms.txt is agent-docs hygiene, not a citation guarantee.