Open-source research
SAGE: A Complete Review of the Open-Source SEO, AEO and GEO Audit Engine
Executive summary
A direct review of Taqi Molavi’s public repository: a Python engine for technical SEO, entity answers and generative retrieval readiness.

Executive summary
SAGE, distributed as sage-audit, is a Python engine for auditing three layers of modern discoverability: technical SEO, Answer Engine Optimization (AEO), and Generative Engine Optimization (GEO). This research is based on a direct review of the public tmolavi/sage-audit repository on 2 September 2026.
The project is not a black-box rank tracker. Each check produces a structured finding with status, score, weight, evidence, and a recommendation. SEO contributes 30% of the overall score, while AEO and GEO contribute 35% each.
What the repository contains
The reviewed snapshot has two commits, requires Python 3.10+, uses the MIT license, and exposes four interfaces: CLI, Python library, JSON/Markdown reporting, and an MCP server. The README presents GitHub as published and PyPI as a pending maintainer step, so direct Git installation remains the documented path.
| Area | Main module | Practical output |
|---|---|---|
| Data model | models.py | Findings, pillar reports, final report |
| Orchestration | core.py | Three audits and weighted score |
| Technical SEO | seo_auditor.py | Crawl, metadata, headers and robots checks |
| Entity AEO | aeo_auditor.py | JSON-LD, entities, FAQ and direct-answer checks |
| Generative GEO | geo_auditor.py | Chunks, retrieval simulation, CSP and artifacts |
| Interfaces | cli.py, server/mcp_server.py | CLI commands and MCP tools |
| Quality | tests/test_auditors.py | Offline deterministic test coverage |
The three pillars
Technical SEO
The SEO auditor checks titles, canonical URLs, robots directives, Open Graph, H1 hygiene, text-to-code ratio, security and cache headers, and AI crawler policies for GPTBot, PerplexityBot, ClaudeBot, Google-Extended, Amazonbot and Applebot-Extended.
Answer Engine Optimization
The AEO auditor recursively inspects JSON-LD entity graphs, including Organization, Person, Product, Article and FAQPage nodes. It also considers sameAs authority links, freshness, FAQ structure and whether section openings provide direct answers.
Generative Engine Optimization
The GEO auditor chunks text at roughly 60–120 tokens, selects fastembed, sentence-transformers or a deterministic hashed n-gram fallback, then simulates top-k retrieval. It measures cosine similarity, semantic entropy and Citation Survival Probability (CSP), while generating llms.txt and rag_ready_chunks.json.
| GEO layer | Question | Output |
|---|---|---|
| Clean DOM | Is the main text separated from boilerplate? | Extracted text and ratios |
| Semantic chunks | Do passages have coherent boundaries? | 60–120 token chunks |
| Embeddings | How is meaning represented? | Neural or deterministic vectors |
| Retrieval | Which passages win a query? | Top-k similarity ranking |
| Citation survival | Is the winner distinctive? | CSP, entropy and artifacts |
Strengths and limits
The strongest design choice is graceful degradation: missing embedding dependencies or failed model downloads do not stop the audit. Pydantic models keep reports machine-readable, while the offline tests cover tokenization, extraction, JSON-LD, robots, all three pillars and the CLI.
The limits are equally important. CSP is an internal experimental signal, not a promise of placement in ChatGPT, Google or Perplexity. An in-memory RAG simulation cannot reproduce every provider’s retrieval stack. The sample report in the README is illustrative. Serious evaluation should record fixed queries, locale, country, model, date, retrieved sources, brand mentions, factual accuracy and business conversion.
Installation and use
pip install git+https://github.com/tmolavi/sage-audit.git
sage audit https://example.com
sage audit https://example.com --format markdown -o report.md --save-artifacts ./out
sage generate-llms https://example.com -o llms.txt --also-chunksConclusion
SAGE turns the vague promise of “AI visibility” into three inspectable questions: is the page technically reachable, is its entity and answer structure clear, and do its passages survive semantic retrieval? Its value is not a guaranteed ranking claim; it is a compact, open and repeatable framework for building a baseline and testing changes.