RoughCut is a local-first rough cut generator for Final Cut Pro on macOS. Point it at a talking-head video and it will remove long silences and optionally remove bad takes and fluff, producing FCPXML variants that relink to the original media.
- Removes long silences using FFmpeg
silencedetect. - Tightens low-energy sections with an RMS energy gate.
- Optionally removes bad takes using a local disfluency model + retake detection.
- Optionally removes fluff/off-topic content using Gemini.
- Produces a pack of
.fcpxmlvariants for import into Final Cut Pro.
One command (auto-installs dependencies on first run):
bash scripts/dev.sh- Opens the web UI at
http://localhost:5173. - Starts the API server at
http://127.0.0.1:8000.
API server only (headless):
bash scripts/dev.sh start-serverStop whatever is running:
bash scripts/dev.sh stopSee docs/openclaw.md.
Headless runner (what agents execute):
bash scripts/openclaw/roughcut.sh \
--video "/absolute/path/to/video.mp4" \
--out "/absolute/path/to/output_dir" \
--remove-bad-takes true \
--remove-fluff falseIf you want RoughCut to download the input video first (recommended for agent-hosted Macs), pass a direct HTTPS download URL:
bash scripts/openclaw/roughcut.sh \
--video-url "https://example.com/path/to/video.mp4" \
--out "/absolute/path/to/output_dir" \
--remove-bad-takes true \
--remove-fluff falseEach job writes to server/jobs/<jobId>/ and produces:
xml_variants.zip(on disk)RoughCut.xml_variants.zip(download filename)VIDEO_STEM.<variant>.fcpxmlfiles inside the zipdebug.zip(on failures)- transcripts and decision JSONs for debugging
Import into Final Cut Pro:
- Unzip
RoughCut.xml_variants.zip. - In Final Cut Pro:
File -> Import -> XML... - Choose the
.fcpxmlvariant you want.
- Runtime defaults come from
.env(see.env.example) andserver/app/settings.py. - UI settings are stored in
server/config.json(git-ignored) and override.env.
GEMINI_API_KEYis only required if you enable fluff removal.OPENAI_API_KEYis optional (if you switch provider to OpenAI in the UI).
- First run may build
whisper.cppand download models. Ensure:- Xcode Command Line Tools:
xcode-select --install - CMake:
brew install cmake
- Xcode Command Line Tools:
- Missing
ffmpeg: install via Homebrew or place binaries in./binand add to PATH. - If ports are stuck (5173/8000):
bash scripts/dev.sh stop - Logs:
server/run/web.logserver/run/server.log
- whisper.cpp build failed on macOS: run
xcode-select --install, then retry. - dyld
libwhisper.1.dylibmissing: deleteserver/bin/whispercppand restart to rebuild. - whisper.cpp download failed: set
WHISPER_CPP_PATHandWHISPER_CPP_MODEL_PATHto local paths, or setWHISPER_CPP_AUTO_DOWNLOAD=falseand manage installs manually. - Transcription is slow: ensure you are using a Metal-enabled whisper.cpp binary on Apple Silicon.
- No media is uploaded to the cloud.
- Only transcript text and timestamps are sent to Gemini (fluff removal and/or XML variants), depending on your config.
See CONTRIBUTING.md.
MIT (see LICENSE).
