A fully automated YouTube Shorts generator that creates psychedelic, beat‑reactive visual clips using:
- Random video sources
- Random effect chains (multi‑effect pipelines)
- Intelligent audio title extraction
- Reverse reverb intro & reverb tail outro
- Automatic mastering (normalization + limiter)
- GPU-ready architecture (optional)
- Customizable render options
The generator:
- Picks a random video from
input/videos/ - Picks a random audio track from
input/music/ - Extracts the title from metadata (fallback: cleaned filename)
- Generates a random chain of 2–4 visual effects
- Applies beat‑reactive video warping
- Applies reverse‑reverb audio effects
- Normalizes and limits audio to avoid clipping
- Exports a vertical 9:16 Short with synced audio
project/
│
├── input/
│ ├── videos/ # Source videos (mp4/mov)
│ └── music/ # Source audio (mp3/wav)
│
├── output/
│ ├── *.mp4 # Generated Shorts
│ └── effects_preview/
│
├── temp/ # Temporary audio files
└── src/
├── generator.py
├── config/
│ └── settings.py
├── utils/
│ ├── file_utils.py
│ ├── logging_utils.py
│ └── title_utils.py
├── video/
│ ├── effects.py
│ ├── effect_chains.py
│ ├── renderer.py
│ └── transforms.py
└── audio/
├── loader.py
├── analysis.py
├── effects.py
└── exporter.py
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
To check MoviePy 2.x installation:
python3 -c "import moviepy; print(moviepy.__version__)"
python src/generator.py
python src/generator.py --count 5
python src/generator.py --preview-effects
Every generated Short uses random chains of 2–4 effects, such as:
kaleidoscope → distort → rgb_vibration
ripple → block_glitch
mandala → feedback → chroma_shift → distort
Effects respond to:
- bass energy
- hihat energy
- beat timestamps
- time parameter
t
You can add your own effects in src/video/effects.py.
The audio is processed through:
- Reverse reverb intro
- Reverb tail outro
- Normalization
- Soft limiter (prevents clipping)
- Final gain normalization
This ensures Shorts never get distorted.
Using mutagen, the title is extracted from audio metadata:
- MP3 ID3
- FLAC tags
- M4A atoms
If unavailable, filename is cleaned:
"03. My Song (final master).mp3" → "My Song"
This title becomes the output filename and can be used for YouTube uploads.
Final Shorts are exported as:
- 1080×1920 (vertical)
- 60 FPS
- H.264, AAC audio
- Perfect YouTube Shorts compatibility
python src/generator.py --help
Outputs:
--count N Generate N shorts
--preview-effects Export one preview clip per effect
Jakub Krysakowski with great support from the artificial helper.