# konstantinosgoggakis/seoautomation architecture

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

- Interactive diagram: https://gitdiagram.com/konstantinosgoggakis/seoautomation
- Repository: https://github.com/konstantinosgoggakis/seoautomation

## Overview

This is a WordPress SEO sentence-rewriting app: a user supplies WordPress credentials, selects a page, and receives original/revised sentence pairs. The React UI requests page choices and rewriting from Flask; Flask fetches page HTML, extracts visible sentences, and asks an OpenAI-backed rewriter to process them in parallel. The README also describes broader bulk processing and keyword analysis, but the sampled runtime shows parallel rewriting of up to ten sentences for one selected page, not bulk page processing or a keyword-analysis stage. Connections below follow the sampled UI and backend; no unsampled implementation is assumed.

Main entry points: [`main.py`](https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py) (Flask API routes), [`src/App.jsx`](https://github.com/konstantinosgoggakis/seoautomation/blob/main/src/App.jsx) (SEO rewriter UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["React interface"]
  node_react_app["SEO rewriter UI<br/>[App.jsx]"]
end

subgraph group_backend["Flask content pipeline"]
  node_flask_api["Flask API routes<br/>[main.py]"]
  node_page_listing["Page listing<br/>[main.py]"]
  node_wordpress_fetch["WordPress fetch<br/>[main.py]"]
  node_sentence_extraction["Sentence extraction<br/>[main.py]"]
  node_parallel_rewrite["Parallel rewriting<br/>[main.py]"]
  node_sentence_rewriter["SEO sentence rewriter<br/>[main.py]"]
end

subgraph group_services["External services"]
  node_wordpress["WordPress REST API"]
  node_openai["OpenAI model"]
end

node_user(("Site editor"))

node_user -->|"uses"| node_react_app
node_react_app -->|"requests pages"| node_flask_api
node_react_app -->|"requests rewrite"| node_flask_api
node_flask_api -->|"dispatches pages"| node_page_listing
node_flask_api -->|"dispatches fetch"| node_wordpress_fetch
node_page_listing -->|"lists pages via"| node_wordpress_fetch
node_wordpress_fetch -->|"fetches pages"| node_wordpress
node_wordpress_fetch -->|"fetches page HTML"| node_wordpress
node_flask_api -->|"extracts sentences"| node_sentence_extraction
node_flask_api -->|"rewrites sentences"| node_parallel_rewrite
node_parallel_rewrite -->|"runs in parallel"| node_sentence_rewriter
node_sentence_rewriter -->|"invokes model"| node_openai
node_flask_api -->|"returns rewrites"| node_react_app

click node_react_app "https://github.com/konstantinosgoggakis/seoautomation/blob/main/src/App.jsx"
click node_flask_api "https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py"
click node_page_listing "https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py"
click node_wordpress_fetch "https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py"
click node_sentence_extraction "https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py"
click node_parallel_rewrite "https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py"
click node_sentence_rewriter "https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.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_react_app toneBlue
class node_flask_api,node_page_listing,node_wordpress_fetch,node_sentence_extraction,node_parallel_rewrite,node_sentence_rewriter toneAmber
class node_wordpress,node_openai toneMint
class node_user toneIndigo
```

## Components

### React interface

- [SEO rewriter UI](https://github.com/konstantinosgoggakis/seoautomation/blob/main/src/App.jsx): `src/App.jsx`

### Flask content pipeline

- [Flask API routes](https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py): `main.py`
- [Page listing](https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py): `main.py`
- [WordPress fetch](https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py): `main.py`
- [Sentence extraction](https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py): `main.py`
- [Parallel rewriting](https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py): `main.py`
- [SEO sentence rewriter](https://github.com/konstantinosgoggakis/seoautomation/blob/main/main.py): `main.py`

### External services

- **WordPress REST API**
- **OpenAI model**

### Other components

- **Site editor**

## Connections

- Site editor → SEO rewriter UI: uses (evidence: `src/App.jsx`)
- SEO rewriter UI → Flask API routes: requests pages (evidence: `src/App.jsx`)
- SEO rewriter UI → Flask API routes: requests rewrite (evidence: `src/App.jsx`)
- Flask API routes → Page listing: dispatches pages (evidence: `main.py`)
- Flask API routes → WordPress fetch: dispatches fetch (evidence: `main.py`)
- Page listing → WordPress fetch: lists pages via (evidence: `main.py`)
- WordPress fetch → WordPress REST API: fetches pages (evidence: `main.py`)
- WordPress fetch → WordPress REST API: fetches page HTML (evidence: `main.py`)
- Flask API routes → Sentence extraction: extracts sentences (evidence: `main.py`)
- Flask API routes → Parallel rewriting: rewrites sentences (evidence: `main.py`)
- Parallel rewriting → SEO sentence rewriter: runs in parallel (evidence: `main.py`)
- SEO sentence rewriter → OpenAI model: invokes model (evidence: `main.py`)
- Flask API routes → SEO rewriter UI: returns rewrites (evidence: `src/App.jsx`)
