Five CLIs around DaVinci Resolve music-video editing, all inference local on Apple Silicon (MPS/MLX): - vg-roto: SAM 2.1 + MatAnyone click-to-cutout -> ProRes 4444 alpha - vg-index / vg-find: PySceneDetect + mlx-whisper searchable clip library - vg-beats: librosa beat grid -> Resolve marker EDL - vg-transcode: legacy codecs -> ProRes LT, deinterlaced, resumable setup/setup_venvs.sh rebuilds venvs, tool clones, checkpoints and applies patches/matanyone-cv2-reader.patch (torchvision >= 0.23 removed read_video). Verified end-to-end on ultra 2026-08-24; setup/smoke_test.sh covers the lanes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| bin | ||
| patches | ||
| setup | ||
| .gitignore | ||
| CLAUDE.md | ||
| README.md | ||
VIDGOD
Open-source AI video production toolkit for music-video editing around DaVinci Resolve. All inference is local on Apple Silicon (PyTorch MPS + MLX) — no cloud, no subscriptions.
Built for the workflow: hoard old footage → normalize it → index every shot and every spoken word → search it → arrange to a beat grid in Resolve → cut actors out with clicks instead of rotoscoping splines.
The tools
| Command | What it does |
|---|---|
bin/vg-roto CLIP --point x,y |
Click an actor → tracked cutout as ProRes 4444 with alpha (SAM 2.1 + MatAnyone). --grab-frame saves the prompt frame so you can find coords. --mode mask for hard binary masks via SAM2 video propagation. |
bin/vg-transcode DIR |
Batch-convert old AVI/WMV/MPEG/etc → ProRes LT, mirrored dir tree, auto-deinterlace, skips already-done files. --h264 for small proxies. |
bin/vg-index PATHS |
Shot-detect (PySceneDetect) + transcribe (mlx-whisper large-v3-turbo) + thumbnail everything into library/clips.sqlite (FTS5). Resumable. |
bin/vg-find WORDS |
Full-text search the dialogue; shows the enclosing shot. --cut DIR exports each matching shot as a ProRes clip. --shots VIDEO lists a video's shots. |
bin/vg-beats SONG |
Beat-track a music file (librosa) → .beats.csv + a Resolve marker EDL (import: right-click timeline in media pool → Timelines → Import → Timeline Markers from EDL). |
Install
Needs: Apple Silicon Mac, brew install ffmpeg uv, ~4GB disk for venvs + models.
git clone ssh://git@100.71.119.27:222/monster/vidgod.git && cd vidgod
./setup/setup_venvs.sh # venvs, SAM2 + MatAnyone clones, checkpoints, patches (~10 min)
./setup/smoke_test.sh # fast lanes; add --roto for the full cutout pipeline
Everything heavy (venvs/, tools/, models/, library/, work/, tests/) lives untracked inside
the working copy; the repo is just the scripts. Long jobs heartbeat to ~/.jobs/vidgod-*.status.
Typical session
bin/vg-transcode ~/old-tv-rips # → ~/old-tv-rips-prores
bin/vg-index ~/old-tv-rips-prores # overnight for a big archive
bin/vg-find "radical" --cut ~/mv/pulls # grab every shot where someone says it
bin/vg-beats ~/mv/song.mp3 --fps 25 # markers for the Resolve timeline
bin/vg-roto ~/mv/pulls/003_*.mov --grab-frame # find your click coords
bin/vg-roto ~/mv/pulls/003_*.mov --point 970,220 # → ProRes 4444 alpha cutout
Notes & gotchas
- MatAnyone patch: torchvision ≥ 0.23 removed
torchvision.io.read_video; setup appliespatches/matanyone-cv2-reader.patchto its clone automatically. If you re-clonetools/MatAnyoneby hand, re-runsetup/setup_venvs.sh. - MatAnyone's checkpoint comes from its GitHub release (the HF repo doesn't carry the
file at the root path); its inference script insists on
pretrained_models/inside its repo dir, so setup symlinks it there. - MatAnyone propagates forward from a first-frame mask —
vg-roto --frame Ntrims the clip at N first. Prompt on a frame where the target is clearly visible. - Scripts set
/opt/homebrew/binin PATH themselves (non-interactive SSH doesn't) andPYTORCH_ENABLE_MPS_FALLBACK=1for stray unsupported MPS kernels. - Rough speed on an M1 Ultra: MatAnyone ≈ 3.4 fr/s at 1920×804; whisper large-v3-turbo transcribes far faster than realtime; ProRes transcodes are ffmpeg-bound.
Phase 2 (not built yet)
ProPainter (object/logo removal), RIFE interpolation, Cutie interactive segmentation GUI,
MODELBEAST farm operators for roto/index jobs, model mirror to NAS modelzoo. Upscaling
old footage already exists fleet-side (seedvr2_upscale on the farm); Resolve's Optical
Flow retime covers slow-mo.