Version: v0.1
License: MIT
Language: 日本語 | English
Music Video Studio は、ComfyUI をバックエンドにして、キャラクター設計・シナリオ作成・音楽生成・シーン画像生成・シーン動画生成・完成MV書き出しを 1 つの制作キャンバスで進めるための MV 制作アプリです。
現在の既定UIは Production 版 Music Video Studio です。
旧 Generative Media Place / Simple Video 系UIは互換用として残しています。
中断後に再開する場合は、docs/HANDOFF_2026-05-03_JP.md を先に確認してください。
このアプリは、MV 制作を次の STEP に分けて扱います。
- キャラクタ作成
- シナリオ・世界観作成
- 音楽作成
- シーン画像作成
- シーン動画作成
- 完成MV書き出し
制作タイプや制作実行プランを選び、各 STEP の成果物を次工程へ受け渡しながら MV を組み立てます。
- 制作キャンバス
- キャンバス名、選択プリセット、制作実行プラン、選択STEP、保存状態を管理
- 制作タイプ選択
- キャラ主導MV
- 歌詞重視MV
- シナリオ創作ビデオ(音楽ではなくシナリオ起点で創作ビデオを制作、BGMは任意)
- 風景・オブジェクト創作ビデオ(キャラクタではなく景色・建物・物体・乗り物を主役に、主役キー画像基準で創作ビデオを制作、BGMは任意)
- 既存素材編集MV
- 制作実行プラン選択
- キャラ一貫性重視
- シーン単位調整
- FLF / I2V / 混在トランジション系プラン
- STEP制作・編集エリア
- 選択STEPごとの入力、生成、確認、再生成を行う作業領域
- キャラクター制作
- 参照画像スロット
- キャラクター画像生成
- キャラシート生成
- 動画比率への非AI画像フィット処理
- シナリオ・世界観作成
- OpenAI互換APIによるシナリオ生成
- キャラクター文脈・世界観メモの反映
- 音楽作成
- 歌詞・楽曲プラン生成
- ACE-Step API または ComfyUI workflow による音楽生成
- 外部音源インポート、トリミング
- シーン画像作成
- シーンプロンプト生成
- シーン尺・遷移提案
- 全シーン画像一括生成
- シーン動画作成
- I2V / FLF / LTX 系 workflow
- シーン単位生成
- 全シーン動画一括生成
- 完成MV書き出し
- シーンクリップ結合
- 音楽合成
- 結合から完成MVまでの自動制作ボタン
- 専用ページ
MV Libraryでの生成済みMV一覧表示 - UIからの過去MVアップロード登録
- 任意フォルダからのMVインポート
- タイトル / メモ付き管理
- 状態保存
- localStorage とサーバー側 session state に保存
- 「自動制作」「STEP作成」「編集」は UI 上の制作モードとして存在しますが、現時点では主に表示・導線・説明の切り替えです。
- 完全な end-to-end 自動制作モードは段階的に整備中です。
- 生成処理は基本的に各 STEP のボタン操作で実行します。
- ComfyUI は既定で
127.0.0.1:8188を使用します。 - 複数 ComfyUI / Worker 分離運用は設計メモ段階です。詳細は docs/MULTI_COMFYUI_WORKER_PLAN_JP.md を参照してください。
主要ファイル:
mv_studio/
├── app_production.py # Production版 FastAPI アプリ
├── start_production.sh # Production版 起動スクリプト
├── static/
│ ├── music_video_studio.html # Production版 UI
│ ├── mv_library.html # 生成済みMV一覧の専用画面
│ ├── js/music_video_studio.js # Production版 フロントエンドロジック
│ ├── js/mv_library.js # MV Library ロジック
│ └── css/music_video_studio.css # Production版 スタイル
├── lt/ # 発表資料・図版一式(git 管理外)
├── workflows/ # ComfyUI API workflow JSON
├── docs/ # 技術メモ・利用ガイド・設計資料
├── data/ # 状態保存・参照画像・セッションデータ(git 管理外)
├── input/ # 入力ファイル(git 管理外)
├── output/ # 出力ファイル(git 管理外)
└── temp/ # 一時ファイル(git 管理外)
旧互換UI:
app.py
start.sh
static/index.html
static/js/simple_video.js
プレゼン資料:
- 本番用の発表資料・図版・Mermaid ソースは lt/README.md を参照してください
lt/はローカル作業用フォルダーとして.gitignoreでフォルダーごと除外しています
- Python 3.10+
- ComfyUI
- ComfyUI API workflow を実行できるモデル / custom nodes
- ffmpeg
- ブラウザ
任意:
- OpenAI互換API
- シナリオ生成
- 歌詞・楽曲プラン生成
- プロンプト生成
- 翻訳 / VLM解析
- ACE-Step API Server
- 外部 API 経由の音楽生成に使用
例:
cd /home/animede/ComfyUI
source /home/animede/comfy-env/bin/activate
python main.py --listen 127.0.0.1 --port 8188ブラウザまたは curl で確認:
curl http://127.0.0.1:8188/system_statscd /home/animede/mv_studio
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txtbash start_production.sh既定URL:
http://127.0.0.1:8091/
start_production.sh は以下に対応しています。
bash start_production.sh --host 127.0.0.1 --port 8091
bash start_production.sh --openai-base-url http://127.0.0.1:11434/v1
bash start_production.sh --openai-api-key sk-xxxx
bash start_production.sh --vlm-base-url http://127.0.0.1:11434/v1
bash start_production.sh --vlm-model gemma-3-27b-it
bash start_production.sh --ace-step-url http://127.0.0.1:8001
bash start_production.sh --no-reload主な環境変数:
| 変数 | 用途 | 既定値 |
|---|---|---|
MV_PRODUCTION_HOST |
Production版 bind host | 127.0.0.1 |
MV_PRODUCTION_PORT |
Production版 port | 8091 |
COMFYUI_SERVER |
ComfyUI server | 127.0.0.1:8188 |
COMFYUI_DIR |
ComfyUI root 自動検出の補助 | 自動検出 |
COMFYUI_INPUT_DIR |
ComfyUI input dir | ComfyUI/input |
COMFYUI_OUTPUT_DIR |
ComfyUI output dir | ComfyUI/output |
OPENAI_BASE_URL |
OpenAI互換API endpoint | 任意 |
OPENAI_API_KEY |
OpenAI互換API key | 任意 |
VLM_BASE_URL |
VLM endpoint | OPENAI_BASE_URL 相当 |
VLM_API_KEY |
VLM API key | 任意 |
VLM_MODEL |
VLM model | gemma-3-27b-it |
ACE_STEP_API_URL |
ACE-Step API Server | 任意 |
Production版は、シーン画像・シーン動画・キャラ画像・キャラクターシートの生成先を
ComfyUI(既定)と diffusers-server(diffusers-server の統合
画像・動画生成REST APIサーバ)から選べます。切替は generation_backend.py が担う。
| 変数 | 用途 | 既定値 |
|---|---|---|
MV_GEN_BACKEND |
全体既定。comfyui | diffusers |
comfyui |
MV_GEN_BACKEND_IMAGE |
シーン画像・キャラ画像のみ上書き | (未設定=MV_GEN_BACKENDに従う) |
MV_GEN_BACKEND_VIDEO |
シーン動画のみ上書き | (未設定=MV_GEN_BACKENDに従う) |
MV_GEN_BACKEND_CHARSHEET |
キャラクターシートのみ上書き | (未設定=MV_GEN_BACKENDに従う) |
MV_GEN_BACKEND_SCENE_ANGLES |
シーンアングル展開のみ上書き | (未設定=MV_GEN_BACKENDに従う) |
DIFFUSERS_SERVER_URL |
diffusers-serverのベースURL | http://127.0.0.1:8601 |
例(全機能をdiffusersへ切替、diffusers-serverは別途起動しておくこと):
MV_GEN_BACKEND=diffusers bash start_production.sh例(シーン画像だけdiffusers、動画・キャラシートは従来通りComfyUI):
MV_GEN_BACKEND_IMAGE=diffusers bash start_production.sh| mv_studio機能 | diffusers-server API | 備考 |
|---|---|---|
| シーン画像(参照画像なし) | POST /api/t2i(model=2512, lightning=true, steps=4) |
|
| シーン画像/キャラ画像(参照画像1〜3枚) | POST /api/edit(multipart、lightning=true) |
|
シーン動画 LTX-2.3系(ltx_i2v/ltx_flf) |
POST /api/ltx2/i2v または /api/ltx2/flf |
num_framesは8n+1へ自動丸め。既定で高解像度出力(下記「制約」参照) |
シーン動画 Wan2.2系(i2v/flf) |
上記LTX-2.3のi2v/flfへ自動マップ |
diffusers-server側に対応モデルが無いため。サーバログに1行明示 |
| キャラクターシート | charsheetジョブAPI(投入→ポーリング→8方向取得) | 構成がComfyUI版と異なる(下記「制約」参照) |
シーンアングル展開(scene_angles_8) |
POST /api/scene_angles/generate(ジョブ式、投入→ポーリング→8枚取得) |
風景・オブジェクト創作ビデオのシーン画像作成STEPで、主役キー画像からカメラ8アングルを展開。ComfyUIバックエンド時は templates-1_click_multiple_scene_angles-v1.0 ワークフローを使用(部分アングル指定はdiffusersのみ対応)。個別上書きは MV_GEN_BACKEND_SCENE_ANGLES |
| キャラ合成画像の動画比率フィット | POST /api/outpaint(既定ON、UIのチェックボックスで切替) |
余白を「同じシーンの続き」としてAI生成(アウトペイント)。中央部は元画像ピクセル保証。OFF・ComfyUIバックエンド時・失敗時は従来のぼかし余白へ自動フォールバック(ログ1行) |
- キャンセルは不完全: diffusers-serverには生成を中断するAPIが無い
(ComfyUIの
/interruptに相当する機能が無い)。POST /api/v1/production/cancelは「diffusers-server混雑時の409リトライ待機中」または「次のリクエスト送信前」までしか 効かない。denoiseループ実行中のリクエストは最後まで走る。 - Wan2.2 → LTX-2.3自動マップ:
wan22_i2v_lightning/wan22_smooth_first2lastワークフローに相当する動画生成は、diffusers-server側に同等モデルが無いため 自動的にLTX-2.3のi2v/flfへ振り替えられる(見た目や動きの傾向差は許容)。 - キャラクターシートの構成差: diffusers-server側は標準8方向
(front/back/left/right + 斜め4方向)のみを返すジョブ式API。ComfyUI版
(
character_sheet_card_v1_0[_nobg])が持つ顔アップ等の追加カットは無い。 - 音楽生成(ACE-Step)は対象外: 既存の
ACE_STEP_API_URL外部サーバ経路 (ComfyUI非依存)を推奨。diffusers-server側にACE-Step相当のAPIは無いため、 本切替機構の対象に含めていない。 - GPU共有: diffusers-serverは同時1件の生成のみ許可し、混雑時は409を返す。 本アダプタは2秒間隔でリトライしてキュー投入のように振る舞うが、ComfyUIの 永続キューとは異なり呼び出し元プロセスがブロックし続ける点に注意。
- シーン動画の高解像度出力(既定ON): シーン動画作成UIの 「高解像度出力(2xアップスケール、1280×704)」チェックボックスで切替。 ON時はI2V/FLFとも640×352 denoise+latent 2xアップスケールで1280×704出力になる (LTX-2.3パイプラインの「32の倍数」制約により1280×720ちょうどは指定不可。 FLFのupscale対応は2026-07-23にdiffusers-server側へ追加。高解像度の直接denoiseは attentionメモリがフレーム数のほぼ2乗で増え、121フレームで87GB超のOOMを起こすため不使用)。 OFF時は従来の512×320。ComfyUIバックエンド時は本設定は無視される (ComfyUIワークフローが元々640×360→2x→1280×720の2段構成のため)。
画面左の制作キャンバスで「制作タイプ」を選びます。
- キャラ主導MV
- 歌詞重視MV
- シナリオ創作ビデオ(音楽ではなくシナリオ起点で創作ビデオを制作、BGMは任意)
- 風景・オブジェクト創作ビデオ(キャラクタではなく景色・建物・物体・乗り物を主役に、主役キー画像基準で創作ビデオを制作、BGMは任意)
- 既存素材編集MV
制作フロープラン選択で、画像生成・動画生成の進め方を選びます。
例:
- キャラ一貫性を重視した標準動画制作
- 品質と柔軟性を両立させた高度な動画制作
- シーン単位で調整しやすい動画制作
- 高速な連続長尺動画制作
フロー上の STEP カードをクリックすると、右側の STEP制作・編集エリアが切り替わります。
代表的な流れ:
- キャラクタ作成で参照画像・キャラ画像・キャラシートを準備
- シナリオ・世界観作成で構成を作成
- 音楽作成で歌詞・楽曲・音源を作成
- シーン画像作成でシーンプロンプトと画像を作成
- シーン動画作成で各シーンを動画化
- 完成MVでクリップ結合と音楽合成を実行
完成MV STEP から、生成済みMV一覧の専用ページ MV Library を開けます。
できること:
output/movieに保存された最近のMV一覧表示- 過去に作成したMVファイルをブラウザUIからアップロード登録
- サーバー上の任意フォルダからMVを一括インポート
- 各MVにタイトル / メモを付けて管理
主な画面:
GET /mv_library.html- static/mv_library.html
- static/js/mv_library.js
補足:
- 生成済みMV一覧は
MV Library専用画面で表示します - 完成MV STEP 側は一覧への導線と件数確認のみを持ちます
- インポート / アップロードされたMVも
output/movie配下へ取り込みます
専用の制作タイプ「風景・オブジェクト創作ビデオ」も利用できます。
この UI は「キャラクタ作成」という名前ですが、実際には 景色・建物・小物・乗り物・抽象オブジェクト などを主役にした MV にも使えます。
おすすめの進め方:
- キャラクタ作成 STEP で、人物用素材を使わない場合は
キャラ合成画像とキャラシートを空にしておく - 主役にしたい景色や物体を次のどちらかで用意する
ref1に直接アップロードするテキストから新規作成で画像を作り、必要ならref1に使うでref1へ移す
テキストから新規作成の出力をref1に移した場合は、キャラ合成画像が優先参照にならないようクリアしておく- 必要に応じて
ref2は別アングルや補助資料、ref3は背景・スタイル参照として使う - シナリオ・世界観作成 / シーン画像作成 では、「誰が」ではなく「何が主役か」「どの場所を見せたいか」を明確に書く
- シーン画像を生成し、意図に合う絵になったらシーン動画作成へ進む
ポイント:
- シーン画像生成では、参照画像は
キャラ合成画像→キャラシート→ref1→ref2→ref3の順で使われます - そのため、景色や物体を主役にしたい場合は
キャラ合成画像/キャラシートを残さない 方が意図どおりになりやすいです - 風景MV、プロダクトMV、コンセプト映像、抽象映像のような用途でも同じ流れで制作できます
app_production.py が提供する主な API:
| API | 内容 |
|---|---|
GET / |
Production UI |
GET /music_video_studio.html |
Production UI |
GET /mv_library.html |
生成済みMV一覧の専用画面 |
GET /api/v1/production/config |
プリセット・モード設定 |
GET /api/v1/production/state |
状態取得 |
POST /api/v1/production/state |
状態保存 |
POST /api/v1/production/story/generate |
シナリオ生成 |
POST /api/v1/production/music/plan |
歌詞・楽曲プラン生成 |
POST /api/v1/production/music/generate |
音楽生成 |
POST /api/v1/production/music/import |
音源インポート |
POST /api/v1/production/music/trim |
音源トリミング |
POST /api/v1/production/scene-plan/generate |
シーン尺・遷移提案 |
POST /api/v1/production/scene-image/prompts |
シーン画像プロンプト生成 |
POST /api/v1/production/scene-image/generate |
シーン画像生成 |
POST /api/v1/production/scene-video/generate |
シーン動画生成 |
POST /api/v1/production/final-mv/render |
クリップ結合 / 音楽合成 |
GET /api/v1/production/final-mv/list |
MV Library 用の一覧取得 |
POST /api/v1/production/final-mv/library/upload |
UIからMVをアップロード登録 |
POST /api/v1/production/final-mv/library/import-folder |
任意フォルダからMVを一括インポート |
POST /api/v1/production/final-mv/library/metadata |
タイトル / メモ保存 |
POST /api/v1/production/character-image |
キャラクター画像生成 |
POST /api/v1/production/character-image/fit-video |
動画比率への画像フィット |
POST /api/v1/production/character-sheet |
キャラシート生成 |
POST /api/v1/production/cancel |
実行中処理のキャンセル要求 |
ComfyUI workflow JSON は workflows にあります。
主に使用する系統:
- Qwen Image / Qwen Image Edit
- Flux / Flux Kontext / Flux2 edit
- Wan2.2 I2V / FLF / T2V
- LTX Video
- ACE-Step 1.5 T2A
- RMBG / remove background
- video concat / audio merge 系 utility
モデル名・custom node・VRAM 目安は workflow の内容と ComfyUI 環境に依存します。
詳細は以下を参照してください。
- docs/TECHNICAL_JP.md
- docs/PIPELINE_CHAR_EDIT_I2I_FLF_JP.md
- docs/PIPELINE_CHAR_EDIT_I2I_MIXED_JP.md
- docs/MV_STUDIO_PRESET_MAPPING_JP.md
Production UI は以下に状態を保存します。
| 保存先 | 内容 |
|---|---|
localStorage mvStudioProductionState |
ブラウザ側のUI状態 |
localStorage comfyui_api_client_session_id |
セッションID |
data/production_state.json |
サーバー側共通状態 |
data/production_sessions/ |
セッション別状態 |
data/ref_images/ |
参照画像 |
data/mv_library.json |
MV Library のタイトル / メモ / 取込元メタデータ |
data/, input/, output/, temp/, llm/ は .gitignore で除外しています。
旧 Generative Media Place / Simple Video UI は互換用として残しています。
bash start.sh旧UIの主なファイル:
- docs/MUSIC_VIDEO_STUDIO_JP.md
- docs/CHARACTER_STEP_IMPLEMENTATION_PLAN_JP.md
- docs/MV_STUDIO_PLAN_JP.md
- docs/MV_STUDIO_PRESET_MAPPING_JP.md