000 H1 CTA
inspector/v2 · mit licensed · open source · self-host last audit · just now

// others monitor · we fix

Here's what AI extracts
when it visits your site.

MIT CLI for crawler access and extractability — not a citation tracker. 12 dimensions aeorank-cli@0.1.1 actually scores, then the 8 files it writes. Profound, Peec, Otterly, Scrunch, and Athena watch mentions. We fix upstream readability. The GitHub Action can fail the PR if GPTBot is blocked.

~/your-site · terminal
npx aeorank-cli@0.1.1 scan https://your-site.com

No account · copy the command above or see CLI docs · hosted app is experimental (dev)

  • MIT
  • CLI free
  • CI crawler gate
  • 8 files
https://your-site.com · ·
100% what visitors see
✓ TITLE Your Site — Do Great Things
✗ LLMS.TXT 404 · not found
✗ ROBOTS GPTBot disallowed
~ SCHEMA.ORG 1/9 types present
✗ GPTBOT blocked by robots
✗ CLAUDEBOT blocked by robots
~ SPEAKABLE 0 marked regions
✓ H1 1 · well-formed
~ AUTHOR no byline schema
✗ LAST-MODIFIED no freshness signal
extracted score // 12 dimensions
31 /100 F
31% what chatgpt extracts
12 dimensions · illustrative demo · aeorank-cli@0.1.1 crawled 14 pages · 0.9s fix failing checks → regenerate the 8 files → rescan
dimensions scored
12
files generated
8
framework plugins
11
first scan
<30s
license
MIT
SCAN

// live scan

Watch an actual audit stream past.

Same shape as an aeorank-cli@0.1.1 run — 12 dimensions, then the 8 files. Illustrative stream, not a live scan of your site. No LLM guesswork.

STREAMING node@v20 · aeorank-cli@0.1.1 · https://your-site.com
✓ title 64 chars · well-formed +2
✗ llms.txt 404 · not found -4
~ schema.org 1/9 types present -5
✗ gptbot blocked by robots.txt -6
✓ canonical present · single +1
✗ claudebot disallowed in /robots -4
~ speakable 0 regions marked -3
✓ h1 1 · matches <title> +2
✗ last-modified no freshness signal -3
✓ og:image 1200×630 · present +1
~ author schema.Person missing -2
✓ sitemap.xml 14 urls · fresh +2
✗ rss feed missing -2
✓ viewport responsive · present 0
~ attribution weak source phrases -2
✓ hreflang not needed 0
✗ perplexitybot blocked by robots.txt -4
✓ headings h1→h2→h3 · ordered +1
~ definitions 0 glossary terms -2
✓ title 64 chars · well-formed +2
✗ llms.txt 404 · not found -4
~ schema.org 1/9 types present -5
✗ gptbot blocked by robots.txt -6
✓ canonical present · single +1
✗ claudebot disallowed in /robots -4
~ speakable 0 regions marked -3
✓ h1 1 · matches <title> +2
✗ last-modified no freshness signal -3
✓ og:image 1200×630 · present +1
~ author schema.Person missing -2
✓ sitemap.xml 14 urls · fresh +2
✗ rss feed missing -2
✓ viewport responsive · present 0
~ attribution weak source phrases -2
✓ hreflang not needed 0
✗ perplexitybot blocked by robots.txt -4
✓ headings h1→h2→h3 · ordered +1
~ definitions 0 glossary terms -2
illustrative demo · 12 dimensions on aeorank-cli@0.1.1 final: 31/100 · grade F run the CLI for the 8 files →
01 · deterministic

No LLM. No drift.

Every check is a pure function of HTML, headers, and files. Tools that prompt an LLM to evaluate your site give a different score every run. AEOrank gives the same score every run — exactly what you want in CI.

assert.equal(scan(A), scan(A))
02 · transparent

Every criterion is readable source.

No proprietary black-box score. Each of the 12 dimensions is a deterministic check you can read in the repo. No vendor can change your score by changing their model.

packages/core/src/checks/*.ts
03 · actionable

Each failure ships with a fix.

Other tools monitor — they tell you you're invisible and send a dashboard. AEOrank hands you the exact 8 files the CLI writes, ready to drop into your site root. One command, not a citation promise.

./dist/llms.txt · ./dist/schema.json · …
/100

// anatomy of a score

Every point is auditable.

Your AEO score is a weighted sum of 12 dimensions aeorank-cli@0.1.1 scores (high / medium / low). Not a citation rank. The 36-row catalog in the repo is archived until a published CLI matches it.

POINTS · weighted GRADE · A+ → F RUN · deterministic
  1. HI

    High

    llms.txt · schema.org markup · content structure

    source aeorank-cli@0.1.1
  2. MD

    Medium

    AI crawler access · answer-first · FAQ & speakable · E-E-A-T · meta descriptions · citation anchors

    source aeorank-cli@0.1.1
  3. LO

    Low

    sitemap · HTTPS & redirects · page freshness

    source aeorank-cli@0.1.1
score = Σ (check · weight)  where  check ∈ 0…10  and weight ∈ high, medium, low
A+
95–100
crawler-ready
A
85–94
highly extractable
B
70–84
technically ready
C
55–69
partial readiness
D
40–54
weak signals
F
0–39
blocked or unreadable
FILES

// 8 generated files

Every failing check ships with a fix.

Every other AEO tool monitors — they hand you a dashboard and a todo list. AEOrank writes the eight files the published CLI generates (no ai.txt, answers.json, or report.html stubs). Click a file to read a sample.

your-site.com /llms.txt
md 12 lines

Root-level policy + site map for LLMs. The emerging spec.

# Your Site

> Agent-readable map of this site. Not a citation guarantee.

## Core pages
- [Docs](/docs.md): developer reference
- [Pricing](/pricing.md): plans and costs
- [Blog](/blog.md): recent writing

## Optional
- [llms-full.txt](/llms-full.txt): extended extract
your-site.com /schema.json
json 13 lines

JSON-LD structured data for every significant page.

{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Your Site",
  "applicationCategory": "DeveloperApplication",
  "operatingSystem": "Web",
  "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "412"
  }
}
your-site.com /llms-full.txt
md 10 lines

Full-context version with Q&A pairs and entity disambiguation.

# Your Site — full context

> Extended extract for agents that want more than the llms.txt map.

## What is this product?
This product scores AI visibility and writes the files crawlers read.

## How do I scan a site?
npx aeorank-cli@0.1.1 scan https://your-site.com
your-site.com /CLAUDE.md
md 8 lines

Markdown context file for Claude and other coding agents.

# Your Site

- Platform: detected from HTML (Webflow, Next.js, WordPress, …)
- Purpose: agent-docs hygiene for coding assistants

## Commands
- npx aeorank-cli@0.1.1 scan https://your-site.com
your-site.com /robots-patch.txt
txt 13 lines

AI crawler rules to merge into robots.txt — GPTBot allowed.

# Append to robots.txt
User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Allow: /
your-site.com /faq-blocks.html
txt 5 lines

FAQPage + speakable markup you can drop into a page.

<section>
  <h2>What does AEOrank generate?</h2>
  <p>Eight files: llms.txt, llms-full.txt, CLAUDE.md, schema.json, robots-patch.txt, faq-blocks.html, citation-anchors.html, sitemap-ai.xml.</p>
</section>
your-site.com /citation-anchors.html
txt 3 lines

H2/H3 markup with id attributes for deep links.

<h2 id="what-is-aeo">What is AEO?</h2>
<p>AI Engine Optimization — structure a site so agents can extract answers.</p>
your-site.com /sitemap-ai.xml
xml 7 lines

AI-oriented sitemap generated from the pages we scanned.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://your-site.com/</loc>
    <lastmod>2026-09-03</lastmod>
  </url>
</urlset>
framework plugins

@aeorank/next, @aeorank/astro, @aeorank/nuxt, and 8 more. Drop one line of config and all 8 files are served at the correct route on build — no vendor dashboard to babysit.

self-hostable

Every file is generated locally. No upload, no telemetry, no required account, no API key. The entire toolchain is MIT and lives in your repo — if we vanished tomorrow, you'd still be fine.

deterministic

Same HTML in → same files out. Tests pin output so a diff in your PR check means something actually changed — not just that an LLM was in a different mood.

VS

// others monitor · we fix

Profound, Peec, Otterly, Scrunch, Athena watch mentions. We fix readability.

They are closed monitoring SaaS. AEOrank is MIT, CLI/CI-first, and writes the 8 files aeorank-cli@0.1.1 actually generates after scoring 12 dimensions. We do not promise citations. The evidenced lever is crawler access plus extractability.

// category split honest product state · Sep 2026
AEOrank Profound · Peec · Otterly · Scrunch · Athena
What they sell Score + generate the 8 fix files Brand-mention / prompt dashboards
License MIT · fork and self-host Closed source
How you run it CLI, GitHub Action, GitHub App (hosted app is experimental) Vendor dashboard
Scoring 12 dimensions (aeorank-cli@0.1.1) LLM prompt tracking (varies by run)
CI Action: fail the PR if GPTBot is blocked None
Output 8 files the published CLI writes Mention reports — no fix files
Citation guarantee None — crawler access + extractability None — they monitor mentions after the fact
Price CLI free · Pro $29/mo Typically $89–$499/mo
OSS

// open source by default

Built in public. Owned by you.

“Your AI visibility stack shouldn't live inside a vendor dashboard you can't read, can't fork, and can't afford."

Every AEO monitoring tool we looked at is closed-source SaaS — Profound, Peec, Otterly, Scrunch, Athena, typically $89–$499/mo. AEOrank is different on purpose. The core scanner, 11 framework plugins, the GitHub App, the GitHub Action, and every one of the 8 files we generate — all MIT licensed, all forkable, all self-hostable. You can stand the entire thing up inside your own infra in an afternoon.

The hosted app at app.aeorank.dev is experimental (Clerk Development) convenience — never because the tool needs it to work, and never the primary path to a score. If we vanished tomorrow, your CI would keep scoring, your files would keep regenerating, and your team would keep shipping. Try getting that commitment from a venture-backed dashboard.

license

MIT

primary lang

TypeScript

signup required

no

vendor lock

zero

Early days. If you star it, you actually move the needle.

// contributors see all on github →

Loading contributors from github.com…

INSTALL

// three ways in

Pick the surface that fits your team.

Same scorer under all three. Same 12 dimensions. Same 8 generated files. Pick the surface closest to where you already ship. The GitHub Action is the CI gate that can fail a PR if GPTBot is blocked.

Scan from your terminal

Zero install. Zero account. Zero API key. 12 dimensions, then the 8 files aeorank-cli@0.1.1 writes. To fail a PR if GPTBot is blocked, use the GitHub Action — that flag is not on npm 0.1.1.

latency ~30s per scan
# one-off audit on any site
$ npx aeorank-cli@0.1.1 scan https://your-site.com

  AEO Score: 31/100 (F)
  12 dimensions · 8 generated files

✔ wrote aeorank-output/llms.txt
✔ wrote aeorank-output/schema.json
✔ wrote aeorank-output/robots-patch.txt
✔ wrote aeorank-output/CLAUDE.md
… (+ 4 more)

Install, then forget

One click. Zero YAML. Every pull request gets a Check Run that fails if GPTBot is blocked. Score thresholds (fail-below) are Action-only — the App does not support them yet.

latency ~1 click · ~0 config
# Flow
1.  Install AEOrank on your repo
     github.com/apps/aeorank

2.  Open any PR
     → Check Run appears automatically

3.  Check summary example:
     ━━━━━━━━━━━━━━━━━━━━━━━━
     AEORANK · PR #419
     ━━━━━━━━━━━━━━━━━━━━━━━━
     score 67 → 72 (+5)  grade C → B
     ✔ llms.txt restored
     ✔ speakable markup added
     ✗ author.schema still missing

Full pipeline control

Pin a version, set fail-on-crawler-block (fail the PR if GPTBot is blocked) and an optional fail-below score. AEO as code — the same way tests and coverage already work.

latency ~8 lines of YAML
# .github/workflows/aeorank.yml
name: aeorank
on: [pull_request, push]

jobs:
  score:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: vinpatel/aeorank-action@v1
        with:
          url: https://${{ github.event.pull_request.head.ref }}.preview.example.com
          fail-below: 70
          fail-on-crawler-block: true
# what this adds to your repo
+ .github/workflows/aeorank.yml
# CLI writes (when you generate files):
+ aeorank-output/llms.txt
+ aeorank-output/schema.json
+ aeorank-output/robots-patch.txt
+ aeorank-output/CLAUDE.md
// framework plugins drop-in, MIT, one line of config
next.js ✓
astro ✓
nuxt ✓
sveltekit ✓
remix ✓
eleventy ✓
gatsby ✓
shopify ✓
vitepress ✓
docusaurus ✓
wordpress ✓
RANK

// AI visibility scoreboard

100 funded startups, scored with the same CLI.

Public snapshot from aeorank-cli — 12 dimensions you can run today. Below is the current top 10 from that board. No LLM evals, no inflated ranks, no citation claims.

scoreboard · public snapshot full board →
# company industry score grade distribution
01 PlanetScale devtools 71 /100 B
02 Neon devtools 69 /100 C
03 Aiven infra 65 /100 C
04 Runway ai / ml 64 /100 C
05 Segment martech 64 /100 C
06 Amplitude martech 63 /100 C
07 ClickUp saas 60 /100 C
08 MongoDB infra 60 /100 C
09 Klaviyo e-commerce 59 /100 C
10 Braze martech 58 /100 C
$

// pricing

Pricing, rendered as a report card.

Same CLI on every plan. We don't gate the 12 dimensions, the 8 generated files, or local scans. You pay for more sites and hosted scans. Pro is $29; closed monitoring dashboards typically run $89–$499/mo. The working free path is npx aeorank-cli@0.1.1 scan <url> — hosted signup is experimental (dev) and not required.

starter plan

Starter

B
$0 /mo

CLI is free. No credit card. No account.


✓ sites
1
✓ dashboard scans
3/mo
✓ CLI dimensions
12
✓ 8 generated files
ZIP
✓ CLI (local)
unlimited
✓ GitHub App
included
✓ 11 framework plugins
included

Good starting posture. Run aeorank-cli@0.1.1 locally — 12 dimensions, 8 files, unlimited scans. Hosted 1 site / 3 scans is experimental (dev) and is not required.

Scan with CLI

agency plan

Agency

A+
$99 /mo

50 client sites. Same 8 files.


✓ sites
50
✓ dashboard scans
500/mo
✓ CLI dimensions
12
✓ 8 generated files
ZIP
✓ everything in Pro
included

Built for teams running AEO as a service (crawler-gate first, then CLI, then human-reviewed fixes). Same scorer as Free — you pay for volume, not a fake API. Hosted checkout is experimental (dev).

Hosted Agency — $99 (experimental)
// what the others charge closed SaaS · mention tracking · none generate the 8 files
aeorank pro

$29/mo

score · generate · CI

Profound

closed

monitor · closed

Peec

closed

monitor · closed

Otterly

closed

monitor · closed

Scrunch

closed

monitor · closed

Athena

closed

monitor · closed

They're closed monitoring dashboards. We're MIT-licensed, self-hostable, and the published CLI writes 8 files — not 9, not ai.txt, not a citation guarantee.
FAQ

// what an AI crawler sees vs. what you read

FAQ, rendered twice.

Left: the JSON-LD we emit on this page, verbatim — exactly what an AI crawler extracts. Right: the same answers for human eyes. We practice what we score.

01 Will this actually help me rank in ChatGPT answers?

Alone, no. AEOrank scores 12 dimensions on aeorank-cli@0.1.1 — llms.txt, schema, crawler access, structure, answer-first, FAQ/speakable, E-E-A-T, meta descriptions, citation anchors, sitemap, HTTPS, freshness. Then it writes 8 fix files. The GitHub Action can fail a PR if GPTBot is blocked; that flag is not on npm 0.1.1. llms.txt is agent-docs hygiene, not a citation guarantee. We do not promise to get you cited.

02 What does deterministic scoring actually mean?

Every check is a pure function of HTML, headers, and file presence — no LLM calls, no randomness. Scan the same site twice, get the same score. That's how CI works. Tools that prompt GPT-4 to rate your site give you a different number on Tuesday than they did on Monday; you cannot fail a PR on that.

03 Is it really MIT?

Yes, and this is unusual in the category. Profound, Scrunch, Otterly, Peec, and AthenaHQ are all closed-source SaaS — the scoring logic is a black box on someone else's server. AEOrank's scanner core, all 11 framework plugins, the GitHub App, the GitHub Action, and the file generators are under MIT. You can fork it, audit the checks, and self-host the entire stack.

04 How is this different from Ahrefs, Semrush, or their AI add-ons?

Classical SEO tools check ranking signals for Google's blue-link results. AEOrank scores crawler access and extractability (12 dimensions on aeorank-cli@0.1.1) and writes the 8 files the CLI generates. Semrush's AI add-on and Ahrefs' Brand Radar report on visibility; neither writes those files.

05 What's the difference vs Profound, Scrunch, Otterly, Peec, or AthenaHQ?

They monitor: they run prompts through LLMs and tell you what AI said about your brand this week. AEOrank fixes upstream: 12 dimensions plus the 8 files aeorank-cli@0.1.1 writes. Typical monitoring plans run $89–$499/mo; AEOrank Pro is $29 and the CLI is free. Complements, not clones. Agency audits (including Mindtrades) still go crawler-gate first, then CLI, then human-reviewed fixes.

06 Can I use this in CI?

AEOrank is CLI/CI-first. The GitHub Action (vinpatel/aeorank-action) can fail the PR if GPTBot is blocked (fail-on-crawler-block). That flag is not on aeorank-cli@0.1.1. The GitHub App does not support fail-below yet (coming soon). Only claim merge-blocking for the gates that exist.

07 Does AEOrank send my site to an LLM?

No. The scanner is deterministic and never calls an external model. The CLI runs fully locally. The hosted app (experimental / Clerk Development) fetches your public URL over HTTPS exactly like any other crawler — it is not required to get a score.

08 What AI engines is it tuned for?

Crawler access is scored for GPTBot, ClaudeBot, PerplexityBot, and Google-Extended. That is technical readiness, not a citation tracker, and not a promise we add a new bot within a week.