MIT License · Free forever

causabi-geo

Open-source CLI and Python library for GEO optimization. Audit, fix, and monitor your AI search visibility — no account needed.

Install
pip install causabi-geo
geo-optimizer analyze https://yourdomain.com
~3 200
Lines of code
40+ tests
Test coverage
4 core
External dependencies
MIT
License

How It Works

Single command → crawl → score → generate fixes

1
Crawl
httpx fetches the page. JS-heavy sites fall back to Playwright via crawl4ai. Extracts: text, structured data, robots.txt, headers, links.
2
Score
Pure Python scoring across 6 dimensions. No LLM needed — deterministic, reproducible, runs in under a second.
3
Profile (optional)
With --api-key: one Gemini call extracts business name, description, FAQ questions, target queries, and product features.
4
Generate fixes
Creates robots.txt patch, schema.json, faq-schema.json, and llms.txt — all ready to deploy. Includes HOW-TO-APPLY.md.

Module Breakdown

6 focused modules, each under 200 lines

Scorer~180 lines
geo_optimizer/core/scorer.py

Computes AI readiness score 0–100 across 6 dimensions. Pure logic — no LLM needed, runs in <1s.

robots.txt (20pt)Schema.org (25pt)FAQ Schema (20pt)Content depth (15pt)Brand signals (10pt)Freshness (10pt)
Robots Auditor~80 lines
geo_optimizer/core/robots.py

Checks which of 10+ AI crawlers your robots.txt allows or blocks. Generates a patched version.

GPTBotClaudeBotPerplexityBotApplebot-ExtendedBytespiderGooglebot-Extendedcohere-aianthropic-ai
Schema Generator~120 lines
geo_optimizer/fix/schema.py

Generates Organization or SoftwareApplication JSON-LD from crawled page data.

OrganizationSoftwareApplicationWebSiteLocalBusinesssameAs linksNAP data
FAQ Generator~90 lines
geo_optimizer/fix/faq.py

Builds FAQPage JSON-LD. With --api-key uses Gemini to generate questions from your actual content.

FAQPage JSON-LDGemini AI questionsschema.org/QuestionacceptedAnswer8-12 Q&A pairs
llms.txt Generator~70 lines
geo_optimizer/fix/llms_txt.py

Creates a llms.txt file — the robots.txt for AI agents. Claude, GPT-4, and Perplexity read it.

llmstxt.org standardMarkdown formatKey pages linkedBusiness descriptionContact info
Citation Monitor~300 lines
backend/app/monitor/

Checks if your domain appears in ChatGPT, Perplexity, Gemini, and Yandex responses.

ChatGPT (Responses API)Perplexity Sonar citations[]Gemini grounding chunksYandex text detection

Scoring Methodology

Weights based on Princeton GEO research and citation rate studies across ChatGPT, Perplexity, and Gemini.

Schema.org25 pts

Organization / SoftwareApplication / WebSite with rich attributes.

robots.txt20 pts

Checks 10+ AI crawlers: GPTBot, ClaudeBot, PerplexityBot, Applebot-Extended, Bytespider, cohere-ai, and more.

FAQ Schema20 pts

FAQPage JSON-LD. Research shows +41% citation rate vs. no FAQ schema.

Content depth15 pts

Word count, heading structure, internal links. Thin pages (<300 words) score near zero.

Brand signals10 pts

sameAs links (LinkedIn, GitHub, Wikipedia), phone, address. Higher brand authority = more AI citations.

Freshness10 pts

dateModified or Last-Modified header. Pages older than 12 months score 0; under 3 months score full 10.

README Badge

Add your site's live GEO score to your README — updates automatically every hour.

markdown
![GEO Score](https://ai.causabi.com/badge/yoursite.com.svg)
Renders as:GEO Score94/100

GitHub Action

Automatic GEO audit in CI. Fails the build if your score drops below a threshold.

.github/workflows/geo.yml
- name: GEO audit
  uses: SHADRINMMM/geo-optimizer-action@v1
  with:
    url: https://yoursite.com
    min-score: 60

Want the full audit?

The CLI scores one page. causabi.com deep-crawls your whole site, monitors ChatGPT/Perplexity citations weekly, and generates fixes with AI.

Open Source — causabi-geo CLI & Python Library | Causabi