**A browser video editor that AI agents can drive.**
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**English** · 简体中文 · 日本語 · Español · Português (BR)
FableCut is a Premiere-style non-linear video editor that runs entirely in your
browser — and exposes its whole timeline as one JSON document. Edit it by hand,
from the UI, or let an AI agent (Claude Code, Claude Desktop, or anything that
speaks MCP/REST) cut your video for you while you watch the timeline update
live.
Zero npm dependencies. One node server.js. That's it.
Why it's interesting
Most "AI video" tools hide the edit behind an API. FableCut flips that: the
**project file is the interface**. project.json describes media, clips,
tracks, effects, keyframes and transitions — any process that can write JSON
can edit video, and the open browser UI hot-reloads within ~150 ms via
server-sent events. A human and an agent can work on the same timeline at the
same time.
Features
**Editing**
- Video + audio tracks (default 3+4; add more with **+V** / **+A** in the track
header; right-click an empty header → **Remove track**), drag/trim/split/snap,
undo/redo
- **Settings** (cog in the top bar) — optional prefs stored in this browser via
localStorage. Enable **Link timeline and Project bin selection** so picking a
timeline clip highlights its media in Project, and clicking a Project item
selects every timeline clip that uses it (off by default).
- Video + audio tracks (default 3+4), drag/trim/split/snap, undo/redo
- **+V** / **+A** in the track header add a video or audio lane (up to 16 each)
- Right-click an empty track header → **Remove track** (disabled if the lane
has clips, or if it would leave you with zero video/audio tracks)
- Track header **S** solos that lane (mutes all others); click again to restore
the previous mute state. Using the mute toggle while soloed exits solo.
- **Track targeting** — click a track's name to target / untarget it (lit =
targeted). Split, insert, ripple, close gap and jump-to-cut touch targeted
tracks only; the eye / speaker toggle is output-only (hide from preview and
export) and no longer blocks edits. A selected clip is edited wherever it sits.
- **Track lock** — the padlock in the track header. Nothing on a locked track
can be moved, trimmed, split or deleted, and ripples leave it in place while
the other tracks shift — lock the music bed and re-cut the picture freely.
- **Clip lock, disable and unlink** — right-click a clip (or use the toggles at
the top of the inspector): **Lock** pins it like a locked track; **Disable**
( ⇧E ) keeps it on the timeline but hides it from preview and export;
**Unlink** ( Ctrl/Cmd+L ) splits a video from its audio so they move
separately, and **Link** re-joins them once they line up again. Agents see
locks too: fablecut_patch_project refuses to edit locked clips unless the
op says force: true.
- Dropping a video with more audio channels than A-tracks **adds the missing
lanes automatically** (up to 16) and toasts how many were added; each channel
becomes a linked stem on its own A-track
- **Direct manipulation on the monitor** — click a clip or title on the preview to
move, resize (corner handles), or rotate (top handle, Shift-snap) it directly
- **Timeline multi-select** — rubber-band marquee (drag on empty track area),
Ctrl/Cmd/Shift+click to add/remove clips, Ctrl+A to
select all, Esc to deselect. Drag any selected clip to move the
whole group; Delete removes all selected; S splits all
selected at the playhead. Inspector shows an "N clips selected" banner.
- Beat & cue markers (tap m on the beat during playback) — name and colour them, drag them on the ruler, jump with ⇧m / Alt+⇧m or the **Markers** list; snapping targets (clip edges, playhead, markers, IN/OUT, keyframes, frame grid) are picked from the **▾** beside Snap
- Press Alt+t to add an in/out transition based on the playhead position over the selected clip. The last used transition is remembered as the default. Drag the overlay triangle to adjust duration; Delete clears the focused transition.
- Real decoded audio waveforms on clips
- **Mixer** — the **Mixer** tab beside the Inspector has a strip per audio
track (fader, pan, mute, solo, meter) and a master fader with a live LUFS
readout. Preview and export run through the same mix, so what you hear is
what renders.
- **Clip gain, channels and Normalize** — each audio clip has a **Gain** (dB,
before volume and keyframes), a **Channels** mode (stereo, mono, left,
right, swap) and **Normalize**: measure the selected clips (ITU-R BS.1770
loudness or sample peak) and set their gain to hit −14 / −16 / −23 LUFS or