{"id":50747606,"url":"https://github.com/Auriti-Labs/geo-optimizer-skill","last_synced_at":"2026-06-26T15:00:52.643Z","repository":{"id":339123232,"uuid":"1160558554","full_name":"Auriti-Labs/geo-optimizer-skill","owner":"Auriti-Labs","description":"Open-source Answer Engine Optimization (AEO) \u0026 Generative Engine Optimization (GEO) toolkit — audit, optimize \u0026 track whether ChatGPT, Perplexity, Gemini \u0026 Google AI Overviews cite your site. AI SEO / LLM SEO. CLI, Python, MCP, Astro.","archived":false,"fork":false,"pushed_at":"2026-06-17T10:50:14.000Z","size":30264,"stargazers_count":477,"open_issues_count":2,"forks_count":57,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-17T12:20:39.393Z","etag":null,"topics":["aeo","ai-search-optimization","ai-seo","ai-visibility","answer-engine-optimization","astro","chatgpt","citation-tracking","claude","cli","gemini","generative-engine-optimization","geo","llm-seo","llms-txt","mcp","perplexity","python","schema-markup","seo"],"latest_commit_sha":null,"homepage":"https://auriti-labs.github.io/geo-optimizer-skill/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Auriti-Labs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-18T04:55:11.000Z","updated_at":"2026-06-17T10:50:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Auriti-Labs/geo-optimizer-skill","commit_stats":null,"previous_names":["auriti-web-design/geo-optimizer-skill","auriti-labs/geo-optimizer-skill"],"tags_count":92,"template":false,"template_full_name":null,"purl":"pkg:github/Auriti-Labs/geo-optimizer-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auriti-Labs%2Fgeo-optimizer-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auriti-Labs%2Fgeo-optimizer-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auriti-Labs%2Fgeo-optimizer-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auriti-Labs%2Fgeo-optimizer-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Auriti-Labs","download_url":"https://codeload.github.com/Auriti-Labs/geo-optimizer-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Auriti-Labs%2Fgeo-optimizer-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34821764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aeo","ai-search-optimization","ai-seo","ai-visibility","answer-engine-optimization","astro","chatgpt","citation-tracking","claude","cli","gemini","generative-engine-optimization","geo","llm-seo","llms-txt","mcp","perplexity","python","schema-markup","seo"],"created_at":"2026-06-10T22:30:49.946Z","updated_at":"2026-06-26T15:00:52.635Z","avatar_url":"https://github.com/Auriti-Labs.png","language":"Python","funding_links":["https://buymeacoffee.com/auritidesign"],"categories":["Open-Source Repos \u0026 Tools","工具"],"sub_categories":["GEO Toolkits \u0026 Skills","开源工具"],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/geoready-logo.svg\" alt=\"GeoReady GEO Optimizer — Answer Engine Optimization toolkit\" width=\"640\"/\u003e\n\n### The open-source **Answer Engine Optimization (AEO)** \u0026 **Generative Engine Optimization (GEO)** toolkit.\n\n#### Audit, optimize, and track whether **ChatGPT, Perplexity, Gemini, Claude, and Google AI Overviews** can crawl, understand, and **cite** your website.\n\n[![PyPI](https://img.shields.io/pypi/v/geo-optimizer-skill?style=flat-square\u0026color=3b82f6)](https://pypi.org/project/geo-optimizer-skill/)\n[![Python 3.9+](https://img.shields.io/badge/python-3.9+-3776ab?style=flat-square\u0026logo=python\u0026logoColor=white)](https://python.org)\n[![CI](https://github.com/auriti-labs/geo-optimizer-skill/actions/workflows/ci.yml/badge.svg)](https://github.com/auriti-labs/geo-optimizer-skill/actions)\n[![codecov](https://codecov.io/gh/Auriti-Labs/geo-optimizer-skill/branch/main/graph/badge.svg)](https://app.codecov.io/gh/Auriti-Labs/geo-optimizer-skill)\n[![Tests](https://img.shields.io/badge/tests-1720%20passed-22c55e?style=flat-square)](https://github.com/Auriti-Labs/geo-optimizer-skill/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-22c55e?style=flat-square)](LICENSE)\n[![MCP Compatible](https://img.shields.io/badge/MCP-compatible-8b5cf6?style=flat-square)](https://modelcontextprotocol.io)\n[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-support-FFDD00?style=flat-square\u0026logo=buymeacoffee\u0026logoColor=000000)](https://buymeacoffee.com/auritidesign)\n\n**One command scores your site 0–100 on AI-search readiness, tells you exactly what to fix, and checks whether AI engines actually cite you.**\n\n[Quick Start](#quick-start) · [Live Demo](https://geoready.dev) · [Pricing](https://geoready.dev/pricing) · [Sign Up](https://app.geoready.dev/signup) · [Documentation](https://auriti-labs.github.io/geo-optimizer-skill/) · [Changelog](CHANGELOG.md)\n\n\u003cimg src=\"assets/demo.gif\" alt=\"geo audit demo — AI visibility score 0-100 with prioritized fixes in one command\" width=\"800\"/\u003e\n\n**15 CLI commands** · **8 scoring categories** · **47 research-backed methods** · **7 output formats** · **1,720 tests** · academic foundation ([KDD 2024](https://arxiv.org/abs/2311.09735), [ICLR 2026](https://arxiv.org/abs/2510.11438)) · runs in CI/CD, as a [Python library](#python-api), an [MCP server](#mcp-server), or an [Astro integration](#astro-integration)\n\n\u003c/div\u003e\n\n---\n\n## What is GEO Optimizer?\n\n**GEO Optimizer** is a free, open-source command-line tool (and Python library, MCP server, and [Astro integration](#astro-integration)) that measures how visible your website is to **AI answer engines** — ChatGPT, Perplexity, Google AI Overviews, Gemini, and Claude — and tells you how to get cited by them.\n\nThis discipline goes by several names; this tool covers all of them: **Answer Engine Optimization (AEO)**, **Generative Engine Optimization (GEO)**, **AI SEO**, **LLM SEO**, **AI Search Optimization**, and **AI visibility / LLM visibility** monitoring. If you're searching for an *\"open-source AEO tool\"*, a *\"tool to check if ChatGPT cites my website\"*, or an *\"llms.txt checker\"* — that's this.\n\n```bash\n# Zero install — score any site against 8 AI-readiness categories\nuvx --from geo-optimizer-skill geo audit --url https://yoursite.com\n```\n\nIt scores your site against **47 research-backed methods** ([Princeton KDD 2024](https://arxiv.org/abs/2311.09735), [AutoGEO ICLR 2026](https://arxiv.org/abs/2510.11438)) and generates the exact fixes — robots.txt bot rules, `llms.txt`, JSON-LD schema, and the content patterns models quote.\n\n---\n\n## Why AI visibility matters in 2026\n\nAI 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.\n\n```\nUser asks ChatGPT: \"What's the best mortgage calculator?\"\n\nChatGPT: \"According to [Competitor.com], the formula is...\"\n          ↑ They get cited. You don't.\n```\n\n- ChatGPT alone serves [**900M weekly users**](https://llmrefs.com/generative-engine-optimization) — a growing share of sessions that used to be Google searches.\n- [**28.3% of ChatGPT's most-cited pages have *zero* organic visibility on Google**](https://llmrefs.com/generative-engine-optimization) (Ahrefs) — AI engines reward different signals than classic SEO.\n- Proper JSON-LD schema lifts LLM extraction accuracy [**from 16% to 54%**](https://dev.to/geobuddy/llmstxt-schema-markup-and-technical-geo-what-actually-works-in-2026-o63) (Semrush test on GPT-4).\n- [**844,000+ sites**](https://webflow.com/blog/llms-txt) already ship an `llms.txt`. Yours?\n\n### Does AI actually cite your brand? Ask it directly.\n\n`geo citations` queries real answer engines with the questions your customers ask, then reports whether your brand is mentioned and your domain is cited as a source — and which competitors get cited instead of you.\n\n\u003cimg src=\"assets/citations.gif\" alt=\"geo citations demo — is your brand cited by ChatGPT and Perplexity?\" width=\"800\"/\u003e\n\n---\n\n## AEO / GEO is not traditional SEO\n\nSEO and AEO/GEO answer different questions:\n\n- **SEO** optimizes for ranking and clicks in traditional search result pages — crawlability, backlinks, keyword signals.\n- **AEO / GEO** measures whether an AI answer engine can read, parse, understand, and **cite** your content when generating a response.\n- A site can rank well on Google and still be largely opaque to AI systems — missing structured data, no llms.txt, bot access blocked, thin factual density.\n\nGEO Optimizer focuses on the technical and structural signals AI answer engines use: robots.txt bot permissions, `llms.txt` presence and depth, JSON-LD schema richness, brand entity coherence, multi-page topical authority, and content citability across 47 methods. These complement traditional SEO rather than replacing it.\n\n---\n\n## Try it online\n\n| | |\n|---|---|\n| **Free audit** | [geoready.dev](https://geoready.dev) — single-URL GEO score, no account required |\n| **Free tools** | [llms.txt generator](https://geoready.dev/tools/llms-txt-generator/) — build a starter llms.txt from your sitemap |\n| **Pricing** | [geoready.dev/pricing](https://geoready.dev/pricing) — plans and feature comparison |\n| **Sign up** | [app.geoready.dev/signup](https://app.geoready.dev/signup) — Pro/Studio/Agency available now |\n\n---\n\n## Open-source vs GeoReady Platform\n\n| | GEO Optimizer CLI | GeoReady.dev Free | GeoReady Pro / Studio / Agency |\n|---|---|---|---|\n| **License / access** | MIT, open-source | Free, no account | Self-serve — [sign up](https://app.geoready.dev/signup) |\n| **Core use** | Local audit engine, CI/CD integration, JSON output | Web audit, score preview, educational pages | Monitoring, score history, regression alerts, agency reporting |\n| **Target** | Developers, automation | Developers, SEO specialists | Ongoing clients, multi-site portfolios |\n| **Pricing** | Free forever | Free forever | From $19/month — see [geoready.dev/pricing](https://geoready.dev/pricing) |\n\nThe CLI and web audit remain MIT-licensed and free. The GeoReady platform adds server-side continuity — monitoring, history, and team features — that a local CLI cannot provide on its own.\n\n---\n\n## Quick Start\n\n```bash\npip install geo-optimizer-skill\n```\n\nNo install? One-shot audit with [uv](https://docs.astral.sh/uv/):\n\n```bash\nuvx --from geo-optimizer-skill geo audit --url https://yoursite.com\n```\n\n```bash\n# Audit any site — get a score 0-100 with actionable recommendations\ngeo audit --url https://yoursite.com\n\n# Audit a full sitemap and surface weakest pages first\ngeo audit --sitemap https://yoursite.com/sitemap.xml --max-urls 25\n\n# Compare before/after versions of a page\ngeo diff --before https://yoursite.com/page-old --after https://yoursite.com/page-new\n\n# Save history and detect regressions over time\ngeo audit --url https://yoursite.com --save-history --regression\n\n# Show the saved trend for a site\ngeo history --url https://yoursite.com\n\n# What changed since the last snapshot? (severity + category deltas; CI: --fail-on warning)\ngeo drift --url https://yoursite.com\n\n# Passive AI visibility snapshot for a domain\ngeo monitor --domain yoursite.com\n\n# Ask real AI engines: is my brand mentioned? Is my domain cited as a source?\n# BYO API key — PERPLEXITY_API_KEY recommended (real web citations)\ngeo citations --brand \"YourBrand\" --domain yoursite.com --topic \"your product category\"\n\n# Save or query archived AI answer snapshots\ngeo snapshots --query \"best GEO tool\" --from 2026-03-01 --to 2026-03-30\n\n# Score citation quality inside an archived answer snapshot\ngeo snapshots --quality --snapshot-id 12 --target-domain yoursite.com\n\n# Run recurring monitoring and generate an HTML trend report\ngeo track --url https://yoursite.com --report --output ./geo-track-report.html\n\n# Auto-generate all missing files (robots.txt, llms.txt, schema, meta)\ngeo fix --url https://yoursite.com --apply\n\n# Generate llms.txt from sitemap\ngeo llms --base-url https://yoursite.com --output ./public/llms.txt\n\n# Generate JSON-LD schema\ngeo schema --type faq --url https://yoursite.com\n```\n\n---\n\n## What it checks\n\n| Area | Points | What GEO Optimizer looks for |\n|------|--------|------------------------------|\n| **Robots.txt** | /18 | 27 AI bots across 3 tiers (training, search, user). Citation bots explicitly allowed? |\n| **llms.txt** | /18 | Present, has H1 + blockquote, sections, links, depth. Companion llms-full.txt? |\n| **Schema JSON-LD** | /16 | WebSite, Organization, FAQPage, Article. Schema richness (5+ attributes)? |\n| **Meta Tags** | /14 | Title, description, canonical, Open Graph complete? |\n| **Content** | /12 | H1, statistics, external citations, heading hierarchy, lists/tables, front-loading? |\n| **Brand \u0026 Entity** | /10 | Brand name coherence, Knowledge Graph links (Wikipedia/Wikidata/LinkedIn/Crunchbase), about page, geo signals, topic authority |\n| **Signals** | /6 | `\u003chtml lang\u003e`, RSS/Atom feed, dateModified freshness? |\n| **AI Discovery** | /6 | `.well-known/ai.txt`, `/ai/summary.json`, `/ai/faq.json`, `/ai/service.json`? |\n\n**Score bands:** 86-100 Excellent · 68-85 Good · 36-67 Foundation · 0-35 Critical\n\n**Bonus checks** (informational, do not affect score):\n\n| Check | What it detects |\n|-------|-----------------|\n| **CDN Crawler Access** | Does Cloudflare/Akamai/Vercel block GPTBot, ClaudeBot, PerplexityBot? |\n| **JS Rendering** | Is content accessible without JavaScript? SPA framework detection |\n| **WebMCP Readiness** | Chrome WebMCP support: `registerTool()`, `toolname` attributes, `potentialAction` schema |\n| **Negative Signals** | 8 anti-citation signals: CTA overload, popups, thin content, keyword stuffing, missing author, boilerplate ratio |\n| **Prompt Injection Detection** | 8 manipulation patterns: hidden text, invisible Unicode, LLM instructions, HTML comment injection, monochrome text, micro-font, data-attr injection, aria-hidden abuse |\n| **Trust Stack Score** | 5-layer trust aggregation (Technical, Identity, Social, Academic, Consistency) — composite grade A-F |\n| **RAG Chunk Readiness** | Content segmentation for RAG retrieval: section word counts, definition openings, heading boundaries, anchor sentences `🆕 v4.7` |\n| **Content Decay Prediction** | Detects temporal, statistical, version, event, and price decay patterns — evergreen score 0-100 `🆕 v4.7` |\n| **Platform Citation Profile** | Per-platform readiness scores for ChatGPT, Perplexity, Google AI `🆕 v4.7` |\n| **Multimodal Readiness** | Image alt coverage, captions, VideoObject/AudioObject schema, subtitle tracks, transcripts — the text scaffolding multimodal engines (Gemini, GPT-4o) need `🆕` |\n\nPlus a separate **Citability Score** (0-100) measuring content quality across 47 methods:\nQuotation +41% · Statistics +33% · Fluency +29% · Cite Sources +27% · and 43 more.\n\n### Additional tools\n\n```bash\ngeo coherence --sitemap https://example.com/sitemap.xml  # Cross-page terminology consistency\ngeo logs --file access.log                                # AI Crawler Activity — crawler evidence from user-agent logs\ngeo access --url https://example.com                      # Agent Access Audit — browser vs AI bot access simulation\ngeo citations --brand \"Acme\" --domain acme.com            # AI Citation Check — are you cited by answer engines? (BYO key)\ngeo authority --sitemap https://example.com/sitemap.xml   # Topic Authority — multi-page entity coverage, clusters, pillars\ngeo drift --url https://example.com                        # Semantic Drift — what changed since the last snapshot\n```\n\n**Topic authority** — AI engines map entities and multi-page coverage, not single pages. `geo authority` clusters your site by topic and scores depth, interlinking, and pillar pages:\n\n\u003cimg src=\"assets/authority.gif\" alt=\"geo authority demo — site-level topical authority score and recommendations\" width=\"800\"/\u003e\n\nGEO Optimizer checks whether websites can be **crawled, understood, cited, and monitored** by AI answer engines:\n\n- **Crawled** — robots.txt, CDN access, AI-bot reachability\n- **Understood** — schema, llms.txt, content structure\n- **Cited** — citability signals across 47 research-backed methods\n- **Monitored** — `geo logs` (crawler evidence) and `geo access` (access simulation)\n\nNote on wording: AI Crawler Activity reports crawler evidence from server-log user-agents. Agent Access Audit reports *citation readiness* (whether bots can reach and parse the page). For actual answer-engine checking — \"does the AI mention my brand and cite my domain?\" — use `geo citations` with your own API key (Perplexity Sonar returns the real source URLs; OpenAI/Anthropic/Groq reveal parametric brand knowledge).\n\nOptional LLM-powered analysis (`pip install geo-optimizer-skill[llm]`):\nbrand sentiment, citation attribution, multi-turn persistence, cross-platform citation map, prompt library.\n\n---\n\n## Output formats\n\n```bash\ngeo audit --url https://example.com --format text     # Human-readable (default)\ngeo audit --url https://example.com --format json      # Machine-readable\ngeo audit --sitemap https://example.com/sitemap.xml    # Batch sitemap audit (text)\ngeo audit --sitemap https://example.com/sitemap.xml --format json  # Batch sitemap audit (JSON)\ngeo audit --url https://example.com --format rich      # Colored terminal\ngeo audit --url https://example.com --format html      # Self-contained report\ngeo audit --url https://example.com --format sarif     # GitHub Code Scanning\ngeo audit --url https://example.com --format junit     # Jenkins, GitLab CI\ngeo audit --url https://example.com --format github    # GitHub Actions annotations\ngeo monitor --domain example.com                       # Passive AI visibility readiness\ngeo snapshots --query \"best GEO tool\"                 # Saved AI answer archive\ngeo snapshots --quality --snapshot-id 12              # Citation quality tiers for a saved answer\ngeo history --url https://example.com                  # Saved score trend\ngeo track --url https://example.com --report           # Monitoring HTML report\n```\n\nThe JSON output format is intended to remain stable across minor versions and acts as the machine-readable integration contract for the GeoReady platform.\n\n---\n\n## CI/CD Integration — fail the build when AI-readiness drops\n\nTreat AI visibility like test coverage: gate every deploy on it. The GitHub Action scores your site, fails the build below a threshold, and uploads results to the Security tab.\n\n```yaml\n# .github/workflows/geo.yml\n- uses: Auriti-Labs/geo-optimizer-skill@v4.14.0\n  with:\n    url: https://yoursite.com\n    min-score: 70        # Fail the build if the GEO score drops below 70\n    format: sarif        # Upload findings to the GitHub Security tab\n```\n\nWorks with GitHub Actions, GitLab CI, Jenkins, CircleCI, and any CI that runs Python. For longitudinal checks, persist snapshots and **fail on regression or semantic drift**:\n\n```bash\ngeo audit --url https://yoursite.com --save-history --regression\ngeo drift --url https://yoursite.com --fail-on warning   # exit non-zero if signals degraded\n```\n\n---\n\n## MCP Server\n\nUse GEO Optimizer from Claude, Cursor, Windsurf, or any MCP client:\n\n```bash\npip install geo-optimizer-skill[mcp]\nclaude mcp add geo-optimizer -- geo-mcp\n```\n\nThen ask: *\"audit my site and fix what's missing\"*\n\n| Tool | Purpose |\n|------|---------|\n| `geo_audit` | Full audit with score + recommendations |\n| `geo_fix` | Generate fix files |\n| `geo_llms_generate` | Generate llms.txt |\n| `geo_citability` | Content citability analysis (47 methods) |\n| `geo_schema_validate` | Validate JSON-LD |\n| `geo_compare` | Compare multiple sites |\n| `geo_gap_analysis` | Explain the gap between two sites and prioritize fixes |\n| `geo_ai_discovery` | Check AI discovery endpoints |\n| `geo_check_bots` | Check bot access via robots.txt |\n| `geo_trust_score` | 5-layer trust signal aggregation |\n| `geo_negative_signals` | 8 anti-citation signal detection |\n| `geo_factual_accuracy` | Audit unsourced claims, contradictions, and broken citations |\n\n---\n\n## Use as AI Context\n\nLoad the right file into your AI assistant for GEO expertise:\n\n| Platform | File |\n|----------|------|\n| Claude Projects | [`ai-context/claude-project.md`](ai-context/claude-project.md) |\n| ChatGPT Custom GPT | [`ai-context/chatgpt-custom-gpt.md`](ai-context/chatgpt-custom-gpt.md) |\n| Cursor | [`ai-context/cursor.mdc`](ai-context/cursor.mdc) |\n| Windsurf | [`ai-context/windsurf.md`](ai-context/windsurf.md) |\n| Kiro | [`ai-context/kiro-steering.md`](ai-context/kiro-steering.md) |\n\n---\n\n## Internal Skill System\n\nThe repository now includes a structured internal skill catalog for maintainers at [`src/geo_optimizer/skills/catalog/`](src/geo_optimizer/skills/catalog/) plus validation rules and examples. See [`docs/skill-system.md`](docs/skill-system.md) for the v1 architecture.\n\n---\n\n## Python API\n\n```python\nfrom geo_optimizer import audit\n\nresult = audit(\"https://example.com\")\nprint(result.score)                      # 85\nprint(result.band)                       # \"good\"\nprint(result.citability.total_score)     # 72\nprint(result.score_breakdown)            # {\"robots\": 18, \"llms\": 14, ...}\nprint(result.recommendations)            # [\"Add FAQPage schema...\"]\n```\n\nAsync variant:\n\n```python\nfrom geo_optimizer import audit_async\nresult = await audit_async(\"https://example.com\")\n```\n\n---\n\n## Show your GEO score\n\nAdd a live GEO score badge to your README — like a coverage badge, but for AI visibility:\n\n![GEO Score](https://geoready.dev/badge?url=https://geoready.dev)\n\n```markdown\n[![GEO Score](https://geoready.dev/badge?url=https://yoursite.com)](https://geoready.dev?utm_source=badge)\n```\n\nHTML variant for docs sites:\n\n```html\n\u003ca href=\"https://geoready.dev?utm_source=badge\"\u003e\u003cimg src=\"https://geoready.dev/badge?url=https://yoursite.com\" alt=\"GEO Score\"\u003e\u003c/a\u003e\n```\n\nColors: 86-100 green · 68-85 cyan · 36-67 yellow · 0-35 red. Re-audited and cached hourly — improve your site, watch the badge change. No account needed.\n\n---\n\n## Astro Integration\n\nMake an Astro site GEO-ready at build time — generates `llms.txt`,\n`/.well-known/ai.txt`, and `/ai/summary.json` from your built routes\n(never overwrites hand-curated files):\n\n```js\n// astro.config.mjs\nimport geoReady from 'astro-geoready';\nexport default defineConfig({\n  site: 'https://yoursite.com',\n  integrations: [geoReady({ siteName: 'Your Site' })],\n});\n```\n\nSee [`integrations/astro-geoready/`](integrations/astro-geoready/) — geoready.dev itself builds with it.\n\n---\n\n## Plugin System\n\nExtend the audit with custom checks via entry points:\n\n```toml\n[project.entry-points.\"geo_optimizer.checks\"]\nmy_check = \"mypackage:MyCheck\"\n```\n\nSee [`examples/example_plugin.py`](examples/example_plugin.py) for a working example.\n\n---\n\n## Research Foundation\n\n| Paper | Venue | Key Finding |\n|-------|-------|-------------|\n| [GEO: Generative Engine Optimization](https://arxiv.org/abs/2311.09735) | **KDD 2024** | 9 methods tested on 10k queries. Cite Sources: +115%, Statistics: +40% |\n| [AutoGEO](https://arxiv.org/abs/2510.11438) | **ICLR 2026** | Automatic rule extraction. +50.99% over Princeton baseline |\n| [C-SEO Bench](https://arxiv.org/abs/2506.11097) | **2025** | Most content manipulation is ineffective. Infrastructure matters most |\n\nWe focus on **technical infrastructure** (robots.txt, llms.txt, schema, meta) over content rewriting. The research confirms: if crawlers can't find and parse your content, prose optimization doesn't matter.\n\nGEO Optimizer translates these findings into technical and content-level signals that can be operationally audited and tracked over time.\n\n---\n\n## Roadmap\n\nThis project follows a deliberate release cadence — focused waves, not noisy patches.\n\n| Version | Window | Codename | Status |\n|---------|--------|----------|--------|\n| v4.10.0 | Apr 2026 | Veil | Shipped |\n| v4.11.0 | May 2026 | Static | Shipped |\n| v4.12.0 | May 2026 | Ledger | Shipped |\n| v4.13.0 | Jun 2026 | Echo | Shipped |\n| v4.14.0 | Jun 2026 | Quiet Glass | Shipped |\n| v4.15.0-rc1 | Jan 2027 | Threshold | Planned |\n| v4.15.0-rc2 / v4.16.0 | Mar 2027 | Pale Signal | Planned |\n| v5.0.0 | May 2027 | Black Archive | Exploring |\n\nNext focus areas: signal architecture, retrieval surface analysis, scoring recalibration, and structural pattern recognition. The v5.0 cycle represents a broader architectural evolution.\n\nFull release calendar, philosophy, and direction → [docs/ROADMAP.md](docs/ROADMAP.md)\n\n---\n\n## FAQ\n\n**What is Answer Engine Optimization (AEO)?**\nAEO is the practice of structuring your website so AI answer engines — ChatGPT, Perplexity, Google AI Overviews, Gemini, Claude — can find, understand, and cite it as the direct answer to a user's question. It is also called Generative Engine Optimization (GEO), AI SEO, LLM SEO, or AI Search Optimization. GEO Optimizer audits and scores your site for all of it.\n\n**How do I check if ChatGPT or Perplexity cites my website?**\nRun `geo citations --brand \"Your Brand\" --domain yoursite.com` with a Perplexity or OpenAI API key. It asks the engine customer-style questions and reports whether your brand is mentioned, whether your domain is cited as a source, and which competitors are cited instead. No account needed for the [free web version](https://geoready.dev/tools/ai-citation-checker/).\n\n**Is this an llms.txt generator and checker?**\nYes. `geo llms` generates an `llms.txt` from your sitemap, the audit scores its presence and depth, and the [Astro integration](#astro-integration) creates one at build time. There's also a [free online llms.txt generator](https://geoready.dev/tools/llms-txt-generator/).\n\n**Is it free and open source?**\nYes — MIT licensed, free forever via `pip install geo-optimizer-skill` or `uvx`. The hosted [GeoReady](https://geoready.dev) platform adds continuous monitoring, score history, citation tracking, and team features on top of the same engine.\n\n**Which AI engines does it cover?**\nChatGPT (GPTBot, OAI-SearchBot), Perplexity (PerplexityBot), Claude (ClaudeBot, anthropic-ai), Google (Google-Extended, Gemini), plus 27 AI bots total and per-platform readiness profiles for ChatGPT, Perplexity, and Google AI Overviews.\n\n**How is it different from a traditional SEO tool?**\nTraditional SEO tools optimize for Google rankings and backlinks. GEO Optimizer measures AI *citation readiness* — whether answer engines can crawl, parse, and quote your content — using signals (llms.txt, AI-bot access, schema richness, citability, topical authority) that classic SEO ignores.\n\n---\n\n## Security\n\nAll URL inputs are validated against private IP ranges (RFC 1918, loopback, link-local, cloud metadata) with DNS pinning before any request. See [SECURITY.md](SECURITY.md) for reporting vulnerabilities.\n\n---\n\n## Contributing\n\n```bash\ngit clone https://github.com/YOUR_USERNAME/geo-optimizer-skill.git\ncd geo-optimizer-skill \u0026\u0026 pip install -e \".[dev]\"\npytest tests/ -v   # 1720 tests, all mocked\n```\n\n[Bug reports](https://github.com/Auriti-Labs/geo-optimizer-skill/issues/new?template=bug_report.yml) · [Feature requests](https://github.com/Auriti-Labs/geo-optimizer-skill/issues/new?template=feature_request.yml) · [CONTRIBUTING.md](CONTRIBUTING.md)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nRun the [CLI locally](#quick-start), try the [free audit online](https://geoready.dev), see [pricing](https://geoready.dev/pricing), or [sign up](https://app.geoready.dev/signup) for Pro monitoring.\n\n---\n\n**MIT License** · Built by [Auriti Labs](https://github.com/auriti-labs)\n\nIf this saved you time, a star helps others find it.\n\n[![Star on GitHub](https://img.shields.io/github/stars/auriti-labs/geo-optimizer-skill?style=for-the-badge\u0026color=facc15\u0026logo=github\u0026label=Star)](https://github.com/auriti-labs/geo-optimizer-skill/stargazers)\n\nThe open-source engine for **Answer Engine Optimization** — get your site cited by ChatGPT, Perplexity, and Gemini.\n\n\u003c/sub\u003e\n\n\u003c/div\u003e\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/?repos=Auriti-Labs%2Fgeo-optimizer-skill\u0026type=timeline\u0026logscale=\u0026legend=bottom-right\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/image?repos=Auriti-Labs/geo-optimizer-skill\u0026type=timeline\u0026theme=dark\u0026logscale\u0026legend=bottom-right\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/image?repos=Auriti-Labs/geo-optimizer-skill\u0026type=timeline\u0026logscale\u0026legend=bottom-right\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/image?repos=Auriti-Labs/geo-optimizer-skill\u0026type=timeline\u0026logscale\u0026legend=bottom-right\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAuriti-Labs%2Fgeo-optimizer-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAuriti-Labs%2Fgeo-optimizer-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAuriti-Labs%2Fgeo-optimizer-skill/lists"}