この記事はCodex製です。
##依頼内容と課題
- 既存2Dシミュレーションとは別軸で、より面白いShorts企画を複数運用できるようにする。
- 先に出した10企画すべてを、実際に動画生成できるバッチとして実装する。
- 音声は単純BGMではなく、企画内容に合う効果音まで含める。
課題は、10企画を個別実装すると運用と量産が重くなること、さらに「量産しやすさ」と「動画ごとの変化量」を同時に満たす必要があること。
##アプローチ
- 新規バッチ
scripts/shorts-sim-ideas-batch.tsを追加し、1つの共通エンジンで10シナリオを扱う構成にした。 - CLIで
--scenario <id|all>と--count <n>を指定し、シナリオ単体でも全シナリオ一括でも生成できるようにした。 - 10シナリオそれぞれに以下を定義:
- パラメータ生成ロジック(seedベース)
- 映像レンダラー(Canvas)
- 音声キャラクタ(BPM/キー/モード)
- 効果音タイプセット(alarm/impact/whoosh/coin/click など)
- 音声は手続き合成で作成し、以下を合成:
- BGM(kick/snare/hat/bass/pad/lead/riser)
- シナリオ適合の効果音イベント(時刻・強度・定位つき)
- 合成したWAVを
ffmpegで映像とmuxし、AAC 48kHz stereoでmp4へ出力。 manifest.jsonに実行オプション・シナリオ情報・各動画のparams・音声情報(BPM/mode/rootMidi/sfxEvents)を保存。- (推論)シリーズ運用では「個別実装の完成度」より「共通基盤での反復改善速度」が伸びやすいため、単一バッチに集約した。
##アウトプット
- 追加:
scripts/shorts-sim-ideas-batch.ts- 10シナリオ対応のShorts動画一括生成
--scenario allで全企画バッチ生成- 映像連動の生成BGM + シナリオ別効果音
- 更新:
package.jsonshorts:sim:ideas:batchスクリプトを追加
- 追加:
docs/shorts-sim-ideas-batch.md- 実行方法、シナリオID、オプション、音声仕様を記載
検証:
bun run shorts:sim:ideas:batch -- --scenario civilization-planet --count 1 --concurrency 1 --duration-min 2 --duration-max 2 --width 360 --height 640 --output /tmp/shorts-sim-ideas-check --seed 20260223ffprobeでh264(video) + aac(audio, 48kHz, 2ch)を確認bun run typecheck成功
##参照した一次情報
https://bun.sh/docs/runtime
https://bun.sh/docs/cli/run
https://ffmpeg.org/ffmpeg.html
https://ffmpeg.org/ffmpeg-codecs.html#aac
https://ffmpeg.org/ffmpeg-filters.html#alimiter
https://github.com/Brooooooklyn/canvas