# kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator- architecture

> Architecture diagram of the GitHub repository kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-, 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/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-
- Repository: https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-

## Overview

video-clipper is a local video-to-shorts pipeline with a Streamlit studio and CLI. Users provide a URL or file; the system ingests media, extracts audio and frames, analyzes speech, audio, semantics, hooks, and visuals, fuses signals into windows, ranks candidates, and renders platform-ready clips. The studio adds interactive scoring, clip editing, and batch rendering. The graph follows documented workflow and shown calls; some CLI orchestration details and UI-to-worker wiring are unsampled, so uncertain links are omitted.

Main entry points: [`run_pipeline.py`](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/run_pipeline.py) (Signal Fusion), [`rank_clips.py`](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/rank_clips.py) (Clip Ranking), [`video_ingestion.py`](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/video_ingestion.py) (Media Ingestion), [`clip_engine.py`](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/clip_engine.py) (Studio Engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_studio["Studio and Jobs"]
  node_studio_ui["Clipper Studio<br/>[app.py]"]
  node_engine["Studio Engine<br/>[clip_engine.py]"]
  node_worker["Background Jobs<br/>[job_runner.py]"]
end

subgraph group_analysis["Media Analysis"]
  node_ingest["Media Ingestion<br/>[video_ingestion.py]"]
  node_transcribe["Speech Transcription"]
  node_audio["Audio Signals<br/>[audio_analysis.py]"]
  node_text["Text Semantics<br/>[text_analysis.py]"]
  node_hooks["Hook Scoring<br/>[hook_detector.py]"]
  node_visual["Visual Signals<br/>[visual_analysis.py]"]
  node_fusion["Signal Fusion<br/>[run_pipeline.py]"]
end

subgraph group_selection["Clip Selection"]
  node_rank["Clip Ranking<br/>[rank_clips.py]"]
  node_legacy_select["Legacy Selection<br/>[clip_selector.py]"]
  node_validator["Audio Validation<br/>[audio_validator.py]"]
  node_evaluator["Pipeline Evaluation"]
  node_weights["Genre Weights<br/>[weights.json]"]
  node_clips["Suggested Clips"]
end

subgraph group_rendering["Rendering"]
  node_renderer["Shorts Renderer<br/>[video_renderer.py]"]
  node_outputs["Rendered Shorts"]
end

node_user(("Video Creator"))

node_user -->|"provides source"| node_studio_ui
node_user -->|"provides source"| node_ingest
node_studio_ui -->|"uses"| node_engine
node_engine -->|"uses profiles"| node_rank
node_ingest -->|"extracts audio for"| node_transcribe
node_ingest -->|"extracts audio for"| node_audio
node_ingest -->|"extracts frames for"| node_visual
node_transcribe -->|"supplies transcript"| node_text
node_text -->|"supplies semantics"| node_fusion
node_audio -->|"supplies signals"| node_fusion
node_hooks -->|"supplies hook scores"| node_fusion
node_visual -->|"supplies signals"| node_fusion
node_fusion -->|"writes signal windows"| node_rank
node_weights -->|"configures scoring"| node_rank
node_rank -->|"writes candidates"| node_clips
node_engine -->|"uses for rendering"| node_renderer
node_worker -->|"uses job logic"| node_engine
node_worker -->|"runs render job"| node_renderer
node_clips -->|"provides clip ranges"| node_renderer
node_renderer -->|"renders"| node_outputs
node_legacy_select -->|"validates candidates"| node_validator
node_evaluator -->|"imports ranking logic"| node_rank

click node_studio_ui "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/app.py"
click node_engine "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/clip_engine.py"
click node_worker "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/job_runner.py"
click node_ingest "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/video_ingestion.py"
click node_transcribe "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/audio_transcription.py"
click node_audio "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/audio_analysis.py"
click node_text "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/text_analysis.py"
click node_hooks "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/hook_detector.py"
click node_visual "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/visual_analysis.py"
click node_fusion "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/run_pipeline.py"
click node_rank "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/rank_clips.py"
click node_legacy_select "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/clip_selector.py"
click node_validator "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/audio_validator.py"
click node_renderer "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/video_renderer.py"
click node_evaluator "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/evaluate_pipeline.py"
click node_weights "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/weights.json"
click node_clips "https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/suggested_clips.json"

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_studio_ui,node_engine,node_worker toneBlue
class node_ingest,node_transcribe,node_audio,node_text,node_hooks,node_visual,node_fusion toneAmber
class node_rank,node_legacy_select,node_validator,node_evaluator,node_weights,node_clips toneMint
class node_renderer,node_outputs toneRose
class node_user toneIndigo
```

## Components

### Studio and Jobs

- [Clipper Studio](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/app.py): `app.py`
- [Studio Engine](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/clip_engine.py): `clip_engine.py`
- [Background Jobs](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/job_runner.py): `job_runner.py`

### Media Analysis

- [Media Ingestion](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/video_ingestion.py): `video_ingestion.py`
- [Speech Transcription](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/audio_transcription.py): `audio_transcription.py`
- [Audio Signals](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/audio_analysis.py): `audio_analysis.py`
- [Text Semantics](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/text_analysis.py): `text_analysis.py`
- [Hook Scoring](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/hook_detector.py): `hook_detector.py`
- [Visual Signals](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/visual_analysis.py): `visual_analysis.py`
- [Signal Fusion](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/run_pipeline.py): `run_pipeline.py`

### Clip Selection

- [Clip Ranking](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/rank_clips.py): `rank_clips.py`
- [Legacy Selection](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/clip_selector.py): `clip_selector.py`
- [Audio Validation](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/audio_validator.py): `audio_validator.py`
- [Pipeline Evaluation](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/evaluate_pipeline.py): `evaluate_pipeline.py`
- [Genre Weights](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/weights.json): `weights.json`
- [Suggested Clips](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/suggested_clips.json): `suggested_clips.json`

### Rendering

- [Shorts Renderer](https://github.com/kirat11x/video--clipper-vizard-ai-replica-automatic-short-form-clip-generator-/blob/main/video_renderer.py): `video_renderer.py`
- **Rendered Shorts**

### Other components

- **Video Creator**

## Connections

- Video Creator → Clipper Studio: provides source (evidence: `README.md`)
- Video Creator → Media Ingestion: provides source (evidence: `README.md`)
- Clipper Studio → Studio Engine: uses (evidence: `app.py`)
- Studio Engine → Clip Ranking: uses profiles (evidence: `clip_engine.py`)
- Media Ingestion → Speech Transcription: extracts audio for (evidence: `README.md`)
- Media Ingestion → Audio Signals: extracts audio for (evidence: `README.md`)
- Media Ingestion → Visual Signals: extracts frames for (evidence: `README.md`)
- Speech Transcription → Text Semantics: supplies transcript (evidence: `README.md`)
- Text Semantics → Signal Fusion: supplies semantics (evidence: `README.md`)
- Audio Signals → Signal Fusion: supplies signals (evidence: `README.md`)
- Hook Scoring → Signal Fusion: supplies hook scores (evidence: `README.md`)
- Visual Signals → Signal Fusion: supplies signals (evidence: `README.md`)
- Signal Fusion → Clip Ranking: writes signal windows (evidence: `README.md`)
- Genre Weights → Clip Ranking: configures scoring (evidence: `README.md`)
- Clip Ranking → Suggested Clips: writes candidates (evidence: `README.md`)
- Studio Engine → Shorts Renderer: uses for rendering (evidence: `clip_engine.py`)
- Background Jobs → Studio Engine: uses job logic (evidence: `job_runner.py`)
- Background Jobs → Shorts Renderer: runs render job (evidence: `job_runner.py`)
- Suggested Clips → Shorts Renderer: provides clip ranges (evidence: `README.md`)
- Shorts Renderer → Rendered Shorts: renders (evidence: `README.md`)
- Legacy Selection → Audio Validation: validates candidates (evidence: `clip_selector.py`)
- Pipeline Evaluation → Clip Ranking: imports ranking logic (evidence: `evaluate_pipeline.py`)
