# aqaaab/faceless-youtube-shorts-n8n architecture

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

- Interactive diagram: https://gitdiagram.com/aqaaab/faceless-youtube-shorts-n8n
- Repository: https://github.com/aqaaab/faceless-youtube-shorts-n8n

## Overview

The Automotive AI Content Engine turns a topic into validated Arabic automotive video content: a 25-scene long-form master and four portrait Shorts, with generated visuals, Edge TTS narration, burned subtitles, product QA, and YouTube publishing after all gates pass. The main orchestration is visible in `app/pipeline.py`; the README documents the broader production and publishing stages. Some renderer, QA, and upload wiring is unsampled, so only documented or evidenced relationships are shown.

Main entry points: [`app/pipeline.py`](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/pipeline.py) (Production pipeline), [`app/core.py`](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/core.py) (Story generation), [`app/tts.py`](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/tts.py) (Narration audio), [`app/render.py`](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/render.py) (Video and subtitles)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_story["Story design"]
  node_core["Story generation<br/>[core.py]"]
  node_validator["Story validation<br/>[validator.py]"]
end

subgraph group_production["Media production"]
  node_pipeline["Production pipeline<br/>[pipeline.py]"]
  node_story_visuals["Scene visuals<br/>[story_visuals.py]"]
  node_raster["Raster automotive art"]
  node_blender["Blender scene renderer"]
  node_tts["Narration audio<br/>[tts.py]"]
  node_render["Video and subtitles<br/>[render.py]"]
  node_vertical["Portrait visuals"]
end

subgraph group_quality["Product QA"]
  node_qa["Production QA<br/>[qa.py]"]
  node_visual_gate["Visual product gate"]
  node_mp4_gate["MP4 visual gate<br/>[mp4_visual_gate.py]"]
  node_artifact_gate["Artifact evidence gate<br/>[artifact_gate.py]"]
end

subgraph group_delivery["Publishing"]
  node_uploader["YouTube uploader<br/>[upload.py]"]
end

node_operator(("Producer"))
node_gateway{{"Odysseus Gateway"}}
node_edge_tts{{"Edge TTS"}}
node_youtube{{"YouTube"}}

node_operator -->|"starts run"| node_pipeline
node_pipeline -->|"requests story"| node_core
node_core -->|"generates story"| node_gateway
node_pipeline -->|"validates story"| node_validator
node_pipeline -->|"generates scenes"| node_story_visuals
node_pipeline -->|"generates narration"| node_tts
node_tts -->|"synthesizes speech"| node_edge_tts
node_pipeline -->|"renders master"| node_render
node_render -->|"generates Shorts visuals"| node_vertical
node_pipeline -->|"runs quality checks"| node_qa
node_pipeline -->|"checks visual product"| node_visual_gate
node_pipeline -->|"checks MP4 output"| node_mp4_gate
node_pipeline -.->|"publishes after QA"| node_uploader
node_uploader -->|"uploads videos"| node_youtube

click node_pipeline "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/pipeline.py"
click node_core "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/core.py"
click node_validator "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/validator.py"
click node_story_visuals "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/story_visuals.py"
click node_raster "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/raster_automotive.py"
click node_blender "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/scripts/blender_automotive_scene.py"
click node_tts "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/tts.py"
click node_render "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/render.py"
click node_vertical "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/vertical_visuals.py"
click node_qa "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/qa.py"
click node_visual_gate "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/visual_product_gate.py"
click node_mp4_gate "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/mp4_visual_gate.py"
click node_artifact_gate "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/artifact_gate.py"
click node_uploader "https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/upload.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_core,node_validator toneBlue
class node_pipeline,node_story_visuals,node_raster,node_blender,node_tts,node_render,node_vertical toneAmber
class node_qa,node_visual_gate,node_mp4_gate,node_artifact_gate toneMint
class node_uploader toneRose
class node_operator,node_gateway,node_edge_tts,node_youtube toneIndigo
```

## Components

### Story design

- [Story generation](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/core.py): `app/core.py`
- [Story validation](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/validator.py): `app/validator.py`

### Media production

- [Production pipeline](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/pipeline.py): `app/pipeline.py`
- [Scene visuals](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/story_visuals.py): `app/story_visuals.py`
- [Raster automotive art](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/raster_automotive.py): `app/raster_automotive.py`
- [Blender scene renderer](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/scripts/blender_automotive_scene.py): `scripts/blender_automotive_scene.py`
- [Narration audio](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/tts.py): `app/tts.py`
- [Video and subtitles](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/render.py): `app/render.py`
- [Portrait visuals](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/vertical_visuals.py): `app/vertical_visuals.py`

### Product QA

- [Production QA](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/qa.py): `app/qa.py`
- [Visual product gate](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/visual_product_gate.py): `app/visual_product_gate.py`
- [MP4 visual gate](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/mp4_visual_gate.py): `app/mp4_visual_gate.py`
- [Artifact evidence gate](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/artifact_gate.py): `app/artifact_gate.py`

### Publishing

- [YouTube uploader](https://github.com/aqaaab/faceless-youtube-shorts-n8n/blob/main/app/upload.py): `app/upload.py`

### Other components

- **Producer**
- **Odysseus Gateway**
- **Edge TTS**
- **YouTube**

## Connections

- Producer → Production pipeline: starts run
- Production pipeline → Story generation: requests story
- Story generation → Odysseus Gateway: generates story
- Production pipeline → Story validation: validates story
- Production pipeline → Scene visuals: generates scenes
- Production pipeline → Narration audio: generates narration
- Narration audio → Edge TTS: synthesizes speech
- Production pipeline → Video and subtitles: renders master
- Video and subtitles → Portrait visuals: generates Shorts visuals
- Production pipeline → Production QA: runs quality checks
- Production pipeline → Visual product gate: checks visual product
- Production pipeline → MP4 visual gate: checks MP4 output
- Production pipeline → YouTube uploader: publishes after QA
- YouTube uploader → YouTube: uploads videos
