Skip to content

About

Open-source, local, text-based video editor. Edit video by editing the transcript: local Whisper, strikethrough cuts, filler removal, chapters, media layers, and an agent-ready edit API.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Open Script Editor

An open-source, local, text-based video editor. Drop in a video and it's transcribed on your machine with Whisper. Then you edit the video by editing the text.

  • Delete words → delete video. Removed words stay visible as strikethrough (toggle to hide).
  • Filler words (um, uh, like, you know, repeated words) are detected and removed in one click.
  • Shorten word gaps across the whole video.
  • Markers → chapters, with "Copy chapters for YouTube".
  • Attach media to text: select words, then add an image, video or title layer that follows every edit.
  • Rearrange by cut and paste, correct typos without touching the media, and full undo/redo.
  • Export MP4 (layers burned in), MP3, WAV, SRT, Markdown transcript, chapters or a JSON edit list.
  • Agent-ready: every edit is a JSON operation over a local HTTP API (see AGENTS.md).

Everything runs locally. No account, no API keys, no uploads.

Quick start (macOS)

brew install ffmpeg whisper-cpp
git clone https://github.com/rbrown101010/Open-Script-Editor.git
cd Open-Script-Editor
npm install
npm run setup     # downloads a Whisper model (ggml-small.en, ~470 MB) if you don't have one
npm start         # http://localhost:4317

Or double-click Start Open Script Editor.command. For development, npm run dev serves the UI with hot reload on http://localhost:5173.

Linux works too if ffmpeg and whisper.cpp's whisper-cli are on your PATH.

Variable Default Purpose
WHISPER_MODEL first ggml-*.bin in ./models or ~/.cache/whisper Whisper model file
WHISPER_CLI whisper-cli whisper.cpp binary
SCRIPT_EDITOR_DATA ./projects Where projects and exports are stored
PORT / HOST 4317 / 127.0.0.1 Server address (keep it on loopback; see SECURITY.md)

Keyboard

Do this How
Remove / restore words ⌫ / ⇧⌘⌫
Correct a word's text Double-click, or C
Reorder ⌘X a selection, click a destination, ⌘V
New paragraph / join Enter / ⌫ at the start of a paragraph
Marker (chapter) #
Play / speed Space, ⇧J / ⇧K / ⇧L
Undo / redo / export ⌘Z / ⇧⌘Z / ⌘E

How it works

Transcribed words and detected pauses become tokens that tile the entire source file, so a text range is always an exact media range. Token order is playback order. Layers and markers are anchored to token ids, so they survive every edit. compose() compiles the document into an edit decision list that drives the in-browser player (it skips removed ranges live, with no render) and the ffmpeg export. More detail in PLAN.md.

src/core/     pure TS edit model: types, ops reducer, compose (EDL), fillers, transcript builder
server/       Express API, persistence + undo, whisper.cpp transcription, ffmpeg export
src/client/   React UI: script editor, preview, canvas timeline, inspector
scripts/      agent CLI, setup, dev runner

Contributing

Issues and PRs are welcome. Run npm run typecheck && npm test before opening a PR.

Disclaimer

Open Script Editor is an independent open-source project. Its editing model is inspired by transcript-based editors such as Descript's classic editor; it is not affiliated with or endorsed by Descript, Inc. "Descript" is a trademark of its owner.

License

MIT

About

Open-source, local, text-based video editor. Edit video by editing the transcript: local Whisper, strikethrough cuts, filler removal, chapters, media layers, and an agent-ready edit API.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages