ScriptCut is a maintained fork of CutScript focused on Apple Silicon reliability, 9Router support, and local-first creator workflows.
Edit videos by editing the transcript:
- delete words -> cut video
- remove filler words -> clean edit
- generate captions -> export clip
Built with Electron, React, FastAPI, WhisperX, FFmpeg, and local/cloud LLM integrations.
ScriptCut began as a fork/continuation of DataAnts-AI/CutScript.
This version focuses on:
- Apple Silicon macOS setup
- Python 3.10-3.12 compatibility
- 9Router support
- improved backend startup
- creator-oriented local-first workflows
- Electron + React desktop app with Tailwind CSS
- FastAPI Python backend
- WhisperX / Whisper transcription pipeline
- FFmpeg for video and audio processing
- Ollama / OpenAI / Claude / 9router for AI features
This version has been verified on Apple Silicon macOS for:
- backend startup via
npm run dev:backend - frontend production build
- health checks on
http://127.0.0.1:8642/health - transcription requests on both CPU and MPS paths
Important runtime notes:
- Use Python
3.10to3.12 - Python
3.11is the recommended Apple Silicon setup - Python
3.13is not a supported runtime for the current transcription dependency stack - The backend launcher now auto-selects a compatible local virtualenv or interpreter
- Node.js 18+
- Python 3.10 to 3.12
- FFmpeg in
PATH - Optional: Ollama for local AI features
brew install ffmpeg
python3.11 -m venv .venv
source .venv/bin/activateIf you want to force a specific interpreter, set:
export SCRIPTCUT_PYTHON_PATH=/absolute/path/to/pythonCUTSCRIPT_PYTHON_PATH is still supported for legacy setups, but SCRIPTCUT_PYTHON_PATH is preferred.
# Root dependencies
npm install
# Frontend dependencies
cd frontend && npm install && cd ..
# Backend dependencies
source .venv/bin/activate
cd backend && python -m pip install -r requirements.txt && cd ..npm run devThat starts backend, frontend, and Electron together.
If you want to verify the backend separately:
npm run dev:backend
curl -s http://127.0.0.1:8642/healthExpected response:
{"status":"ok"}scriptcut/
├── electron/
├── frontend/
├── backend/
└── shared/
| Feature | Status |
|---|---|
| Word-level transcription | Done |
| Text-based video editing | Done |
| Undo/redo | Done |
| Waveform timeline | Done |
| FFmpeg stream-copy export | Done |
| FFmpeg re-encode export | Done |
| AI filler word removal | Done |
| AI clip creation | Done |
| Ollama + OpenAI + Claude + 9router | Done |
| Word-level captions | Done |
| Caption burn-in on export | Done |
| Studio Sound | Done |
| Speaker diarization | Done |
Project save/load (.scriptcut, legacy .aive/.cutscript) |
Done |
| AI background removal | Planned |
| Key | Action |
|---|---|
| Space | Play / Pause |
| J / K / L | Reverse / Pause / Forward |
| ← / → | Seek ±5 seconds |
| Delete | Delete selected words |
| Ctrl+Z / Cmd+Z | Undo |
| Ctrl+Shift+Z / Cmd+Shift+Z | Redo |
| Ctrl+S / Cmd+S | Save project |
| Ctrl+E / Cmd+E | Export |
| ? | Shortcut cheatsheet |
| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Health check |
| POST | /transcribe |
Transcribe media |
| POST | /export |
Export edited video |
| POST | /ai/filler-removal |
Detect filler words |
| POST | /ai/create-clip |
Suggest clips |
| GET | /ai/ollama-models |
List local Ollama models |
| POST | /ai/9router-models |
List models exposed by 9Router |
| POST | /captions |
Generate captions |
| POST | /audio/clean |
Noise reduction |
| GET | /audio/capabilities |
Audio processing availability |
MIT License. See LICENSE.
See ACKNOWLEDGEMENTS.md for original CutScript attribution.