A Claude Code skill that makes music-synced motion reels in code with Remotion: showreels, lyric videos, beat-synced edits and promos, set to a song you supply.
It reads the song before it designs anything. Beats, downbeats, sections, energy, kick and hi-hat hits and where the vocals sit all become data the reel is timed from, so big moves land on the song's real changes and quiet passages get room to breathe. Every reel starts from a treatment anchored in a specific real-world visual tradition, and that treatment is checked against a log of your earlier reels, so the next one can't quietly turn into the last one.
- Brief. Subject, song, length, aspect ratio, where it plays (a muted website loop, a social post with sound, or both) and any footage, images or logos. When the reel is for a named brand or site, it reads that site first: its copy, typefaces, colours and marks.
- Song. It analyses the whole track, maps where the vocals are, and picks an excerpt that carries the chorus. When the best material is in two places, it joins them on measured downbeats. Lyrics can go on screen from an
.lrcfile or a transcription. - Treatment. A named visual reference sets the palette, type, motion and transitions. A list of banned defaults (beat-by-beat zoom punches, glitch transitions, grain and vignette on everything, word-by-word captions and more) keeps it away from the usual generated look, and the reel log rejects a treatment that shares too much with a recent one.
- Build. One Remotion composition, every frame a pure function of time, with cues addressed by bar and beat rather than hard-coded frame numbers.
- Review. Contact sheets and frame-by-frame strips around every cue, checked against the treatment, for legibility, collisions and sync.
- Render and deliver. A web MP4 (H.264, BT.709, faststart), a muted loop, a VP9 WebM and a poster, each decoded and checked: duration, audio, colour tags, background colour and the loop seam.
In Claude Code:
/plugin marketplace add DeanSPN/motion-reel
/plugin install motion-reel@motion-reel
Or copy the skill folder by hand:
git clone https://github.com/DeanSPN/motion-reel
mkdir -p ~/.claude/skills
cp -R motion-reel/plugins/motion-reel/skills/motion-reel ~/.claude/skills/Ask Claude Code for a reel and give it the song:
Make a 60 second 16:9 reel for our website with this song, pick the best part with the chorus.
It asks for anything the brief is missing, then works through the steps above.
plugins/motion-reel/skills/motion-reel/
├── SKILL.md the workflow, design rules, banned defaults, review defects
├── reference/brand.md discovery for reels made for a brand or site
├── scripts/
│ ├── analyze.py beats, downbeats, sections, energy and hits into cues.json
│ ├── vocals.py vocal phrase timings (never lyric text)
│ ├── lyrics.py on-screen lyrics from .lrc or transcription
│ ├── cut.py join stretches of a song on measured downbeats
│ ├── reel-log.mjs the uniqueness log and treatment check
│ ├── sheet.py paginated contact sheets for review
│ └── deliver.py web deliverables plus decoded checks
└── template/ a bare Remotion project with cue helpers
- Claude Code. The skill runs your local toolchain.
- Node.js and uv. The Python scripts pull their dependencies (librosa, faster-whisper, imageio-ffmpeg and a few more) on demand; nothing is installed system-wide, and a full ffmpeg comes from imageio-ffmpeg, so none is needed on the machine.
- Remotion, installed per reel from the template. Remotion has its own license: free for individuals and small teams, while larger companies need a company license. See remotion.dev/license.
- On a bare Linux server, Remotion's headless Chrome needs
libnss3,fontconfigand at least one font package. - Music you have the rights to use. The skill works only from files you supply and never downloads a song.
The reel log lives at ~/.claude/motion-reel/log.json.
MIT, for the skill's own text and code. See LICENSE.