Audio-based video highlight extractor. Point it at a folder of gaming recordings and it automatically finds the good moments — volume spikes, laughter, shouting, sudden noises — and pulls them out as clips for you to review and export.
- Process — analyzes audio to detect highlight events and extracts clips
- Review — watch each clip, trim it, name it, keep or discard
- Export — encode, build compilations, upload to YouTube
- Scans a folder and lists videos with size, age, and processing status
- Adjustable sensitivity (0.1–5.0) and context window around each highlight
- Detects: volume spikes, laughter, shouting, sudden noises
- Live processing log
- Video player with interactive waveform
- Colored overlays show which detection type triggered each highlight region
- Trim controls: set in/out points per segment, add multiple segments
- Trim quality: Fast (stream copy), Precise (CRF 16), Ultra (lossless)
- Optional custom name per clip for use during export
- Keyboard shortcuts:
Kkeep,Ddiscard,Sskip,I/Oset in/out,Spaceplay/pause
- Disk usage summary across kept, encoded, and compilation folders
- Encode presets: Original (copy), High (H.264 CRF 18), Low (H.264 CRF 26), GIF (with optional slowdown)
- Build compilations with hard cut or crossfade transitions, drag to reorder
- Delete encoded versions individually to reclaim space
- Source video cleanup — delete originals once review is complete
- YouTube upload via OAuth2 with title, description, tags, category, and playlist
- Python 3.10+
- FFmpeg (must be on PATH)
git clone https://github.com/curtyo18/ClipCutter.git
cd ClipCutter
pip install -e .python -m clipcutter uiOpens a browser at http://localhost:8000 with the Process, Review, and Export tabs.
On Windows you can also double-click ClipCutter.bat.
# Process a folder of videos
python -m clipcutter process H:\OBSReplays -o ./output
# Adjust sensitivity (higher = more clips)
python -m clipcutter process H:\OBSReplays -s 1.5
# Dry run — detect highlights without extracting clips
python -m clipcutter process H:\OBSReplays --dry-run
# Terminal-based review (no browser needed)
python -m clipcutter review -o ./outputoutput/
clips/pending/<video>/ # Awaiting review
clips/kept/<video>/ # Approved clips
clips/encoded/<video>/ # Re-encoded clips
clips/compilations/ # Built compilations
metadata/<video>_clips.json # Per-clip metadata
Python, FastAPI, librosa, numpy/scipy, FFmpeg, TypeScript
pip install pytest httpx playwright
python -m playwright install chromium
pytest tests/ -v # Full suite
pytest tests/ -v -k "not browser" # API tests only (faster)