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.

Watch on YouTube

From the first version

  1. 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.
    An anime-style man holding a key, lyrics below
  2. 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.
    The sheet with a printed manuscript grid
    With the grid
    The same sheet without the grid
    Without
    A very see-through sheet
    See-through
    An almost opaque sheet
    Opaque
    The same lyric line in six Japanese handwriting fonts
    Six fonts for the same line. Klee One won.
  3. Lyrics on the window. Writing straight on the night view let the room and the city show. Much better.
    Lyrics written in light on the window

What I learned

How it's made
  1. Timing: Whisper (stable-ts) aligns the lyrics to the audio, character by character, and the beat grid is detected.
  2. Background: GPT Image 2.5 makes a night room, then edits it into a predawn and a lamp-off version with the same framing.
  3. 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.
  4. Lyrics: Remotion (React) writes them vertically on the window and brightens the line being sung. The title is written one character per beat.
  5. 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).