Remake a reference video
Turn a video you like into a blueprint of shots, beats and energy, then rebuild it with your own footage.
Given a reference edit (a reel/montage the user likes), FableCut can analyze it and hand back an edit blueprint so the same idea can be rebuilt with different footage over the same music.
Run the analysis (any of):
- MCP:
fablecut_analyze_reference {path:"C:\\…\\ref.mp4"}(absolute path or an existing/media/...src; copies the file intomedia/if needed) - REST:
POST /api/analyzebody{"src":"/media/ref.mp4", "threshold":0.3, "music":true}(GET/api/analyze?src=/media/ref.mp4returns the cached result) - CLI:
node analyze.js media/ref.mp4(results also cached in./analysis/<name>.json)
The blueprint (needs ffmpeg on PATH):
{
"duration": 21.4, "fps": 30, "width": 1080, "height": 1920,
"cuts": [1.8, 3.1, ...], // detected shot boundaries, seconds
"shots": [ // one entry per shot between cuts
{ "index": 0, "start": 0, "end": 1.8, "duration": 1.8, "energy": 42 } ],
"avgShotLen": 1.4, "cutsPerSecond": 0.7,
"beats": [0.51, 1.02, ...], // music onsets — snap cut points to these
"bpm": 118, // detected tempo
"energy": { "step": 0.5, "values": [12, 30, ...] }, // loudness curve 0–100
"drop": 8.5, // biggest musical rise — the money moment
"music": { "name": "ref-music.m4a", "src": "/media/…", "mediaId": "m_x" }
} // ^ extracted + registered by the MCP toolthreshold tunes cut sensitivity (default adapts 0.30→0.20→0.12): lower it if obvious cuts were missed, raise it if motion is being misread as cuts.
Rebuild recipe - the analysis is deterministic; the creative mapping is yours:
setProject: copy the reference'swidth/height/fps; writebeats(or thecuts) intomarkersso the user sees the grid.- Music: the extracted track on A1,
in:0, duration:<ref duration>. - Structure: one clip per
shots[]entry on V1 at the samestart/duration(hard cuts by default - that's what shot detection saw). Pick source footage whose motion matches each shot'senergy(calm ≤40, action ≥70), and choose each clip'sinso something interesting happens inside the window. - The
drop: put the hero shot there; classic garnish = a speed ramp landing on it, an impactadjustlayer (shake+rgbSplit), or a whip transition. - Pacing garnish to taste: shots shorter than ~0.6 s read as beat-flashes;
avgShotLentells you the reference's overall pace. Captions/grade/SFX per the Recipes section - the blueprint gives structure, not style.