*GEO Optimizer by Juan Camilo Auriti — https://github.com/auriti-labs/geo-optimizer-skill*
Recursos
19Instal·la
npx skillscat add auriti-labs/geo-optimizer-skill Instal·la des del registre de SkillsCat.
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 25Score 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 citationsPerplexityBot— Perplexity answer citationsClaudeBot— Claude web citationsGoogle-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.txtRequired 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/toolTypes: website, webapp, faq, article, organization, breadcrumb.
Step 5 — Optimize content (Princeton GEO methods)
Apply evidence-based improvements ordered by measured impact:
| Priority | Method | Impact | Action |
|---|---|---|---|
| 🔴 1 | Cite Sources | +30–115% | Add authoritative external links |
| 🔴 2 | Add Statistics | +40% | Include concrete numbers, percentages, dates |
| 🟠 3 | Quotation Addition | +30–40% | Expert quotes: "Text" — Name, Role, Org, Year |
| 🟠 4 | Authoritative Tone | +6–12% | Confident, expert framing |
| 🟡 5 | Fluency Optimization | +15–30% | Clear, direct language |
| 🟡 6 | Easy-to-Understand | +8–15% | Define terms, use analogies |
| 🟢 7 | Technical Terms | +5–10% | Correct industry terminology |
| 🟢 8 | Unique Words | +5–8% | Vary vocabulary deliberately |
| ❌ 9 | Keyword 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,schemaCreates robots.txt entries, llms.txt, JSON-LD schema, meta tags, and AI discovery endpoints based on audit results.
Scoring
8 categories, 100 points total:
| Category | What it measures |
|---|---|
robots |
AI bot access via robots.txt |
llms |
llms.txt presence, structure, depth |
schema |
JSON-LD types, richness, sameAs |
meta |
title, description, canonical, Open Graph |
content |
H1, word count, numbers, links, structure |
signals |
lang attribute, RSS feed, freshness |
ai_discovery |
.well-known/ai.txt, /ai/summary.json, /ai/faq.json |
brand_entity |
Name 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:
| Format | Flag | Use case |
|---|---|---|
| text | --format text |
Terminal (default) |
| json | --format json |
Programmatic consumption, CI pipelines |
| rich | --format rich |
Colored terminal with ASCII dashboard |
| html | --format html |
Self-contained HTML report |
| github | --format github |
GitHub Actions annotations |
| ci | --format ci |
CI/CD systems (structured annotations) |
--format pdf |
Client-facing reports |
Informational Checks
10 non-scoring checks that provide deeper analysis beyond the 0–100 score:
| Check | What it detects |
|---|---|
| WebMCP Readiness | SearchAction, labeled forms, tool attributes for AI agents |
| Negative Signals | CTA overload, thin content, keyword stuffing, boilerplate |
| Prompt Injection | LLM instructions in content, HTML comment injection, hidden text |
| Trust Stack | 5-layer trust score (technical, identity, social, academic, consistency) |
| RAG Chunk Readiness | Content structure optimized for retrieval-augmented generation |
| Embedding Proximity | Semantic alignment between title, headings, and body content |
| Content Decay | Temporal signals indicating stale or outdated content |
| Platform Citation | Per-platform citation profile (ChatGPT vs Perplexity vs Gemini) |
| Context Window | Content length optimization for LLM context windows |
| Instruction Readiness | Content structure that helps LLMs follow extraction patterns |
MCP Integration
12 tools and 5 resources for Claude Code, Cursor, Windsurf, and any MCP client:
Tools:
| Tool | Description |
|---|---|
geo_audit |
Full GEO audit (score 0–100) |
geo_fix |
Generate automatic fixes |
geo_llms_generate |
Generate llms.txt from sitemap |
geo_citability |
Citability score (47 methods) |
geo_schema_validate |
Validate JSON-LD schema |
geo_compare |
Compare GEO scores across sites (max 5) |
geo_gap_analysis |
Competitive gap analysis with priorities |
geo_ai_discovery |
Check AI discovery endpoints |
geo_check_bots |
Check AI bot access via robots.txt |
geo_trust_score |
Trust Stack Score (5-layer, grade A–F) |
geo_negative_signals |
Negative signals detection |
geo_factual_accuracy |
Factual 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:
| Platform | File | Size | Limit | How to use |
|---|---|---|---|---|
| Claude Projects | ai-context/claude-project.md |
~11,700 chars | No limit | Project → Add as Knowledge |
| ChatGPT Custom GPT | ai-context/chatgpt-custom-gpt.md |
~4,500 chars | 8,000 chars | GPT Builder → System prompt |
| ChatGPT Instructions | ai-context/chatgpt-instructions.md |
~800 chars | 1,500 chars/field | Settings → Custom Instructions |
| Cursor | ai-context/cursor.mdc |
~4,200 chars | No limit | Copy to .cursor/rules/geo-optimizer.mdc |
| Windsurf | ai-context/windsurf.md |
~4,500 chars | 12,000 chars | Copy to .windsurf/rules/geo-optimizer.md |
| Kiro | ai-context/kiro-steering.md |
~3,300 chars | No limit | Copy 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.mdGEO Optimizer by Juan Camilo Auriti — https://github.com/auriti-labs/geo-optimizer-skill