# E-GEO — Full Reference for LLMs > E-GEO — open-source Generative Engine Optimization (GEO) & Answer Engine Optimization (AEO) toolkit (Python CLI + Claude Code skills), based on published GEO research (arXiv:2511.20867). Site: https://egeoagents.com Source: https://github.com/mverab/eGEOagents (MIT license; 194 stars, 56 forks as of 2026-09-25) PyPI: https://pypi.org/project/egeo/ Paper: https://arxiv.org/abs/2511.20867 Skills: https://skills.sh/mverab/egeoagents ## What E-GEO is E-GEO analyzes, scores, and rewrites content to rank and get cited in AI-powered search engines: ChatGPT, Perplexity, Gemini, and Claude. It runs a full pipeline — analyze, rank-simulate, rewrite, generate JSON-LD schema — in one command. It is built for developers, technical marketers, and site owners. AI-visibility trackers tell you where you are invisible; E-GEO fixes the page and verifies the rewrite. Differentiators: - Tracker-to-fix bridge: egeo fix-gaps reads a tracker's citation report and rewrites each local page that loses a query. - Full pipeline: rewriting, not just auditing; outputs copy-paste-ready markdown and JSON-LD schema. - Reproducible evaluation harness: measures whether the rewriter moves content up in an LLM-simulated ranking; runs offline and deterministically with GEO_EVAL_MOCK=1 (no API key); the same check runs in CI. - geo-loop continuous mode: watches domains over time with deterministic, LLM-free collectors and a persistent workspace ($EGEO_HOME, default ~/.egeo). - Research-backed methodology: E-GEO paper (arXiv:2511.20867) building on the Princeton GEO study (Aggarwal et al., KDD 2024, arXiv:2311.09735). - Distributed as Claude Code skills: competitive-analysis, content-scoring, schema-generator, validation-doctor, geo-loop. ## Install Standalone Python CLI: pip install egeo # clone + pip install -e . still works; or: python -m egeo --help Claude Code skills: npx skills add https://github.com/mverab/eGEOagents ## CLI (egeo, v2.2.0) Subcommands: optimize, fix-gaps, evaluate, optimize-prompts, runtimes, loop. - egeo optimize [--out-dir DIR] [--query Q] [--schema-type {Organization,Product,Service,Article,FAQPage}] [--runtime R] [--json] Runs the full GEO pipeline on a local Markdown/text file; writes report.md, analysis.json, optimized/*.md, schema/*.json to geo-output/ by default. - egeo fix-gaps GAPS_FILE [--project project.yaml] [--out-dir DIR] [--dry-run] [--json] Reads a tracker report (geo-optimizer-skill `geo citations --format json`, or a generic JSON/CSV with query,cited[,sources]), maps each uncited query to a local page via project.yaml (queries[].target_pages -> pages[].source), rewrites each losing page once, and writes fix-gaps.json with unmatched/skipped reasons and a re-measure list. Never edits source files; tracker errors never trigger rewrites. - egeo evaluate --dataset FILE.jsonl [--limit N] [--seed S] [--verbose] Evaluates rewriter prompt quality on a JSONL dataset. Metrics: n, avg_rank_improvement, win_rate, stderr_rank_improvement. - egeo optimize-prompts --train T.jsonl --val V.jsonl [--iters N] [--apply] Meta-optimizes the rewriter prompt; non-destructive by default (writes *.candidate.txt). - egeo runtimes [--json] Lists runtime adapters: python (in-process; aliases cli, local) and claude-code (host-executed via /geo slash commands). - egeo loop {run,collect,doctor} Loop mode; zero LLM calls. run [--dry-run] prints the run plan; collect {serp,page} runs a deterministic collector pass; doctor bootstraps and health-checks the workspace. Environment: GEO_EVAL_MOCK=1 (offline deterministic mock, no API key), OPENAI_API_KEY, OPENAI_BASE_URL, RANKER_MODEL / REWRITER_MODEL / META_MODEL (default gpt-4o), EGEO_HOME (default ~/.egeo), BRAVE_API_KEY (serp collector only). ## Pipeline (4 agents) 1. Analyzer — extracts content, scores it against the 10 GEO features, writes analysis.json. 2. Ranker — simulates AI-engine ranking against competitors. 3. Rewriter — applies the 10 GEO features while preserving brand voice and factual accuracy; never fabricates statistics or testimonials. 4. Indexer — generates JSON-LD schema (SoftwareApplication, Organization, Article, Product, Service, FAQPage) and implementation checklists. The 10 GEO features: ranking emphasis, user intent alignment, competitive differentiation, social proof, compelling narrative, authoritativeness, unique selling points, urgency signals, scannable format, factual accuracy. ## Validation (MCP) When run through Claude Code, E-GEO validates with MCP servers: brave-search (competitor/SERP ground truth) and chrome-devtools (rendered DOM). Without them it still runs but marks outputs "Low Confidence". Rule: never claim competitor rankings without search ground truth. The validation-doctor skill checks and prints setup commands. ## Loop mode Opt-in continuous GEO. State lives in $EGEO_HOME (LOG.md, config.yaml, SUBSTRATE.md, signals/, docs/, data//*.jsonl, domains//README.md, prompts/). Collectors (serp: needs BRAVE_API_KEY; page: no deps) are deterministic, budget-aware, append-only, and accept --fixture for offline runs. Run contract: one unit of work per wake-up, one Timeline entry ending in Outcome: success|partial|failure|no-op, one LOG.md line, verified before exit. Interpretive runs execute via /geo:loop in Claude Code; egeo loop run|collect|doctor are LLM-free. ## Evaluation harness (honest limitations) geo_eval.py + llm_client.py measure rank_improvement = rank_before - rank_after using an LLM re-ranking judge over a fixed candidate list. These metrics are a PROXY for prompt iteration, not a measurement of real ChatGPT/Perplexity/Gemini/Claude rankings. Mock-mode values are deterministic by construction and verify the pipeline, not model quality. Reproduce the CI smoke result: GEO_EVAL_MOCK=1 python geo_eval.py evaluate --dataset eval/datasets/geo_smoke.jsonl --limit 5 --verbose ## Honest comparison (last verified 2026-09-24) geo-optimizer-skill (Auriti-Labs, 895 stars, MIT): CLI + Python library + MCP + Astro integration; scores sites 0-100 across 47 methods; checks real answer-engine citations (geo citations) and tracks them over time (geo monitor, geo track); by its own description prioritizes technical infrastructure over content rewriting. It has more stars, broader scoring and built-in citation tracking. E-GEO (194 stars, MIT) differentiates on: content rewriting (full pipeline), reproducible evaluation harness, a published research basis, and Claude Code skills distribution. The tools are complementary: audit and track with one, rewrite and verify with the other. Full directory of open-source GEO/AEO projects: https://egeoagents.com/compare/geo-tools-2026/ ## Pages - https://egeoagents.com/ — landing - https://egeoagents.com/docs/getting-started/ - https://egeoagents.com/docs/how-it-works/ - https://egeoagents.com/docs/cli/ - https://egeoagents.com/docs/mcp-server/ - https://egeoagents.com/docs/geo-loop/ - https://egeoagents.com/docs/evaluation/ - https://egeoagents.com/docs/faq/ - https://egeoagents.com/concepts/what-is-geo/ - https://egeoagents.com/concepts/what-is-aeo/ - https://egeoagents.com/concepts/geo-vs-seo/ - https://egeoagents.com/compare/e-geo-vs-geo-optimizer-skill/ - https://egeoagents.com/compare/geo-tools-2026/ - https://egeoagents.com/concepts/what-is-llms-txt/ - https://egeoagents.com/concepts/geo-features/ - https://egeoagents.com/guides/rank-in-chatgpt-search/ - https://egeoagents.com/guides/rank-in-perplexity/ - https://egeoagents.com/guides/track-ai-citations/ - https://egeoagents.com/research/ ## Guide: How to Rank in ChatGPT Search (summary) Allow OAI-SearchBot in robots.txt (it is separate from GPTBot; blocking training does not block search citations). Accelerate Bing discovery with sitemap submission plus IndexNow — Bing is one of the discovery surfaces feeding ChatGPT search. Publish pages that open with a direct 50-170 word answer, carry Article/FAQPage JSON-LD with dates, and keep one canonical entity description across all surfaces. Earn references from the sources ChatGPT already cites. Measure weekly with a fixed query set; single answers are samples, not truth. No tool can guarantee a citation. ## Guide: How to Get Cited by Perplexity (summary) Measured finding: Perplexity synthesizes from curator sources (aggregators like LibHunt, awesome-lists, niche blogs), not from GitHub stars — projects with 17-37 stars appeared while a 147-star project did not. Playbook: map the cited domains for 8-10 fixed queries weekly; get into those sources; keep PerplexityBot unblocked (check CDN/WAF separately); publish dated comparison pages with stated methodology; keep entity descriptions identical across surfaces. Track % of the fixed query set mentioning you, plus cited-domain lists, over weeks. ## Concept: llms.txt (summary) llms.txt is a 2024 proposal (llmstxt.org): a Markdown file at the site root giving AI systems a curated index of the most useful content — H1 title, blockquote entity summary, link sections with one-line descriptions — plus an optional llms-full.txt with full text. It is not an official standard and no major engine has committed to honoring it, but it is cheap, harmless, and widely adopted by developer documentation. It complements robots.txt and sitemaps; it does not replace them. ## Concept: The 10 GEO Features (summary) Canonical list (from GEO_FEATURES in egeo/agents.py, per arXiv:2511.20867 building on KDD 2024): ranking emphasis, user intent, competitive differentiation, social proof, narrative, authority, USPs, urgency, scannability, factual accuracy. Applying all 10 together outperforms individual heuristics. E-GEO's analyzer scores each feature, flags gaps with remediation copy, and prioritizes the three weakest. ## Research (summary) Lineage: the Princeton GEO study (Aggarwal et al., KDD 2024, peer-reviewed) defined the field; the E-GEO preprint (arXiv:2511.20867, published research, NOT peer-reviewed) adds the applied layer: competitive framing produced the strongest immediate lift, and the universal 10-feature strategy outperformed single heuristics. The evaluation harness measures an LLM-ranker proxy, not real engine rankings.