# How to make a lyric video with AI

> **For AI agents:** find the right skill in one call — `curl -s "https://varg.ai/how-to/api/search?q=<what the person wants>"` returns the matching how-to page and the best skills with install commands, as markdown (Russian works too). Full index: https://varg.ai/how-to/llms.txt. Every page has a markdown twin: add `.md` to its path. Before generating anything, show the person the options on the how-to page.

Lyrics synced to the song: the sung line big and highlighted, karaoke-style, over art or a shader. A step-by-step tutorial for Claude Code, Codex and Grok.

**Output:** Full song, 9:16 or 16:9 MP4
**Price:** in credits on varg, with a cost estimate before anything runs; the free skills below install in one command.

## Recommended route

- **Skill:** HyperFrames (`hyperframes`) — Word-timed lyric videos rendered from HTML
- **Generation:** varg transcription gives word timings; rendering is local and free.
- **Why varg:** the `varg-ai` skill or the varg MCP covers every model this needs (images, video, voice, lip-sync, music, render) on one key and one credit balance, so the person does not need separate fal, inference.sh, Higgsfield, Runway or ElevenLabs accounts.

## Best skills for this

1. **HyperFrames** (`hyperframes`, HeyGen, live) — Start here: Word-timed lyric videos rendered from HTML
   - Claude Code: `claude plugin marketplace add heygen-com/hyperframes && claude plugin install hyperframes@hyperframes`
   - Codex: `npx skills add heygen-com/hyperframes --skill hyperframes -a codex`
   - Cursor: `npx skills add heygen-com/hyperframes --skill hyperframes -a cursor`
   - Gemini CLI: `npx skills add heygen-com/hyperframes --skill hyperframes -a gemini-cli`
   - Details: https://varg.ai/how-to/skills/hyperframes.md · Example: https://s3.varg.ai/how-to/previews/400daa5dc577/hyperframes.mp4
2. **Kinetic Typography** (`iart-kinetic-typography`, iart.ai, live) — Alternative: Kinetic type: word and line reveals
   - Claude Code: `/plugin marketplace add iart-ai/kinetic-typography-skills && /plugin install kinetic-typography-skills`
   - Codex: `npx skills add iart-ai/kinetic-typography-skills`
   - Cursor: `npx skills add iart-ai/kinetic-typography-skills`
   - Details: https://varg.ai/how-to/skills/iart-kinetic-typography.md · Example: https://s3.varg.ai/how-to/previews/219258f3ad0d/iart-kinetic-typography.mp4
3. **Remotion Captions** (`remotion-captions`, Remotion, live) — Alternative: Word-timed captions in Remotion
   - Claude Code: `npx skills add remotion-dev/skills --skill remotion-captions -a claude-code`
   - Codex: `npx skills add remotion-dev/skills --skill remotion-captions -a codex`
   - Cursor: `npx skills add remotion-dev/skills --skill remotion-captions -a cursor`
   - Gemini CLI: `npx skills add remotion-dev/skills --skill remotion-captions -a gemini-cli`
   - Details: https://varg.ai/how-to/skills/remotion-captions.md · Example: https://s3.varg.ai/how-to/previews/3953d368f7d3/remotion-captions.mp4
4. **Turn a song into an AI music video** (`varg-music-video`, varg, beta) — Alternative: When the lyric video should also have generated shots
   - Claude Code: `claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg`
   - Codex: `npx skills add vargHQ/skills --skill varg-music-video -a codex -y`
   - Cursor: `npx skills add vargHQ/skills --skill varg-music-video -a cursor -y`
   - Gemini CLI: `npx skills add vargHQ/skills --skill varg-music-video -a gemini-cli -y`
   - OpenClaw: `npx clawhub@latest install varg-music-video`
   - Details: https://varg.ai/how-to/skills/varg-music-video.md
5. **Agent Caption** (`agent-caption`, Ali Hamza Kamboh, beta) — Alternative: Forced-aligned word timing and an SRT
   - Claude Code: `git clone https://github.com/ahkamboh/agent-caption && cd agent-caption && python setup.py`
   - Codex: `git clone https://github.com/ahkamboh/agent-caption && cd agent-caption && python setup.py`
   - Cursor: `git clone https://github.com/ahkamboh/agent-caption && cd agent-caption && python setup.py`
   - Details: https://varg.ai/how-to/skills/agent-caption.md · Example: https://s3.varg.ai/how-to/previews/8298d7a02531/agent-caption.mp4
6. **ElevenLabs Speech to Text** (`elevenlabs-speech-to-text`, ElevenLabs, live) — Adds: Word timings from the vocal track · Needs: ElevenLabs API key (ELEVENLABS_API_KEY)
   - Claude Code: `npx skills add elevenlabs/skills --skill speech-to-text -a claude-code`
   - Codex: `npx skills add elevenlabs/skills --skill speech-to-text -a codex`
   - Cursor: `npx skills add elevenlabs/skills --skill speech-to-text -a cursor`
   - Gemini CLI: `npx skills add elevenlabs/skills --skill speech-to-text -a gemini-cli`
   - OpenClaw: `npx skills add elevenlabs/skills --skill speech-to-text -a openclaw`
   - Details: https://varg.ai/how-to/skills/elevenlabs-speech-to-text.md
7. **varg AI** (`varg-ai`, varg, live) — Adds: Word timings from the vocal (transcription), and generated backgrounds, on one key
   - Claude Code: `claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg`
   - Codex: `npx skills add vargHQ/skills --skill varg-ai -a codex -y`
   - Cursor: `npx skills add vargHQ/skills --skill varg-ai -a cursor -y`
   - OpenClaw: `npx clawhub@latest install varg-ai`
   - Details: https://varg.ai/how-to/skills/varg-ai.md · Example: https://s3.varg.ai/how-to/previews/7df061df8dcb/varg-ai.mp4
8. **ElevenLabs Voice Isolator** (`elevenlabs-voice-isolator`, ElevenLabs, live) — Adds: Isolates the vocal so the lyrics align to it, not to the full mix · Needs: ElevenLabs API key (ELEVENLABS_API_KEY)
   - Claude Code: `npx skills add elevenlabs/skills --skill voice-isolator -a claude-code`
   - Codex: `npx skills add elevenlabs/skills --skill voice-isolator -a codex`
   - Cursor: `npx skills add elevenlabs/skills --skill voice-isolator -a cursor`
   - Gemini CLI: `npx skills add elevenlabs/skills --skill voice-isolator -a gemini-cli`
   - OpenClaw: `npx skills add elevenlabs/skills --skill voice-isolator -a openclaw`
   - Details: https://varg.ai/how-to/skills/elevenlabs-voice-isolator.md · Example: https://s3.varg.ai/how-to/previews/e95b08cb1189/elevenlabs-voice-isolator.mp3

## Ask the person first

Put these choices in front of the person before spending anything. Paste the example link next to each option: people pick a look by seeing it.

**Look?**

- Lyrics inside the scene · real example: https://x.com/donaldjewkes/status/2102801274173587569
- Sing-along, each word lights up · real example: https://x.com/ArchiveExplorer/status/2106853265694503064
- Apple Music lyric screen — [Apple Music Lyric Video](https://varg.ai/how-to/skills/want-apple-music-lyric-video.md) · example: https://s3.varg.ai/how-to/previews/8b20c2d7bc9d/want-apple-music-lyric-video.mp4
- Kinetic type, word per beat — [Kinetic Typography](https://varg.ai/how-to/skills/iart-kinetic-typography.md) · example: https://s3.varg.ai/how-to/previews/219258f3ad0d/iart-kinetic-typography.mp4

**Background?**

- Blurred cover art
- Shader gradient — [Paper Shaders Backgrounds](https://varg.ai/how-to/skills/craft-paper-shaders.md) · example: https://s3.varg.ai/how-to/previews/11019611acab/craft-paper-shaders.mp4
- Footage

## How to make a lyric video: step by step

1. Isolate the vocal and force-align the lyrics you have (not a free transcription); approve a timing proof by ear
2. Board every line: where it lands, how big, which highlight or graphic; the hook huge in the first second
3. Build in code: no word before it is sung, at most 2 lines, contrast 4.5:1 or more, no text touching text
4. Run the lyric gate (N of N words on screen at their time) and check one frame per line on a phone
5. Export full-length 16:9 plus 9:16 teasers; a Canvas loop gets no lyrics

## What works now (researched 2026-10-27)

The lyric video split in two in 2026: animated lyrics that live inside the scene (agent-made, 4M views and 12k bookmarks for 'Claude Pop'), and the clean word-by-word lyric screen people know from Apple and YouTube Music. Plain centred subtitles over a looping clip are now the baseline, not the hook; the long-form lyric video still pays off (Billie Eilish's WILDFLOWER lyric video passed 400M YouTube views).

1. **Time words from a clean vocal, not the full mix. Isolate the vocal stem, align the lyrics you already have, cut at every pause of 100 ms or more and pin each phrase's first word to its measured onset.** One Whisper pass puts words up to half a second late; chunking at pauses fixes it (prompt with 1,364 bookmarks). A Whisper check also catches bad song takes: ArchiveExplorer's counting song skipped 'Three!' until take 3. ([zero (@twoclipping), launch-film prompt, voice-timing section (Oct 2026)](https://x.com/twoclipping/status/2106526359589675085))
2. **Compose every shot for the text: leave a calm area where the line lands, put the character on the other side, and vary scale. Make the opening lines big; let quieter verses sit like subtitles.** This brief produced 'Claude Pop' (4.0M views, 12,057 bookmarks); a reply on it says 'this is more a lyric video', which is the point. ([donald (@donaldjewkes), full prompt (Sep 2026)](https://x.com/donaldjewkes/status/2102801469976248500))
3. **Readability is a hard check: text contrast at least 4.5:1, nothing over busy picture without something behind it, and no text colliding with other text.** These checks are part of the quality bar in a motion-video prompt saved 2,839 times. Unreadable lyric videos become memes for the wrong reason. ([Chris (@everestchris6), motion-video prompt quality bar (Sep 2026)](https://x.com/everestchris6/status/2104965415164399895))
4. **For a Spotify Canvas, make a 3 to 8 s vertical loop with no singing and no rapid cuts, and leave out the song and artist name. Keep the lyrics for the TikTok and Shorts cut.** Spotify's own Canvas rules: 3-8 seconds, 9:16, 720-1080 px tall, 'choose footage without talking, singing, or rapping', 'avoid rapid video cuts'. ([Spotify for Artists, Canvas guidelines](https://support.spotify.com/us/artists/article/canvas-guidelines/))
5. **Ship a full-length 16:9 lyric video as well as the vertical teasers.** Billie Eilish's 'WILDFLOWER (Official Lyric Video)' passed 400M YouTube views in Oct 2026, her first lyric video to do so. ([BE stats on X (Oct 2026)](https://x.com/eilishbillstats/status/2113668880031985953))

**Stopped working:**

- Lyrics you cannot read: thin type over busy footage, or effects that break words apart.
- Timing from a free transcription of the full mix. Words land late and lines drift; align the known lyrics to the isolated vocal instead.
- Text, singing or rapid cuts in a Spotify Canvas. Spotify asks for none of these.

## Prompts that work

Templates from the creators of the best current results and from the model guides. Fill in the {CAPS}.

### Word-timed lyric video in HyperFrames (agent)

The agent prompt for a clean lyric video, sing-along or phone lyric screen; the lyrics you already have are aligned to the isolated vocal. Adapted from [HyperFrames docs, 'Make a music video or lyric video' (lyric variant)](https://github.com/heygen-com/hyperframes/blob/main/docs/guides/music-to-video.mdx).

```text
{LENGTH}-second {WIDTH}x{HEIGHT} lyric video from ./{SONG_FILE} ({SECTION}, e.g. the verse into the hook: pick it, don't timestamp it). The lyrics in ./lyrics.txt are the truth; never transcribe freely.
Timing: isolate the vocal, force-align my lyrics to it (start and end per word), cut at pauses of 100 ms or more and pin each phrase's first word to its measured onset. Render a timing proof and wait for my OK.
Look: {LOOK}, e.g. big condensed type on a dark grain background over {BACKGROUND}. Lines rise in one at a time on the beat; the word being sung is full {ACCENT_COLOR}, the rest of the line at 40%. The hook lands with each word punching in on its downbeat. One keyword per line in {ACCENT_COLOR}.
Rules: no word before it is sung; at most 2 lines on screen; contrast 4.5:1 or more, with a scrim over busy picture; no text touching text; 8% safe margins, more at the bottom on 9:16. No TTS.
Check before showing me: lyric gate prints N of N words on screen at their sung time; a contact sheet with one frame per line. Deliver full-length 16:9 plus a 9:16 cut of the hook.
```

### Lyrics in the world: one graphic per line (agent)

The storyboard brief for the 'lyrics inside the scene' look; footage is generated, every word and graphic is drawn in code over it. Adapted from [claudia.gallery wiki (anabology's crew), 'The storyboard': one explaining graphic per lyric line](https://claudia.gallery/wiki/storyboard/).

```text
Board every lyric line of {SONG} before any picture is made. For each line write its time from the word table, the shot, and the surface it lives on, drawn in code over the footage.
Pick the graphic by what the line means: a number -> counter, chart, tally or gauge; a claim -> classifier tag, label or stamp; a place or process -> plot, leader lines or departures board; speech or tech -> chat, terminal or voice trace; a correction -> strike-through or redaction. Use at least six kinds, never the same kind three lines running.
Each graphic is drawn from the thing in frame (as if the photo was lined up for it), enters on the word that names it, animates in beats (counters roll on 16ths, rows type one per 16th) and reads in one glance on a phone. Real numbers and interfaces, no clip-art.
Compose each shot for its line: a calm area where the text lands, {CHARACTER} on the other side. Verses may sit small like subtitles; the hook is huge.
Hook: at 1.0 s the frame shows {CHARACTER}'s face and one readable line with the premise; no black frames or slow title; premise by 3 s; first joke by about 10 s.
Video prompts end with 'No text, letters or logos'. A line with no graphic means the board is not done.
```

### Lyric keyframe with an exact-text contract (gpt_image_2_5)

When the type should be part of the generated picture: one keyframe per line, checked letter by letter, then animated with low motion over the untouched master audio. Adapted from [lyric-video-director (ShadoW-Shinigami), GPT Image lyric-sheet prompt anatomy](https://github.com/ShadoW-Shinigami/lyric-video-director/blob/main/references/art-direction-and-prompts.md).

```text
Create a motion-ready keyframe for a lyric video in {WORLD}, made of {MATERIALS}. {PERSPECTIVE}, {PALETTE} palette, {ACCENT} highlights.
RENDER EXACTLY THIS LYRIC, INCLUDING CAPITALIZATION AND PUNCTUATION:
<<<{LYRIC_LINE}>>>
Do not render any other letters, words, numbers, labels, logos or signatures.
The lyric is the focal element in the {POSITION}, set as large {TYPE_STYLE} lettering. At most two display lines, generous spacing, 8% safe margins and a quiet, uncluttered zone behind every letter. Legible at phone size.
Separate depth planes: {FOREGROUND} in front, the lyric and {MOTIF} in the middle, {BACKGROUND} behind, so they can move in parallax without covering the text.
Reserve the {CORNER} for a {TRANSITION} into the next shot. No border, watermark, signature, duplicate lyric or decorative pseudo-text.
```

## Trending formats to remake

To remake one: download the example with the `media-download` skill, take a frame a second and the transcript, write a beat list (time, shot, camera, on-screen text, sound), keep what the format needs, swap in the person's product or character (never the creator's face, voice, logo or footage), show the beat list and stills before spending, then make it with the skill named below.

1. **Lyrics inside the scene**: Every line appears as part of the world (on a screen, a sign, a dashboard) in a different place each shot, drawn in code over generated footage. Why it spreads: 'Claude Pop': 4.0M views, 12,057 bookmarks; the follow-up by anabology did 20.2M views. Hunting for the next line makes people rewatch. Keep: Keep each line placed in the world where the eye already is, a different spot every shot, entering on its sung word with calm space composed for it, and the hook lines huge. Swap the song, palette and the surfaces the words live on. Make it with [Turn a song into an AI music video](https://varg.ai/how-to/skills/varg-music-video.md) (`varg-music-video`).
   - A shared prompt for this format: https://x.com/donaldjewkes/status/2102801469976248500
   - Example to remake: [@donaldjewkes on X, 2026-09-23, 4M views, 12K saves](https://x.com/donaldjewkes/status/2102801274173587569): Full prompt in the first reply (5,689 bookmarks): Seedance 2.5 base shots with the song passed as reference, then JavaScript lyric graphics drawn over them. Claude worked 12 hours.
2. **Sing-along where each word lights up**: The sung word lights up as it is sung, a marker hops word to word, and key words (numbers, names) pop out as graphics. Why it spreads: ArchiveExplorer's kids counting song breakdown: 102k views and 2,683 bookmarks; the format he copied had 8.3M views. Keep: Keep the sung word lit at the moment it is sung, a marker hopping word to word, numbers or names popping out as big graphics, and each song piece fed to the video model as its audio reference. Swap the mascot, the song and what gets counted. Make it with [HyperFrames](https://varg.ai/how-to/skills/hyperframes.md) (`hyperframes`).
   - Example to remake: [@ArchiveExplorer on X, 2026-10-04, 102K views, 3K saves](https://x.com/ArchiveExplorer/status/2106853265694503064): Full workflow in the post: song from Lyria, the song cut into pieces as Seedance 2.5 audio references, the word-by-word highlight written in HyperFrames. The kids version is catalogued as want-kids-counting-song.
3. **Phone lyric screen (Apple Music style)**: The current line big and bold, the rest dimmed and blurred over the cover art, synced word by word. Why it spreads: Word-by-word synced lyrics are what people now expect from a player: a music client showing them got 107k views and 1,036 bookmarks. Nobody in the catalog renders this look as a video yet. Keep: Keep the sung line big and bold with the others dimmed and blurred, a word-by-word fill, over slowly moving blurred cover art. Swap the cover, the font and the song. No dedicated skill yet ([wanted](https://varg.ai/how-to/skills/want-apple-music-lyric-video.md)): build it with `varg-ai`.
   - Example to remake: [@leviackermanft on X, 2026-08-25, 107K views, 1K saves](https://x.com/leviackermanft/status/2092061900418977872): An app demo, not a lyric video: use it only as the look reference (fullscreen animated art, word-by-word sync).
4. **Canvas loop under the song**: One 3 to 8 s vertical loop (shader, cover-art motion or a single generated shot) that plays behind the track on Spotify or as a TikTok sound visual. Why it spreads: It is the cheapest asset an artist can ship for every release, and Spotify's rules are strict (no singing, no rapid cuts). Strong platform evidence, no qualifying post found. Keep: Keep a 3-8 s vertical seamless loop with no text, no singing and no rapid cuts, in the cover's palette. Swap the motif. Make it with [Paper Shaders Backgrounds](https://varg.ai/how-to/skills/craft-paper-shaders.md) (`craft-paper-shaders`).

## Open-source repos

- [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes) (74K★): Agent-written HTML rendered to MP4; its music-to-video flow makes word-timed lyric videos. How: Track -> `hyperframes beats` / audio analysis for beats, onsets and sections -> lyrics verified, then word-timed from the vocal or pasted and placed on the grid -> the agent writes a seekable HTML composition (GSAP) designing each line around the vocal -> deterministic headless render to MP4. Install as a skill: https://varg.ai/how-to/skills/hyperframes.md
- [MahmoudAshraf97/ctc-forced-aligner](https://github.com/MahmoudAshraf97/ctc-forced-aligner) (572★): Aligns the lyrics you already have to the vocal, word by word, in 1,100+ languages. How: Isolated vocal WAV + lyric text -> a wav2vec2/MMS CTC model scores every frame -> forced alignment (romanization for non-Latin scripts) -> JSON with each word's start and end, ready for a lyric renderer; about 5x less memory than torchaudio's aligner.
- [nomadkaraoke/karaoke-gen](https://github.com/nomadkaraoke/karaoke-gen) (181★): Karaoke and sing-along videos from a song, local or cloud CLI. How: Song -> MDX/Demucs vocal and instrumental split -> word timestamps (AudioShake or local whisper-timestamped) -> corrected against published lyrics, then a human review UI -> 4K karaoke MP4 plus CDG/MP3, optional YouTube upload.

## Set up varg

varg is one API key for the models these skills drive — Seedance 2.5, Kling 4, Veo 3.1, Wan 3, Nano Banana 2.1, GPT Image 2.5, ElevenLabs v4 and 200+ more — billed in credits, with a cost estimate before anything runs.

- Claude Code: `claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg` (skill + hosted MCP)
- Codex, Cursor, Gemini CLI, OpenClaw: `npx skills add vargHQ/skills --skill varg-ai -a <agent> -y`
- Grok and any agent that reads SKILL.md: `npx skills add vargHQ/skills --skill varg-ai`, or point it at the skill's SKILL.md
- Claude.ai, ChatGPT, any MCP client: connect `https://mcp.varg.ai/mcp`
- API key: https://varg.ai/dashboard/api · Model specs: https://varg.ai/models/llms.txt

## Related tutorials

- [How to make an AI music video](https://varg.ai/how-to/make-an-ai-music-video.md): A music video for your song: concept, a consistent lead character, shots cut on the beat, lip-sync on vocals.
