/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. ```bash geo audit --url https://yoursite.com geo audit --url https://yoursite.com --format json geo audit
npx skillsauth add auriti-labs/geo-optimizer-skill geo-optimizer-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
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.
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 OverviewsTo allow citations while blocking training: Disallow: / for GPTBot and anthropic-ai, but keep Allow: / for OAI-SearchBot, ClaudeBot, PerplexityBot.
/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
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.
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.
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.
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 |
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]
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) |
| pdf | --format pdf | Client-facing reports |
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 |
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
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-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.md
GEO Optimizer by Juan Camilo Auriti — https://github.com/auriti-labs/geo-optimizer-skill
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.