A lyric video for a Suno song, made with code
October 13, 2026 · 日本語
I wrote a song with Suno, 深夜3時、30歳 (3 a.m., 30), and made a vertical lyric video for it with scripts instead of a video editor, all the way to 4K HDR and the YouTube upload.
From the first version
- Illustrated scenes. Anime-style shots of a character, cut to the lyrics. It didn't feel like the
song, so I moved to one quiet, photographic room with a fixed camera.

- Lyrics on paper. A translucent manuscript sheet in front of the window, written in ink. Most of
the time went here: whether to print the manuscript grid, how see-through the sheet should be so it sits in the
room instead of floating on top of it, and which handwriting font. In the end it hid the best part of the
picture.

With the grid 
Without 
See-through 
Opaque 
Six fonts for the same line. Klee One won. - Lyrics on the window. Writing straight on the night view let the room and the city show. Much
better.

What I learned
- Tell the time with light. One generated room, edited into a lamp-off and a predawn version with
the same framing. Blended over time: the night opens dark, the desk lamp warms up as the music fills in, and it
goes out at dawn.

Night 
Lamp on 
Dawn - Thin text breaks in intermediate files. Most video stores colour at half resolution (4:2:0), which
smears thin strokes, and every re-encode adds to it. Render at 4K and keep full colour resolution (4:4:4) until the
final encode.

Before: 1080p, 4:2:0 
After: 4K, 4:4:4 - Check HDR on a real phone. On a Pixel, YouTube's SDR version of an HLG upload looked best. PQ played as HDR but looked darker indoors.
How it's made
- Timing: Whisper (stable-ts) aligns the lyrics to the audio, character by character, and the beat grid is detected.
- Background: GPT Image 2.5 makes a night room, then edits it into a predawn and a lamp-off version with the same framing.
- Motion: OpenCV sways the curtains and the plant, turns the sky from night to predawn and the lamp on and off. Everything is a function of time, so any slice renders the same frames.
- Lyrics: Remotion (React) writes them vertically on the window and brightens the line being sung. The title is written one character per beat.
- Finish: an HDR grade that lifts only the light sources, then cuts for YouTube, Shorts, Reels and Stories. YouTube's API locks uploads from unreviewed apps to private, so I upload by hand and the script sets everything else and publishes.
4:23, 2160×3840, 30 fps. About $3.40 of image generation, and about 55 minutes to render the 4K master on a MacBook Pro (M5 Max).