By the end of this page you’ll have GEO Optimizer v4.18.3 installed, a 0-100 AI-readiness score for your site, and generated fix files for robots, llms.txt, and schema. Package on PyPI: geo-optimizer-skill. Binary: geo.
This is not another “write answer-first paragraphs” essay. It’s the install path for the open-source CLI that scores crawl/extract signals and writes the missing files – the piece strategy checklists skip.
What you get after install
Eight scored buckets totaling 100: robots (18), llms (18), schema (16), meta (14), content (12), brand (10), signals (6), AI discovery (6). Bands from the README table: Excellent 86-100, Good 68-85, Foundation 36-67, Critical 0-35. Citability methods sit on the Princeton GEO paper (arXiv:2311.09735) plus later AutoGEO work linked from the project README.
Core loop:
geo audit --url ...→ score + ranked fixesgeo fix --url ... --apply→ write robots / llms / schema draftsgeo citations ...→ optional live mention check (your API keys)
Think of the score like Lighthouse, but aimed at whether answer engines can fetch and parse you cleanly. High score ≠ guaranteed quote. It means you cleared the floor.
System requirements
| Item | Minimum | Notes |
|---|---|---|
| OS | Linux, macOS, Windows | WSL works fine on Windows |
| Python | 3.9+ | 3.11 or 3.12 recommended per setup docs |
| Network | Outbound HTTPS to the target | Corporate proxies can block the auditor |
| Optional | – | Docker; API keys only for geo citations; [embedding] / [mcp] extras |
Production floor is Python 3.9 (official setup docs). Optional stacks pull MCP agent tooling and sentence-transformers when you install the matching extras.
Official download sources
Stick to these:
- PyPI: geo-optimizer-skill 4.18.3 (released 2026-09-22)
- Source: github.com/Auriti-Labs/geo-optimizer-skill
- Docs / web audit: geoready.dev/docs
Pin the version in CI. Floating latest mid-pipeline is how teams get surprise score diffs.
Install GEO Optimizer v4.18.3 (pip)
Use a venv so the geo entry point doesn’t collide with other CLIs.
python3 -m venv .venv
source .venv/bin/activate # Windows: .venvScriptsactivate
python -m pip install --upgrade pip
pip install geo-optimizer-skill==4.18.3
geo --version
Expect 4.18.3. If geo is “not found”, the venv isn’t active or Scripts/bin isn’t on PATH.
Other paths: editable source install with pip install -e ".[dev]" after clone; Docker docker build -t geo-optimizer . then docker run -it geo-optimizer geo --version; MCP via pip install geo-optimizer-skill[mcp] and claude mcp add geo-optimizer -- geo-mcp.
First-time configuration
Default audit needs no config file and no LLM keys. That’s intentional – passive checks only hit public HTML, robots, and sitemaps.
The catch is citations. Leave env vars alone until robots + llms + schema look sane:
export PERPLEXITY_API_KEY=pplx-... # README-recommended default
# optional: OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, SERPBASE_API_KEY
Google AI Overviews aren’t a chat API. README path: --provider serpbase with SERPBASE_API_KEY (billing per SerpBase’s own docs).
Verify the install works
geo --version
geo --help
geo audit --url https://example.com --format json | head
Healthy run: numeric score, band name, category breakdown. Smoke fixes without writing disk:
geo fix --url https://yoursite.com
geo llms --base-url https://yoursite.com --output /tmp/llms.txt
geo schema --type faq --url https://yoursite.com
When ready: geo fix --url https://yoursite.com --apply. Review diffs before commit – auto schema still needs human entity names.
Common install and first-run errors
“No llms.txt found” but the file opens in a browser. Older builds treated CDN/WAF 403/406 on the auditor User-Agent as absence. CHANGELOG for 4.18.3 adds blocked_by_cdn, one retry with a Chrome/120-style UA, rejects HTML challenge pages posing as text, and blocks geo fix --apply from stomping a real file with an empty stub. Still on the old message? Upgrade first.
Ever watched a “helpful” fix tool wipe a working config because a bot got a 403? That’s the failure mode 4.18.3 closes. Worth the pin.
HTTP 403 / “Connection failed” on a site that loads for you. WAF vs true network failure get clearer messaging in recent releases. Allowlist the runner IP, or audit off a non-datacenter path. Private/RFC1918 targets stay rejected on purpose (SSRF guard).
geo citations dies right after a clean audit install. Citations are bring-your-own-key. Audit/fix/llms never needed them – teams often assume the opposite after a successful pip install. Set a key, then:
geo citations --brand "YourBrand" --domain yoursite.com --topic "your category" --runs 5
--runs 5 samples variance. Single-shot answers swing hard week to week.
Embedding proximity skipped.pip install "geo-optimizer-skill[embedding]". Without it you get a skip line, not a hard audit failure.
geo: command not found after pip. Activate the venv; on Windows, confirm Scripts is on PATH.
Upgrade, pin, uninstall
# upgrade to latest 4.x
pip install --upgrade geo-optimizer-skill
geo --version
# stay on the tested patch
pip install geo-optimizer-skill==4.18.3
# GitHub Action pin (README CI sample)
# uses: Auriti-Labs/[email protected]
# with:
# url: https://yoursite.com
# min-score: 70
# format: sarif
# remove
pip uninstall geo-optimizer-skill
v4.18.2 revalidates every sitemap redirect hop (SSRF-via-redirect fix). Auditing multi-hop or internal-adjacent hosts? Don’t sit on older 4.18.x builds.
CLI stays MIT free. Hosted GeoReady Pro starts from $19/month as of the 2026-09 pricing page – optional continuity, not required for local audits.
Cleanup: uninstall, then delete any geo-output/, history dirs, or generated llms/schema files you don’t want. Default pip install registers no system service.
FAQ
Is GEO Optimizer the same as “AI citation optimization”?
No. AI citation optimization is the practice. GEO Optimizer is the CLI that scores technical signals and writes fix files. Strategy guides still own the prose.
Do I need API keys on day one?
No for audit/fix/llms/schema. Keys only for geo citations (or SerpBase for AI Overviews). Practical order: green robots + live llms.txt, then a five-sample citation run on your top money queries.
Will a high score guarantee ChatGPT cites me?
No – maintainers don’t claim that. The number tracks crawl access, extractability, schema, and entity clarity. Citation share still moves with off-site consensus, freshness, and engine churn. Necessary floor, not paid placement. Pair the CLI with original stats and third-party mentions if you want readiness to turn into actual quotes.
Next: activate a venv, pip install geo-optimizer-skill==4.18.3, run geo audit --url https://YOURDOMAIN, and ship whatever geo fix flags for robots and llms.txt before you touch copy.