Skip to content
Back to skills

Render Song Mv

ASecurity

Assemble a song-driven music-video ad from a config — a generated sung track carries the whole narration across N tableaux (one keyframe -> one i2v clip per lyric beat) with NO separate voiceover, captions synced to the song's OWN word timings (script-window, never Whisper) and the hook word landing on the chorus drop, closed on a PIL brand end card. This is the FREE deterministic assembly stage (clip cut-to-timeline + captions + end card + FFmpeg composite); the song, keyframes, and clips co...

  • 1,232 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 4, 2026
ai-agentsgo

Works with

  • cli

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add gooseworks-ai/goose-skills --skill render-song-mv --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Render Song Mv?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Render Song Mv
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gooseworks-ai-render-song-mv/badge)](https://www.skillsdirectory.com/skills/gooseworks-ai-render-song-mv)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: render-song-mv
description: Assemble a song-driven music-video ad from a config — a generated sung track carries the whole narration across N tableaux (one keyframe -> one i2v clip per lyric beat) with NO separate voiceover, captions synced to the song's OWN word timings (script-window, never Whisper) and the hook word landing on the chorus drop, closed on a PIL brand end card. This is the FREE deterministic assembly stage (clip cut-to-timeline + captions + end card + FFmpeg composite); the song, keyframes, and clips come from create-music-elevenlabs / create-image-fal / create-video-fal. Use for the song-driven-music-video format.
status: active
---

# render-song-mv

Assemble a song-driven music-video ad from a config: a purpose-written, **sung** song is
the entire narration (no separate voiceover), and every visual beat is timed to the lyrics.
The delivered song sets the timeline; N tableaux (one keyframe → one image-to-video clip per
lyric beat, all in a single look pack) are cut to their lyric windows and hard-concatenated
on the beat, captions are built from the song's OWN word timings with the hook line landing
on the chorus drop, and the spot closes on a PIL brand end card. It reads like a tiny animated
music video, not a demo. `scripts/config.example.json` is one worked example (Loóna "Fall In
Love With Sleep Again", 28s paper-craft 9:16) — its style, song, vocalist, mood, protagonist and
setting are that demo's answers, not defaults; `scripts/PIPELINE.md` maps every config block
to its step and `scripts/README.md` documents the free assembly.

## Choices

The creative calls are made upstream by the user (the recipe's `choices`) and arrive in the config;
this assembly never picks them.

- **visual_style** → `look_pack`, `clip_engine.motion_opener`. The demo used a paper-craft diorama
  at night.
- **song_genre** → `song.prompt` / `song.bpm`. The demo used a dreamy synth lullaby at ~80 BPM.
- **vocalist** → `song.prompt`. The demo used a soft breathy female lead.
- **mood** → `song.prompt`, the lyrics, `tableaux`. The demo went calm/dreamy.
- **protagonist** → `look_pack.style_opener`. The demo used a young-woman paper-doll.
- **setting** → `tableaux[].keyframe_prompt`. The demo went bedroom at night → moonlit paper village.

## Run

This is the **FREE, deterministic** assembly stage — it spends nothing. The three paid
inputs are separate capabilities: the sung song (`create-music-elevenlabs`, music_v1,
force_instrumental FALSE — the lyrics ARE the script, returns mp3 + `words.json`), one
keyframe per tableau (`create-image-fal`), and one Kling 3.0 i2v clip per tableau
(`create-video-fal`). Given the delivered song + `words.json` + one clip per beat,
`render-song-mv` cuts each clip to its lyric window, hard-concats on the beat, builds the
lyric-synced captions, composites the PIL end card, and muxes → the master. Re-cuts reuse
the existing song / keyframes / clips and cost **$0**.

## Contract (the free assembly)

- **The sung song carries the narration — no separate VO.** The generated ElevenLabs track
  IS the bed and the script (`force_instrumental` false); do not add a spoken voiceover or a
  second music bed.
- **Plan the timeline AROUND the delivered song.** The song is generated first and reshapes/
  overshoots length; snap every tableau boundary to the lyric-phrase edges in the returned
  word timings (`timeline.json`) — never trim the song to a pre-planned grid.
- **Captions from the song's OWN word timings, not Whisper (script-window).** Chunk
  `audio/words.json` (~3 words at lyric boundaries); accent words get `captions.accent_color`.
  Whisper on sung audio returns "🎵 Music Playing 🎵", so it can't caption lyrics.
- **Land the hook on the chorus drop.** Exactly ONE hero tableau (`is_hook`) is timed so the
  payoff word (`song.hook_word`) sits on the chorus drop; accent that word in the captions.
- **One look pack for consistency.** A single `style_opener` + `negative_tail` + palette drives
  every keyframe so N beats read as one film; no morph within a clip.
- **Hard cuts on the beat.** Cut each clip to its lyric window and hard-concat — no dissolves
  (one optional match-cut into the hero reveal).
- **PIL end card from the brand's real asset (e.g. the app icon) — never AI-render brand text.** The lockup is
  composited deterministically (brand gradient + circular app icon + wordmark + tagline + CTA)
  from the brand's real asset; a diffusion model garbles a wordmark.
- **FFmpeg composite, deterministic, FREE.** Burn the caption ASS, overlay the end-card PNG on
  the final window, mux the song, boost the climax beat (`audio_mix.climax_beat_id` — set it to
  this run's hook tableau; the demo's `T08` is example-only), loudnorm to −14 LUFS → 1080×1920
  h264+aac. No paid calls, no keys.

Files in this skill

  • SKILL.md3.8 KB
  • scripts/PIPELINE.md4.8 KB
  • scripts/README.md3.1 KB
  • scripts/config.example.json15.7 KB
  • skill.meta.json305 B
  • tests/smoke-test.md1.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.