Index live · v1.3.0 · MAY 30 2026

GEO Optimizer

A-rank

GEO Optimizer by Auriti Labs is a runnable Generative Engine Optimization toolkit grounded in the SIGKDD 2024 paper 'GEO: Generative Engine Optimization' (Aggarwal et al.). It ships an 11-command Python CLI (audit, fix, llms, schema, diff, monitor, track) and an MCP server exposing GEO tools and resources, built on the paper's foundational content-modification methods (expanded by the author). The core audit runs without API keys; LLM-sentiment features accept an OpenAI/Anthropic/Groq key. Notable security posture: documented anti-SSRF protections (DNS pinning, redirect validation, private-range blocking), response-size caps, and dedicated SSRF/prompt-injection tests.

Claude CodeClaude AiMulti Platform
443stars
Updated 1 day ago
1contributor

Install This Skill

npx skills add Auriti-Labs/geo-optimizer-skill

SKILL.md

GEO Optimizer

Make websites visible and citable by AI search engines (ChatGPT Search, Perplexity, Claude, Gemini AI Overviews). Implements the GEO audit framework plus a 47-method citability engine based on Princeton KDD 2024 research.

Workflow

Step 1 — Audit the site

Run geo audit first. It scores the site 0–100 across 8 categories and generates a prioritized action list.

geo audit --url https://yoursite.com
geo audit --url https://yoursite.com --format json
geo audit --sitemap https://yoursite.com/sitemap.xml --max-urls 25

Score bands: 0–35 critical · 36–67 foundation · 68–85 good · 86–100 excellent.

Step 2 — Fix AI crawler access (robots.txt)

Ensure AI citation bots can reach the site. Critical bots that must never be blocked:

  • OAI-SearchBot — ChatGPT Search citations
  • PerplexityBot — Perplexity answer citations
  • ClaudeBot — Claude web citations
  • Google-Extended — Gemini AI Overviews

To allow citations while blocking training: Disallow: / for GPTBot and anthropic-ai, but keep Allow: / for OAI-SearchBot, ClaudeBot, PerplexityBot.

Step 3 — Generate llms.txt

/llms.txt tells AI crawlers what the site is about and which pages matter.

geo llms --base-url https://yoursite.com --site-name "Site Name" --description "One-sentence description." --output ./public/llms.txt

Required structure: H1 (site name) → blockquote (description) → H2 sections with descriptive links. Keep under 200 lines. Full spec: https://llmstxt.org

Step 4 — Inject JSON-LD schema

Add structured data so AI engines understand page types:

geo schema --type website --url https://yoursite.com
geo schema --type faq --url https://yoursite.com/faq
geo schema --type webapp --url https://yoursite.com/tool

Types: website, webapp, faq, article, organization, breadcrumb.

Step 5 — Optimize content (Princeton GEO methods)

Apply evidence-based improvements ordered by measured impact:

PriorityMethodImpactAction
🔴 1Cite Sources+30–115%Add authoritative external links
🔴 2Add Statistics+40%Include concrete numbers, percentages, dates
🟠 3Quotation Addition+30–40%Expert quotes: "Text" — Name, Role, Org, Year
🟠 4Authoritative Tone+6–12%Confident, expert framing
🟡 5Fluency Optimization+15–30%Clear, direct language
🟡 6Easy-to-Understand+8–15%Define terms, use analogies
🟢 7Technical Terms+5–10%Correct industry terminology
🟢 8Unique Words+5–8%Vary vocabulary deliberately
❌ 9Keyword Stuffing~0% ⚠️Do NOT apply — neutral to negative

Source: Princeton KDD 2024 (10,000 queries on Perplexity.ai). Extended by AutoGEO ICLR 2026, SE Ranking 2025, Growth Marshal 2026 to 47 total methods.

Step 6 — Auto-fix all gaps

Generate all missing files at once:

geo fix --url https://yoursite.com --apply
geo fix --url https://yoursite.com --only robots,llms,schema

Creates robots.txt entries, llms.txt, JSON-LD schema, meta tags, and AI discovery endpoints based on audit results.

Scoring

8 categories, 100 points total:

CategoryWhat it measures
robotsAI bot access via robots.txt
llmsllms.txt presence, structure, depth
schemaJSON-LD types, richness, sameAs
metatitle, description, canonical, Open Graph
contentH1, word count, numbers, links, structure
signalslang attribute, RSS feed, freshness
ai_discovery.well-known/ai.txt, /ai/summary.json, /ai/faq.json
brand_entityName consistency, Knowledge Graph, about/contact

CLI Commands

11 commands covering audit, remediation, analysis, and monitoring:

# ── Primary ──
geo audit    --url URL [--format text|json|rich|html|github|ci|pdf] [--sitemap URL]
geo fix      --url URL [--apply] [--only robots,llms,schema,meta,ai_discovery,content]
geo llms     --base-url URL --site-name NAME --description DESC --output FILE
geo schema   --type TYPE --url URL [--inject FILE]

# ── Analysis ──
geo diff       --before URL --after URL
geo history    --url URL
geo coherence  --url URL

# ── Monitoring ──
geo monitor  --domain DOMAIN
geo track    --url URL [--report] [--output FILE]

# ── Utility ──
geo logs       --path LOGFILE
geo snapshots  --url URL [--save | --compare SNAPSHOT_ID]

Output Formats

7 formats for different workflows:

FormatFlagUse case
text--format textTerminal (default)
json--format jsonProgrammatic consumption, CI pipelines
rich--format richColored terminal with ASCII dashboard
html--format htmlSelf-contained HTML report
github--format githubGitHub Actions annotations
ci--format ciCI/CD systems (structured annotations)
pdf--format pdfClient-facing reports

Informational Checks

10 non-scoring checks that provide deeper analysis beyond the 0–100 score:

CheckWhat it detects
WebMCP ReadinessSearchAction, labeled forms, tool attributes for AI agents
Negative SignalsCTA overload, thin content, keyword stuffing, boilerplate
Prompt InjectionLLM instructions in content, HTML comment injection, hidden text
Trust Stack5-layer trust score (technical, identity, social, academic, consistency)
RAG Chunk ReadinessContent structure optimized for retrieval-augmented generation
Embedding ProximitySemantic alignment between title, headings, and body content
Content DecayTemporal signals indicating stale or outdated content
Platform CitationPer-platform citation profile (ChatGPT vs Perplexity vs Gemini)
Context WindowContent length optimization for LLM context windows
Instruction ReadinessContent structure that helps LLMs follow extraction patterns

MCP Integration

12 tools and 5 resources for Claude Code, Cursor, Windsurf, and any MCP client:

Tools:

ToolDescription
geo_auditFull GEO audit (score 0–100)
geo_fixGenerate automatic fixes
geo_llms_generateGenerate llms.txt from sitemap
geo_citabilityCitability score (47 methods)
geo_schema_validateValidate JSON-LD schema
geo_compareCompare GEO scores across sites (max 5)
geo_gap_analysisCompetitive gap analysis with priorities
geo_ai_discoveryCheck AI discovery endpoints
geo_check_botsCheck AI bot access via robots.txt
geo_trust_scoreTrust Stack Score (5-layer, grade A–F)
geo_negative_signalsNegative signals detection
geo_factual_accuracyFactual claims and sourcing audit

Resources: geo://ai-bots · geo://score-bands · geo://methods · geo://changelog · geo://ai-discovery-spec

Plugin System

Extend the audit with custom checks via entry points:

# pyproject.toml
[project.entry-points."geo_optimizer.checks"]
my_check = "my_package:MyCheck"

Plugins implement the AuditCheck protocol (name, description, max_score, run()). Plugin results appear in the audit output but do not affect the base score.

Platform Context Files

Platform-optimized versions of this skill for different AI tools:

PlatformFileSizeLimitHow to use
Claude Projectsai-context/claude-project.md~11,700 charsNo limitProject → Add as Knowledge
ChatGPT Custom GPTai-context/chatgpt-custom-gpt.md~4,500 chars8,000 charsGPT Builder → System prompt
ChatGPT Instructionsai-context/chatgpt-instructions.md~800 chars1,500 chars/fieldSettings → Custom Instructions
Cursorai-context/cursor.mdc~4,200 charsNo limitCopy to .cursor/rules/geo-optimizer.mdc
Windsurfai-context/windsurf.md~4,500 chars12,000 charsCopy to .windsurf/rules/geo-optimizer.md
Kiroai-context/kiro-steering.md~3,300 charsNo limitCopy to .kiro/steering/geo-optimizer.md
# Quick copy commands
mkdir -p .cursor/rules && cp ai-context/cursor.mdc .cursor/rules/geo-optimizer.mdc
mkdir -p .windsurf/rules && cp ai-context/windsurf.md .windsurf/rules/geo-optimizer.md
mkdir -p .kiro/steering && cp ai-context/kiro-steering.md .kiro/steering/geo-optimizer.md

GEO Optimizer by Juan Camilo Auriti — https://github.com/auriti-labs/geo-optimizer-skill

Synced from Auriti-Labs/geo-optimizer-skill@4a04cd3fetched May 30, 2026

When to use this skill

  • Research-backed citability scoring for AI answer engines (a 0–100 score and ranked fixes)
  • Auditing and improving content for ChatGPT, Perplexity, Gemini, and Google AI Overviews
  • Running the same GEO logic across Claude, Cursor, Windsurf, or any MCP client
  • Solo operators who want measurement grounded in published research, not vibes

When not to use

  • Agency prospecting/proposal workflows — use `geo-seo-claude`
  • Traditional keyword/technical SEO — use `claude-seo` or `seo-audit`
  • LLM-sentiment features without an OpenAI/Anthropic/Groq key (the core audit runs key-free, but sentiment needs one)

Frequently asked questions

Quick Stats

Source repo · this path
Stars443
Forks53
Last commit2026-05-29
Contributors1
LicenseMIT
CategorySEO
View on GitHub

Tags

geoaeoseoclimcpai-search