# auriti-labs/geo-optimizer-skill architecture

> Architecture diagram of the GitHub repository auriti-labs/geo-optimizer-skill, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/auriti-labs/geo-optimizer-skill
- Repository: https://github.com/auriti-labs/geo-optimizer-skill

## Overview

GEO Optimizer is a toolkit for assessing and improving a website’s visibility to AI answer engines. Its main workflow is a user invoking an audit, the audit engine evaluating the target site and scoring its readiness, then returning prioritized findings. Separate capabilities generate fixes and llms.txt, check real AI citations, track changes, and expose the toolkit through web, MCP, and Astro interfaces. The map follows documented capabilities and sampled entry points; several internal call relationships are omitted where implementation excerpts were unavailable.

Main entry points: [`src/geo_optimizer/core/audit.py`](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/audit.py) (Full site audit), [`src/geo_optimizer/cli/main.py`](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/main.py) (CLI entry), [`src/geo_optimizer/web/app.py`](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/web/app.py) (Web app), [`src/geo_optimizer/cli/audit_cmd.py`](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/audit_cmd.py) (Audit command)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_cli["CLI entry<br/>[main.py]"]
  node_auditcmd["Audit command<br/>[audit_cmd.py]"]
  node_webapp["Web app<br/>[app.py]"]
  node_mcp["MCP tools<br/>[server.py]"]
  node_frontend["Web frontend"]
  node_llmsui["llms generator UI"]
  node_api["Frontend API client<br/>[api.ts]"]
end

subgraph group_audit["Audit and scoring"]
  node_auditcore["Full site audit<br/>[audit.py]"]
  node_checks["Audit checks"]
  node_robots["Robots parser<br/>[robots_parser.py]"]
  node_scoring["Scoring engine<br/>[scoring.py]"]
  node_results["Audit results<br/>[results.py]"]
end

subgraph group_actions["Optimization tools"]
  node_fixcmd["Fix command<br/>[fix_cmd.py]"]
  node_fixer["Fix generation<br/>[fixer.py]"]
  node_llmscmd["llms command<br/>[llms_cmd.py]"]
  node_llmsgenerator["llms generator<br/>[llms_generator.py]"]
  node_citationscmd["Citation command<br/>[citations_cmd.py]"]
  node_citations["Citation analysis<br/>[citations.py]"]
end

subgraph group_tracking["Monitoring and history"]
  node_monitorcmd["Monitor command<br/>[monitor_cmd.py]"]
  node_monitor["Site monitoring<br/>[monitor.py]"]
  node_history[("Audit history<br/>[history.py]")]
end

subgraph group_integrations["Service integrations"]
  node_llmclient["LLM client<br/>[llm_client.py]"]
  node_astro["Astro integration<br/>[index.mjs]"]
end

node_user(("User"))
node_site(("Target website"))
node_providers{{"AI providers"}}

node_user -->|"invokes"| node_cli
node_cli -->|"dispatches"| node_auditcmd
node_auditcmd -->|"runs audit"| node_auditcore
node_auditcore -->|"fetches pages"| node_site
node_auditcore -->|"evaluates"| node_checks
node_checks -->|"parses rules"| node_robots
node_auditcore -->|"scores findings"| node_scoring
node_auditcore -->|"returns results"| node_results
node_user -->|"requests audit"| node_webapp
node_webapp -->|"runs audit"| node_auditcore
node_user -->|"calls tools"| node_mcp
node_mcp -->|"runs audit"| node_auditcore
node_cli -->|"dispatches"| node_fixcmd
node_fixcmd -->|"generates fixes"| node_fixer
node_fixer -->|"inspects site"| node_site
node_cli -->|"dispatches"| node_llmscmd
node_llmscmd -->|"generates text"| node_llmsgenerator
node_llmsgenerator -->|"reads sitemap"| node_site
node_cli -->|"dispatches"| node_citationscmd
node_citationscmd -->|"analyzes citations"| node_citations
node_citations -->|"queries engines"| node_llmclient
node_llmclient -.->|"sends prompts"| node_providers
node_cli -->|"dispatches"| node_monitorcmd
node_monitorcmd -->|"checks visibility"| node_monitor
node_frontend -->|"calls API"| node_webapp
node_user -->|"submits site"| node_llmsui
node_llmsui -->|"requests generation"| node_api
node_api -->|"calls API"| node_webapp
node_astro -->|"generates site files"| node_site

click node_cli "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/main.py"
click node_auditcmd "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/audit_cmd.py"
click node_webapp "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/web/app.py"
click node_mcp "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/mcp/server.py"
click node_auditcore "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/audit.py"
click node_checks "https://github.com/auriti-labs/geo-optimizer-skill/tree/main/src/geo_optimizer/core"
click node_robots "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/utils/robots_parser.py"
click node_scoring "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/scoring.py"
click node_results "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/models/results.py"
click node_fixcmd "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/fix_cmd.py"
click node_fixer "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/fixer.py"
click node_llmscmd "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/llms_cmd.py"
click node_llmsgenerator "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/llms_generator.py"
click node_citationscmd "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/citations_cmd.py"
click node_citations "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/citations.py"
click node_llmclient "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/llm_client.py"
click node_monitorcmd "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/monitor_cmd.py"
click node_monitor "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/monitor.py"
click node_history "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/history.py"
click node_frontend "https://github.com/auriti-labs/geo-optimizer-skill/tree/main/frontend/src"
click node_llmsui "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/frontend/src/components/tools/LlmsTxtGenerator.tsx"
click node_api "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/frontend/src/lib/api.ts"
click node_astro "https://github.com/auriti-labs/geo-optimizer-skill/blob/main/integrations/astro-geoready/index.mjs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_auditcmd,node_webapp,node_mcp,node_frontend,node_llmsui,node_api,node_user toneBlue
class node_auditcore,node_checks,node_robots,node_scoring,node_results toneAmber
class node_fixcmd,node_fixer,node_llmscmd,node_llmsgenerator,node_citationscmd,node_citations toneMint
class node_monitorcmd,node_monitor,node_history toneRose
class node_llmclient,node_astro,node_site,node_providers toneIndigo
```

## Components

### User interfaces

- [CLI entry](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/main.py): `src/geo_optimizer/cli/main.py`
- [Audit command](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/audit_cmd.py): `src/geo_optimizer/cli/audit_cmd.py`
- [Web app](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/web/app.py): `src/geo_optimizer/web/app.py`
- [MCP tools](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/mcp/server.py): `src/geo_optimizer/mcp/server.py`
- [Web frontend](https://github.com/auriti-labs/geo-optimizer-skill/tree/main/frontend/src): `frontend/src`
- [llms generator UI](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/frontend/src/components/tools/LlmsTxtGenerator.tsx): `frontend/src/components/tools/LlmsTxtGenerator.tsx`
- [Frontend API client](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`

### Audit and scoring

- [Full site audit](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/audit.py): `src/geo_optimizer/core/audit.py`
- [Audit checks](https://github.com/auriti-labs/geo-optimizer-skill/tree/main/src/geo_optimizer/core): `src/geo_optimizer/core`
- [Robots parser](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/utils/robots_parser.py): `src/geo_optimizer/utils/robots_parser.py`
- [Scoring engine](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/scoring.py): `src/geo_optimizer/core/scoring.py`
- [Audit results](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/models/results.py): `src/geo_optimizer/models/results.py`

### Optimization tools

- [Fix command](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/fix_cmd.py): `src/geo_optimizer/cli/fix_cmd.py`
- [Fix generation](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/fixer.py): `src/geo_optimizer/core/fixer.py`
- [llms command](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/llms_cmd.py): `src/geo_optimizer/cli/llms_cmd.py`
- [llms generator](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/llms_generator.py): `src/geo_optimizer/core/llms_generator.py`
- [Citation command](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/citations_cmd.py): `src/geo_optimizer/cli/citations_cmd.py`
- [Citation analysis](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/citations.py): `src/geo_optimizer/core/citations.py`

### Monitoring and history

- [Monitor command](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/cli/monitor_cmd.py): `src/geo_optimizer/cli/monitor_cmd.py`
- [Site monitoring](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/monitor.py): `src/geo_optimizer/core/monitor.py`
- [Audit history](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/history.py): `src/geo_optimizer/core/history.py`

### Service integrations

- [LLM client](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/src/geo_optimizer/core/llm_client.py): `src/geo_optimizer/core/llm_client.py`
- [Astro integration](https://github.com/auriti-labs/geo-optimizer-skill/blob/main/integrations/astro-geoready/index.mjs): `integrations/astro-geoready/index.mjs`

### Other components

- **User**
- **Target website**
- **AI providers**

## Connections

- User → CLI entry: invokes
- CLI entry → Audit command: dispatches
- Audit command → Full site audit: runs audit
- Full site audit → Target website: fetches pages
- Full site audit → Audit checks: evaluates
- Audit checks → Robots parser: parses rules
- Full site audit → Scoring engine: scores findings
- Full site audit → Audit results: returns results
- User → Web app: requests audit
- Web app → Full site audit: runs audit
- User → MCP tools: calls tools
- MCP tools → Full site audit: runs audit
- CLI entry → Fix command: dispatches
- Fix command → Fix generation: generates fixes
- Fix generation → Target website: inspects site
- CLI entry → llms command: dispatches
- llms command → llms generator: generates text
- llms generator → Target website: reads sitemap
- CLI entry → Citation command: dispatches
- Citation command → Citation analysis: analyzes citations
- Citation analysis → LLM client: queries engines
- LLM client → AI providers: sends prompts
- CLI entry → Monitor command: dispatches
- Monitor command → Site monitoring: checks visibility
- Web frontend → Web app: calls API
- User → llms generator UI: submits site
- llms generator UI → Frontend API client: requests generation
- Frontend API client → Web app: calls API
- Astro integration → Target website: generates site files
