Edit spoken video like a document. Turn long recordings into finished videos and social-ready clips.
ScriptCut is an open-source, local-first desktop video production tool for YouTube creators, podcasters, educators, founders, interview creators, streamers, and anyone repurposing spoken recordings.
v0.1.0-alpha.5 · macOS Apple Silicon / arm64 · Public alpha · ad-hoc signed · not notarized
No Terminal setup is required for the supported packaged app. This public download is for Apple Silicon Macs; it is not a universal macOS, Windows, or Linux installer.
- Download the official DMG above.
- Open it and move ScriptCut to Applications.
- Launch ScriptCut from Applications.
If macOS blocks the first launch, open System Settings → Privacy & Security → Open Anyway, then confirm the prompt. Use this only for the official ScriptCut download linked above. Do not disable Gatekeeper or run Terminal quarantine commands.
For a short, non-technical walkthrough, read the First Export Guide.
The supported self-contained public-alpha path includes the application runtime, Python runtime, core dependencies, FFmpeg, and FFprobe. No separate Python or FFmpeg setup is required for this packaged release. Older alpha releases may predate this self-contained path; check their release notes before downloading an older build.
Before the first transcription, ScriptCut downloads and verifies the baseline transcription model. Later baseline transcriptions can reuse that verified local model. An AI provider is not required for core transcript editing or export.
ScriptCut is different from a cloud-first editor because local processing is the baseline path, AI helpers are optional, and project files stay creator-owned. Choose a recording, edit the words, review the result, and export a finished video or clip.
See the Product Vision for the canonical product direction.
Edit spoken video by editing the transcript. Open a local video or audio file, edit the transcript, preview the result, and export. You can delete, restore, mute, or hide selected words from captions. AI edit plans and filler-word suggestions are reviewable helpers; they do not replace your decisions.
See docs/USER_GUIDE.md for the detailed creator walkthrough.
Find, review and export social-ready moments. The current lifecycle is Find → Review → Prepare → Export. Find moments with AI when a provider is configured, or select transcript words yourself and choose Draft clip; manual clips can move directly into Prepare.
In Prepare, trim the range, preview the clip, adjust framing/reframe, and choose captions. Advanced export settings such as resolution, format, enhance audio, and background removal are secondary controls. Publishing copy is optional and is not required to export. A successful export shows a creator-facing Clip ready result; when burn-in captions are unavailable, captions can be delivered as a matching .srt sidecar.
- Word-level transcription through Parakeet TDT v3, WhisperX, or Whisper when the selected local engine is installed.
- Transcript-based editing with edited playback, undo/redo, waveform/timeline synchronization, and speaker-aware operations when speaker labels are available.
- AI-assisted edit plans, filler-word detection with review decisions, clip suggestions, editable clip drafts, clip readiness scoring, and generated clip metadata.
- Source, vertical, and square exports with creator presets, reframe controls, optional Studio Sound audio cleanup, and optional background removal.
- Word-level captions with caption styling. Depending on the FFmpeg build, captions are burned into the video or delivered as a matching
.srtsidecar file; the export preflight shows the actual result. - Approved-clip batch export with per-draft progress, retry state, and a batch manifest in the desktop workflow.
.scriptcutproject save/load, recent projects, autosave, recovery snapshots, and compatibility with legacy.aiveand.cutscriptfiles.
Some capabilities depend on optional local packages, model downloads, provider configuration, or the capabilities of the packaged FFmpeg build. The setup assistant and export preflight are the source of truth for a particular machine.
The desktop app runs an Electron shell with a local React interface, a local FastAPI backend, and FFmpeg for media work. Transcription and export use local tools by default where available.
AI features can use local Ollama or configured OpenAI, Claude, or 9Router providers. Selecting an external provider can send the requested transcript or prompt context to that provider. ScriptCut does not require AI for core transcript editing or export, and this README does not make a blanket privacy claim beyond the configured workflow.
See Platform Support for the support matrix. Browser mode at localhost:5173 is for development and testing; use the desktop app for native file access, persistent export folders, autosave, and Finder reveal actions.
If a public release asset is not available, ScriptCut can be run from source using the contributor setup below. The complete release process is documented in docs/RELEASE.md.
These steps are for running ScriptCut from the repository.
- Node.js 18+
- Python 3.10 to 3.12
- FFmpeg in
PATHfor source development. Desktop release builds include a bundled FFmpeg when prepared withnpm run release:ffmpeg. - Optional: Ollama for local AI features
Python 3.11 is recommended on Apple Silicon. Python 3.13 is not supported by the current transcription dependency stack.
brew install ffmpeg
python3.11 -m venv .venv
source .venv/bin/activateTo force a specific interpreter:
export SCRIPTCUT_PYTHON_PATH=/absolute/path/to/pythonCUTSCRIPT_PYTHON_PATH is still supported for legacy setups, but SCRIPTCUT_PYTHON_PATH is preferred.
npm run setup
npm run doctor
npm run devThis starts the local backend, Vite frontend, and Electron desktop app together. For local desktop packaging, run:
npm run dist:macThat creates a macOS DMG under dist/. See docs/INSTALL.md, docs/DEVELOPMENT.md, and CONTRIBUTING.md for technical setup and contribution guidance.
To verify the backend separately:
npm run dev:backend
curl -s http://127.0.0.1:8642/healthExpected response:
{"status":"ok"}scriptcut/
├── electron/ # desktop shell, IPC, and local backend lifecycle
├── frontend/ # React/Vite creator interface
├── backend/ # FastAPI transcription, AI, caption, audio, and export services
└── shared/ # project schema and shared contracts
The main technical pieces are Electron + React, a local FastAPI backend, Parakeet/WhisperX/Whisper transcription, and FFmpeg export. The local API includes health, transcription, export, job lifecycle, AI helper, caption, audio, and background-capability endpoints. See the backend routers for the current endpoint contract.
Project files are canonical JSON with schema: "scriptcut.project.v1" and version: 1. Manual saves and autosaves use the same serializer, with compatibility for legacy .aive and .cutscript files.
| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Health check |
| POST | /transcribe |
Transcribe media |
| POST | /jobs/transcribe |
Start a transcription job |
| POST | /export |
Export edited video |
| POST | /jobs/export |
Start an export job |
| GET | /jobs/{job_id} |
Read job progress, logs, result, or error |
| POST | /jobs/{job_id}/cancel |
Request job cancellation |
| POST | /jobs/{job_id}/retry |
Retry a failed or canceled job |
| POST | /ai/filler-removal |
Detect filler words |
| POST | /ai/create-clip |
Suggest clips |
| POST | /ai/clip-metadata |
Suggest title, hook, caption, and hashtags |
| POST | /ai/edit-plan |
Create a reviewable AI edit plan |
| 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 |
| GET | /background/capabilities |
Background removal availability |
Long-running jobs use queued, running, canceling, succeeded, failed, and canceled states. A canceled job is retryable after it reaches final canceled state.
| 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 |
For release-oriented changes, run the checks appropriate to the affected area:
npm run lint
npm run build
npm run smoke:backend
python -m compileall -q backendUse docs/DESKTOP_QA.md for the creator workflow checklist and docs/TROUBLESHOOTING.md when setup or runtime checks fail.
Start with docs/INSTALL.md, docs/DEVELOPMENT.md, and CONTRIBUTING.md. Keep changes focused on creator workflows, preserve support for legacy project files, and retain the original CutScript attribution.
ScriptCut is open-source software licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later).
Portions derived from DataAnts-AI/CutScript retain their original MIT notices. See THIRD_PARTY_NOTICES.md and LICENSES/CutScript-MIT.txt.
Organizations that need different licensing terms can see COMMERCIAL-LICENSING.md.
The software license does not grant rights to ScriptCut branding. See TRADEMARKS.md.
ScriptCut began as a fork and continuation of DataAnts-AI/CutScript. See ACKNOWLEDGEMENTS.md for the original-project attribution.
