egeo 2.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
egeo-2.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Vera Badias
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
egeo-2.0.0/PKG-INFO ADDED
@@ -0,0 +1,662 @@
1
+ Metadata-Version: 2.4
2
+ Name: egeo
3
+ Version: 2.0.0
4
+ Summary: E-GEO: runtime-agnostic Generative Engine Optimization toolkit and CLI.
5
+ Author: Vera Badias
6
+ License: MIT
7
+ Project-URL: Homepage, https://egeoagents.com
8
+ Project-URL: Repository, https://github.com/mverab/eGEOagents
9
+ Project-URL: Documentation, https://egeoagents.com/docs/getting-started/
10
+ Keywords: geo,generative-engine-optimization,ai-search,llm,cli
11
+ Requires-Python: >=3.9
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: pyyaml>=6.0
15
+ Requires-Dist: jsonschema>=4.0
16
+ Dynamic: license-file
17
+
18
+ <div align="center">
19
+
20
+ <!-- HERO BANNER -->
21
+ <img src="assets/hero-banner.png" alt="E-GEO: Rank #1 in AI Search Engines" width="100%" />
22
+
23
+ <br />
24
+
25
+ # ๐ŸŒ E-GEO
26
+
27
+ ### **Generative Engine Optimization (GEO)** & **Answer Engine Optimization (AEO)** for AI-Powered Search
28
+
29
+ <p>
30
+ <a href="https://github.com/mverab/eGEOagents/actions/workflows/ci.yml"><img src="https://github.com/mverab/eGEOagents/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
31
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License" /></a>
32
+ <a href="https://github.com/mverab/eGEOagents/stargazers"><img src="https://img.shields.io/github/stars/mverab/eGEOagents?style=social" alt="GitHub Stars" /></a>
33
+ <a href="https://github.com/mverab/eGEOagents/network/members"><img src="https://img.shields.io/github/forks/mverab/eGEOagents?style=social" alt="GitHub Forks" /></a>
34
+ <a href="https://github.com/mverab/eGEOagents/issues"><img src="https://img.shields.io/github/issues/mverab/eGEOagents" alt="Issues" /></a>
35
+ <a href="https://arxiv.org/abs/2511.20867"><img src="https://img.shields.io/badge/arXiv-2511.20867-b31b1b.svg" alt="Research Paper" /></a>
36
+ </p>
37
+
38
+ <p>
39
+ <a href="https://claude.com/claude-code"><img src="https://img.shields.io/badge/Built%20with-Claude%20Code-8B5CF6?logo=anthropic" alt="Built with Claude Code" /></a>
40
+ <a href="CONTRIBUTING.md#ai-transparency"><img src="https://img.shields.io/badge/๐Ÿค–-AI--Assisted-blueviolet" alt="AI-Assisted" /></a>
41
+ </p>
42
+
43
+ <br />
44
+
45
+ > **๐Ÿš€ One command. Premium results.**<br />
46
+ > Rank higher in **ChatGPT**, **Perplexity**, **Claude**, and **Gemini**.
47
+
48
+ <br />
49
+
50
+ [**๐Ÿ“– Docs**](docs/getting-started.md) โ€ข [**๐Ÿ› Issues**](https://github.com/mverab/eGEOagents/issues) โ€ข [**๐Ÿ’ฌ Discussions**](https://github.com/mverab/eGEOagents/discussions) โ€ข [**๐Ÿ“ Research Paper**](https://arxiv.org/abs/2511.20867)
51
+
52
+ ---
53
+
54
+ </div>
55
+
56
+ <!-- AI TRANSPARENCY BADGE -->
57
+ <p align="center">
58
+ <sub>๐Ÿค– <strong>AI-Assisted Development</strong> โ€” <a href="CONTRIBUTING.md#ai-transparency">See what's AI-generated vs human-authored</a></sub>
59
+ </p>
60
+
61
+ ---
62
+
63
+ ## โœจ What is E-GEO?
64
+
65
+ <table>
66
+ <tr>
67
+ <td width="60%">
68
+
69
+ **E-GEO** is an open-source **Generative Engine Optimization (GEO)** and **Answer Engine Optimization (AEO)** toolkit that transforms your website content to rank higher in AI-powered search engines โ€” including **ChatGPT**, **Perplexity**, **Google AI Overviews**, **Claude**, and **Gemini**.
70
+
71
+ Also known as **AI SEO** or **LLM SEO**, GEO is the practice of optimizing content so that generative AI engines can crawl, understand, cite, and recommend it. E-GEO automates this entire process.
72
+
73
+ Based on the [E-GEO research preprint](https://arxiv.org/abs/2511.20867) (arXiv:2511.20867), it applies **10 research-derived features** โ€” including competitive framing, citation optimization, structured data, and semantic density improvements โ€” as documented in the paper's experiments.
74
+
75
+ - โœ… **No learning curve** โ€” One command to optimize
76
+ - โœ… **Research-backed** โ€” Based on published GEO research
77
+ - โœ… **Production-ready** โ€” Copy-paste optimized content
78
+ - โœ… **Multi-engine** โ€” Optimizes for ChatGPT, Perplexity, Gemini, Claude & Google AI Overviews
79
+ - โœ… **Full pipeline** โ€” Analyze โ†’ Rank โ†’ Rewrite โ†’ Schema in one command
80
+
81
+ </td>
82
+ <td width="40%">
83
+
84
+ ```bash
85
+ /geo https://yoursite.com/pricing
86
+ ```
87
+
88
+ โ†“
89
+
90
+ ```
91
+ geo-output/
92
+ โ”œโ”€โ”€ report.md
93
+ โ”œโ”€โ”€ optimized/
94
+ โ”‚ โ””โ”€โ”€ pricing.md
95
+ โ””โ”€โ”€ schema/
96
+ โ””โ”€โ”€ pricing.json
97
+ ```
98
+
99
+ </td>
100
+ </tr>
101
+ </table>
102
+
103
+ ---
104
+
105
+ ## ๐Ÿ“ˆ Why AI Visibility Matters in 2026
106
+
107
+ AI search engines give one synthesized answer and cite a handful of sources. If your site isn't one of them, you're invisible โ€” even if you rank #1 on Google.
108
+
109
+ ```
110
+ User asks ChatGPT: "What's the best GEO tool?"
111
+
112
+ ChatGPT: "According to [Competitor], the best tool is..."
113
+ โ†‘ They get cited. You don't.
114
+ ```
115
+
116
+ - **ChatGPT serves 900M+ weekly users** โ€” a growing share of sessions that used to be Google searches.
117
+ - **28.3% of ChatGPT's most-cited pages have *zero* organic visibility on Google** (Ahrefs) โ€” AI engines reward different signals than classic SEO.
118
+ - **Proper JSON-LD schema lifts LLM extraction accuracy from 16% to 54%** (Semrush study on GPT-4).
119
+ - **844,000+ sites** already ship an `llms.txt`. Is yours one of them?
120
+
121
+ Traditional SEO optimizes for blue links. **GEO optimizes for citations in AI-generated answers.** E-GEO is the open-source tool that bridges this gap.
122
+
123
+ ---
124
+
125
+ ## ๐Ÿš€ Quick Start (3 Steps)
126
+
127
+ ### 1. Install
128
+
129
+ Copy the `.claude/` folder to your project:
130
+
131
+ ```bash
132
+ cp -r /path/to/eGEOagents/.claude .
133
+ ```
134
+
135
+ ### 2. Activate
136
+
137
+ In Claude Code, switch to GEO mode:
138
+
139
+ ```
140
+ /output-style geo-optimizer
141
+ ```
142
+
143
+ ### 3. Optimize
144
+
145
+ Run your first optimization:
146
+
147
+ ```
148
+ /geo https://yoursite.com
149
+ ```
150
+
151
+ ---
152
+
153
+ ## ๐Ÿงฉ Install as Skills (skills.sh)
154
+
155
+ Install the complete skill collection:
156
+
157
+ ```bash
158
+ npx skills add https://github.com/mverab/eGEOagents
159
+ ```
160
+
161
+ Install one skill only:
162
+
163
+ ```bash
164
+ npx skills add https://github.com/mverab/eGEOagents --skill competitive-analysis
165
+ ```
166
+
167
+ Validate parser discovery before shipping updates:
168
+
169
+ ```bash
170
+ npx skills add https://github.com/mverab/eGEOagents --list
171
+ ```
172
+
173
+ Verify indexing pages:
174
+
175
+ - Collection: [skills.sh/mverab/egeoagents](https://skills.sh/mverab/egeoagents)
176
+ - Owner: [skills.sh/mverab](https://skills.sh/mverab)
177
+
178
+ ---
179
+
180
+ ## ๐Ÿ“‹ Commands
181
+
182
+ | Command | What it does |
183
+ |---------|--------------|
184
+ | `/geo <url>` | **Full pipeline** - Analyze, rank, rewrite, schema |
185
+ | `/geo:audit <url>` | Analysis only, no changes |
186
+ | `/geo:optimize <file>` | Optimize local content file |
187
+ | `/geo:batch <folder>` | Process entire folder |
188
+ | `/geo:report` | Generate executive report |
189
+ | `/geo:compete <query>` | Competitive analysis |
190
+ | `/geo:loop <domain>` | One bounded [loop-mode](#-loop-mode-continuous-geo) iteration over a workspace domain |
191
+
192
+ ---
193
+
194
+ ## ๐Ÿ“Š What You Get
195
+
196
+ After running `/geo`:
197
+
198
+ ```
199
+ geo-output/
200
+ โ”œโ”€โ”€ report.md # Executive summary + scores
201
+ โ”œโ”€โ”€ analysis.json # Raw analysis data
202
+ โ”œโ”€โ”€ optimized/
203
+ โ”‚ โ””โ”€โ”€ pricing.md # Rewritten content (ready to use)
204
+ โ”œโ”€โ”€ schema/
205
+ โ”‚ โ””โ”€โ”€ pricing.json # JSON-LD markup (copy to site)
206
+ โ””โ”€โ”€ checklist.md # Step-by-step implementation
207
+ ```
208
+
209
+ ---
210
+
211
+ ## ๐ŸŽฏ Results: Backed by Research
212
+
213
+ E-GEO is grounded in the research described in the [E-GEO preprint](https://arxiv.org/abs/2511.20867) (arXiv:2511.20867), building on foundational work by [Aggarwal et al. (Princeton, KDD 2024)](https://arxiv.org/abs/2311.09735) โ€” the original study that defined Generative Engine Optimization as a discipline.
214
+
215
+ The E-GEO paper reports that:
216
+
217
+ 1. **Competitive framing** produces the strongest immediate ranking lift among all GEO strategies tested.
218
+ 2. A **universal optimization strategy** (applying all 10 features together) outperforms individual heuristics by a wide margin.
219
+ 3. The **10 GEO features** (ranking emphasis, user intent matching, competitive edge, social proof, authority signals, scannability, citation density, structured data, factual language, and freshness) consistently appear in higher-ranking content across ChatGPT, Perplexity, and Gemini.
220
+
221
+ | Feature | What E-GEO Does |
222
+ |---------|-----------------|
223
+ | **Ranking Emphasis** | Positions your content as the top choice |
224
+ | **User Intent** | Directly answers what users are looking for |
225
+ | **Competitive Edge** | Highlights your unique advantages |
226
+ | **Social Proof** | Integrates trust signals and testimonials |
227
+ | **Authority** | Establishes expert, confident tone |
228
+ | **Scannability** | Structures for easy AI parsing |
229
+
230
+ Results vary by content quality and competition. See the paper for full methodology and findings: [arXiv:2511.20867](https://arxiv.org/abs/2511.20867).
231
+
232
+ ---
233
+
234
+ ## ๐Ÿงช Reproducible Results
235
+
236
+ E-GEO ships an evaluation harness so you can measure prompt quality yourself โ€”
237
+ no trust required. It scores whether the GEO rewriter moves a target item *up*
238
+ in an LLM-simulated ranking.
239
+
240
+ ```bash
241
+ pip install pyyaml jsonschema
242
+
243
+ # Deterministic, offline smoke run (no API key needed)
244
+ GEO_EVAL_MOCK=1 python geo_eval.py evaluate \
245
+ --dataset eval/datasets/geo_smoke.jsonl --limit 5 --verbose
246
+ ```
247
+
248
+ This is the exact check that runs in [CI](.github/workflows/ci.yml) on every
249
+ pull request. Reported metrics: `avg_rank_improvement`, `win_rate`, and
250
+ `stderr_rank_improvement`.
251
+
252
+ > **Honest scope:** these numbers are a **proxy** produced by an LLM-ranker, not
253
+ > a measurement of real ChatGPT/Perplexity rankings. See
254
+ > **[docs/evaluation.md](docs/evaluation.md)** for the full methodology,
255
+ > metric definitions, and limitations.
256
+
257
+ ---
258
+
259
+ ## ๐Ÿ–ฅ๏ธ Standalone CLI (`egeo`)
260
+
261
+ Beyond Claude Code, E-GEO ships a **runtime-agnostic command line** so the same
262
+ GEO engine runs anywhere Python runs โ€” local shells, notebooks, Docker, or CI.
263
+ The CLI is a thin wrapper around the **exact same** `geo_eval.py` and
264
+ `llm_client.py` modules used by the Claude Code agents, so there is **no
265
+ duplicated optimization logic** โ€” both runtimes share one source of truth.
266
+
267
+ ### Install
268
+
269
+ ```bash
270
+ # From the repo root โ€” installs the `egeo` console script + deps
271
+ pip install -e .
272
+
273
+ # ...or run without installing (deps: pip install pyyaml jsonschema)
274
+ python -m egeo --help
275
+ ```
276
+
277
+ ### Commands
278
+
279
+ | Command | What it does |
280
+ |---------|--------------|
281
+ | `egeo optimize <file>` | **Full pipeline** โ€” analyze โ†’ rank โ†’ rewrite โ†’ schema, writes `report.md`, `optimized/*.md`, `schema/*.json`, `analysis.json` |
282
+ | `egeo evaluate` | Run the evaluation harness (reuses `geo_eval.py`, identical metrics) |
283
+ | `egeo optimize-prompts` | Meta-optimize the rewriter prompt (non-destructive by default) |
284
+ | `egeo runtimes` | List available runtime adapters and their status |
285
+ | `egeo loop <run\|collect\|doctor>` | [Loop mode](#-loop-mode-continuous-geo) โ€” plan a run, run a collector, or check the workspace |
286
+
287
+ ```bash
288
+ # Optimize a local content file (output dir defaults to ./geo-output)
289
+ egeo optimize examples/sample-input.md --out-dir ./geo-output
290
+
291
+ # Score prompt quality on a dataset
292
+ egeo evaluate --dataset eval/datasets/geo_smoke.jsonl --limit 5
293
+
294
+ # Inspect the runtime adapters
295
+ egeo runtimes
296
+ ```
297
+
298
+ ### Offline / deterministic mode
299
+
300
+ Every command honors `GEO_EVAL_MOCK=1`, which swaps in a deterministic mock LLM
301
+ client โ€” **no API key required**. This is exactly how the CLI is exercised in
302
+ [CI](.github/workflows/ci.yml):
303
+
304
+ ```bash
305
+ GEO_EVAL_MOCK=1 egeo optimize examples/sample-input.md --out-dir /tmp/egeo
306
+ GEO_EVAL_MOCK=1 egeo evaluate --dataset eval/datasets/geo_smoke.jsonl --limit 3
307
+ ```
308
+
309
+ ### Supported Runtimes
310
+
311
+ E-GEO exposes a small **runtime adapter** layer so the same agents (Analyzer,
312
+ Ranker, Rewriter, Indexer) can be driven by different execution hosts:
313
+
314
+ | Runtime | Aliases | Mode | Status | Description |
315
+ |---------|---------|------|:------:|-------------|
316
+ | **`python`** | `cli`, `local` | in-process | โœ… Available | Pure-Python runtime behind the `egeo` CLI. Runs the full pipeline in-process and honors `GEO_EVAL_MOCK` for offline, deterministic runs. |
317
+ | **`claude-code`** | `claude` | host-executed | โœ… Available | Executes the `.claude/` agents through Claude Code `/geo` slash commands on the host. Auto-detected when a `.claude/` directory is present. |
318
+
319
+ > Run `egeo runtimes` to print the live status of each adapter in your
320
+ > environment. Additional hosts (Cursor, Codex, Windsurf, โ€ฆ) can be added by
321
+ > implementing the `RuntimeAdapter` interface in
322
+ > [`egeo/runtimes.py`](egeo/runtimes.py).
323
+
324
+ ---
325
+
326
+ ## ๐Ÿ” Loop Mode (continuous GEO)
327
+
328
+ One-shot GEO answers *"how is this page doing today?"*. **Loop mode** answers
329
+ *"what changed, and what should I do about it?"* โ€” week after week, without you
330
+ asking. It is fully **opt-in**: `/geo <url>` and `egeo optimize` behave exactly
331
+ as before and never need a workspace.
332
+
333
+ ### The workspace (`$EGEO_HOME`)
334
+
335
+ All loop state lives **outside the repo**, in the workspace resolved from
336
+ `$EGEO_HOME` (default `~/.egeo/`), so `git pull` never touches your data:
337
+
338
+ ```
339
+ $EGEO_HOME/
340
+ โ”œโ”€โ”€ LOG.md # append-only activity feed (one line per event)
341
+ โ”œโ”€โ”€ config.yaml # cadence, models, budgets, scaling weights
342
+ โ”œโ”€โ”€ project.yaml # portable project identity, targets, guardrails
343
+ โ”œโ”€โ”€ SUBSTRATE.md # the contract, vendored on bootstrap
344
+ โ”œโ”€โ”€ signals/<slug>.md # evidence โ€” deduped, frequency-counted
345
+ โ”œโ”€โ”€ docs/<slug>.md # durable knowledge โ€” analyses, decisions
346
+ โ”œโ”€โ”€ data/<collector>/*.jsonl # raw collector output (not artifacts)
347
+ โ”œโ”€โ”€ domains/<loop>/README.md # charter: focus, backlog, run Timeline
348
+ โ””โ”€โ”€ prompts/ # optimized prompts (repo prompts/ stay pristine)
349
+ ```
350
+
351
+ The layout and the artifact rules are defined by [`SUBSTRATE.md`](SUBSTRATE.md)
352
+ and mechanically enforced by `python -m egeo.substrate_lint`.
353
+
354
+ `project.yaml` is optional during migration. When present, it is the validated
355
+ source for the active project's canonical domain, tracked queries, tracked
356
+ pages, and anti-spam/canibalization guardrails. `config.yaml` remains the
357
+ machine-facing loop configuration. If `project.yaml` is absent, collectors use
358
+ the legacy `config.yaml` fields and `egeo loop doctor` reports that fallback.
359
+ See [`examples/project.yaml`](examples/project.yaml) for the portable contract.
360
+
361
+ ### Commands
362
+
363
+ | Command | What it does |
364
+ |---------|--------------|
365
+ | `egeo loop doctor` | Bootstrap the workspace if missing, then health-check it (layout, config, budgets, substrate lint) |
366
+ | `egeo loop decide` | Rank exactly one next action from collector JSONL + the outcome ledger (LLM-free; never publishes) |
367
+ | `egeo loop collect serp` | Record a search-result snapshot (Brave API) into `data/serp/*.jsonl` |
368
+ | `egeo loop collect page` | Record a page snapshot (hash, title, meta, JSON-LD types, word count) into `data/page/*.jsonl` |
369
+ | `egeo loop run <domain>` | Resolve and print the run plan โ€” current focus, fresh collector deltas, candidate signals |
370
+ | `/geo:loop <domain>` | Execute one bounded loop iteration in Claude Code (the agent does the interpretive work) |
371
+
372
+ ```bash
373
+ # 1. Create the workspace
374
+ egeo loop doctor
375
+
376
+ # 2. Describe what you want watched: $EGEO_HOME/domains/example-com/README.md
377
+ # (## Charter, ## Cadence, ## Current focus, ## Backlog, ## Timeline)
378
+
379
+ # 3. Collect ground truth
380
+ export BRAVE_API_KEY=...
381
+ egeo loop collect serp --query "best geo tool" --target-domain example.com
382
+ egeo loop collect page --url https://example.com/pricing
383
+
384
+ # 4. See what a run would do โ€” writes nothing
385
+ egeo loop run example-com --dry-run
386
+
387
+ # 5. Do the run (Claude Code, or headless)
388
+ claude -p "/geo:loop example-com"
389
+ ```
390
+
391
+ `egeo loop run` is **LLM-free by design**: it is the trigger seam that prepares
392
+ and validates the plan. The reasoning happens in
393
+ [`.claude/skills/geo-loop/SKILL.md`](.claude/skills/geo-loop/SKILL.md), which
394
+ enforces the run contract: **one** unit of work, **one** Timeline entry ending in
395
+ `Outcome: success|partial|failure|no-op`, **one** `LOG.md` line, verified before
396
+ exit.
397
+
398
+ ### Collectors
399
+
400
+ Collectors are the loop's senses: deterministic, LLM-free, budget-aware, and
401
+ append-only. Every collector honours the same 10-point contract
402
+ ([`collectors/README.md`](collectors/README.md)) โ€” in short: write JSONL to
403
+ `$EGEO_HOME/data/<name>/`, one record per observation with a `schema_version`,
404
+ respect the daily budget in `config.yaml`, append exactly one `LOG.md` line per
405
+ pass, and **fail loudly** instead of writing a partial or fabricated record.
406
+
407
+ | Collector | Needs | Output |
408
+ |-----------|-------|--------|
409
+ | `serp` | `BRAVE_API_KEY` | Top-10 results per query + your target's position |
410
+ | `page` | nothing | `content_hash`, title, meta description, JSON-LD types, word count |
411
+
412
+ Both accept `--fixture` for offline, deterministic runs โ€” that is how they are
413
+ tested without touching the network.
414
+
415
+ ### Scheduling (Hermes cron reference)
416
+
417
+ Any scheduler drives the same commands. Pin **provider and model per job**, and
418
+ for anything more frequent than weekly deliver **locally** and let a weekly
419
+ digest do the notifying:
420
+
421
+ ```
422
+ # hourly โ€” local delivery only (JSONL + LOG line, no notification)
423
+ 0 * * * * provider=anthropic model=claude-sonnet-4-5 deliver=local \
424
+ egeo loop collect page --url https://example.com/pricing
425
+
426
+ # daily โ€” one bounded loop run
427
+ 30 6 * * * provider=anthropic model=claude-sonnet-4-5 deliver=local \
428
+ claude -p "/geo:loop example-com"
429
+
430
+ # weekly โ€” the only job that pings you
431
+ 0 9 * * 1 provider=anthropic model=claude-opus-4-1 deliver=notify \
432
+ claude -p "Summarize $EGEO_HOME/LOG.md for the past 7 days"
433
+ ```
434
+
435
+ ---
436
+
437
+ ## ๐Ÿ†š E-GEO vs Other GEO Tools
438
+
439
+ | Feature | E-GEO | GEO Optimizer | GEO-optim/GEO | Awesome GEO | Traditional SEO |
440
+ |---------|-------|---------------|---------------|-------------|----------------|
441
+ | **Type** | CLI + Claude Code | CLI + MCP | Research repo | Curated list | โ€” |
442
+ | **Content Rewriting** | โœ… Full pipeline | โš ๏ธ Audit only | โŒ | โŒ | โŒ No |
443
+ | **AI-Ranking Simulation** | โœ… LLM-based | โŒ | โŒ | โŒ | โŒ No |
444
+ | **Schema Generation** | โœ… Auto JSON-LD | โš ๏ธ Partial | โŒ | โŒ | โŒ Manual |
445
+ | **Competitive Analysis** | โœ… Built-in | โŒ | โŒ | โŒ | โŒ No |
446
+ | **Academic Foundation** | โœ… [arXiv:2511.20867](https://arxiv.org/abs/2511.20867) | โœ… KDD 2024 | โœ… Original GEO paper | โŒ | โŒ Heuristics |
447
+ | **Multi-Runtime** | โœ… Python + Claude Code | โœ… Python + MCP | โŒ | โŒ | โŒ |
448
+ | **llms.txt Support** | โœ… | โœ… | โŒ | ๐Ÿ“– Listed | โŒ |
449
+ | **Cost** | Free / MIT | Free / MIT | Free | Free | Expensive |
450
+
451
+ > **E-GEO is the only open-source GEO tool that combines content rewriting, ranking simulation, and schema generation in a single pipeline.** Others focus on auditing or listing โ€” E-GEO does the full optimization.
452
+
453
+ ---
454
+
455
+ ## ๐Ÿ’Ž Premium Output
456
+
457
+ E-GEO delivers outputs that look like they came from a $100M company:
458
+
459
+ ```
460
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
461
+ โ”‚ ๐ŸŽฏ GEO AUDIT REPORT โ”‚
462
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
463
+ โ”‚ URL: yoursite.com/pricing โ”‚
464
+ โ”‚ Score: 78/100 โ”‚
465
+ โ”‚ Ranking Potential: โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘ 78% โ”‚
466
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
467
+ โ”‚ โ”‚
468
+ โ”‚ โœ… STRENGTHS โ”‚
469
+ โ”‚ โ€ข Clear value proposition โ”‚
470
+ โ”‚ โ€ข Good content structure โ”‚
471
+ โ”‚ โ”‚
472
+ โ”‚ โš ๏ธ GAPS โ”‚
473
+ โ”‚ โ€ข Missing social proof โ†’ Add customer count โ”‚
474
+ โ”‚ โ€ข No urgency signals โ†’ Add limited-time offer โ”‚
475
+ โ”‚ โ”‚
476
+ โ”‚ ๐Ÿ“ˆ PRIORITY ACTIONS โ”‚
477
+ โ”‚ 1. Add testimonials (+15 points) โ”‚
478
+ โ”‚ 2. Include pricing comparison (+10 points) โ”‚
479
+ โ”‚ 3. Add schema markup (+5 points) โ”‚
480
+ โ”‚ โ”‚
481
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
482
+ ```
483
+
484
+ ---
485
+
486
+ ## ๐Ÿค– How It Works
487
+
488
+ <div align="center">
489
+
490
+ <!-- SYSTEM DIAGRAM -->
491
+ <img src="assets/egeo-agents.png" alt="E-GEO Multi-Agent System" width="600" />
492
+
493
+ </div>
494
+
495
+ <br />
496
+
497
+ E-GEO uses **4 specialized AI agents** orchestrated by Claude Code:
498
+
499
+ | Agent | What it does | Output |
500
+ |:------|:-------------|:-------|
501
+ | ๐Ÿ” **Analyzer** | Extracts content, scores GEO signals, identifies gaps | `analysis.json` |
502
+ | ๐Ÿ“Š **Ranker** | Simulates AI-engine ranking, predicts positions | Baseline score |
503
+ | โœ๏ธ **Rewriter** | Optimizes content while preserving brand voice | `optimized/*.md` |
504
+ | ๐Ÿ—‚๏ธ **Indexer** | Generates schema markup and technical assets | `schema/*.json` |
505
+
506
+ ---
507
+
508
+ ## ๐Ÿ“ What's Included
509
+
510
+ ```
511
+ .claude/
512
+ โ”œโ”€โ”€ CLAUDE.md # System knowledge base
513
+ โ”œโ”€โ”€ output-styles/
514
+ โ”‚ โ””โ”€โ”€ geo-optimizer.md # Premium formatting mode
515
+ โ”œโ”€โ”€ agents/
516
+ โ”‚ โ”œโ”€โ”€ geo-analyzer.md # Content analysis
517
+ โ”‚ โ”œโ”€โ”€ geo-rewriter.md # Content optimization
518
+ โ”‚ โ”œโ”€โ”€ geo-ranker.md # Ranking simulation
519
+ โ”‚ โ””โ”€โ”€ geo-indexer.md # Schema generation
520
+ โ”œโ”€โ”€ skills/
521
+ โ”‚ โ”œโ”€โ”€ competitive-analysis/ # Auto-triggered competitor analysis
522
+ โ”‚ โ”œโ”€โ”€ content-scoring/ # Auto-triggered scoring
523
+ โ”‚ โ”œโ”€โ”€ schema-generator/ # Auto-triggered schema
524
+ โ”‚ โ””โ”€โ”€ geo-loop/ # Loop-mode run contract
525
+ โ””โ”€โ”€ commands/
526
+ โ”œโ”€โ”€ geo.md # Main command
527
+ โ”œโ”€โ”€ geo-audit.md
528
+ โ”œโ”€โ”€ geo-optimize.md
529
+ โ”œโ”€โ”€ geo-batch.md
530
+ โ”œโ”€โ”€ geo-report.md
531
+ โ”œโ”€โ”€ geo-compete.md
532
+ โ””โ”€โ”€ geo-loop.md
533
+
534
+ egeo/ # Standalone CLI package
535
+ โ”œโ”€โ”€ cli.py # `egeo` entrypoint
536
+ โ”œโ”€โ”€ loop.py # `egeo loop run|collect|doctor`
537
+ โ”œโ”€โ”€ workspace.py # $EGEO_HOME resolution + bootstrap
538
+ โ””โ”€โ”€ substrate_lint.py # SUBSTRATE.md enforcement
539
+
540
+ collectors/ # Deterministic, LLM-free senses
541
+ โ”œโ”€โ”€ README.md # The collector contract
542
+ โ”œโ”€โ”€ serp.py # Brave search snapshots
543
+ โ”œโ”€โ”€ page.py # Page snapshots
544
+ โ””โ”€โ”€ fixtures/ # Offline test data
545
+
546
+ SUBSTRATE.md # Workspace/artifact contract
547
+ ```
548
+
549
+ ---
550
+
551
+ ## ๐ŸŽ Perfect For
552
+
553
+ <table>
554
+ <tr>
555
+ <td align="center" width="20%">
556
+ ๐Ÿš€<br /><strong>SaaS Founders</strong><br /><sub>AI-engine traffic</sub>
557
+ </td>
558
+ <td align="center" width="20%">
559
+ ๐Ÿ’ผ<br /><strong>B2B Marketers</strong><br /><sub>Landing pages</sub>
560
+ </td>
561
+ <td align="center" width="20%">
562
+ ๐Ÿ›๏ธ<br /><strong>E-commerce</strong><br /><sub>Product descriptions</sub>
563
+ </td>
564
+ <td align="center" width="20%">
565
+ โœ๏ธ<br /><strong>Content Creators</strong><br /><sub>AI discoverability</sub>
566
+ </td>
567
+ <td align="center" width="20%">
568
+ ๐Ÿข<br /><strong>Agencies</strong><br /><sub>GEO services</sub>
569
+ </td>
570
+ </tr>
571
+ </table>
572
+
573
+ ---
574
+
575
+ ## ๐Ÿ“š Documentation
576
+
577
+ | Resource | Description |
578
+ |:---------|:------------|
579
+ | ๐Ÿ“– **[Getting Started](docs/getting-started.md)** | Step-by-step tutorial |
580
+ | โš™๏ธ **[How It Works](docs/how-it-works.md)** | Technical deep dive |
581
+ | โ“ **[FAQ](docs/faq.md)** | Common questions answered |
582
+ | ๐Ÿงฉ **[skills.sh Playbook](docs/skills-sh-playbook.md)** | Listing, ranking, and metadata checklist |
583
+ | ๐Ÿงช **[Evaluation Harness](docs/evaluation.md)** | Dataset format, commands, metrics, and honest limitations |
584
+ | ๐Ÿ“ **[Usage Guide](USAGE.md)** | Complete command reference |
585
+ | ๐Ÿ“ **[Research Paper](https://arxiv.org/abs/2511.20867)** | The science behind E-GEO |
586
+
587
+ ---
588
+
589
+ ## ๐Ÿค Contributing
590
+
591
+ We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
592
+
593
+ **Quick ways to contribute:**
594
+ - Report bugs via [issues](https://github.com/mverab/eGEOagents/issues)
595
+ - Submit pull requests for features
596
+ - Improve documentation
597
+ - Share your GEO results
598
+
599
+ ---
600
+
601
+ ## ๐Ÿ” SEO & AI Search Glossary
602
+
603
+ E-GEO covers the full spectrum of AI search optimization. If you're searching for any of these, you're in the right place:
604
+
605
+ | Term | What it means |
606
+ |------|---------------|
607
+ | **GEO** (Generative Engine Optimization) | Optimizing content for AI answer engines like ChatGPT, Perplexity, Gemini |
608
+ | **AEO** (Answer Engine Optimization) | Structuring content so AI engines can parse and cite it |
609
+ | **AI SEO** | Adapting traditional SEO for AI-powered search |
610
+ | **LLM SEO** | Optimization specifically for large language model responses |
611
+ | **AI Visibility** | How often and how well your brand appears in AI-generated answers |
612
+ | **Citation Tracking** | Monitoring whether AI engines cite your site as a source |
613
+ | **llms.txt** | A standard file (like robots.txt) that tells AI crawlers what content to prioritize |
614
+
615
+ ---
616
+
617
+ ## ๐Ÿ“œ License
618
+
619
+ MIT License - use it, modify it, sell with it. See [LICENSE](LICENSE) for details.
620
+
621
+ ---
622
+
623
+ ## ๐Ÿ™‹ Support & Community
624
+
625
+ - **Issues:** [GitHub Issues](https://github.com/mverab/eGEOagents/issues)
626
+ - **Discussions:** [GitHub Discussions](https://github.com/mverab/eGEOagents/discussions)
627
+ - **Research:** [E-GEO Paper (arXiv:2511.20867)](https://arxiv.org/abs/2511.20867)
628
+
629
+ ---
630
+
631
+ ## ๐Ÿš€ Ready to Rank Higher?
632
+
633
+ <div align="center">
634
+
635
+ ```bash
636
+ # Install
637
+ cp -r eGEOagents/.claude .
638
+
639
+ # Activate (in Claude Code)
640
+ /output-style geo-optimizer
641
+
642
+ # Optimize your first page
643
+ /geo https://yoursite.com
644
+ ```
645
+
646
+ <br />
647
+
648
+ <a href="https://github.com/mverab/eGEOagents">
649
+ <img src="https://img.shields.io/badge/โญ-Star%20on%20GitHub-yellow?style=for-the-badge&logo=github" alt="Star on GitHub" />
650
+ </a>
651
+
652
+ <br /><br />
653
+
654
+ ---
655
+
656
+ **Built for the AI-first web โ€” optimize your content for ChatGPT, Perplexity, Claude, and Gemini with E-GEO, the open-source GEO tool.** ๐ŸŒ
657
+
658
+ <sub>Made with โค๏ธ by <a href="https://verabadias.gumroad.com/">Vera Badias</a> โ€ข Based on research from <a href="https://arxiv.org/abs/2511.20867">arXiv:2511.20867</a></sub>
659
+
660
+ <sub>๐Ÿค– This project is AI-assisted. See <a href="CONTRIBUTING.md#ai-transparency">AI Transparency</a> for details.</sub>
661
+
662
+ </div>