# auto-geo — Open-source CLI that audits, generates and rewrites pages for AI-search citation, then measures engine citations.

> Source: CitedIndex — https://citedindex.com/auto-geo (structured, researched, re-verified)
> Facts last verified: 2026-09-12

auto-geo is an MIT-licensed command-line GEO engine from research lab Shadow that audits pages for citation readiness, generates and rewrites them to a strict structure, then measures whether AI search engines cite the domain. It runs locally, storing prompts and results as committable files.

| Fact | Value |
| --- | --- |
| Website | https://github.com/shadowresearch/auto-geo |
| Price | Audit, generate, fix, and track the pages large language models cite — one CLI, file-based, MIT. |
| Free tier | Yes |

MIT-licensed and free in full: no account, server or database, and no feature is withheld. Every command that calls an engine or an LLM (check, write, fix, prompts discover) spends against your own OpenAI, Anthropic, Perplexity, Google or xAI key instead.

## What it does

**Monitors AI answers** · Yes — Runs your tracked prompts against real grounded-search APIs and reports whether your domain appears in each answer's citations, saving every run locally.

> For each prompt, ask a real AI search engine and report whether your domain is among the citations. This is the ground truth doctor predicts.
> — https://github.com/shadowresearch/auto-geo · README, 'auto-geo check — measure actual citation coverage' section

**Optimises your content** · Yes — The doctor command audits any live URL against eight citation-readiness checks and returns a ranked fix list, so it grades pages you already have.

> Each check returns one of three things: a clear pass, a clear fail, or a fail with a fix suggestion.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/doctor.md · doctor docs, 'What it checks' introduction

**Generates content** · Yes — The write command turns target queries into validated JSON pages that already conform to the vendor's seven-block GEO architecture, one file per query.

> Give it your domain and the queries you want to be cited for; get back validated, publish-ready JSON files — one structured page per query, conforming to the full GEO architecture.
> — https://github.com/shadowresearch/auto-geo · README, 'auto-geo write — generate pages from queries' section

**Publishes to your site** · No — Output is JSON files on disk that you must publish yourself; the HTTP publish pipeline and CMS storage adapters were removed when the package became CLI-only.

> Files are ready to publish through your own pipeline — CMS import, static-site build, or custom renderer.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/write.md · write docs, opening paragraph under the example command

**Technical AEO** · Partly — Covers schema only: it audits and emits Article and FAQPage JSON-LD, but nothing in the documented commands generates llms.txt, robots rules or other crawler directives for your site.

> Schema-derived. Article + FAQPage JSON-LD emitted from structure, not hand-written.
> — https://github.com/shadowresearch/auto-geo · README, 'What is GEO?' section, point 5 of the citation-shape list

**Done-for-you service** · Partly — The tool itself is self-service software, but the publisher states it also runs the whole loop on a schedule for client teams; no engagement terms, scope or rates are published anywhere in the repository.

> Shadow runs auto-geo end-to-end on a schedule for media research, PR, and communications teams.
> — https://github.com/shadowresearch/auto-geo · README, quote block under the install instructions

## Answer engines

**ChatGPT** · Yes — Queried through OpenAI's Responses API with the web_search tool rather than the ChatGPT consumer app, and relabelled 'chatgpt' in the interop output format.

> Uses the Responses API with the web_search_preview tool.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, 'How it works per-engine' → OpenAI (--engine openai)

**Perplexity** · Yes — The default engine: Sonar performs grounded web search server-side and the adapter reads the citation array it returns, with sonar-pro available via a model override.

> Uses Perplexity's Chat Completions API with sonar (or sonar-pro). Sonar performs grounded web search server-side and returns citations as a top-level array on the response.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, 'How it works per-engine' → Perplexity (--engine perplexity)

**Gemini** · Yes — Queried through Google's generateContent grounding API; the adapter also derives a companion citation because Gemini wraps every grounded source in a redirect URL.

> Uses Google's generateContent API with the google_search grounding tool (the newer flow that supersedes google_search_retrieval).
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, 'How it works per-engine' → Gemini (--engine gemini)

**Google AI Overviews** · Partly — Optimisation targets AI Overviews explicitly — the page standard is calibrated to it and pages can be tagged google_aio — but no engine setting can measure whether AI Overviews cite you.

> The SOP is calibrated to the public retrieval and citation behavior of major AI search engines (ChatGPT, Perplexity, Google AI Overviews, Google AI Mode, Claude, Gemini, Copilot) as of early 2026.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/sop.md · GEO SOP, preamble above §1

**Google AI Mode** · Partly — Same split as AI Overviews: the content standard is calibrated for Google AI Mode and pages carry a google_ai_mode target label, yet the measurement command cannot query that surface.

> Non-empty subset of {chatgpt, perplexity, google_aio, google_ai_mode, claude, gemini, copilot}.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/validation.md · Validation reference, field table, geoMetadata.targetPlatforms row

**Claude** · Yes — Queried through Anthropic's Messages API with the server-side web search tool, merging raw search results and inline answer attributions into one deduplicated citation list.

> Uses the Messages API with the server-side web_search_20250305 tool.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, 'How it works per-engine' → Anthropic (--engine anthropic)

**Microsoft Copilot** · No — Copilot is not one of the five engines the measurement command accepts; it appears only as a target-platform label you can tag on generated pages, which is never queried.

> One of perplexity (default), openai, anthropic, gemini, xai (alias: grok), or all (run every engine whose API key is present in env).
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, Usage flag table, --engine <name> row

**Grok** · Yes — Grok is a first-class engine via xAI Live Search, though the vendor notes it returns URLs without titles and exposes no fan-out queries, so those rows come back empty.

> Uses xAI's OpenAI-compatible chat completions endpoint with the search_parameters extension (mode: "on", return_citations: true) that enables Live Search.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, 'How it works per-engine' → xAI Grok (--engine xai or --engine grok)

**DeepSeek** · No — DeepSeek is absent from the closed engine list the check command accepts, and the word does not appear anywhere in the README, the changelog or the bundled documentation.

> One of perplexity (default), openai, anthropic, gemini, xai (alias: grok), or all (run every engine whose API key is present in env).
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, Usage flag table, --engine <name> row

**Meta AI** · No — Meta AI is not among the five engines the check command accepts, and no Meta surface is mentioned in the README, the docs bundle or the changelog.

> One of perplexity (default), openai, anthropic, gemini, xai (alias: grok), or all (run every engine whose API key is present in env).
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, Usage flag table, --engine <name> row

**Coverage in the vendor’s words** · Yes — Five engines, all equal and all self-funded: you supply a key per engine, run one or all of them, and get per-engine plus union coverage; there are no plans, so no tier caps exist.

> One of perplexity (default), openai, anthropic, gemini, xai (alias: grok), or all (run every engine whose API key is present in env).
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, Usage flag table, --engine <name> row

## What it reports

**Names the cited sources** · Yes — Every run lists the cited URLs with their rank and the total citation count for that query, plus the raw source list, so you see which pages and domains the engine actually used.

> For each cited URL, rank is its 1-based position in the engine's citation list, and totalCitationsForQuery is the denominator.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, 'Interpreting rank' section

**Competitor tracking** · Partly — You can audit a rival's page structure with doctor, but the measurement command takes exactly one required domain per run, so there is no side-by-side rival citation view.

> Run it on any URL — yours, a competitor's, every page in your sitemap — and get a structured report on the citation signals AI engines look for.
> — https://github.com/shadowresearch/auto-geo · README, 'auto-geo doctor — audit any page for citation readiness' section

**Brand sentiment** · No — No sentiment or attribute analysis: the run reports coverage, cited URLs and rank, and can print the engine's raw answer text, leaving any reading of tone or attributes to you.

> Render the engine's natural-language answer under each query in human output. preview (default, ~3 sentences, ~400 chars), full, or none.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, Usage flag table, --answers <mode> row

**Recommendations** · Yes — Each failing check carries a fix suggestion ranked by citation impact, and the fix command goes further by regenerating the page so it passes all eight checks.

> Where doctor tells you what's wrong, fix produces a GEO-optimized rewrite that passes all 8 checks — fetched, audited, regenerated, and validated against the same schema write uses.
> — https://github.com/shadowresearch/auto-geo · README, 'auto-geo fix — rewrite a page for citation readiness' section

**AI crawler analytics** · No — Nothing ingests server logs or reports AI bot hits; the tool keeps no server, account or database, and its own fetches are the only crawling it does.

> Everything is file-based and committable — tracked prompts, check history, config. No server, no account, no database. One install away:
> — https://github.com/shadowresearch/auto-geo · README, paragraph under the command loop, above the install snippet

**Wrong answers about you** · No — The run records only whether your domain was cited, which URLs and at which rank; it never evaluates whether the engine's claims about your brand are accurate.

> For each prompt, ask a real AI search engine and report whether your domain is among the citations. This is the ground truth doctor predicts.
> — https://github.com/shadowresearch/auto-geo · README, 'auto-geo check — measure actual citation coverage' section

## Plans and signing up

**Prompt or credit allowance** · Yes — No included allowance and no vendor cap: prompts are lines in a committable text file, and volume is bounded only by your own provider account and spend.

> .auto-geo/prompts.txt — plain text, one prompt per line, # comments allowed.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/prompts.md · prompts docs, 'Where prompts live' section

**Projects or brands** · Partly — One tracked domain per workspace: config is discovered by walking up from the working directory, so several brands mean several directories rather than one multi-brand view.

> auto-geo.config.json (discovered by walking up from cwd — monorepo-friendly)
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/init.md · init docs, 'Config precedence' list, item 3

**Countries** · No — No country, locale or market flag exists in the documented command surface, and the page audit is explicitly English-only, so queries run wherever each provider defaults.

> English-only. The capitalization-based entity heuristic and the hedge-phrase regex assume English prose.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/doctor.md · doctor docs, 'Limitations' list, first bullet

**How often it checks** · Partly — On demand only — there is no scheduler; the vendor positions it as a CI gate or weekly scorecard, so any cadence comes from the cron or pipeline you wire up yourself.

> Use it as a CI gate, a weekly scorecard, or a one-shot competitive audit.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/check.md · check docs, paragraph above the Install section

**Card required to start** · No — Nothing to sign up for: it is an MIT-licensed package you install locally, with no account, no server and therefore no payment details at any point.

> Everything is file-based and committable — tracked prompts, check history, config. No server, no account, no database. One install away:
> — https://github.com/shadowresearch/auto-geo · README, paragraph under the command loop, above the install snippet

**Self-serve signup** · Yes — Entirely self-serve: one global install, or a standalone binary, with no sales contact, no account creation and no hosted service in the path.

> Everything is file-based and committable — tracked prompts, check history, config. No server, no account, no database. One install away:
> — https://github.com/shadowresearch/auto-geo · README, paragraph under the command loop, above the install snippet

## Access and integrations

**API** · Partly — There is no hosted or public HTTP API and the library exports were removed; programmatic access means piping the CLI's stable JSON or NDJSON output into your own stack.

> The CLI commands, their flags, and their --json / --ndjson output shapes are the public API (as of v0.7.0 — the library exports were removed).
> — https://github.com/shadowresearch/auto-geo/blob/main/CHANGELOG.md · Changelog preamble, versioning-policy paragraph

**MCP server** · No — No MCP server ships today — it was deleted when the package became CLI-only, so an agent drives the binary and reads its JSON rather than calling a tool server.

> bun install in the release workflow choked on the stale pnpm-workspace.yaml still listing the mcp and examples/* packages removed in v0.7.0.
> — https://github.com/shadowresearch/auto-geo/blob/main/CHANGELOG.md · Changelog, 0.8.4 → Fixed, 'Binaries job actually builds' entry

**BI export** · Partly — No warehouse or BI connector: you get a stable JSON report on stdout or written to a file, which the vendor expects you to wire into your own dashboards.

> The shape is the contract — wire it into your own dashboards and CI gates.
> — https://github.com/shadowresearch/auto-geo/blob/main/docs/doctor.md · doctor docs, 'JSON output' section

## Platform record (as of 2026-08-30)

Reported by the code-hosting platform, not by the vendor.

| Fact | Value |
| --- | --- |
| Licence | MIT |
| Stars | 23 |
| Forks | 0 |
| Last push | 2026-08-01 |

## Answer-engine source observations

2 of 4 collected answers have source URL/title annotations naming CitedIndex. These are the latest stored observations per engine, not current consumer-UI results. They do not measure product mentions or establish that a source supports a claim.

| Engine | Model | Collected on | Query | CitedIndex in source annotations | Source annotations | Other source hosts (up to 6) |
| --- | --- | --- | --- | --- | --- | --- |
| Gemini | gemini-2.5-flash | 2026-09-04 | auto-geo alternatives | Directory domain found | 30 | g2.com, ziptie.dev, conductor.com, shadow.inc, meev.ai, llmpulse.ai |
| Perplexity | sonar | 2026-09-04 | auto-geo alternatives | Directory domain found | 20 | g2.com, capterra.com, seoptimate.com, github.com, airops.com, aiclicks.io |
| ChatGPT | gpt-4o-mini | 2026-09-04 | auto-geo alternatives | Not assessable — no source annotations | 0 | — |
| Claude | claude-haiku-4-5 | 2026-09-04 | auto-geo alternatives | Not assessable — no source annotations | 0 | — |

## Provenance

1 of 12 sources behind the facts above are independent of the vendor.

## Coverage elsewhere

None recorded. Every fact above comes from the vendor and is not independently corroborated yet.

## What changed

- 2026-09-12 — Capabilities · Free tier · Price
- 2026-09-01 — Capabilities · Free tier
- 2026-08-31 — Capabilities · Free tier

## Correcting this record

Anything marked "Not established" is a question we have not answered — it is not a No. If you represent auto-geo, or anything here is wrong or out of date, you can supply it with a source: the operations this site accepts from an agent are listed at https://citedindex.com/.well-known/agents.json — that catalogue needs no key to read, and each entry states its own auth.

Supplying evidence is free. Nothing that can be bought here changes what a field says, whether a gap is closed, or how this record is scored.
