# hassancs91/claude-faceless-shorts-creator architecture

> Architecture diagram of the GitHub repository hassancs91/claude-faceless-shorts-creator, 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/hassancs91/claude-faceless-shorts-creator
- Repository: https://github.com/hassancs91/claude-faceless-shorts-creator

## Overview

This repository is a Claude-driven production system for faceless YouTube Shorts, with TSX/Remotion, generative-video, and documentary-collage tracks. The documented workflow turns a topic into a visual composition, checks frames, generates word-timed narration, and mixes sound into a finished video. The available tree primarily exposes the Remotion project and media-generation tools; Claude skills, project assets, and much of the production orchestration are not present, so those connections are represented only where the README documents them.

Main entry points: [`remotion/src/shots`](https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots) (TSX shorts), [`remotion/src/shots/vox-1`](https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots/vox-1) (Vox collage), [`remotion/src/registry.gen.tsx`](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/registry.gen.tsx) (Shot registry), [`remotion/src/shots/ai-1`](https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots/ai-1) (Generative short)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_tracks["Visual tracks"]
  node_tsx["TSX shorts"]
  node_generative["Generative short"]
  node_collage["Vox collage"]
end

subgraph group_remotion["Remotion runtime"]
  node_shot_registry["Shot registry<br/>[registry.gen.tsx]"]
  node_shorts_kit["Shorts kit<br/>[shorts.tsx]"]
  node_visual_kits["Visual kits"]
  node_collage_engine["Collage engine<br/>[collage.tsx]"]
  node_world_data["World geometry<br/>[world.ts]"]
  node_fonts_brand["Fonts and brand<br/>[fonts.ts]"]
end

subgraph group_production["Media production"]
  node_frame_qa["Frame QA<br/>[capture_web.py]"]
  node_voice["Voice and captions<br/>[gen_voice.py]"]
  node_sfx["Sound effects<br/>[gen_sfx.py]"]
  node_music["Music beds<br/>[gen_music.py]"]
  node_sound_mix["Audio mixing<br/>[mix_sfx.py]"]
  node_image_layers["Image layers<br/>[gen_image.py]"]
  node_cutouts["Cutouts<br/>[cutout.py]"]
  node_video_clips["Video clips<br/>[gen_clip.py]"]
  node_finished_video["Finished short"]
end

node_creator(("Creator / Claude"))

node_creator -->|"requests composition"| node_tsx
node_creator -->|"requests video"| node_generative
node_creator -->|"requests story"| node_collage
node_shot_registry -->|"registers shots"| node_tsx
node_shot_registry -->|"registers shot"| node_generative
node_shot_registry -->|"registers shot"| node_collage
node_tsx -->|"uses shared kit"| node_shorts_kit
node_tsx -->|"uses visuals"| node_visual_kits
node_tsx -->|"uses collage engine"| node_collage_engine
node_visual_kits -->|"projects geography"| node_world_data
node_shorts_kit -->|"uses fonts"| node_fonts_brand
node_collage_engine -->|"uses fonts"| node_fonts_brand
node_creator -->|"reviews frames"| node_frame_qa
node_creator -->|"generates narration"| node_voice
node_creator -->|"produces sound"| node_sfx
node_creator -->|"produces music"| node_music
node_creator -->|"produces layers"| node_image_layers
node_creator -->|"cuts out layers"| node_cutouts
node_creator -->|"generates clips"| node_video_clips
node_creator -->|"mixes effects"| node_sound_mix
node_tsx -.->|"renders for review"| node_frame_qa
node_generative -.->|"uses generated clips"| node_video_clips
node_collage -.->|"uses generated layers"| node_image_layers
node_collage -.->|"uses die-cuts"| node_cutouts
node_voice -.->|"supplies narration"| node_finished_video
node_sound_mix -.->|"mixes final audio"| node_finished_video
node_music -.->|"optional music bed"| node_sound_mix

click node_tsx "https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots"
click node_generative "https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots/ai-1"
click node_collage "https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots/vox-1"
click node_shot_registry "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/registry.gen.tsx"
click node_shorts_kit "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/lib/shorts.tsx"
click node_visual_kits "https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/lib"
click node_collage_engine "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/lib/collage.tsx"
click node_world_data "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/lib/geo/world.ts"
click node_fonts_brand "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/fonts.ts"
click node_frame_qa "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/capture_web.py"
click node_voice "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_voice.py"
click node_sfx "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_sfx.py"
click node_music "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_music.py"
click node_sound_mix "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/mix_sfx.py"
click node_image_layers "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_image.py"
click node_cutouts "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/cutout.py"
click node_video_clips "https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_clip.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_tsx,node_generative,node_collage toneBlue
class node_shot_registry,node_shorts_kit,node_visual_kits,node_collage_engine,node_world_data,node_fonts_brand toneAmber
class node_frame_qa,node_voice,node_sfx,node_music,node_sound_mix,node_image_layers,node_cutouts,node_video_clips,node_finished_video toneMint
class node_creator toneIndigo
```

## Components

### Visual tracks

- [TSX shorts](https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots): `remotion/src/shots`
- [Generative short](https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots/ai-1): `remotion/src/shots/ai-1`
- [Vox collage](https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/shots/vox-1): `remotion/src/shots/vox-1`

### Remotion runtime

- [Shot registry](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/registry.gen.tsx): `remotion/src/registry.gen.tsx`
- [Shorts kit](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/lib/shorts.tsx): `remotion/src/lib/shorts.tsx`
- [Visual kits](https://github.com/hassancs91/claude-faceless-shorts-creator/tree/main/remotion/src/lib): `remotion/src/lib`
- [Collage engine](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/lib/collage.tsx): `remotion/src/lib/collage.tsx`
- [World geometry](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/lib/geo/world.ts): `remotion/src/lib/geo/world.ts`
- [Fonts and brand](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/remotion/src/fonts.ts): `remotion/src/fonts.ts`

### Media production

- [Frame QA](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/capture_web.py): `tools/capture_web.py`
- [Voice and captions](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_voice.py): `tools/gen_voice.py`
- [Sound effects](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_sfx.py): `tools/gen_sfx.py`
- [Music beds](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_music.py): `tools/gen_music.py`
- [Audio mixing](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/mix_sfx.py): `tools/mix_sfx.py`
- [Image layers](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_image.py): `tools/gen_image.py`
- [Cutouts](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/cutout.py): `tools/cutout.py`
- [Video clips](https://github.com/hassancs91/claude-faceless-shorts-creator/blob/main/tools/gen_clip.py): `tools/gen_clip.py`
- **Finished short**

### Other components

- **Creator / Claude**

## Connections

- Creator / Claude → TSX shorts: requests composition (evidence: `README.md`)
- Creator / Claude → Generative short: requests video (evidence: `README.md`)
- Creator / Claude → Vox collage: requests story (evidence: `README.md`)
- Shot registry → TSX shorts: registers shots (evidence: `remotion/src/registry.gen.tsx`)
- Shot registry → Generative short: registers shot (evidence: `remotion/src/registry.gen.tsx`)
- Shot registry → Vox collage: registers shot (evidence: `remotion/src/registry.gen.tsx`)
- TSX shorts → Shorts kit: uses shared kit (evidence: `remotion/src/shots/short-1/Short1Chess.tsx`)
- TSX shorts → Visual kits: uses visuals (evidence: `remotion/src/shots/short-11/Short11Map.tsx`)
- TSX shorts → Collage engine: uses collage engine (evidence: `remotion/src/shots/vox-1/Vox1Coffee.tsx`)
- Visual kits → World geometry: projects geography (evidence: `remotion/src/lib/map.tsx`)
- Shorts kit → Fonts and brand: uses fonts (evidence: `remotion/src/lib/shorts.tsx`)
- Collage engine → Fonts and brand: uses fonts (evidence: `remotion/src/lib/collage.tsx`)
- Creator / Claude → Frame QA: reviews frames (evidence: `README.md`)
- Creator / Claude → Voice and captions: generates narration (evidence: `README.md`)
- Creator / Claude → Sound effects: produces sound (evidence: `README.md`)
- Creator / Claude → Music beds: produces music (evidence: `README.md`)
- Creator / Claude → Image layers: produces layers (evidence: `README.md`)
- Creator / Claude → Cutouts: cuts out layers (evidence: `README.md`)
- Creator / Claude → Video clips: generates clips (evidence: `README.md`)
- Creator / Claude → Audio mixing: mixes effects (evidence: `README.md`)
- TSX shorts → Frame QA: renders for review (evidence: `README.md`)
- Generative short → Video clips: uses generated clips (evidence: `README.md`)
- Vox collage → Image layers: uses generated layers (evidence: `README.md`)
- Vox collage → Cutouts: uses die-cuts (evidence: `README.md`)
- Voice and captions → Finished short: supplies narration (evidence: `README.md`)
- Audio mixing → Finished short: mixes final audio (evidence: `README.md`)
- Music beds → Audio mixing: optional music bed (evidence: `README.md`)
