From the team at GITMIR — a tool we built for ourselves, now open to everyone.
Create product demo videos locally and fast.
We ship a lot of product demos at GITMIR. Recording the screen is easy; turning raw footage into a tight, voiced-over cut is the slow part — sorting clips, picking the good moments, assembling a rhythm, then scripting and timing the narration. So we built Video Montage to hand that work to an AI you drive with prompts. It turned out useful enough that we use it every day — so we're releasing it as open source.
It's a local, in-browser video editor you steer from Claude Code: it looks at your footage, tags it, assembles a montage, and writes timed narration. You stay in control, and everything runs on your machine.
The core loop:
- Add your clips to the media library.
- Analyze — one click copies a prompt with the clips' frames; Claude Code tags each clip (shot size, what's on screen, quality). Filter and sort the library by tag.
- Auto-edit — Claude Code assembles a dynamic montage from the tags; paste its plan and the timeline builds itself. Trim, reorder, or tweak any segment by hand.
- Voiceover — Claude Code writes timed narration from the frames; generate the mp3s in any TTS and batch-import them — each clip lands at its correct timing.
- Preview with sound, then export an mp4.
Everything runs on your machine — footage and audio are never uploaded; they're processed by a local ffmpeg backend. The holographic HUD interface comes from gitmir.com.
- Media library — a pool of source clips; add a batch at once, remove, filter and sort by tags, drop clips onto the montage.
- AI footage analysis — a button copies your clips' keyframes for Claude Code, which tags each one (shot size, subjects, scene, motion, quality, best moments).
- AI auto-edit — Claude Code assembles a dynamic montage from the tags; paste the plan and the timeline is built for you.
- Montage timeline — a sequence of segments from different clips: trim in/out, reorder, remove; each source has its own color.
- Multi-source export — segments from different resolutions are normalized (scale + pad) and concatenated into one clean clip.
- AI voiceover — Claude Code writes timed narration
{start, end, text}from the frames; generate mp3s in any TTS and batch-import by timing. - Synced preview — custom play/pause; the montage plays through with the voiceover mixed in, before you export.
- Frame crop — a handled frame trims the output edges (any aspect ratio).
- Projects — everything saves to disk and survives restarts; autosave.
- mp4 export — H.264/AAC + faststart, guaranteed to play everywhere.
- Backend: Node.js + Express, ffmpeg-static / ffprobe-static (binaries installed via npm — no manual ffmpeg needed).
- Frontend: React + Vite + TypeScript, a custom HUD design in plain CSS.
- Node.js 18+ (developed on Node 24).
- npm.
You do not need to install ffmpeg — it's pulled in by the ffmpeg-static package.
git clone https://github.com/gitmir-hello/video-montage.git
cd video-montage
npm install # also downloads the ffmpeg binary
npm run dev # backend :3001 + frontend :5173Open http://localhost:5173 — create a project and add clips.
Production mode (backend serves the built frontend):
npm run build
npm start # http://localhost:3001Each step pairs a copy-a-prompt button with an import step, so you drive the editor from Claude Code:
- Analyze footage — add clips, click "📋 Analyze" to copy their keyframes; paste into Claude Code, then "📥 Tags" to apply the returned analysis.
- Auto-edit — click "🎬 Auto-edit" to copy sources + tags; Claude Code returns
{ timeline: [{ sourceId, in, out }] }; "📥 Montage" builds the timeline. - Voiceover — click "📋 Voiceover plan for Claude"; Claude Code returns
[{ start, end, text }]; generate one mp3 per line (name them0.mp3,1.mp3, …), then "📥 Import voiceover" places each at its timing. - Refine — trim/reorder segments, move audio clips, crop the frame.
- Export mp4.
Prefer to do it by hand? You can — add clips, arrange segments, drop in audio, and export without touching the AI steps at all.
Projects are stored on disk as self-contained folders:
data/projects/<id>/
project.json # sources, montage timeline, audio layout, crop
sources/<id>.<ext> # source clips
frames/<id>/ # small preview frames for the timeline
keyframes/<id>/ # large frames for AI analysis
audio/ # uploaded mp3s
exports/ # built mp4s
The project is a media library (sources[]) plus a montage timeline
(timeline[] — ordered {sourceId, in, out} segments). The export is a single ffmpeg
filter_complex: each segment is trimmed and normalized (scale+pad+fps),
concatenated, then crop and the voiceover mix (adelay+amix) are applied, re-encoded
to H.264/AAC. Claude Code integration is just JSON in and JSON out — no API keys, nothing
leaves your machine.
Video Montage is free and open source. If something's missing, you hit a bug, or you'd like to join as a contributor — you're welcome. Open an issue or a pull request; see CONTRIBUTING.md to get started.
We built this in the open because good tools should be shared. If it saves you time on your own demos, that's the whole point.
— the GITMIR team
GNU GPL-3.0-or-later © gitmir
Made with the holographic design system from gitmir.com.