Install
openclaw skills install @vargai/varg-music-videoDirects an AI music video or a song-driven promo end to end on varg, the way the most-watched AI music videos are made: measure the song (beat grid, word timings), pitch the concept, cast and lock character references, storyboard every cut on a downbeat, approve stills before paying for video, generate Seedance 2.5 shots, run a mandatory lip-sync pass, draw lyrics and graphics in code, run review rounds and master for each platform. Use when someone asks for a music video, a clip for my song, a video for a track, a lyric video with AI footage, a singing character, an AI artist or band video, slopcore, or a launch video cut to a song. Not for a one-off generated song or single clip (use varg-ai), shot planning and 3D camera blocking only (use varg-previz), a talking character without music (use varg-character-keynote or varg-podcast-video), or a typography-only lyric video with no generated footage (use a HyperFrames music-to-video skill).
openclaw skills install @vargai/varg-music-videoThis skill encodes the workflow that the most-watched AI music videos on X in 2026 actually use (sources at the end): a long slopcore guide written after four viral videos, a character series with a 20M-view video, a Suno → Seedance thread, a Seedance 2.5 reference-bible guide, and a restyle-a-reference-video breakdown.
It is written as a capability pipeline. Each step names the capability it needs and the tool that provides it: a varg model or tool where one exists, otherwise an outside tool marked Outside varg. Do not drop a step because varg lacks a tool for it. Use the outside tool, tell the user what it needs, or stop at that gate.
Generation (images, video, voice, music, lip-sync, transcription, ffmpeg) runs on varg: the varg MCP server (https://mcp.varg.ai/mcp) or the varg-ai skill (REST at https://api.varg.ai/v2). Read varg-ai for sign-in and model details.
The agent is the crew; the user is the director. Every phase ends at a gate where the user looks at something and says yes before more credits are spent.
A worked example with file formats and ready scripts (song map, frame-exact rough cut, QA contact sheet, small export) is in references/anime-case-study.md: a 99 s, 36-shot anime music video and the fixes from its nine review rounds.
First video ever? Do the best 30 seconds of the song (usually the first chorus), about 8 shots, one lead character, at most one singing shot, and a hard credit ceiling agreed up front (see section 12).
Input. The WAV/MP3 plus the lyric sheet. If there is no song yet, see section 1a.
Steps.
pip install demucs, then demucs <song>), run locally.songmap.py (references/anime-case-study.md).transcription tool returns word-level timestamps (whisper_large_v3, or groq_whisper_large_v3_turbo for speed); upload the stem with POST /v2/files first. Outside varg: forced alignment to the lyric sheet and onset correction (a forced aligner such as WhisperX, plus an onset detector on the vocal stem).Output: songmap.json.
{
"bpm": 98, "grid_segments": [{ "from": 0.0, "bpm": 98, "first_downbeat": 0.21 }],
"beats": [0.21, 0.82, ...], "downbeats": [0.21, 2.66, ...],
"sections": [{ "name": "chorus1", "start": 42.1, "end": 61.7 }],
"drops": [61.7],
"words": [{ "w": "light", "start": 44.02, "end": 44.51, "line": 12 }],
"lines": [{ "i": 12, "text": "I keep on waiting for the light", "start": 43.4, "end": 45.9 }],
"duration": 229.4, "stems": { "vocals": "...", "drums": "..." }
}
The creators' default:
On varg:
lyria_3_5: full song with vocals, up to ~3 min; timestamped structure in the prompt; ≤1000 characters.eleven_music_v2_5: songs with vocals, 3 s to 10 min.State an exact BPM and structure in the prompt either way.
Keep one voice per artist across songs. For spoken lines, creators prefer Fish Audio clones for acting quality, or generate the lines in Suno so speech and singing share one voice. On varg, spoken lines use ElevenLabs (eleven_v4, voice clones supported).
Pitch in a few sentences. Write down the joke or the feeling of the song. Let the agent pitch 2–3 concepts and the user react.
Give every lyric a home, a surface that belongs to the world of the song. Examples:
Straight-face rule for funny songs. The graphics present the joke as real information, the way a label or news ticker would.
Write the production brief to brief.md. It holds:
Every agent reads the brief before touching anything.
--sref codegpt_image_2_5, nano_banana_2_1, soul (Higgsfield character styles). Outside varg: Midjourney.bible/<name>.md + the sheet URLs); varg presets can hold reusable prompt settings.storyboard.json, one entry per shot:
{ "id": "s034", "section": "chorus1", "start_bar": 41, "bars": 1,
"start": 42.1, "end": 44.55, "kind": "singing",
"lyric": "I keep on waiting for the light", "lyric_surface": "nutrition_label",
"picture": "...", "graphics": "...", "camera": "slow push-in",
"refs": ["lead_sheet", "diner_plate"], "resolution": "1080p" }
Rules:
One shot per lyric line, plus the instrumental moments.
Every cut sits on a downbeat: start and end come from songmap.downbeats, never from line starts. A singer rarely starts a line on the "one"; in one draft only 21 of 74 line-start cuts were on a downbeat.
Three shot kinds:
| Kind | Inputs | Mode |
|---|---|---|
| singing | approved still + a clean vocal slice containing only the words sung on camera | reference-to-video |
| motion | still + the song itself, so the action lands on the beat; nobody sings | reference-to-video |
| insert | silent; the still is the exact first frame | image-to-video (easiest to get right) |
Spoken-dialogue scenes last a whole number of bars, so the music drops back in on the beat.
Each clip is generated to start one beat before its shot, so a slightly late take still covers the cut.
Choreography: pair one dance move with one cut, not a continuous take.
Mark the singing-shot count and get it approved.
For camera blocking and a 3D animatic before any spend, hand the storyboard to varg-previz.
nano_banana_2_1 or gpt_image_2_5 with the crop in files). The crop, enlarge and feathered paste are local image steps (ffmpeg or ImageMagick).Model. Seedance 2.5 is the consensus main model:
On varg:
seedance_2_5 (PiAPI, BytePlus and fal routes; spec at https://varg.ai/models/seedance_2_5.md)fal:bytedance/seedance-2.5/reference-to-video, or use @image1 / @audio1 tags in the prompt on the PiAPI routesResolution. 720p for wides and quick cuts; 1080p for faces that stay on screen (it costs roughly twice as much).
Prompt structure (every clip):
songmap.words, so a word in the prompt sits where that word sits in the song.Six details per beat: what's in it, what it's doing, where, how the camera moves, the style, and the rules.
A 30 s generation is four beats, not one paragraph: 0–6 set the scene, 6–14 build, 14–24 the turn or big moment, 24–30 the ending. Write the six details for each beat, inside one prompt, with timestamps.
Reference roles.
@Image1, @Video1, @Audio1) and state what it controls and what it must not touch, e.g. "@Video1 defines motion and pacing only; do not use its person, clothing or scene."Audio references.
Pass the clean vocal slice. The "blank video" method, a black video carrying the audio, works as an audio reference.
Also write the lyrics into the prompt ("…she sings: 'waiting for light'"), then add "Use the exact audio from @Video1."
On varg the ffmpeg tool makes both (MCP call_tool with tool ffmpeg, or POST /v2/ffmpeg). A blank video from a vocal slice:
{ "model": "ffmpeg",
"command": "-f lavfi -i color=c=black:s=1280x720:r=24 -i {{in_1}} -shortest -c:v libx264 -c:a aac {{out_1}}",
"input_files": { "in_1": "<vocal slice URL>" },
"output_files": { "out_1": "blank.mp4" } }
"audio": true). Silent generations come back with barely moving mouths.Run order.
estimate_cost (MCP) or POST /v2/estimate.check_balance) before big runs; a balance hitting zero mid-batch stalls everything.Keep a running total of billed credits per project (get_job_cost per job) against the agreed ceiling, and stop at the ceiling.
Near-miss clips. Edit the footage instead of regenerating, e.g. adding missing jet engines to a clip from a corrected still.
seedance_2_5 and kling_v4 edit modes, omni_flash_1_1 edit, grok_imagine_edit, minimax_h3_max_insert, and id_v2v (restyle from an edited first frame, keeping motion), the closest to edit-from-still. Outside varg: Runway Aleph.Very short v2v shots. Slow the source to half speed before the swap and speed it back up after; otherwise the model invents motion past the end.
What goes wrong: Seedance re-performs the line, so a take can look great and still sit half a second off the recording. Checks that compare Seedance's own soundtrack, or only mouth openness, pass while viewers still see bad sync. One creator took a finished video down after five of six comments said the lip sync was off.
Do this for every singing and talking shot:
sync_v2_pro or sync_v3 (video + audio in files).setpts per segment).analyze_video with a focused prompt on p/b/m closures, plus the user's eyes. Outside varg: a SyncNet/LSE-style lip-sync score.Staging that helps sync: medium close-ups, simple clear phoneme shapes, and the vocal delivery written into the prompt ("crisp diction, open vowels, staccato phrasing"). Avoid whispered or mumbled delivery.
Graphics engine.
hyperframes skill) or Remotion. varg's own <Captions> / <Title> / <Overlay> cover simple subtitles only, not lyric surfaces.Lyric gate. An automated check that every sung word is on screen at the moment it is sung, readable on a phone. It must print N of N before anything ships. Write it as a script that reads songmap.words and the composition's text timings.
Graphics rules.
Assembly.
seedvr_video or topaz_video).rough_cut.py, with a place.json that maps each shot to clip segments, slow-mo and freeze frames) and HyperFrames layer gotchas: references/anime-case-study.md.Build both on the same review page as section 5 (in Claude, an Artifact with a shared database holds notes and takes).
How one round runs (free fixes vs paid fixes, a new version file each time) and eleven real notes with the fix that worked: references/anime-case-study.md.
signalstats (locally, or through varg's ffmpeg tool) and flag frames whose YAVG jumps.loudnorm=I=-14:TP=-1:LRA=11, locally or through varg's ffmpeg tool.pixverse_vibemv on varg (a whole song, 10 s to 6 min, in one of 15 styles). Fast and cheap, good for drafts and memes. Creators report a quality ceiling on pacing, camera sense and lip sync compared with the directed pipeline above.select='gt(scene,0.35)' and signalstats; analyze_video on varg for a coarse pass).wan_3 reference-to-video, minimax_h3_max_recast.Quote every amount in credits from estimate_cost / POST /v2/estimate, never in money. Creators' reported spend, as proportions:
| Capability | On varg | Outside varg |
|---|---|---|
| Stem separation | — | Demucs |
| Beat grid / downbeats / sectional reset / BPM sanity | — | librosa, madmom (songmap.py in the case study) |
| Word timings, lyric forced alignment, onset correction | transcription (whisper_large_v3, groq_whisper_large_v3_turbo) for raw word timings | a forced aligner (e.g. WhisperX) + onset detection |
| Agent "ears" (describe a take or a mix, check cuts against sound) | — | an audio-understanding model |
| Song with vocals | lyria_3_5, eleven_music_v2_5 | Suno (persona voice, stems) |
| Spoken lines, voice clone | eleven_v4 | Fish Audio |
| Stills | gpt_image_2_5, nano_banana_2_1, soul | Midjourney (--sref lock) |
| Surgical crop → redraw → feather-paste | edit models (nano_banana_2_1, gpt_image_2_5) | ImageMagick / ffmpeg for crop and paste |
| Seedance 2.5 i2v and reference-to-video with audio refs | seedance_2_5 routes | — |
| Blank-video audio ref, slicing, trims | ffmpeg, trim tools | local ffmpeg |
| Edit an existing clip from a corrected still | id_v2v, seedance_2_5 / kling_v4 edit, omni_flash_1_1 edit, grok_imagine_edit | Runway Aleph |
| Lip-sync redraw | sync_v2_pro, sync_v3 | — |
| Take scoring + per-word time-warp; lip-sync score | transcription, analyze_video (coarse) | local scripts, SyncNet/LSE |
| Time-driven code graphics + parallel render + lyric gate | Captions / Title / Overlay (simple only) | HyperFrames, Remotion |
| Downbeat-only cut validation | — | the edit script |
| Review board / takes tracker / phone review | — | a project web page (Claude Artifact with a database) |
| Pricing gate, pilot, ceiling | estimate_cost, check_balance, get_job_cost | a running total kept by the agent |
| Flash-frame scan, loudness mastering | ffmpeg tool (signalstats, loudnorm) | local ffmpeg |
| Upscale soft shots | seedvr_video, topaz_video | — |
| v2v person swap / recast | wan_3, minimax_h3_max_recast | — |
| Reference-video cut/flash detection | analyze_video (coarse) | ffmpeg scene detection |
| Project bible (characters, places, props, prompts that worked) | presets | project files |
varg-ai (sign-in, models, single generations, cloud render), varg-previz (story structure, 3D camera blocking, Seedance video-to-video packs), hyperframes (lyrics and graphics drawn in code, final assembly), media-download (pull a reference video or audio by link), video-skills (find a skill for another format).
Sources (public posts on X, 2026):