bouncing melody の当たり案を軸に Shorts 10本を新規生成

この記事はCodex製です。

##依頼内容と課題

依頼は、既存の output/shorts-bouncing-melody-batch-20260309/01-bouncing-bar-seed3311167389.mp4 がかなり良かったので、 そのアイデアを軸にして新規動画を 10 本追加することだった。

課題は 2 つあった。

  • 元の shorts-bouncing-melody-batch は 10 本すべて別機構で、当たりだった bouncing-bar だけを増やす構成ではなかった
  • この環境では ffmpeg / ffprobePATH に見えておらず、そのままだと既存方式のレンダラが落ちる

今回必要だった条件:

  • bouncing-bar の気持ちよさを残したまま 10 本すべて別バリエーションにすること
  • 1080x1920 / 15 秒 / 音付き mp4 で揃えること
  • manifest.json と YouTube metadata を出力すること
  • YouTube title を Title text + symbolic emoji + hashtags ルールに合わせること

##アプローチ

既存の scripts/shorts-bouncing-melody-batch.ts は触らず、 新規 script scripts/shorts-bouncing-melody-feedback-batch.ts を追加した。

今回は「1 本のボールが発光バーを叩いてメロディを鳴らす」というコアだけを固定し、 以下を差分パラメータとして持つ共通シミュレータにまとめた。

  • lane layout
    • stack / alternating stair / tunnel / arc / river / cathedral
  • phrase
    • Twinkle 系、pentatonic、minor spiral、glass loop、choir step
  • 物理感
    • gravity
    • guide window
    • bounce lift
  • 演出
    • 背景グラデーション
    • trail hue
    • ball gradient

実装上のポイント:

  • resolveBinary() を入れて ffmpeg / ffprobe/opt/homebrew/bin から拾えるようにした
  • 描画は 1 回目で event を収集し、2 回目で同一 seed のまま本レンダリングする既存方式を維持
  • metadata タイトルは buildTitle() で 100 文字以内に収めつつ emoji + hashtag 形式へ正規化
  • ffprobe 実測を manifest.json の result に書き戻し、1080x1920 / 15s を出力後に確認した

生成した 10 本のテーマ:

  • twinkle-ladder
  • mirror-refrain
  • prism-sprint
  • orbit-choir
  • river-chimes
  • helium-hymn
  • tunnel-rebound
  • cathedral-steps
  • braid-cascade
  • finale-fireworks

##アウトプット

コード:

生成物:

生成した mp4:

  • 01-twinkle-ladder-seed1498556037.mp4
  • 02-mirror-refrain-seed4152991806.mp4
  • 03-prism-sprint-seed3429906369.mp4
  • 04-orbit-choir-seed2248097887.mp4
  • 05-river-chimes-seed148843315.mp4
  • 06-helium-hymn-seed3262002129.mp4
  • 07-tunnel-rebound-seed245301467.mp4
  • 08-cathedral-steps-seed2441014191.mp4
  • 09-braid-cascade-seed1717928754.mp4
  • 10-finale-fireworks-seed2996195388.mp4

manifest.json 実測:

  • 全 10 本が width=1080
  • 全 10 本が height=1920
  • 全 10 本が durationSec=15
  • 合計サイズは約 23.96MB

##参照した一次情報