Skip to content
cccskills
FreePublished on GitHub

vocaloid-style-mv

Make an original animated music video (MV / PV) for a song from its audio file plus lyrics, in the Vocaloid / J-pop lyric-video tradition: 手書き/tegaki (V家手书, 手描きMV, ボカロPV), 文字PV and kinetic typography (リリックモーション, リリックビデオ, 歌詞動画, 歌词视频, 动态歌词), anime-illustration MVs with an original character — for any mood, from dark ballads to bright upbeat summer pop. Renders to MP4 with a deterministic Canvas2D/WebGL2 engine in a headless browser: JIZURA lyric motion, AI-generated art, optional Blender toon 3D, beat-locked editing, 9:16 vertical/Shorts version. Use it whenever the user wants a music video, MV, PV, lyric video or beat-synced animation for a song, e.g. "make an MV for my song", "turn this track into a lyric video", "给这首歌做个MV/PV", "做个V家手书", "この曲のMVを作って", "ボカロPV作って", "縦型ショートも" — even if they only give a .wav/.mp3 and say "make a cool video for it". Not for editing existing footage or clip compilations.

The English summary is being prepared. Showing the original description.

Works withBlender

Run score Not tested

See how to install

Files included (116)

  • SKILL.md12.0 KB
  • references/01-workflow.md11.1 KB
  • references/02-creative-direction.md16.2 KB
  • references/03-audio-and-lyrics.md24.4 KB
  • references/04-asset-generation.md19.7 KB
  • references/05-engine.md32.4 KB
  • references/06-jizura.md13.3 KB
  • references/07-blender-3d.md18.1 KB
  • references/08-render-and-delivery.md15.2 KB
  • references/09-qa-and-lessons.md7.8 KB
  • references/effect-cookbook.md20.6 KB
  • scripts/check_env.py22.9 KB
  • scripts/new_project.py13.0 KB
  • template/.gitignore1.6 KB
  • template/analysis/.gitkeep0 B
  • template/assets/bg/.gitkeep0 B
  • template/assets/char/.gitkeep0 B
  • template/assets/style/luts/P1_oumagatoki_duo.png184 B
  • template/assets/style/luts/P1_oumagatoki.png219 B
  • template/assets/style/luts/P2_zansho_duo.png176 B
  • template/assets/style/luts/P2_zansho.png237 B
  • template/assets/style/luts/P3_fumikiri_duo.png190 B
  • template/assets/style/luts/P3_fumikiri.png118 B
  • template/assets/style/luts/P4_hotarubi_duo.png174 B
  • template/assets/style/luts/P4_hotarubi.png230 B
  • template/assets/style/luts/P5_taishoku_duo.png174 B
  • template/assets/style/luts/P5_taishoku.png182 B
  • template/assets/style/palettes.json5.6 KB
  • template/audio/.gitkeep0 B
  • template/blender/helpers_selftest.py4.0 KB
  • template/blender/probe_scene.py20.5 KB
  • template/blender/shots/_shared.py31.3 KB
  • template/blender/shots/shotA_street.py38.6 KB
  • template/blender/shots/shotB_crossing.py32.7 KB
  • template/demo/lyrics_demo.lrc471 B
  • template/demo/make_demo_song.py18.5 KB
  • template/demo/README.md2.2 KB
  • template/demo/sections_demo.json1.0 KB
  • template/engine/core/assets.js2.8 KB
  • template/engine/core/draw.js16.6 KB
  • template/engine/core/gl.js13.2 KB
  • template/engine/core/main.js11.1 KB
  • template/engine/core/trans.js6.5 KB
  • template/engine/core/util.js6.1 KB
  • template/engine/fonts/fonts.css5.6 KB
  • template/engine/fonts/fonts.js2.2 KB
  • template/engine/fonts/manifest.json5.7 KB
  • template/engine/fonts/OFL_delagothicone.txt4.3 KB
  • template/engine/fonts/OFL_dotgothic16.txt4.3 KB
  • template/engine/fonts/OFL_kaiseitokumin.txt4.3 KB
  • template/engine/fonts/OFL_kleeone.txt4.3 KB
  • template/engine/fonts/OFL_mplusrounded1c.txt4.2 KB
  • template/engine/fonts/OFL_notosansjp.txt4.3 KB
  • template/engine/fonts/OFL_notosanssc.txt4.3 KB
  • template/engine/fonts/OFL_notoserifjp.txt4.2 KB
  • template/engine/fonts/OFL_notoserifsc.txt4.2 KB
  • template/engine/fonts/OFL_rampartone.txt4.3 KB
  • template/engine/fonts/OFL_reggaeone.txt4.3 KB
  • template/engine/fonts/OFL_shipporiminchob1.txt4.3 KB
  • template/engine/fonts/OFL_yujisyuku.txt4.3 KB
  • template/engine/fonts/OFL_zenkakugothicnew.txt4.3 KB
  • template/engine/fonts/OFL_zenoldmincho.txt4.3 KB
  • template/engine/index.html1.7 KB
  • template/engine/scenes/dark.js60.7 KB
  • template/engine/scenes/glass.js65.9 KB
  • template/engine/scenes/intro.js74.4 KB
  • template/engine/scenes/memory.js72.7 KB
  • template/engine/scenes/meta.js54.0 KB
  • template/engine/scenes/night.js60.4 KB
  • template/engine/scenes/scenes.js6.5 KB
  • template/engine/scenes/typo.js63.8 KB
  • template/engine/timeline.js28.3 KB
  • template/engine/vertical.html1.7 KB
  • template/engine/vertical.js8.0 KB
  • template/jizura/app/engine.html1.7 KB
  • template/jizura/app/host_direct.html3.7 KB
  • template/jizura/app/host_iframe.html2.1 KB
  • template/jizura/app/jizura_adapter.js6.4 KB
  • template/package.json1.9 KB
  • template/PROJECT_README.md12.3 KB
  • template/requirements.txt2.3 KB
  • template/setup.ps112.6 KB
  • template/setup.sh11.4 KB
  • template/tools/alpha_matte.py24.5 KB
  • template/tools/analyze_audio.py88.6 KB
  • template/tools/blender_common.py59.4 KB
  • template/tools/blender_run.py2.5 KB
  • template/tools/build_jizura_bundle.mjs4.1 KB
  • template/tools/fetch_fonts.py5.5 KB
  • template/tools/gigafile_upload.mjs5.2 KB
  • template/tools/imagegen.py11.8 KB
  • template/tools/jizura_parts.mjs1.9 KB
  • template/tools/jizura_probe.mjs3.8 KB
  • template/tools/jizura_serve.mjs3.8 KB
  • template/tools/jz_cuts_at.mjs2.9 KB
  • template/tools/kit_env.mjs5.9 KB
  • template/tools/kit_env.py10.9 KB
  • template/tools/preview_style_fx.mjs10.1 KB
  • template/tools/render_final.mjs7.3 KB
  • template/tools/render_final.ps1375 B
  • template/tools/render_frames.mjs30.2 KB
  • template/tools/review_sheets.py3.9 KB
  • template/tools/stills.mjs4.8 KB
  • template/tools/style_palette_sheet.py14.5 KB
  • template/tools/transcribe_align_mms.py5.9 KB
  • template/tools/transcribe_kana.py5.5 KB
  • template/tools/transcribe_lines.py14.6 KB
  • template/tools/transcribe_onset_probe.py4.5 KB
  • template/tools/transcribe_prep.py3.1 KB
  • template/tools/transcribe_reconcile.py15.9 KB
  • template/tools/transcribe_score.py4.1 KB
  • template/tools/transcribe_separate.py4.5 KB
  • template/tools/transcribe_translation.py6.6 KB
  • template/tools/transcribe_vocal_activity.py2.3 KB
  • template/tools/transcribe_whisper.py6.2 KB
  • template/tools/verify_style_snippets.mjs8.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Vocaloid-style MV pipeline (手書き / 文字PV)

This skill turns a song + its lyrics into a finished, showreel-quality lyric MV (16:9 master, 9:16 vertical version, share encodes). It packages a pipeline that was used to make 「残光」 (Music / Lyrics / Movie:NikusonP) — a 3:46 MV with an original V家-style singer, a cracked-sky / afterglow concept, JIZURA typography, two Blender 3D sequences and ~70 beat-locked shots, rendered in ~4 minutes on an RTX 3080.

The goal is a film of similar craft, not a copy. Every song gets its own concept, character, palette, motifs and storyboard derived from its lyrics and structure. The scene library and the 残光 case study are a toolbox and a worked example; reusing their look wholesale defeats the point. references/02-creative-direction.md explains how to find a new concept and gives a variation matrix.

What you have

  • template/ — a complete project: the engine (engine/), scene library (engine/scenes/*.js), JIZURA adapter (jizura/), all tools (tools/), Blender shot scripts (blender/), palettes/LUTs, a procedural demo (demo/, synthetic song) and a default commented timeline.
  • scripts/new_project.py — scaffold a project from the template (--song, --lyrics, --title, --title-sub, --artist, --credit, --setup). scripts/check_env.py — what's installed.
  • references/ — the method. Read the ones you need, when you need them (table at the end).
  • The 残光 case study (storyboard, timeline, prompts, contact sheets) is not inside this skill folder. In a repo checkout it is examples/zanko/ (two levels above this file). With only the installed skill, read it online: https://github.com/EGSECDA/vocaloid-style-mv-pipeline/tree/main/examples/zanko (raw: https://raw.githubusercontent.com/EGSECDA/vocaloid-style-mv-pipeline/main/examples/zanko/<FILE>). Every examples/zanko/... path in references/ means this folder.

Requirements

Required: Node 20+, Python 3.10+, ffmpeg/ffprobe, Microsoft Edge or Chrome (Playwright drives it headless with the GPU). Optional but used for full quality: NVIDIA GPU (WebGL + NVENC), an image generator (the kit wraps the Codex CLI's native image tool; any model works with the chroma-key method), Blender 5.x (3D shots), the lyric-timing set (faster-whisper, onnxruntime, pykakasi + CPU torch/torchaudio 2.8; only when the lyrics have no timestamps). Run python <skill>/scripts/check_env.py first (<skill> = the folder containing this SKILL.md) and tell the user what is missing and what that costs (e.g. "no Blender → I'll do the 3D moments as 2.5D").

The workflow (phases, deliverables, checkpoints)

Work in phases; each ends with something on disk you can show. Details, commands and acceptance criteria: references/01-workflow.md.

  1. Scaffold — python <skill>/scripts/new_project.py <dir> --song <song.wav> --lyrics <lyrics> --title <title> --title-sub <Latin subtitle> --artist <artist> --credit "Music / Lyrics / Movie:<artist>" --setup. The four strings set Z.TITLE, Z.TITLE_SUB, Z.ARTIST and Z.CREDIT in engine/timeline.js (HUD, end card, 9:16 header and footer); ask the user for the exact credit line. --credit without --artist takes the artist from after the credit's colon; --title without --title-sub clears the demo's subtitle. Setup installs deps, fetches fonts, clones JIZURA (pinned to the tested commit) and builds it.
    • Plain-text lyrics (no timestamps — the usual case) need forced alignment for the timings: add --setup-args "-Lyrics" (macOS / Linux: --setup-args "--lyrics"), then install the alignment deps once inside the project: python -m pip install --target vendor/pydeps_torch torch==2.8.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cpu.
    • Smoke test (recommended on a new machine): run the demo in a separate throwaway project — python <skill>/scripts/new_project.py _smoke --setup, then the steps it prints (demo/README.md). Never run it in the film's project: demo/make_demo_song.py writes audio/song.wav (it refuses to replace an existing file unless --force), and the demo steps overwrite analysis/lyrics_mv.lrc and analysis/sections.json. Run it before scaffolding the film and the film's project can reuse its fonts: --setup-args "-FontsFrom ../_smoke/engine/fonts" (bash: --fonts-from; sibling folders; combine as "-Lyrics -FontsFrom …").
  2. Listen — python tools/analyze_audio.py → analysis/audio.json (beats, downbeats, bars, sections, stops, impacts) + envelope_30fps.json. Curate section labels. Lyrics: always ask for / use the official lyrics; transcription is only for when nothing else exists, forced alignment gives plain-text lyrics their timings. Produce analysis/lyrics_mv.lrc with JIZURA markup. → references/03-audio-and-lyrics.md
  3. Concept — from the lyrics: thesis, logline, emotional arc, colour script, master shapes/motifs, character bible, signature moments. Write docs/CONCEPT.md. Checkpoint: show the user the concept in a few lines before generating art. → references/02-creative-direction.md
  4. Character & assets — write the character bible, generate 3 master candidates, let the user (or you) pick REF_master.png, then every pose with the master as reference + a shared style block; backgrounds from the storyboard's locations; chroma-key to RGBA. Checkpoint: contact sheet of masters. → references/04-asset-generation.md
  5. Storyboard → timeline — shot list mapped to bars and lyric lines (docs/STORYBOARD.md), then engine/timeline.js (shots with scene/args/lyric plan/post/transition). Times come from audio.json (B(n) bar starts, nb(t) nearest beat) so every cut lands on the music. → references/01-workflow.md, references/05-engine.md
  6. Build — reuse/adapt scenes from the library, write new ones for the song's signature moments, set up JIZURA plans + curation (references/06-jizura.md), optional Blender sequences (references/07-blender-3d.md). Parallelise: one agent per scene file (disjoint ownership), each with a test timeline and a visual review loop.
  7. Review — stills at shot midpoints → contact sheets → fix; then full render (~4 min) → review sheets every 1.5–2 s → fix → re-render. Use the checklist and known failure modes in references/09-qa-and-lessons.md. This loop is where most of the quality comes from; budget for 2–3 passes.
  8. Deliver — 16:9 master (NVENC CQ16), share encode (x264 CRF 19), 9:16 vertical re-layout, previews; credits in the title lockup, outro and end card (ask the user for the exact credit line, e.g. "Music / Lyrics / Movie:NikusonP"). Optional upload (tools/gigafile_upload.mjs). → references/08-render-and-delivery.md

Principles that make it look like a showreel (why they matter)

  • Everything is a pure function of song time t. Parallel render workers seek arbitrary frames; any wall-clock or unseeded randomness makes frames differ between workers and flicker at segment joins. Particles are closed-form; noise is seeded (Z.rnd, Z.rng, Z.noise1).
  • The beat grid is law. Tempo drifts (128→132 BPM in 残光), so cuts use real beat/bar times from audio.json, never n * 60/bpm. Lyrics appear ~0.2 s before the voice; cuts land on downbeats; big moments on chorus downbeats, stops and post-chorus hits.
  • Layers, not one canvas. Scene layer (illustration, boil + palette grade) → text layer (JIZURA lyrics, custom type, HUD; stays crisp) → foreground layer (a character drawn in front of the lyrics — text passing behind the singer is one of the strongest looks) → WebGL post (line boil on 2s, gradient-map LUTs, bloom, CA, grain, flashes).
  • Restraint, then bursts. Quiet verses with long holds and one effect at a time make choruses hit. Escalate per section; the last chorus brings back earlier ideas "on fire" plus one new move. End on an idea (the 残光 ending is a hard cut on the song's dead stop and a cyan retinal afterimage).
  • Typography is half the film. JIZURA gives a huge vocabulary, but it must be curated (some parts draw opaque cards, the wrong colour schemes vanish — dark text at night, ivory text on a daylight sky — gimmick layouts break the mood). Custom typographic scenes carry the キメ lines.
  • Match the film's key. The template, the scene library and the 残光 notes are tuned for low-key dusk/night frames: dark-scheme lyrics (light text), bloom from a 0.72 threshold, amber rims and glows, black type cards, the dusk palettes P1–P5. For a bright film (summer, noon, sea, snow) change those defaults before the first still: references/02-creative-direction.md §13.
  • Original character, consistent. Never imitate an existing character (no Hatsune Miku likeness). One master reference image anchors every pose.
  • Look at every result. Render stills, view them (images are readable), critique like an art director, fix, repeat. Don't trust that code "should" look right.

Working style

  • Keep the user in the loop at the checkpoints (concept, character master, first stills, first full render) — a 3–6 line summary plus an image is enough.
  • Prefer parallel subagents for independent scene files / asset batches / Blender shots, each owning disjoint files and saving work to disk early (long runs can be interrupted by usage limits; on-disk work survives and can be resumed).
  • Measure, don't guess: per-frame render cost (tools/stills.mjs prints ms), render throughput, asset counts.
  • Credit the artist on screen and in README files; ask for the credit line if not given.

References (read when the phase needs it)

fileread when
references/01-workflow.mdstarting a project; planning phases, commands, acceptance criteria, time budget
references/02-creative-direction.mdturning lyrics into a concept, colour script, motifs, storyboard; making it different (variation matrix); bright / daytime films (§13)
references/03-audio-and-lyrics.mdaudio analysis fields, section curation, lyrics (official / transcription / alignment), LRC markup
references/04-asset-generation.mdcharacter bible, prompts, Codex image generation, chroma key, consistency
references/05-engine.mdengine API, layers, post params, transitions, scene library catalogue, writing new scenes
references/06-jizura.mdJIZURA lyric layer: plans, styles, curation deny-lists, centre-free, vertical, debugging
references/07-blender-3d.mdtoon 3D sequences keyed to the beat, line art, timings
references/08-render-and-delivery.mdrendering, encodes, vertical 9:16 re-layout, review tooling, upload
references/09-qa-and-lessons.mdreview checklist and every failure mode we hit (with fixes)
references/effect-cookbook.mdmenu of motion/FX recipes, palette and typography systems

Author of the kit and of 「残光」: NikusonP. JIZURA 字面: github.com/852wa/JIZURA, MIT licence (Copyright (c) 2026 hakoniwa).

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Report a problem with this skill