DataAnts-AI/CutScript

Open-source AI-powered text-based video editor. Edit video by editing text.

TypeScript

263

24 commits

updated Mar 6, 2026

See the code

README

CutScript

An open-source, local-first, Descript-like text-based audio and video editor powered by AI. Edit audio/video by editing text — delete a word from the transcript and it's cut from the audio/video.

image

Architecture

  • Electron + React desktop app with Tailwind CSS
  • FastAPI Python backend (spawned as child process)
  • WhisperX for word-level transcription with alignment
  • FFmpeg for video processing (stream-copy and re-encode)
  • Ollama / OpenAI / Claude for AI features (filler removal, clip creation)

Quick Start

Prerequisites

  • Node.js 18+
  • Python 3.10+
  • FFmpeg (in PATH)
  • (Optional) Ollama for local AI features

Install

# Root dependencies (Electron, concurrently)
npm install

# Frontend dependencies (React, Tailwind, Zustand)
cd frontend && npm install && cd ..

# Backend dependencies
cd backend && pip install -r requirements.txt && cd ..

Run (Development)

# Start all three (backend + frontend + electron)
npm run dev

Or run them separately:

# Terminal 1: Backend
cd backend && python -m uvicorn main:app --reload --port 8642

# Terminal 2: Frontend
cd frontend && npm run dev

# Terminal 3: Electron
npx electron .

Project Structure

cutscript/
├── electron/          # Electron main process
│   ├── main.js        # App entry, spawns Python backend
│   ├── preload.js     # Secure IPC bridge
│   └── python-bridge.js
├── frontend/          # React + Vite + Tailwind
│   └── src/
│       ├── components/  # VideoPlayer, TranscriptEditor, etc.
│       ├── store/       # Zustand state (editorStore, aiStore)
│       ├── hooks/       # useVideoSync, useKeyboardShortcuts
│       └── types/       # TypeScript interfaces
├── backend/           # FastAPI Python backend
│   ├── main.py
│   ├── routers/       # API endpoints
│   ├── services/      # Core logic (transcription, editing, AI)
│   └── utils/         # GPU, cache, audio helpers
└── shared/            # Project schema

Features

FeatureStatus
Word-level transcription (WhisperX)Done
Text-based video editingDone
Undo/redoDone
Waveform timelineDone
FFmpeg stream-copy exportDone
FFmpeg re-encode (up to 4K)Done
AI filler word removalDone
AI clip creation (Shorts)Done
Ollama + OpenAI + ClaudeDone
Word-level captions (SRT/VTT/ASS)Done
Caption burn-in on exportDone
Studio Sound (DeepFilterNet)Done
Keyboard shortcuts (J/K/L)Done
Speaker diarizationDone
Virtualized transcript (react-virtuoso)Done
Encrypted API key storageDone
Project save/load (.cutscript)Done
AI background removalPlanned

Keyboard Shortcuts

KeyAction
SpacePlay / Pause
J / K / LReverse / Pause / Forward
← / →Seek ±5 seconds
DeleteDelete selected words
Ctrl+ZUndo
Ctrl+Shift+ZRedo
Ctrl+SSave project
Ctrl+EExport
?Shortcut cheatsheet

API Endpoints

MethodEndpointDescription
GET/healthHealth check
POST/transcribeTranscribe video with WhisperX
POST/exportExport edited video (stream copy or re-encode)
POST/ai/filler-removalDetect filler words via LLM
POST/ai/create-clipAI-suggested clips for shorts
GET/ai/ollama-modelsList local Ollama models
POST/captionsGenerate SRT/VTT/ASS captions
POST/audio/cleanNoise reduction (DeepFilterNet)
GET/audio/capabilitiesCheck audio processing availability

License

MIT License — see LICENSE for details.

editor
podcast
text-based-editor
video

DataAnts-AI/CutScript

Open-source AI-powered text-based video editor. Edit video by editing text.

TypeScript

263

24 commits

updated Mar 6, 2026

See the code

README

CutScript

An open-source, local-first, Descript-like text-based audio and video editor powered by AI. Edit audio/video by editing text — delete a word from the transcript and it's cut from the audio/video.

image

Architecture

  • Electron + React desktop app with Tailwind CSS
  • FastAPI Python backend (spawned as child process)
  • WhisperX for word-level transcription with alignment
  • FFmpeg for video processing (stream-copy and re-encode)
  • Ollama / OpenAI / Claude for AI features (filler removal, clip creation)

Quick Start

Prerequisites

  • Node.js 18+
  • Python 3.10+
  • FFmpeg (in PATH)
  • (Optional) Ollama for local AI features

Install

# Root dependencies (Electron, concurrently)
npm install

# Frontend dependencies (React, Tailwind, Zustand)
cd frontend && npm install && cd ..

# Backend dependencies
cd backend && pip install -r requirements.txt && cd ..

Run (Development)

# Start all three (backend + frontend + electron)
npm run dev

Or run them separately:

# Terminal 1: Backend
cd backend && python -m uvicorn main:app --reload --port 8642

# Terminal 2: Frontend
cd frontend && npm run dev

# Terminal 3: Electron
npx electron .

Project Structure

cutscript/
├── electron/          # Electron main process
│   ├── main.js        # App entry, spawns Python backend
│   ├── preload.js     # Secure IPC bridge
│   └── python-bridge.js
├── frontend/          # React + Vite + Tailwind
│   └── src/
│       ├── components/  # VideoPlayer, TranscriptEditor, etc.
│       ├── store/       # Zustand state (editorStore, aiStore)
│       ├── hooks/       # useVideoSync, useKeyboardShortcuts
│       └── types/       # TypeScript interfaces
├── backend/           # FastAPI Python backend
│   ├── main.py
│   ├── routers/       # API endpoints
│   ├── services/      # Core logic (transcription, editing, AI)
│   └── utils/         # GPU, cache, audio helpers
└── shared/            # Project schema

Features

FeatureStatus
Word-level transcription (WhisperX)Done
Text-based video editingDone
Undo/redoDone
Waveform timelineDone
FFmpeg stream-copy exportDone
FFmpeg re-encode (up to 4K)Done
AI filler word removalDone
AI clip creation (Shorts)Done
Ollama + OpenAI + ClaudeDone
Word-level captions (SRT/VTT/ASS)Done
Caption burn-in on exportDone
Studio Sound (DeepFilterNet)Done
Keyboard shortcuts (J/K/L)Done
Speaker diarizationDone
Virtualized transcript (react-virtuoso)Done
Encrypted API key storageDone
Project save/load (.cutscript)Done
AI background removalPlanned

Keyboard Shortcuts

KeyAction
SpacePlay / Pause
J / K / LReverse / Pause / Forward
← / →Seek ±5 seconds
DeleteDelete selected words
Ctrl+ZUndo
Ctrl+Shift+ZRedo
Ctrl+SSave project
Ctrl+EExport
?Shortcut cheatsheet

API Endpoints

MethodEndpointDescription
GET/healthHealth check
POST/transcribeTranscribe video with WhisperX
POST/exportExport edited video (stream copy or re-encode)
POST/ai/filler-removalDetect filler words via LLM
POST/ai/create-clipAI-suggested clips for shorts
GET/ai/ollama-modelsList local Ollama models
POST/captionsGenerate SRT/VTT/ASS captions
POST/audio/cleanNoise reduction (DeepFilterNet)
GET/audio/capabilitiesCheck audio processing availability

License

MIT License — see LICENSE for details.

editor
podcast
text-based-editor
video

Significant stargazers

David Berenstein

354 followers · starred Apr 2026

Etienne Lescot

86 followers · starred Mar 2026

Evan Kohilas

59 followers · starred Sep 2026

Devin Ersoy

10 followers · starred Aug 2026