A practical GEO (Generative Engine Optimization) system to help brands become preferred answers in LLM outputs.
- Build an intent graph from prompts
- Dedupe and cluster prompts by bucket
- Store and manage GEO assets (entity/faq/comparison/use-case)
- Run model visibility scans (mention/citation/recommendation)
- Support a real OpenAI-compatible scan adapter
- Generate weekly KPI reports with bucket breakdown
src/geo_system/intent_engine.pysrc/geo_system/content_engine.pysrc/geo_system/model_testing_engine.pysrc/geo_system/feedback_orchestrator.pysrc/geo_system/reporting.py
cd geo-system
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
geo init --project tripo3d --domain tripo3d.ai --brand tripo3d
geo prompts generate --seed "3d,ai 3d,text to 3d,image to 3d" --count 100
geo adapter set --provider openai --base-url https://lonr.zeabur.app/v1 --api-key YOUR_KEY --model gpt-5.3-codex
geo adapter set --provider claude --base-url https://api.anthropic.com/v1 --api-key YOUR_KEY --model claude-sonnet-4-6
geo adapter set --provider gemini --base-url https://lonr.zeabur.app/v1 --api-key YOUR_KEY --model gemini-3.1-pro-preview
geo scan run --models openai:live,claude:live,gemini:live --append
geo report weeklyThis MVP stores data locally in JSON files for simplicity.
- Multi-provider adapter config (openai/claude/gemini)
- Run-level trend comparison (current run vs previous run)
- Action scoring in weekly actions
- Append mode for scan history
- Bucket-level trend tracking (mention delta per bucket)
- Owner-page mapping CLI (
geo owner set --bucket ... --page ...) - Weekly actions now include owner_page suggestions
geo owner set --bucket info --page /what-is-tripo3d
geo owner set --bucket comparison --page /tripo3d-vs-meshy
geo owner set --bucket decision --page /best-ai-3d-tools
geo owner set --bucket usecase --page /ai-3d-for-game-assets- Citation URL extraction and top-cited URL reporting
- Semantic prompt clustering (
prompt_semantic_clusters.json) - Content suggestion output (
docs/content_suggestions.json) - Better scan data model with cited_urls support
Launch a web interface to easily run GEO scans without CLI:
# Install Flask
pip install flask
# Start web server
python -m geo_system.web_appThen open http://localhost:5000 in your browser.
-
Single Scan - Enter company/product info:
- Brand name
- Domain
- Product description
- Keywords
- Select AI models to test
-
Batch Scan - Upload JSON config to test multiple companies:
{
"projects": [
{"brand": "Tripo3D", "domain": "tripo3d.ai", "keywords": "AI 3D,text to 3D"},
{"brand": "Meshy", "domain": "meshy.ai", "keywords": "AI 3D,model generation"}
],
"models": "openai:live,claude:live"
}- Results Display:
- Mention rate, citation rate, recommendation rate
- Per-model performance breakdown
- Detailed scan results table
After running geo report weekly, open:
dashboard/index.html
This local HTML dashboard visualizes model KPI, owner-page mappings, weekly actions, and content suggestions.