Skip to content

Repository files navigation

🎬 Video Montage

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:

  1. Add your clips to the media library.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Video Montage interface

Features

  • 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.

Stack

  • 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.

Requirements

  • Node.js 18+ (developed on Node 24).
  • npm.

You do not need to install ffmpeg — it's pulled in by the ffmpeg-static package.

Install & run

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 :5173

Open http://localhost:5173 — create a project and add clips.

Production mode (backend serves the built frontend):

npm run build
npm start            # http://localhost:3001

The AI montage workflow

Each step pairs a copy-a-prompt button with an import step, so you drive the editor from Claude Code:

  1. Analyze footage — add clips, click "📋 Analyze" to copy their keyframes; paste into Claude Code, then "📥 Tags" to apply the returned analysis.
  2. Auto-edit — click "🎬 Auto-edit" to copy sources + tags; Claude Code returns { timeline: [{ sourceId, in, out }] }; "📥 Montage" builds the timeline.
  3. Voiceover — click "📋 Voiceover plan for Claude"; Claude Code returns [{ start, end, text }]; generate one mp3 per line (name them 0.mp3, 1.mp3, …), then "📥 Import voiceover" places each at its timing.
  4. Refine — trim/reorder segments, move audio clips, crop the frame.
  5. 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.

How it works

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.

Contributing & feedback

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

License

GNU GPL-3.0-or-later © gitmir


Made with the holographic design system from gitmir.com.

About

Local AI video editor you drive from Claude Code: analyzes your footage, auto-edits a montage, and writes timed voiceover — all on your machine via ffmpeg. Holographic HUD from gitmir.com.

Topics

Resources

Contributing

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages