A free, offline, no-watermark tool that turns one long video into several
vertical (9:16) shorts. Runs entirely on your machine — no cloud, no credits,
no subscription. See ROADMAP.md for the full plan.
- Story Mode (
--mode story, default) — sequential, narrative-preserving parts (part_01,part_02, …). Best for storytelling, kids content, documentaries, history, education. - Viral Mode (
--mode viral) — the local LLM (Ollamallama3.2:3b) scores candidate moments on hook, curiosity, emotion, surprise, educational value, shareability and retention, then exports only the best standalone clips (clip_01= highest score). Best for podcasts, interviews, motivation, business. Requires Ollama running (ollama serve).
input → transcribe → scenes → segment → reframe → export
# 1. System tool: ffmpeg (one-time)
sudo apt update && sudo apt install -y ffmpeg
# 2. Python environment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt# A local file
python main.py "myvideo.mp4"
# A YouTube / web URL (downloaded with yt-dlp)
python main.py "https://www.youtube.com/watch?v=..."
# Story Mode (default) — sequential parts
python main.py "myvideo.mp4" --mode story
# Viral Mode — LLM picks the best standalone clips
python main.py "myvideo.mp4" --mode viral --top 4
# Tune it
python main.py "myvideo.mp4" --target 45 --out ./clips
python main.py "myvideo.mp4" --model small # more accurate, slowerOutputs land in output/ as short_01.mp4, short_02.mp4, …
| Flag | Meaning | Default |
|---|---|---|
--mode |
story | viral |
story |
--out |
Output directory | output |
--model |
Whisper model: tiny | base | small |
base |
--llm |
Ollama model for viral mode | llama3.2:3b |
--top |
Max clips to export in viral mode | 6 |
--target |
Target clip length (seconds) | 60 |
--min |
Minimum clip length (seconds) | 20 |
--max |
Maximum clip length (seconds) | 90 |
- Defaults are CPU-only and memory-careful. Transcription is the slow step;
a 10-minute video takes a few minutes with the
basemodel. - If you ever run this on a machine with an NVIDIA GPU, it auto-detects CUDA and switches to the faster path — no config needed.
