# cruxm-organic/nutriessential-seo-agent architecture

> Architecture diagram of the GitHub repository cruxm-organic/nutriessential-seo-agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cruxm-organic/nutriessential-seo-agent
- Repository: https://github.com/cruxm-organic/nutriessential-seo-agent

## Overview

NutriSEO is a web-based SEO analysis and content-optimization platform. Users work through the dashboard and API to analyze site URLs, inspect SEO issues, and obtain optimization recommendations; the workflow loads sitemap URLs and can crawl pages and generate content drafts. The engines cover keyword research, technical SEO, content quality, rankings, and emerging search formats. The tree also documents monitoring, experiments, and other analysis modules. Main and workflow excerpts expose only some wiring, so edges between those entry points and unsampled engines are omitted; the duplicated updated_Nutriessential_SEO_agent tree is not mapped separately.

Main entry points: [`workflow.py`](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/workflow.py) (SEO workflow), [`dashboard/static/app.js`](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/dashboard/static/app.js) (Dashboard UI), [`main.py`](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/main.py) (SEO API), [`guardrails.py`](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/guardrails.py) (Safety guardrails)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application"]
  node_dashboard["Dashboard UI<br/>[app.js]"]
  node_api["SEO API<br/>[main.py]"]
  node_workflow["SEO workflow<br/>[workflow.py]"]
  node_guardrails["Safety guardrails<br/>[guardrails.py]"]
end

subgraph group_analysis["Site Analysis"]
  node_crawler["Page crawler<br/>[crawler.py]"]
  node_technical["Technical SEO<br/>[technical_seo.py]"]
  node_health["Health monitor<br/>[health_monitor.py]"]
  node_audit["Content audit<br/>[content_audit.py]"]
  node_decay["Content decay<br/>[content_decay.py]"]
end

subgraph group_optimization["Content Optimization"]
  node_internal_links["Internal links<br/>[internal_links.py]"]
  node_eeat["EEAT framework<br/>[eeat_framework.py]"]
  node_schema["Schema markup<br/>[schema_engine.py]"]
  node_geo["GEO optimizer<br/>[geo_engine.py]"]
  node_llms["LLMs.txt<br/>[llms_txt.py]"]
  node_knowledge["Knowledge graph<br/>[knowledge_graph.py]"]
end

subgraph group_strategy["SEO Strategy"]
  node_keywords["Keyword research<br/>[keyword_engine.py]"]
  node_rank["Rank tracking<br/>[rank_tracker.py]"]
  node_competitor["Competitor analysis<br/>[competitor.py]"]
  node_serp["SERP clustering<br/>[serp_cluster.py]"]
  node_cannibal["Cannibalization<br/>[cannibalization.py]"]
  node_info_gain["Information gain<br/>[info_gain.py]"]
  node_predictive["SEO prediction<br/>[predictive.py]"]
  node_blog["Blog discovery<br/>[blog_discovery.py]"]
  node_experiments["SEO experiments<br/>[experiment.py]"]
end

node_user(("SEO user"))

node_user -->|"uses"| node_dashboard
node_dashboard -->|"requests data"| node_api
node_api -->|"delegates"| node_workflow
node_workflow -->|"crawls pages"| node_crawler
node_workflow -->|"checks prompts"| node_guardrails

click node_dashboard "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/dashboard/static/app.js"
click node_api "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/main.py"
click node_workflow "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/workflow.py"
click node_crawler "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/crawler.py"
click node_technical "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/technical_seo.py"
click node_health "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/health_monitor.py"
click node_audit "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/content_audit.py"
click node_decay "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/content_decay.py"
click node_keywords "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/keyword_engine.py"
click node_rank "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/rank_tracker.py"
click node_competitor "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/competitor.py"
click node_serp "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/serp_cluster.py"
click node_cannibal "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/cannibalization.py"
click node_info_gain "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/info_gain.py"
click node_predictive "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/predictive.py"
click node_blog "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/blog_discovery.py"
click node_experiments "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/experiment.py"
click node_internal_links "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/internal_links.py"
click node_eeat "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/eeat_framework.py"
click node_schema "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/schema_engine.py"
click node_geo "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/geo_engine.py"
click node_llms "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/llms_txt.py"
click node_knowledge "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/knowledge_graph.py"
click node_guardrails "https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/guardrails.py"

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_dashboard,node_api,node_workflow,node_guardrails,node_user toneBlue
class node_crawler,node_technical,node_health,node_audit,node_decay toneAmber
class node_internal_links,node_eeat,node_schema,node_geo,node_llms,node_knowledge toneMint
class node_keywords,node_rank,node_competitor,node_serp,node_cannibal,node_info_gain,node_predictive,node_blog,node_experiments toneRose
```

## Components

### Application

- [Dashboard UI](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/dashboard/static/app.js): `dashboard/static/app.js`
- [SEO API](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/main.py): `main.py`
- [SEO workflow](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/workflow.py): `workflow.py`
- [Safety guardrails](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/guardrails.py): `guardrails.py`

### Site Analysis

- [Page crawler](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/crawler.py): `crawler.py`
- [Technical SEO](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/technical_seo.py): `engines/technical_seo.py`
- [Health monitor](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/health_monitor.py): `engines/health_monitor.py`
- [Content audit](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/content_audit.py): `engines/content_audit.py`
- [Content decay](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/content_decay.py): `engines/content_decay.py`

### Content Optimization

- [Internal links](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/internal_links.py): `engines/internal_links.py`
- [EEAT framework](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/eeat_framework.py): `engines/eeat_framework.py`
- [Schema markup](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/schema_engine.py): `engines/schema_engine.py`
- [GEO optimizer](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/geo_engine.py): `engines/geo_engine.py`
- [LLMs.txt](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/llms_txt.py): `engines/llms_txt.py`
- [Knowledge graph](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/knowledge_graph.py): `engines/knowledge_graph.py`

### SEO Strategy

- [Keyword research](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/keyword_engine.py): `engines/keyword_engine.py`
- [Rank tracking](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/rank_tracker.py): `engines/rank_tracker.py`
- [Competitor analysis](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/competitor.py): `engines/competitor.py`
- [SERP clustering](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/serp_cluster.py): `engines/serp_cluster.py`
- [Cannibalization](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/cannibalization.py): `engines/cannibalization.py`
- [Information gain](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/info_gain.py): `engines/info_gain.py`
- [SEO prediction](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/predictive.py): `engines/predictive.py`
- [Blog discovery](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/blog_discovery.py): `engines/blog_discovery.py`
- [SEO experiments](https://github.com/cruxm-organic/nutriessential-seo-agent/blob/main/engines/experiment.py): `engines/experiment.py`

### Other components

- **SEO user**

## Connections

- SEO user → Dashboard UI: uses (evidence: `dashboard/static/app.js`)
- Dashboard UI → SEO API: requests data (evidence: `dashboard/static/app.js`)
- SEO API → SEO workflow: delegates (evidence: `main.py`)
- SEO workflow → Page crawler: crawls pages (evidence: `workflow.py`)
- SEO workflow → Safety guardrails: checks prompts (evidence: `workflow.py`)
