Scroll V · Codex of Image Summons · live

召喚之書

画像生成プロンプト指南 ── サムライカンフーくん シリーズ

本書は 完全データ駆動 のダッシュボード。lib/* の単一ソースを変更すると、ここの統計・プリセット・引用が自動更新される。
新規生成・再生成・採用判定の出発点として、まず冒頭の フォーマット参照 3 枚API プリセット を参照。

Part A — Start Here

このページの使い方

How To Read This Codex

本書は本プロジェクト専用の 「生成指南書」。生成ルールの正典はstoryboard-gen-spec.mdsite/lib/prompt-codex.ts、 汎用設計パターンは /docs にある。

読む順
  1. A · はじめに
  2. B · 素材・典拠
  3. C · 絵コンテ仕様
  4. D · 映像化
  5. E · データ・参照
とにかく生成したい人へ

A2「生成ワークフロー gen.mjs」 へ直行。 1 コマンドで DRY 確認 → 実生成まで通せる。

Part A — Workflow ★

生成ワークフロー gen.mjs

One Command — DRY then Generate

旧来の 5 手順 (dump / batch / sync / webp / check) を 1 コマンドに統合。 品質ガード (anchor 強制 / location 継承 / orientation 背面 / reveal 墨絵 / 12fps) は composer・checker に内蔵されている。

node site/scripts/gen.mjs ch12              # DRY: カット一覧 + anchor健全性 + 概算費用を表示して停止
node site/scripts/gen.mjs ch12 --go         # 実生成: batch→sync→webp→check まで一気に
node site/scripts/gen.mjs ch12 --missing-only --go   # 未生成カットだけ

anchor 未解決 (ドリフト危険) を検出すると --go を止める。

bootstrap 章は chapter_master に既存 curated マスターを当てるか、s1-c1-1 を先に生成する 2 フェーズ。

正典は CLAUDE.md §15。

Part A — A3 — Critical

画像・映像 生成前チェック

Pre-Generation Checklist — Run Before Every Batch

1枚・1本でも必ずこの手順を踏む。承認なしで実行しない。

STEP 0 — 種別の確認(用語の定義)
種別定義解像度qualityスクリプト
絵コンテカット PNG字コンテの1カットを2048×1152の1枚絵に変換したもの。劇画スタイル。2048×1152highgen.mjs <chId> --go
シーンボード廃止 (2026-06-11) — 1シーン俯瞰の構図ボード。字コンテ + カット画像 + 動画が正であり冗長のため全廃。生成・表示・要求いずれも行わない。
映像絵コンテカット PNG を first/last frame に動画化。Kling 3.0 Omni (mode=pro) 主軸。/storyboard UI コピー + Higgsfield MCP
STEP 1 — バッチ計画の提示と承認

以下のフォーマットで生成リストを提示し、明示的な承認(「OK」「実行して」等)を得てから実行する。

【種別】絵コンテカット PNG — gen.mjs (composer/SoT 経由)
【解像度】2048×1152 / quality: high

| # | id      | サイズ    | 品質 | 内容概要               |
|---|---------|-----------|------|------------------------|
| 1 | s1-c1-1 | 2048×1152 | high | 沼辺の全景、霧の夜明け |
| 2 | s1-c2-1 | 2048×1152 | high | ハニワ腰〜頭 MS        |

合計 2 枚 / node site/scripts/gen.mjs ch04        # DRY 確認 → --go で実生成
【種別】映像 — /storyboard UI コピー (lib/video/prompt.ts ビルダー) + Higgsfield MCP

| # | id      | モデル               | 長さ | 内容             |
|---|---------|----------------------|------|------------------|
| 1 | s1-c1-1 | Kling 3.0 Omni (pro) | 5s   | ハニワ出土シーン |

合計 1 本 / 実行: Higgsfield MCP generate_video(コピーしたプロンプトを使用)
Part B — B1

共通トンマナ (BASE_PROMPT)

Series DNA — Always Prepended

すべての画像生成プロンプトに常時同梱されるシリーズ DNA。下の文字列は lib/prompt-codex.ts::BASE_PROMPT から live 読み出し。 ここを編集すると以後の全生成プロンプトが自動で追従する。

このブロックは下の 詠唱改変セクション (B1b) で編集可能(Blob overlay — コード変更なしで上書き・リセット)。

Create a high-quality character / item / environment design sheet for the IVS 2026 KYOTO myth-tech startup fantasy universe ("サムライカンフーくん" / "Samurai Kung-fu kun" series).

The artwork should look like an OFFICIAL concept-art dossier for a fictional startup event in Kyoto. The visual style is a serious fusion of ancient Japanese folklore, yokai design, Buddhist and Shinto visual language, samurai armor and kung-fu martial arts, cyberpunk startup technology, and traditional hand-drawn Japanese setting material.

Use an aged parchment background, ink linework, watercolor and gouache texture, red seal stamps, Japanese mincho calligraphy title, English subtitle, thin ruled panel borders, annotation boxes, detailed equipment diagrams, action pose panels, front / side / back turnaround, detail-up panels, signature items, drones, motif icons, and color palette swatches.

The layout should be dense but readable — like a professional setting sheet from a Japanese game art book, folklore archive, or weapon diagram. The main subject illustration should be LARGE and dominant on the left or center, with structured information panels around it.

The tone should be serious, mythological, slightly surreal, darkly humorous, and conceptually clever. When depicting an antagonist or trial, it must personify a real startup or business obstacle through a yokai or spiritual motif. When depicting a hero or guardian, it must carry mythic weight and folkloric gravity — never cute, never kawaii.

Blend modern business concepts into the design NATURALLY (not pasted on): contracts, funding pressure, burn rate, CAC, KPI dashboards, legal documents, HR recruitment, market valuation, AI systems, server parts, overtime culture, investor pressure, regulation, customer acquisition, data screens, drones, talismans, seals, chains, receipts, ledgers, dashboards, and hologram UI.

Use a strictly muted color palette: aged paper beige, ink black, clay brown, dark bronze, rust red, vermilion, antique gold, smoky blue, pale cyan hologram light, dull gray, off-white, and desaturated business-document colors.

Include subtle IVS 2026 KYOTO event motifs as small seals, red infinity-like icons, badges, or corner stamps — but DO NOT overuse branding.

Each sheet must include the following structural elements (label each in JP mincho + small EN subtitle): a large Japanese calligraphy title, English name and subtitle, large main subject illustration, concept box, personality / role box, main abilities box, action pose panels, front / side / back turnaround row, detail-up panels, signature items, motif icons, related drones (where appropriate), color palette swatches, and a short tagline at the bottom.

STRICTLY AVOID: cute anime aesthetics, moe character design, kawaii or chibi proportions, glossy fantasy-game excess, generic cyberpunk, loud branding, photorealistic finish, soft pastel palettes, smiley friendly mascot vibes, doll-like rounded faces. The result must feel handcrafted, culturally layered, conceptually clever, and AT THE SAME LEVEL OF GRAVITAS as the canonical character sheets of the series.

— SERIES STYLE SIGNATURE (canonical, must match exactly) —
This sheet must visually match the established "Samurai Kung-fu kun / IVS 2026 KYOTO" canon sheets — specifically the Haniwa / Dogū / Ashura / Indra hero series sheets — across the following dimensions:
• Paper: warm aged kraft-parchment beige, NOT pure white, with subtle stains and tea-color blooms in the corners.
• Linework: dark sumi ink with confident hand-drawn weight variation that breaks into wash where shadow meets paper; no crisp digital vector edges.
• Color discipline: 80% sepia + ink-black + muted clay tones, with vermilion-red and antique-gold deployed ONLY as accent points (seals, talismans, halos, single weapon hilts) — never as fields.
• Title typography: Japanese mincho calligraphy title at the upper-left or upper-center, weighted ink brush, paired with a small English subtitle below in compact uppercase serif/mono. The title block must feel like a real Japanese setting-sheet header (not a video-game logo).
• Layout: dense field-guide grid — main illustration occupies ~55-65% of the canvas, surrounded by clearly bordered annotation panels, turnaround row, action thumbnails, equipment close-ups, palette swatches.
• Stamp: a small vermilion 朱印 "IVS 2026 KYOTO ∞" seal in the lower-right corner of the sheet, sized to fit within a single grid cell (do not enlarge into a focal element).
• Faces: not idealized; carry weight, age, and slight asymmetry. Hero faces are stoic / brooding, antagonist faces carry a corporate-yokai unease.

When reference images are provided alongside this prompt, treat them as ABSOLUTE STYLE ANCHORS. Match their:
  - paper hue and texture grain
  - ink line confidence and brush dynamics
  - color palette saturation and balance
  - annotation panel border style and spacing
  - title calligraphy weight and placement
Do NOT redesign reference characters that appear; treat their visual identity (silhouette, mask shape, signature equipment, color allocation) as inviolable. New subjects in this sheet must feel like they could have been drawn by the same artist in the same session as the reference sheets.
Part B — B1b — Incantation Override

詠唱改変 — Prompt Blocks 編集

Prompt Blocks — 生成プロンプト不変ブロックの上書き台帳

全生成プロンプトの「不変ブロック」(lib/prompt-blocks.ts の BASELINE) を、コード変更なしで Blob overlay として上書きする。 キーは cut.style_base / video.style_header のようなドット区切り。 override が無いキーは baseline (TS 定数) がそのまま effective になる。

⚠ Caution — Affects All Future Generations
  • ここでの変更は以後の全生成プロンプトに即時波及する(コード変更なし・Blob 永続。リセットで baseline に戻せる)。
  • 変更後の検証は golden-prompt-diff で行う。
  • Blob 未設定環境 (BLOB_READ_WRITE_TOKEN なし) では読み取り専用になる。
  • baseline 本文の恒久的な変更は従来通り lib/prompt-blocks.ts(登録元の prompt-codex.ts / video/style.ts)で行う — B1 節 参照。
読み込み中 — GET /api/prompt-blocks …
Part B — B2 — Critical

フォーマット参照 3 枚

Format Anchor Sheets — Series DNA

この 3 枚は シリーズ canonical の絶対基準。新規生成・再生成のあらゆる場面で 必ず visual reference として参照される。 造形に対しての参照ルール: キャラ・場所・アイテムを指定する場合は、まず該当 kind の reference を visual で添付し、その様式・質感・色使い・タイポ・余白配分を継承させる。この一貫性が世界観統一の生命線。

Character Format Anchor
★ ANCHOR
character
Character Format Anchor

キャラクター・フォーマット基準

ターンアラウンド・能力欄・色印譜・関連ドローン・三面図・物語上の位置 を全て備えた、シリーズ唯一の完成形キャラ設定資料。新規キャラの全シートは必ずこの構成と質感に従う。

Item Format Anchor
★ ANCHOR
item
Item Format Anchor

アイテム・フォーマット基準

Ch2 で初めてバグ虫部品から組み上げた試作武器。シリーズのアイテム設定資料 canonical 様式 (hero shot + side detail + chain detail + 比較シルエット + 素材詳細 + 物語意味 + 色印譜) を完璧に体現。新規アイテムは必ずこの構成と質感に従う。

prototype_nunchaku_mk1→ 詳細ページ
Location Format Anchor
★ ANCHOR
location
Location Format Anchor

ロケーション・フォーマット基準

世界観の起点ロケーション。鳥瞰図・建物詳細パネル・住人シルエット・素材スウォッチ・雰囲気&ライティング・関連資料 を備えた canonical location 様式。新規場所は必ずこの構成。

tokyo_redevelopment→ 詳細ページ
スクリプトから引く方法
import { FORMAT_REFERENCES, getFormatReference, allReferenceSheets } from "@/lib/format-references";

// 全 reference を引く
FORMAT_REFERENCES.forEach((r) => console.log(r.slug, r.sheet));

// kind 別に
const charRef = getFormatReference("character");  // → market_storm

// バッチ JSONL の reference_images に流す
const refs = allReferenceSheets();
// → ["site/public/sheets/market_storm.jpg", "site/public/items/pact_seal.png", "site/public/locations/tokyo_redevelopment.png"]
kind 別フォーマット — 設定資料シート構造
ロケーション / アイテム / キャラは「一枚絵」ではなく 多パネルの設定資料シート
鉄則: 補足 / ロケーション / アイテムを生成するときは、下の kind 別レイアウト(設定資料シート)を必ず踏襲する。単一の一枚絵にしない。 生成経路はdump-supplement-prompts-with-refs.mjs(BASE_PROMPT + KIND_LAYOUT + format/style anchor を reference_images に添付)→openai_batch_with_refsraw openai_batch 直焼き(format anchor なし)は禁止=フォーマット逸脱の元凶。詳細は CLAUDE.md §9。
item

Sheet contents: 1) large central illustration of the subject in its primary state; 2) state-variant row (idle / active / split / damaged / awakened as applicable); 3) detail close-ups of mechanism, materials, inscriptions; 4) scale-comparison silhouette where relevant; 5) symbolic-meaning annotation box; 6) color palette swatches.

character

Sheet contents: 1) large central full-body illustration; 2) front / side / back turnaround row; 3) 4-5 action pose thumbnails (labelled in Japanese); 4) 3-5 equipment/ability close-ups with annotations; 5) personality / role text box (JP + EN sub); 6) story-position diagram showing where this entity appears in the arc; 7) color palette swatches.

location(背景/場所)

Sheet contents: 1) large central wide establishing shot of the location; 2) 2-4 detail call-out panels of architectural / environmental elements; 3) small bird's-eye floorplan or schematic diagram; 4) material / texture swatches; 5) inhabitant silhouettes hinted at scale; 6) lighting / atmosphere caption (JP + EN); 7) color palette swatches.

lib/supplement-prompt.ts::KIND_LAYOUT から live。location = background

Part B — B3

canonical 引用元

Single Source of Truth

ここから引かれる場所 / 道具 / キャラのみが「世界観の正本」。それ以外は没または supplement (要判定)。

Part B — B4

補足資料 56

Supplement Items — 55/56 rendered · size 1536x1024 · quality high

判定は /review-items ページから。OK 採用先は kind ごとに既定枠あり (★ 付き)。

アイテム#01
契りの印
pact_seal
アイテム#02
機構式東証宮
tosho_gu_mecha
アイテム#49
ちぎり札
chigiri_fuda
アイテム#04
阿修羅覚醒装備セット
ashura_awakening_kit
アイテム#05
インドラ買収・支配装備
indra_subjugation_kit
背景・場所#07
走馬灯バトル・九妖怪試練の連戦舞台
ch5_gauntlet_arena
アイテム#08
ハニワの古い御札
haniwa_old_talisman
アイテム#09
試作ヌンチャク Mark I
prototype_nunchaku_mk1
アイテム#10
フィードバック盆
feedback_basin
アイテム#11
株価砲・チャート剣
stock_cannon_chart_blade
アイテム#12
阿修羅光輪・火炎冠
ashura_halo_fire_crown
アイテム#13
破れた事業計画書
torn_business_plan
アイテム#14
阿吽門の鍵・朱印型
gate_key_seal
アイテム#15
機構式東証宮残骸の核
tse_core_gear
アイテム#16
模倣のっぺらぼうの鏡片
nopperabou_mirror_shard
背景・場所#17
ハニワ単独修行路
haniwa_solo_pilgrimage_road
背景・場所#18
インドラの王座の間
indra_throne_room
背景・場所#19
共闘記憶の暖色空間
co_battle_recollection
アイテム#20
ドグーの観察レンズ
dogu_observation_lens
アイテム#21
京都行 古地図
kyoto_journey_map
アイテム#22
喧嘩別れの裂け印
rivalry_torn_seal
アイテム#23
旧態研究所の鍵
legacy_archive_key
アイテム#24
上場召喚の鐘
ipo_summon_bell
アイテム#25
ドグー買収契約書
dogu_acquisition_contract
アイテム#26
白象経
white_elephant_sutra
アイテム#27
青年ドグーのヴァジュラブレード
dogu_youth_vajra
キャラ#28
規模拡大の重力鬼
scaling_gravity_oni
キャラ#29
メディア注目天狗
media_buzz_tengu
キャラ#30
創業者モード仙人
founder_mode_hermit
キャラ#35
エンジェル投資神
angel_investor_kami
背景・場所#36
京都行 夜行列車の車窓
night_train_to_kyoto
背景・場所#37
青年化の境界路
ch6_growing_transition
背景・場所#38
レビュー河童の夜明け
kappa_pond_dawn
背景・場所#39
京都到着大通り
kyoto_arrival_avenue
キャラ#40
のぞみ改二
shinkansen_mk2
キャラ#41
規模拡大の重力鬼
scaling_gravity_oni
アイテム#42
ヌンチャク改二(新幹線レール型)
nunchaku_mk2
アイテム#43
旧態研究所の封印鍵
legacy_archive_key
アイテム#44
IPO 銘鐘ハンマー
ipo_bell_hammer
背景・場所#45
のぞみ改二・高速戦線(外観)
bg_shinkansen_nozomi_mk2
背景・場所#46
のぞみ改二・車内バトルカー
bg_shinkansen_battle_car
キャラ#47
寿限無 至高体 設計資料
jugemu_swarm_single
背景・場所#50
大阪グリコ周辺 · 道頓堀ネオン夜景
ch09_osaka_dotonbori
背景・場所#51
渋谷スクランブル交差点 · 昼と夜
ch09_shibuya_crossing
背景・場所#52
那須ハイランドパーク · 遊園地の昼景
ch09_nasu_highlands
背景・場所#53
沖縄国際通り · 夕方の賑わい
ch09_okinawa_kokusaidori
背景・場所#54
トンデモ京都 · 金剛力士の参道
ch07_kyoto_kongo_gauntlet
背景・場所#55
丸の内メガコーポ摩天楼 · 巨大企業メカの谷
ch11_marunouchi_megacorp
背景・場所#56
富士・北斎大津波の港 · 桜吹雪の海戦
ch11_fuji_hokusai_harbor
背景・場所#57
機構式東証宮 · パシフィック・リム式コックピット
ch10_tse_palace_cockpit
背景・場所#58
重力鬼の樹海 · 富士麓の沈む森
ch11_jukai_gravity_battlefield
背景・場所#59
トンデモ京都・金剛力士の屍の参道→大門
ch14_corpse_path_to_gate
背景・場所#60
冷青の回廊——祭壇室への道
ch14_altar_corridor
キャラ#61
寿限無の取り巻き・個体寄り
jugemu_legion_closeup
キャラ#62
寿限無の取り巻き・密集隊列
jugemu_legion_ranks
キャラ#63
寿限無の大群・高高度俯瞰テクスチャ
jugemu_swarm_aerial_texture
Part C — C1 — Critical

絵コンテ生成仕様

Storyboard Generation Spec — IVS 2026 PV01

絵コンテ専用の生成仕様。スタイル / レイアウト / キャラリファレンス / タイポルールを体系化する。site/app/api/storyboard/generate/route.ts が実装の Single Source of Truth。

品質ガード — 必読(ドリフト / 前後 / 12fps / リビール)
  • Style Anchor = painted-cel master shot(描法 / パレット / 光のみを定義する clean な一枚絵)。設定資料シート / content plate を style anchor にしない(メカ・建物等の content は character / location ref で供給する)。
    解決順 = cut_override > scene_master > 【動的 chapter-style-anchor(昇格された章ベスト cut)】> chapter_master(jikonte) > 章最初の base cut
    初期 = 前章系の master を cross-chapter 流用(bootstrap)。その後 /storyboard の各 cut の「☆ 章master」ボタンで、その章で最も良い cut を章の style anchor に昇格すると、以降の生成が章ベストを継承する(SoT: content/chapter-style-anchors.json/api/chapter-style-anchor、composer が chapter_master を override)。
    解決できないと char sheet だけが style 源になりドリフト → composer が fail-loud、gen.mjs DRY が「設定資料シート / plate(items/locations/sheets)を anchor にしている」「未解決」を警告、checker W6。
  • Orientation: 背面 cut は orientation:"back" か composition の背面語で検出 → rear view, no face + 背面 sheet を自動注入(Dogū 同心円目 / Haniwa front-face の背面複製を防ぐ)。checker W7。
  • 動画 12fps 単一ソース: CORE_ANIM_STYLE(hand-drawn 2D cel / 12fps limited animation / no CG・tween・interp)を cut/scene 両ヘッダーが共有 → 全章で 12fps が一致。
  • リビール: reveal cut = 墨絵 namecard 1 枚のみ(BEFORE/_before 2 フレーム制は 2026-06-11 廃止)。導入は直前 cut / シーン転換が務めるよう字コンテ側で設計。
正典: storyboard-gen-spec.md §4–§8 / 汎用パターン: /docs 品質ガード / 自動検査: check-consistency.mts(W6 anchor / W7 back-sheet)
OpenAI API Reference Links
— 定期確認・アップデート推奨。変更があれば site/app/manual/page.tsxOPENAI_API_REFS を更新。
★ MASTER
OpenAI API Docs — Master Index
全 API の起点。モデル一覧・エンドポイント・新機能リリースはここから追跡する。定期確認推奨。
https://developers.openai.com/api/docs
★ PRIMARY
Images & Vision Guide
vision 入力 + image_generation ツールの組み合わせ仕様。リファレンス画像を渡す方法の公式ガイド。
https://developers.openai.com/api/docs/guides/images-vision
実装
Images — Create Edit (edits endpoint)
/v1/images/edits — multipart/form-data でリファレンス画像を渡せる本実装エンドポイント。model / image / prompt / size / quality / output_format 対応。
https://platform.openai.com/docs/api-reference/images/createEdit
フォールバック
Images — Create Generation (generations endpoint)
/v1/images/generations — テキストのみ生成。prompt は string 限定 (配列は 400 エラー)。キャラシートなし時のフォールバック先。
https://platform.openai.com/docs/api-reference/images/create
モデル
gpt-image-2 モデル仕様
gpt-image-2 の size / quality / background / output_format パラメータ一覧。サポートアスペクト比・最大解像度など。
https://platform.openai.com/docs/models/gpt-image-2
将来
Responses API — image_generation tool
gpt-4.1 + image_generation ツールで vision 入力 → 画像生成の組み合わせ。org 認証が必要 (現状未対応)。将来移行候補。
https://platform.openai.com/docs/api-reference/responses
マスターショット / Master Shot
modelgpt-image-2
size1536×864 (16:9)
qualitylow (draft) → high (final)
output_formatpng
n1
絵コンテシート / Storyboard Sheet
modelgpt-image-2
size1536×864 (16:9)
qualitylow
layout4 cols × 3 rows = max 12 panels
output_formatpng
劇画スタイル必須ルール
  • GEKIGA MANGA (劇画漫画) スタイル — NOT anime, NOT cel-shading
  • • ベースカラー: 生成り和紙テクスチャ + 墨ベタ黒
  • • 差し色: 朱 #c1272d のみ (御札・印章・衝撃フラッシュ・血)
  • • 金 #b8893a: 阿修羅 / インドラ神格化時の後光のみ
  • 禁止: フルカラー塗り / アニメパステル / フォトリアル / グラデーション
  • • 影: 平行ハッチング + クロスハッチ — エアブラシ禁止
  • • 輪郭: 強い筆圧変化あり太ブラシストローク
絵コンテ タイポルール (STRICT)
  • 禁止: オノマトペ (ザシュ, ドン, ガッ 等) — 通常パネルでは絶対NG
  • 禁止: 集中線 (speed lines) を主役エレメントとして使用
  • 禁止: モーションブラーの文字表現
  • • 動きの表現: キャラのポーズ / パネル構図 / シーケンスで示す
  • • 許可: 台詞のセリフ吹き出し (縦書き, 白地に黒枠)
  • 例外: 新キャラ初登場パネルのみ — 大きな墨文字のキャラ名 (下記参照)
キャラクターリファレンス自動注入

生成 API は references/characters/{slug}/refs/sheet.jpgmultipart/form-data の image[] としてテキストプロンプトと一緒に/v1/images/edits へ送信する(実装どおり)。 モデルは画像を直接参照するため、テキスト記述だけでは不可能なレベルのキャラクター再現精度が得られる。

// ref あり (正規): POST /v1/images/edits — multipart/form-data
//   image[] = sheet.jpg / style anchor / location ... (バイナリ添付、順序が役割を決める)
//   prompt  = "<全プロンプトテキスト>" (string)
//   model=gpt-image-2 / size / quality / output_format=png

// ref なし fallback: POST /v1/images/generations — JSON
{
  "model": "gpt-image-2",
  "prompt": "<全プロンプトテキスト — string 限定 (配列は 400 エラー)>",
  "size": "1536x1024",
  "quality": "high",
  "n": 1,
  "output_format": "png"
}
新キャラ初登場 — 墨文字イントロパネル

そのシーンに初登場するキャラクターには、専用の 静止フレーム 1 パネル を挿入する。 直前の章に cast されていないキャラクターを自動検出して注入する。

  • • キャラの日本語名を 大きな墨文字ブラシ書道 でパネルの 60% に配置
  • • キャラのシルエット or アイコニックポーズが文字の背後/下から浮かび上がる
  • • 背景は漆黒 — 極限のコントラストで映像が一瞬静止するような緊張感
  • • 台詞なし / オノマトペなし — 名前の墨文字 + シルエットのみ
  • • オプション: 朱のアクセントストロークが名前を切るように入る
パネル構図のリズム (4 拍子)
引き
Wide / Establishing
ロケーションを一発で認識
寄り
Close-Up / Reaction
表情 or 決定的なディテール
衝撃
Impact Frame
Dutch angle 8–25°, 対角構図
余韻
Aftermath / Pause
静寂 or 次の緊張への橋渡し
Part C — C2 — Grand Rules

リファレンス読み込みルール

Multimodal Reference Strategy — How to Load Images into gpt-image-2

gpt-image-2 へのリファレンス画像の渡し方によって出力品質が大きく変わる。 実証済みの最適戦略を以下にまとめる。これは /storyboard の生成エンジンが実際に実装している方式

Rule 1 — 最重要 : 「画像 + SHORT アンカーテキスト」が最強
NG — 画像のみ

AIが勝手に解釈し、服装・アクセサリーの位置が崩れる。talisman が胸に来たり、ヌンチャクが紐になる。

NG — 画像 + フル再描写

画像が既に持っている情報を文字で重複。トークン浪費。画像の情報量と競合して逆効果になることも。

OK ★ 画像 + 3-5項目アンカー

画像に任せ、AIが「よく間違える箇所だけ」 を文字で強調。短く・具体的に。これが最高精度。

KEY COSTUME ANCHORS:
- TOP: Frog-button closures (布紐ボタン ×5-6) NOT kimono V-neck collar
- TALISMAN: "未来∞" at WAIST BELT — NOT on chest, NOT on back
- WEAPON: CHAIN nunchaku (metal links) NOT cord/rope
- PROPORTIONS: SMALL/compact — mushroom+bell silhouette
Rule 2 — 3層リファレンス構造

生成エンジンはリファレンス画像を3種類スタックして渡す。優先度は上から:

  1. 1.
    キャラクターシート (refs/sheet.jpg) — 最優先。canonical 外見の法典。SHORT アンカーと組み合わせ。
  2. 2.
    ロケーション画像 (public/locations/{slug}.png) — 場の雰囲気・スケール・色調を継承させる。
  3. 3.
    スタイルアンカー (/generations で選択) — 気に入った生成物の画風を次の生成に引き継ぐ。
現行 composer の添付順は STYLE anchor → LOCATION → 前cut(CONTINUITY) → CHARACTER sheet(下の PER-IMAGE ROLE MANIFEST が正)。 この Rule 2 は旧 /storyboard ブラウザエンジンの優先度で、絵コンテ cut の正規ルート(gen.mjs / cut-prompt-composer.ts)とは順序が異なる。
edits endpoint: image[] として全画像を multipart/form-data で渡す。
1枚 → image キー / 複数 → image[] キー (重複エラー回避)
Rule 3 — シートなしキャラの扱い

デザインシートが存在しないキャラクター (burnout_jorogumo, copycat_ninja 等) は generations endpoint にフォールバックし、CHAR_VISUAL_OVERRIDES の全文記述 が視覚仕様になる。

VISUAL CANON — regulatory_tengu:
- High-nose tengu face (高鼻天狗), prominent long nose, red face
- Large red-feathered wings (scarlet/crimson)
- Black formal court hat (烏帽子) and hakama
- CHEST: Red vermilion approval stamps (許認可の朱印) on robe
- NOSE TIP: A small key at the very end of the nose
Rule 4 — MIMEタイプの正確な送信

.jpg 拡張子でも中身がPNGバイト列の場合がある (ハニワくんのシートがこのケース)。 拡張子ではなくファイルヘッダから正しいMIMEを判定して送信すること。

function detectMimeFromB64(b64: string): string {
  const header = Buffer.from(b64.slice(0, 8), "base64");
  if (header[0] === 0x89 && header[1] === 0x50) return "image/png";  // PNG magic
  if (header[0] === 0xff && header[1] === 0xd8) return "image/jpeg"; // JPEG SOI
  if (header[0] === 0x52 && header[1] === 0x49) return "image/webp"; // RIFF
  return "image/jpeg";
}
Rule 5 — スタイルアンカーの運用フロー
  1. 1.
    /generations を開き、気に入った画像の 「☆ Style Anchor」 ボタンを押す
  2. 2.
    選択した画像が localStorage に記録され、バナー で確認できる
  3. 3.
    /storyboard に移動すると上部にアンカー画像が表示される
  4. 4.
    以降の生成で style_ref_url として自動的にアンカー画像が添付される
「解除」ボタンで解除 / 別の画像を選べばそちらに上書き
★ 現行実装 — PER-IMAGE ROLE MANIFEST
添付 ref ごとに「役割」を明示する(絵コンテ cut)

上の Rule 2「3層リファレンス」を 明示ロール方式に形式化したのが現行 composer。 cut に添付する各画像へ STYLE / LOCATION / CHARACTER / CONTINUITY の役割と「写すもの COPY / 写さないもの IGNORE」を prompt に焼き込む。 python は image=[...] を配列順そのまま images.edit に渡すため、 manifest の IMAGE N と実際の添付順は 厳密一致cut-prompt-composer.tsreference_images と manifest を同一の entries から単一ソースで生成するので、説明と実体がズレない。

ROLECOPY(写す)IGNORE(写さない)
STYLE ANCHOR
  • painterly GEKIGA rendering: crosshatch / sumi-ink density, brushstroke weight
  • VIVID THEATRICAL color palette & saturation target (the chapter's chroma — do NOT bleach or mute it)
  • atmospheric light: color temperature, point-source lantern glow, shadow depth, halation
  • washi paper grain & overall detail-density level
  • framing / size / angle — obey the SHOT spec instead (even if this ref is wider/closer)
  • setting / location / specific architecture — obey the LOCATION ref(s) instead
  • props & composition not named in CONTEXT
LOCATION / SETTING
  • architecture, signature structures, scale, materials & props — as the WORLD's vocabulary, NOT a fixed photo
  • the place's identity so this cut is clearly set HERE, not invented
  • painterly style — take that from the STYLE ANCHOR (IMAGE 1)
  • framing / size / angle — obey the SHOT spec
  • the reference's exact viewpoint & which landmarks sit where — RE-DERIVE the visible part + perspective of the place to match THIS cut's ANGLE + MOVE (LO→look up the towers, BIRD/HI→look down on the ground, ARC→a different face, CRANE-U→skyline opens). Honour parallax/occlusion; do NOT pin the same landmark dead-centre every cut. Two cuts at different angles must NOT share the same background framing
PREVIOUS CUT (CONTINUITY)
  • character positions (who is on left / right of frame) — do not flip arbitrarily
  • costume / equipment STATE (weapon drawn vs sheathed, ofuda visible, basin held vs lowered)
  • lighting STATE evolution from the previous cut (dusk→dawn, lantern flicker direction)
  • framing / size / angle / composition — obey the SHOT spec
  • do not repeat the previous cut's composition; this cut must be visually distinct
CHARACTER CANON
  • costume, body proportions, accessories, equipment — MATCH EXACTLY (character canon)
  • canonical face / mask structure & color identity
  • the white sheet background — it must NOT bleed into the cut (use CONTEXT.Lighting)
  • the sheet's neutral turnaround pose / framing — obey the SHOT spec

↑ この表は lib/scene-reference-roles.ts::ROLE_TEMPLATES から live。編集すると全 cut の manifest に追従。

シーン固有の上書き(baseline)

全 41 シーンの copy/ignore/note はシーンの situation/lighting に合わせて補強済み(章ごとにパレット統一)。 SoT = content/scene-roles.json。manifest の role 別 default を上書きする。

/storyboard で per-scene 編集

各シーンの「リファレンス役割 manifest」パネルで copy/ignore/note を編集 →/api/scene-roles(Vercel Blob + local mirror、blob-over-local merge)に保存。 UI 編集が baseline を上書きする二層構造(zikonte / judgments と同型)。

SoT: lib/scene-reference-roles.ts(型 / ROLE_TEMPLATES / formatRefManifest / overrideKey)・lib/cut-prompt-composer.ts(composeCutReferences / buildCutRefEntries)・lib/scene-roles-blob.ts + app/api/scene-roles/route.ts。 CLAUDE.md §9・§15。
Part C — C2b — Shot Discipline

アングル多角化 & 位置関係の検証

「どの角度から見ても背景が同じ」「全 cut が EYE で単調」「切り返しで左右が入れ替わる」の3事故を体系的に潰す規律。背景は angle に追従して変わる(カメラが動けば見える面・パース・地平が変わる)ことを語彙・prompt・監査の三層で強制する。 SoT = lib/shot-discipline.ts(編集すると prompt・この表・check-consistency W8 が同時追従)。

ANGLE 語彙 — 各 angle で「背景がどう変わるか」
CODE意味背景の見え方(追従)用途
EYE視線水平目線の高さ。人物と地平/床が均衡し、正対した街路・壁面・対面の相手が背景に入る。会話・対峙の基調、感情の読み取り (CU と相性)。
LO低所仰角(あおり)見上げ。空・構造物の下面・短縮された塔やネオンの上方が支配、地面はほぼ消える。登場・威圧・英雄性・覚悟。敵リビールや必殺の構え。
HI高所俯瞰見下ろし。地面・床レイアウト・屋根が支配、スカイラインは後退する。孤立・全景・敗走/掃ける群衆・状況俯瞰。
BIRD真上俯瞰ほぼ真下。床の幾何 (横断歩道の白線・円環・水面) が主役、人物は点になる。決定的な孤独/構造の提示、クライマックスの一枚絵。
DUTCH傾き15-25°水平線が傾く。看板・塔・地平が斜行し、安定が崩れる。衝撃・動揺・混乱・暴風。アクションの強拍。
ANGLE 多角化(1シーン=複数アングル)
## ANGLE 多角化 (1シーン = 複数アングルで意図的に構成する)
- 同一 angle (特に EYE) を全 cut で続けない。4 cut 以上のシーンは最低 2〜3 種の angle を混在させる (1 種が 70% を超えたら単調 = check-consistency W8 が警告)。
- angle は内容に従わせる: 登場/威圧=LO・孤立/全景/敗走=HI/BIRD・衝撃/動揺=DUTCH・感情のアップ=EYE+CU。
- angle を変えたら背景も変える: 各 angle が捉える面・パース・地平は別物。同じランドマークを毎 cut 正面中央に貼らない。
- 「歩きながらの口論」のような会話シーンでも、表情 CU (EYE) ↔ 関係を見せる WS/OTS ↔ あおり/俯瞰の差し込みで律動を作る。
位置関係の検証(空間連続性)
## 位置関係の検証 (SPATIAL CONTINUITY — このシーンの空間を固定する)
- 180°ライン (イマジナリーライン): シーン内で2者の左右関係を保つ。A が画面左・B が画面右なら、切り返し cut でもその左右を維持する (脚本上の意図的な反転以外でフリップしない)。
- 視線・動線の方向: 会話は互いに正対させる (左の者は右を見、右の者は左を見る)。歩行/進攻はシーンを通して同一方向 (例: 左→右) を基調にし、cut ごとに反転させない。
- ランドマークの方位: シーンの基準ランドマーク (例: 鴨川の流れ・109・観覧車・東京タワー) は実地理に対し常に同じ側に置く。angle が変われば「見え方」は変わるが「どちら側にあるか」は崩さない。
- 連続 cut は前 cut (CONTINUITY ref) で左右位置・装備状態・光の状態を継ぐ。ただし構図/サイズ/angle はSHOT に従い、前 cut の構図を反復しない。
注入経路: cut-prompt-composer.ts が ANGLE 解釈(背景付き語彙)と 位置関係ルールを全 cut prompt に焼く(reveal namecard 孤立プレートは除外)。 監査: check-consistency.mts W8 が scene 単位で angle 単調(1種が 70% 超)を WARN。 背景追従の本体規律は REFERENCE_LAYER_RULES の LOCATION 節(参照の viewpoint を clone せず angle で RE-DERIVE)。CLAUDE.md §15。
Part C — C3 — Layout Canon

カット数別 シーンボード レイアウト

Cut Count → Page Composition Rules

廃止 (2026-06-11): シーンボード(storyboard-boards の 1 scene 1 枚俯瞰画像)は全廃。 字コンテ + カット画像 + 動画が正であり、ボードは冗長。以下のパネル配置規則はボード生成用の歴史記録として残す (「カット数の決め方」は字コンテ設計の参考として現役)。

1シーンに対してカット数が異なると、絵コンテ用紙のパネル配置が変わる。 GPT に絵コンテを生成させる際は、必ず カット数を宣言しパネル配置を明示する。 以下の規則に従うこと。

カット数パネル配置実例プロンプト指示文
1横幅フル1枚(インパクトゴマ)パネル配置: 横幅フル1枚の大ゴマ。衝撃的な1シーンを全面展開。
2左右2分割(横並び)パネル配置: 左右2分割(各50%幅)。対比・反転・視点転換を強調。
3横一列3枚(横トリプル)ch01_sc03 ✓パネル配置: 横一列に3枚(幅広パネル)。時間の流れ・移動・感情推移を左→右で示す。
42×2グリッドch01_sc02 ✓パネル配置: 2×2グリッド(4枚)。会話・対決・反応・決着の4拍子構成に最適。
5上段3枚 + 下段2枚ch01_sc01 ✓パネル配置: 3枚(上段)+ 2枚(下段)の計5枚。
6上段3枚 + 下段3枚(2行×3列)ch06_sc01パネル配置: 上段3枚 + 下段3枚(2行×3列)合計6枚。
82×4グリッド or 4×2グリッドパネル配置: 2行×4列(横長シーン向き)or 4行×2列(縦長・セリフ多め向き)合計8枚。
10上段5枚 + 下段5枚(2行×5列)ch04_sc01パネル配置: 上段5枚 + 下段5枚(2行×5列)合計10枚。
123行×4列(標準フルシート)ch01/02/03 sc01パネル配置: 上段4枚 + 中段4枚 + 下段4枚(3行×4列)合計12枚。
16〜204行×4列 or 4行×5列パネル配置: 4行×4列(16枚)or 4行×5列(20枚)。ページ余白を極限まで使う。注釈は各パネル下部に小さく。
20+多ページ分割(1ページ12枚上限推奨)20枚超はページを分割すること。各ページに「Pg.1/3」等のページ番号をヘッダーに付ける。
必須指示ルール
  • • プロンプトに 【第N章 / Scene NN / シーン名 / Nカット】 を必ず冒頭に記載
  • パネル配置: ... で行数×列数を明示
  • • 各カットに [Cn] ラベル: 「Cn / SIZE / MOVE / ANGLE」 を付ける
  • • 衝撃カット・朱発光カットには 【衝撃ゴマ】 【朱①】 等のタグを追記
  • • ヘッダーバーにカット数を明記: 「3 cuts」「12 cuts」
カット数の決め方
  • • 字コンテ (lib/storyboard-jikonte.ts) の cuts 配列が正本(旧 scenes_pv01.yaml は削除済 2026-06-10)
  • • 走馬灯バトル(ch05): 各シーン4カット固定(高速展開)
  • • 重要シーン(出会い・別れ・頂点): 12カット推奨
  • • 日常・移動シーン: 4〜6カットで十分
  • • 1枚に収まらない場合は 12カット上限で分割
カット数別プロンプト冒頭テンプレート(コピペ用)
3カット(横一列)
【第N章 / Scene NN / シーン名 / 3カット】

ヘッダーバー(黒ベタ、白文字): 「第N章 · Scene NN · シーン名 / 3 cuts」
情報帯: 「場所: ... / 照明: ... / 時間: ...」
ディレクターノート(小イタリック): 「...」

パネル配置: 横一列に3枚(幅広パネル)

[C1] ラベル: 「C1 / SIZE / MOVE / ANGLE」
スケッチ: ...

[C2] ラベル: 「C2 / SIZE / MOVE / ANGLE」
スケッチ: ...

[C3] ラベル: 「C3 / SIZE / MOVE / ANGLE」
スケッチ: ...
12カット(3行×4列フルシート)
【第N章 / Scene NN / シーン名 / 12カット】

ヘッダーバー(黒ベタ、白文字): 「第N章 · Scene NN · シーン名 / 12 cuts」
情報帯: 「場所: ... / 照明: ... / 時間: ...」
ディレクターノート(小イタリック): 「...」

パネル配置: 上段4枚 + 中段4枚 + 下段4枚(3行×4列)合計12枚

[C1] ラベル: 「C1 / SIZE / MOVE / ANGLE」
スケッチ: ...
... (C2〜C12 を同様に列挙)
Part C — C2.5 — Correction Workflow ★

修正ワークフロー & 造形精度

Fix-Loop — Diagnose · Trace · DRY · Minimal-Fix · Regenerate

生成物が「リファレンスと違う」ときに、どこを直せば直るかの実証済みワークフロー。他章と別エンジンではない — 同じ composer (cut-prompt-composer.ts) の使い方を精度側に詰めたもの。 ch10 東証宮ビルの造形ズレ修正 (2026-06-08) で確立。

A — 修正ループ (生成物がズレたら)
  1. 1.
    生成 → 目視。UI のサムネでなく原寸で確認。
  2. 2.
    ズレを分類:造形/massing(形) ・ スタイル(描画) ・ 構図(framing) ・ ライティング ・ キャラ整合 のどれか。
  3. 3.
    原因を入力に辿る (下表)。massing/style/lighting それぞれ犯人が違う。
  4. 4.
    DRY 検証node site/scripts/gen.mjs ch10 (--go 無し) で実 refs 順・anchor・manifest を確認。UI でなく 実際に生成プロンプトへ入る内容を out/_chNN_*.jsonl で見る。
  5. 5.
    最小修正:image-first。テキストは増やさず削る方向。
  6. 6.
    1カットだけ再生成 → 目視。良ければ次、駄目なら 3 へ戻る。
症状犯人 (入力)直し方
造形/massing が別物 (例: 横広の建物が縦長ピラミッドに)① design ref が dossier(多パネル) で massing 弱い ② COPY が「symmetric/central TALL/stepped crown」等で歪める ③ style anchor の構図が漏れるclean hero を refs[1] に + COPY 最小化(画像委譲) +「縦長/ピラミッド化禁止」guard
スタイルが乗らない (clean CG っぽい)content ref(clean render)が描画を薄めるcontent ref の IGNORE に「clean/photoreal 描画は写すな・形だけ・描画は100% IMAGE1から」
暗い内陣に日光が漏れる明るい外観 anchor のライティングが漏れるその cut だけ暗い anchor に (master_override / 被写体グループ別 anchor)
主役が出ない (メカ cut なのに建物)主役 ref が content 順で後ろ主役 ref を sc.refs 先頭へ (refs[1])
B — シーンごとの ref 読み込み順

添付順 = [STYLE anchor(refs[0]) → LOCATION群(sc.refs順) → 前cut CONTINUITY → CHARACTER sheets]。 content ref の順は sc.refs 配列順で決まる。

★ 最重要: refs[0]=STYLE anchor は style だけでなく構図・ライティングも漏らす。 対称・ローアングルの anchor(c9-s4-15) を使うと建物が対称ピラミッドに化けた。design を主役にするなら content ref 先頭(refs[1])へ置き、anchor の IGNORE で構図押し付けを止める。

dossier vs clean hero: 多パネルの設定資料(dossier)は massing 伝達が弱い(雰囲気は拾うが正確な形を写さない)。 中央本体だけ切り出した clean hero は massing を強く伝える。両方を画像で渡す (dossier=文脈, hero=造形) のが (b) 方式。

C — design は画像で渡す・文字に落とさない
NG — design 全文転写

「GRAND NEOCLASSICAL / central TALL / stepped crown / symmetric」等の generic 記述は実画像の massing を 上書きして崩す。これがピラミッド化の主因だった。

OK ★ 最小・画像委譲

「reproduce EXACTLY as shown / don't invent a different shape」+ 歪み防止 guard「縦長タワー・ピラミッドにするな」だけ。形は画像に委ねる。

キャラの costume anchor (C2 Rule1: talisman位置・武器・proportions の SHORT anchor) は別物 — これは「よく間違える箇所だけ」の歪み防止であって design 全文転写ではない。区別する。
D — PER-IMAGE ROLE MANIFEST (画像ごとの COPY / IGNORE)

/storyboard の各シーンで、添付画像 1 枚ずつに COPY(写す) / IGNORE(写さない) を付ける (scene-roles)。 これが「キャラ/被写体のプロンプトレベル扱い」の本体。クリックでモーダル拡大して確認できる。

# IMAGE 2/3 = LOCATION (建物 hero / dossier)
COPY  : This clean elevation is the AUTHORITATIVE shape — reproduce massing/proportions/silhouette EXACTLY as shown (WIDE, moderate height, central entrance + flanking wings). NOT a tall tower or pyramid.
IGNORE: REJECT this ref's own rendering — its clean / photoreal / CG / smooth-surface look and color grade.
        Copy ONLY the building shape & structure. ALL rendering (sumi-ink line, crosshatch, gekiga texture, color) comes ENTIRELY from the STYLE ANCHOR (IMAGE 1).
        Do NOT draw the dossier's panel frames / callout text / swatches — render only the building subject.

キャラ canon は references/characters/<slug>/profile.md の本文が CHARACTER CANON として prompt に動的注入される (ハードコードしない)。

E — chapter style anchor (動的) と被写体グループ

bootstrap で前章 master を借り、その章のベスト cut を「☆章master」で昇格して以降に継承 (c10-s1-1 を ch10 master に)。 解決順: cut_override > scene_master > 動的章anchor > chapter_master

★ 被写体が変わる cut は anchor を分ける。章 anchor は章全体に効くので:
  • 建物外観 cut → 明るい建物 anchor + 建物 ref 先頭
  • 内陣/暗所 cut → 暗い anchor (明るい anchor は内陣に日光を流す)
  • メカ cut → メカ ref 先頭 (建物 anchor だと建物が出る)
scene の ref 順は1つなので、被写体が変わる cut は別バッチ・別設定で回す。
F — 実装上の落とし穴 (cwd bug)

readSceneRolesMirror() / readChapterStyleAnchorMirror() process.cwd()/content/... を読む。だが dump-cuts は cwd=ROOT(26mv) で動くため、scene-roles override と章 anchor が gen に届いていなかった (UI=cwd=site では見えるのに)。

cwd-robust (content/ と site/content/ の両候補を読む) に修正済。manifest 編集が生成に効くのはこの修正後。古い章で「manifest を直したのに生成が変わらない」はこのバグだった可能性。
G — ★ テキスト・クレンジング検証 (毎回)

本質はここ: design/造形は「画像で渡す」。content ref(LOCATION/CHARACTER)の COPY に余計なテキストを足さない。positive な design 記述 (neoclassical / stepped / symmetric / central TALL 等) を文字転写すると、 実画像の massing を上書きして崩す (= 東証宮の縦長ピラミッド化)。だから 毎回クレンジングし、検証する

検証 (自動・毎回)

node site/scripts/gen.mjs chNN の DRY が「テキスト過多」警告を出す。content ref の COPY で「否定でない節に design 形容が2つ以上」か「COPY が長すぎ(>320字)」を検出して cut 別に列挙。

⚠ テキスト過多 20 cut → content ref の COPY に造形を文字転写しすぎ。
  c10-s1-1  LOCATION  COPY 410字 pos=1  "Reproduce the 機構式東証宮 building EXACTLY…"
  c10-s1-1  LOCATION  COPY 461字 pos=0  "Pacific-Rim-style cockpit reconstructed…"
  クレンジング: COPY を「reproduce as shown」+最小guard まで削る。
クレンジング (削る方向)
  • ★ 共通 pass で一括最小化: node site/scripts/cleanse-scene-roles.mjs --chapter=chNN --commit
    location+character の COPY を最小テンプレ+guard に。否定 anchor (NOT/no/FRONT-ONLY) は全温存・短縮時のみ適用なので壊れない。--chapter 省略で全章、--skip=ch10 で除外。
  • 手で削る場合: COPY を「reproduce EXACTLY as shown」+ 最小 guard まで。positive な design 形容 (材質・様式・形状) は消して画像 (hero/dossier) に委ねる。
  • 残してよいテキスト = ①否定 guard「NOT a pyramid」②キャラの costume anchor (talisman位置/武器/proportions の最小)。design は sheet/dossier 画像が持つ。
  • baseline に戻す: DELETE /api/scene-roles?scene_id=chNN_scNN
判定基準: COPY(写す)に design を「書く」のは原則 NG (画像が持つ)。COPY は「画像のまま再現せよ」と指す役。 IGNORE(写さない)の否定 guard と、キャラの「よく間違える箇所」最小 anchor だけが文字の正当な仕事。
他章との違いは「やり方」ではなく「精度の詰め方」。同じ composer・同じ三層 ref・同じ manifest。 今回 generalize できた追加パターン = dossier+clean hero の二枚渡し / content ref の style-reject / 被写体グループ別 anchor / テキスト・クレンジング検証 / cwd bug 修正。 これらは全章に適用可能。
Part C — C4 — Live Pipeline

字コンテ Compose Pipeline

Dynamic Cut Prompt Composition — Replaces Ad-hoc JSONLs

共通要素は共通化、変動要素は動的に変わる設計。 ハンドライト JSONL や章別ハードコードを廃して、composeCutPrompt(chId, sceneId, cutN) 一発で JSONL を吐く統一パイプライン。profile.md / jikonte /zikonte (Blob) を編集すれば自動で全 cut に反映される。

不変要素 (1 箇所に集約)
  • lib/prompt-blocks.ts registry の STYLE_BASE (cut.style_base)
  • REFERENCE_LAYER_RULES (cut.reference_layer_rules — STYLE と SETTING を分離)
  • FORBIDDEN_LIST (cut.forbidden)
  • OUTPUT_FORMAT (cut.output_format)
ここを更新 → 全章 / 全 cut に一括反映 (composer は getPromptBlock() で参照するのみ)
章/シーン/カット可変 (静的 SoT)
  • lib/storyboard-jikonte.ts
  • └ chapter: location / time_of_day / chapter_master
  • └ scene: situation / lighting / props / scene_master / refs
  • └ cut: size / move / angle / composition / dialogue
jikonte に 1 行追加 → 該当 cut だけ再生成すれば反映
キャラ可変 + 動的 (Blob)
  • references/characters/<slug>/profile.md
  • references/characters/<slug>/refs/sheet.jpg (視覚 SoT)
  • zikonte/v1.json (Vercel Blob, dialogue/jokyo 動的)
profile.md / sheet.jpg / Blob 編集 → 次回 compose で動的反映
データフロー: composeCutPrompt(chId, sceneId, cutN)
INPUT: (chId, sceneId, cutN)
  │
  ├─[1] getJikonteChapter(chId)            ← lib/storyboard-jikonte.ts (静的 SoT)
  │       → chapter / scene / cut
  │
  ├─[2] resolveCutMasters(chId, sceneId, cutN)  ← lib/storyboard-masters.ts
  │       → { cutOverride, scene, chapter }
  │         階層: cut.master_override > scene.scene_master
  │              > chapter.chapter_master > convention (c1.png)
  │       → self-reference skip (cut が scene_master の出力本体なら除外)
  │
  ├─[3] collectCharSheets(scene.refs)      ← references/characters/*/refs/sheet.jpg
  │       → ["references/characters/haniwa_boy/refs/sheet.jpg", ...]
  │
  ├─[4] loadCharProfile(slug) × refs       ← references/characters/*/profile.md
  │       → "## CHARACTER CANON (MATCH EXACTLY)" ブロック生成
  │
  ├─[5] maybeLoadZikonte(chId)             ← lib/zikonte-blob.ts (Vercel Blob, 任意)
  │       → 動的 dialogue / jokyo / camera_rationale を prompt 末尾に注入
  │
  └─[6] composePromptText(...)             ← STYLE_BASE + REFERENCE_LAYER_RULES
                                              + CONTEXT + CHARACTER_CANON + SHOT
                                              + FORBIDDEN + OUTPUT_FORMAT

OUTPUT: { slug, reference_images, prompt, size, quality }
         ↓
         JSONL 1 行
         ↓
        python3 -m src.openai_batch_with_refs <jsonl>
dump-cuts CLI
# 1 cut のみ
npx tsx site/scripts/dump-cuts.ts ch03 ch03_sc02 S2-C1-1

# シーン全体
npx tsx site/scripts/dump-cuts.ts ch03 ch03_sc02

# 章全体
npx tsx site/scripts/dump-cuts.ts ch03

# zikonte (Blob) 動的データも注入したい場合
USE_ZIKONTE_BLOB=1 npx tsx site/scripts/dump-cuts.ts ch03 ch03_sc02

# 出力: out/_<chId>_<sceneId>_<cutN>_<timestamp>.jsonl
#       refs preview と次に叩くコマンドが標準出力に表示される
batch 実行 (gpt-image-2 image-edit)
# OpenAI API KEY は site/.env.local の OPENAI_API_KEY を読む
export $(grep '^OPENAI_API_KEY=' site/.env.local | sed 's/"//g')

python3 -m src.openai_batch_with_refs \
  out/_ch03_ch03_sc02_<timestamp>.jsonl \
  --concurrency 8 \
  --label ch03_sc02_v5

# 出力: out/<ts>_<label>/0001_<slug>.png ...
#       手動 cp で site/public/storyboard-cuts/<chId>/ に配置
マスターショット階層 (refs 1st / 2nd / 3rd...)
優先順フィールド期待される画fallback
1cut.master_override個別 cut 専用 (極稀)なし
2scene.scene_masterシーンの舞台 / 光 / 構図 canonchapter_master へ
3chapter.chapter_master章全体のトーン (大気遠近 / dusk / style)convention へ
4convention/storyboard-cuts/<chId>/c1.pngなし

Self-reference skip: scene の最初の cut を再生成するとき (= scene_master 自身を生成しようとしているとき) は scene_master を refs から除外し、chapter_master を 1st に promote する。

★ 重要原則: 1st REFERENCE は STYLE anchor、SETTING anchor ではない
✓ 1st ref から COPY すべきもの
  • • Painterly STYLE (crosshatch / ink weight / brushwork)
  • • Atmospheric LIGHT (色温度 / 影深さ / lantern glow)
  • • COLOR palette
  • • Paper / texture quality
  • • Detail DENSITY level
✗ 1st ref から COPY してはいけないもの
  • • Setting / Location (= CONTEXT.Location に従う)
  • • Camera framing / composition (= SHOT に従う)
  • • BG の外景 (city / skyline) — interior scene では絶対 leak 禁止
  • • Specific props — CONTEXT.Props に無いものは出さない

実証ケース: ch03_sc02 (試し合い / 茶屋内) を生成する際、c1.png (茶屋 EST exterior) を style anchor にしても、このルールを prompt に明示することで Tokyo Tower / 都市スカイラインの leak が完全に防げる。2026-05-26 検証済。

「これを直したい」シナリオ別マップ
キャラの衣装 / 武器を変えたい
references/characters/<slug>/profile.md を編集 →dump-cuts 再走 → 全該当 cut に自動反映。
章全体のスタイル / 大気を変えたい
CH<NN>_JIKONTE.chapter_master を別画像に上書き → 全 cut の 2nd ref が変わる。
シーン内の構図 canon を固定したい
scene.scene_master に該当シーン WS を指定 → そのシーン内 cut が同一構図 anchor を使う。
セリフ / 情景の動的データを使いたい
/storyboard UI で編集 → Blob に保存 → USE_ZIKONTE_BLOB=1 環境変数で dump-cuts → prompt に動的注入。
全章のスタイル基盤を強化したい
site/lib/prompt-blocks.tscut.style_base / cut.forbidden を編集 (composer は getPromptBlock() で参照) → 全 16 章 × 全 cut が同時更新。
旧ハードコード generator (削除済 2026-06-10 — gen.mjs に統一。復元は git 履歴)
スクリプト現状目標
scripts/gen-storyboard-cuts.mjs削除済 (CH01-03 ハードコード object だった)composeChapterCuts() に統一済
scripts/gen-battle-cuts.mjs削除済 (char_anchors 二重定義だった)profile.md SoT に統一済
scripts/dump-storyboard-cut-prompts.ts古い dumper (ch01-03 のみ対応)dump-cuts.ts (全章対応) に置換
prompts/*.jsonl (ハンドライト)場当たり的 / canon 二重管理の温床原則禁止 → dump-cuts 経由のみ
実装は site/lib/cut-prompt-composer.ts + site/lib/storyboard-masters.ts + site/scripts/dump-cuts.ts。 初回検証ケース: ch03_sc02 v5 (2026-05-26)。
Part C — C5 — Locked Spec

シーンボード生成 完全仕様

Scene Board Generation — Canonical Format, Fixed Rules

廃止 (2026-06-11): シーンボード(public/storyboard-boards/<scene_id>.png の 1 scene 1 枚俯瞰画像)は 生成・表示・要求の全てを廃止。字コンテ + カット画像 + 動画が正であり、ボードは冗長。 画像実体・BOARD_SCENE_IDS・生成スクリプト(dump-board-prompts.ts)も退役済(git 履歴参照)。 以下は確定仕様の歴史記録として残す。

このセクションは 実際にうまくいったパターンから逆算した確定仕様。 スクリプト・APIコール・プロンプト構造は全てここに従う。 迷ったら storyboard-gen-spec.md(プロジェクトルート)も参照。

1. スタイル定義 — 絶対ルール
必須
  • 白い紙(ほぼ白、わずかに生成り程度)— 清潔なプロ仕様絵コンテ用紙
  • 劇画インクスタイル — 鉛筆→墨インクの強い筆圧変化ライン
  • • B&W + 朱 #c1272d 差し色のみ(覚醒・御札・印章・衝撃のみ使用)
  • • 平行ハッチング + クロスハッチで影を表現
  • プロンプトは日本語で書く(識別子・カメラコード・英字ラベルのみ英語可)
絶対禁止(プロンプトに明記すること)
  • 古い羊皮紙風・パーチメント風・セピア・クリーム地 — 過去の失敗パターン
  • • アニメパステルカラー・フォトリアル・3DCG風
  • • グラデーション(エアブラシ・ラジアル)
  • • 速線(集中線)メインエレメント使用
  • • オノマトペ(ザシュ・ドン・ガッ等)
2. ページ構造(全シーンボードで統一)
【黒ベタヘッダーバー(白文字)】
「第X章 · Scene XX · シーン名 / Nカット」
【情報帯(ヘッダー直下)】
状況 / 照明 / 小物 の簡潔な記述
【ディレクターノート】
小さめのイタリック体 — 演出意図・感情設計
【カットパネルグリッド】
各パネル: 粗い墨インクラフスケッチ + ルーラー枠内にラベル (カメラ情報)
【右下】
小さな朱色丸印「IVS 2026 KYOTO」

Scene 1: 3+2 グリッド(5カット) / Scene 2: 2×2 グリッド(4カット) / Scene 3: 横一列3枚(3カット)

3. 必須リファレンス画像(常に送ること・消えたら再確認)
レイヤーパス目的
レイヤー1references/characters/<slug>/refs/sheet.jpgキャラクター外見の正確な再現 (必須)
レイヤー2site/public/storyboard-patterns/<chId>_sc01_master.png場面の雰囲気・東京夜景スケールの参照
(任意)スタイルアンカー (/generations で選択)画風の継承 (設定済みの場合のみ)
images.edit エンドポイント: 複数画像は image[] キーで multipart/form-data 送信。 1枚のみのときは image(配列記法は400エラー)。
4. プロンプト構造テンプレート(日本語・確定形式)
プロのアニメ制作絵コンテ用紙。白い紙に鉛筆→墨インクで描く劇画スタイル。
B&Wラインワーク + 朱(#c1272d)差し色のみ。
古い羊皮紙風・パーチメント風・セピア色は厳禁。背景は清潔な白地。
ライン密度高め、平行ハッチ+クロスハッチで影を表現。
アニメパステルカラー・フォトリアル・グラデーション禁止。

添付リファレンス画像:
- キャラクターシート(ハニワくん): このシートを正確に参照し外見を忠実に描くこと
- マスターショット: 場面の雰囲気・東京夜景・工事現場スケールを参照すること

ページ全体の要件:
- 最上部: 黒ベタのヘッダーバー(白文字)
- ヘッダー直下: 状況・照明・小物の情報帯
- ディレクターノート: 小さめのイタリック体
- カットパネルグリッド: 各パネルは粗い墨インクスケッチ + ルーラー枠内にラベル
- 右下: 小さい朱色の丸印「IVS 2026 KYOTO」

【第X章 / Scene XX / シーン名 / Nカット】

ヘッダーバー(黒ベタ、白文字): 「第X章 · Scene XX · シーン名 / N cuts」
情報帯: 「場所: ... / 照明: ... / 小物: ...」
ディレクターノート(小イタリック): 「...」

パネル配置: ...

[C1] ラベル: 「C1 / LS / BIRD / DOLLY-DOWN」
スケッチ: [具体的な画面描写]

[C2] ラベル: 「C2 / WS / EYE / FIX」
スケッチ: [具体的な画面描写]

...(全カットを記述)
5a. 通常(リファレンス画像あり)→ images/edits
POST https://api.openai.com/v1/images/edits
Content-Type: multipart/form-data

model: gpt-image-2
size: 1536x1024        ← edits は 1792 未対応
quality: high
n: 1
output_format: png
image[]: <char_sheet.jpg>    ← キャラシート
image[]: <master_shot.png>   ← マスターショット
prompt: <日本語プロンプトテキスト>

参照: platform.openai.com/docs/api-reference/images/createEdit

5b. フォールバック(リファレンスなし)→ images/generations
POST https://api.openai.com/v1/images/generations
Content-Type: application/json

{
  "model": "gpt-image-2",
  "size": "1792x1024",   ← generations は 1792 OK
  "quality": "high",
  "n": 1,
  "output_format": "png",
  "prompt": "<日本語プロンプト>"
}
6. ローカルバッチ生成スクリプト(正規ルート)
raw python -m src.openai_batch(参照画像なし)直焼きは禁止。 format anchor / style anchor / role manifest が乗らずフォーマットが崩れる(kamogawa_riverbank 事故の根因)。 cut は gen.mjs、補足/ロケ/アイテムは dump-supplement-prompts-with-refs.mjsopenai_batch_with_refs を使う。 旧 dump-storyboard-cut-prompts.ts / gen_scene_boards_v5.py は退役(spec §11 参照禁止)。
絵コンテ cut(章別・正規)
# composer 経由 = style anchor + location + PER-IMAGE ROLE MANIFEST 自動付与
node site/scripts/gen.mjs ch01          # DRY: cut一覧 + anchor健全性 + 概算費用で停止
node site/scripts/gen.mjs ch01 --go     # 実生成: dump→batch(with_refs)→sync→webp→check
# JSONL だけ欲しい時: npx tsx site/scripts/dump-cuts.ts ch01
補足 / ロケ / アイテム(設定資料シート)
# BASE_PROMPT + KIND_LAYOUT + kind別 format anchor を reference_images に添付
node site/scripts/dump-supplement-prompts-with-refs.mjs
python -m src.openai_batch_with_refs out/_supplement_with_refs.jsonl \
  --concurrency 8 --label supplement_v3_refs
# → out/<ts>/0001_<slug>.png を採用判定 → public/<kind>/<slug>.png に昇格
APIキーは site/.env.local の OPENAI_API_KEY から自動読み込み。 Windows では PYTHONIOENCODING=utf-8 を設定すること(↳ 文字の cp932 エラー回避)。
7. 実証済み成功パターン / 失敗回避ルール
問題解決策適用状況
古い羊皮紙・神風スタイルになる「古い羊皮紙禁止・白地」をプロンプトに明示(英語禁止と同様に必須記載)✅ v5適用済
英語のみのテキストになるプロンプト全体を日本語で書く。カメラコード(LS/ECU等)のみ英字可✅ v5適用済
キャラの外見が仕様と違うimages.edit でキャラシートを添付 + CHAR_SHEET_ANCHORS で誤りやすい箇所を補強✅ v5適用済
APIキーが見つからないsite/.env.local から OPENAI_API_KEY を手動読み込み(gen_scene_boards_v5.py参照)✅ v5適用済
1792x1024 で edits が失敗edits エンドポイントは最大 1536x1024。generations は 1792x1024 OK✅ v5適用済
↳文字で cp932 エラー (Windows)PYTHONIOENCODING=utf-8 を設定する。画像は保存されている場合あり✅ v5適用済
生成中にブラウザが固まるafter() でレスポンスを即返し、5秒ポーリングで完了検知(非同期化済み)✅ 実装済
Part C — C6 — Architecture

非同期生成フロー

Fire & Forget — Async Storyboard Generation with Polling

退役 (2026-06-10): この節が解説する pipeline(POST /api/storyboard/generate + SceneBoard.tsx による旧 PV01 master/board 生成)は削除済み。 現役の cut 生成は gen.mjs、UI からの再生成は /api/storyboard/regenerate-cut(composer 経由・動的 SoT 注入済)。 以下は after() + ポーリングの設計パターンの歴史記録として残す。

OpenAI gpt-image-2 の生成は 150–300秒 かかる。同期的に待つと Vercel の Function Timeout やブラウザのフリーズを引き起こす。 Next.js 15 の after() を使い、応答を即座に返してバックグラウンドで生成を継続する アーキテクチャを採用。

フロー図
クライアント (UI) サーバー (Next.js) 外部 (OpenAI / Blob) │ │ │ │ POST /api/storyboard/generate │ │ │ ──────────────────────────────────>│ │ │ │ 1. 入力検証 / プロンプト構築 │ │ │ 2. Blob に status="generating" │ │ │ 3. after() に OpenAI 呼び出し │ │ { ok:true, status:"generating" } │ を登録して即座にリターン │ │ <──────────────────────────────────│ │ │ │ │ │ (5秒ポーリング開始) │ 4. [after] OpenAI edits API │ │ │ ───────────────────────────>│ │ GET /api/storyboard/status?id=... │ │ (150-300秒) │ ──────────────────────────────────>│ │ │ { status:"generating" } │ 5. [after] 画像 b64 受信 │ │ <──────────────────────────────────│ 6. [after] Blob に PNG 保存 │ │ ...5秒後に再ポーリング... │ 7. [after] status="generated"│ │ │ image_url を Blob に書込 │ │ GET /api/storyboard/status?id=... │ │ │ ──────────────────────────────────>│ │ │ { status:"generated", │ │ │ image_url: "https://..." } │ │ │ <──────────────────────────────────│ │ │ │ │ │ 画像を表示・チャイム音を鳴らす │ │
実装ポイント (generate/route.ts)
  • import { after } from "next/server"
  • • プロンプト構築・リファレンス画像読み込みは 同期部分 で実行(高速)
  • await upsertGeneratingAsset() で Blob に即時マーク
  • after(async () => { /* OpenAI call */ }) でバックグラウンド実行
  • maxDuration = 300(Vercel Fluid Compute で after 延長可)
実装ポイント (UI側 — SceneBoard.tsx)
  • • POSTレスポンスが status: "generating" なら即座にUIを更新
  • setInterval(5000) で GET /api/storyboard/status をポーリング
  • status === "generated" で interval を停止・画像表示・チャイム
  • status === "error" でエラーメッセージ表示
  • • ポーリング中は busy=true を維持(二重送信防止)
AssetStatus の遷移
pendinggeneratinggeneratedapproved/error(生成失敗時)/ng(レビューで没)
Part C — C7 — Style Patterns

第1章 × 5 スタイルパターン

Ch01 Opening — Camera Composition Variants

舞台: 東京再開発現場 (tokyo_redevelopment) · 登場: ハニワくん · 道具: 「未来∞」タリスマン
5つのカメラ構成アプローチ。気に入ったパターンを /storyboard で生成 → /generations からアンカーに設定。

01
広角俯瞰
Wide Bird's Eye
引き — Establishing
45° overhead / ultra-wide
カメラ設定
  • 45° 斜め俯瞰 / 高さ20m相当のドローン視点
  • 超広角 (焦点距離: 16-24mm 相当)
  • カメラはゆっくり垂直降下するような緊張感 (static でも降下感を暗示)
  • 東京スカイライン・東京タワー・スカイツリーが全て収まるフレーミング
構図 / 演出意図
  • ハニワくんを瓦礫フィールドの中心に極小配置 — 人類 vs 都市の圧倒的スケール差
  • 重機のアームが対角線を形成し、視線を中央のハニワくんへ誘導
  • 「未来∞」タリスマンが腰の高さで朱く光るワンポイント
  • Chapter 1 opener として世界観を一発で提示する最適構図
プロンプト追加キー (BASE_PROMPT に付加)
CAMERA: Extreme wide bird's eye 45° overhead, drone altitude 20m equivalent, ultra-wide lens 16mm.
COMPOSITION: Haniwa boy tiny at center of rubble field. Tokyo tower + Skytree visible full-frame at night.
Demolition crane arms form diagonal leading lines toward protagonist.
Talisman "未来∞" glows vermilion at waist — only color accent in dark grey rubble.
Scale: protagonist 1/30th of frame height. Overwhelming urban-vs-human contrast.
MOOD: Silent enormity. Pre-dawn industrial haze. Moon reflected in standing water between rubble.
02
地を這う仰角
Extreme Low Angle / Hero Shot
寄り — Character Presence
ground-level / 30° upward tilt
カメラ設定
  • 地面スレスレ (高さ 20cm 相当)、上向き 30° チルト
  • 標準〜やや望遠 (35-50mm 相当)
  • ハニワくんの頭頂がスカイラインと重なる構図を狙う
  • 足元の瓦礫が前景で圧迫感を増幅
構図 / 演出意図
  • ハニワくんが東京タワー・スカイツリーと並んでシルエットで天空へ
  • 体の輪郭に月明かりのリムライトがかかり、神話的な存在感
  • クロスハッチ影が体の下半分に濃く乗り、上半分は月光で白く抜ける
  • キャラクターの存在感を極大化 — この主人公はただ者ではないという印象確立
プロンプト追加キー (BASE_PROMPT に付加)
CAMERA: Ground-level extreme low angle, camera height 20cm, 30° upward tilt, 35mm lens equivalent.
COMPOSITION: Haniwa boy silhouette towers against Tokyo night skyline — Tokyo Tower and Skytree visible at same height.
Rim light from moon traces helmet edge and shoulder. Lower body in deep cross-hatch shadow.
Rubble chunks litter foreground, blurred, pressing toward viewer.
MOOD: Mythic scale. Hero emergence. The ancient vs the futuristic coexist in one frame.
INK STYLE: Strong brush outline, rim-light rendered in white ink lift, no gradients.
03
斜め構図 · 動線交差
Dutch Angle + Dynamic Lines
衝撃 — Disorientation
eye-level / 18° Dutch tilt
カメラ設定
  • 目線高さ、18° ダッチアングル (右下がり)
  • 中景 (50mm 相当) — キャラと環境が半々
  • ハンドヘルド風の僅かなブレ感をライン密度で表現 (画像揺れは不可、ハッチで暗示)
  • フレームを斜めに走る重機アームが対角の主線
構図 / 演出意図
  • 解体重機のアームと工事フェンスが X 字を形成 — ハニワくんがその交差点に立つ
  • 「工事関係者以外立入禁止」看板が斜めに傾いて前景に入り、世界の歪みを象徴
  • 東京タワーが構図の斜線に沿って遠方に見える
  • 混乱・変化・不安定さ — Ch01 冒頭のカオスを視覚化
プロンプト追加キー (BASE_PROMPT に付加)
CAMERA: Eye-level, 18° Dutch angle (right side low), 50mm equivalent, handheld tension implied via dense cross-hatch.
COMPOSITION: Demolition crane arm slashes frame diagonally upper-left to lower-right.
Haniwa boy stands at diagonal intersection — construction fence at left, rubble pile at right.
"立入禁止" sign tilted at same angle as camera, foreground. Tokyo Tower visible along diagonal axis.
Frame is deliberately unbalanced — visual chaos mirroring protagonist's disorientation.
MOOD: Unstable, kinetic, change incoming. Ink lines follow Dutch angle direction.
04
後姿シルエット
Over-Shoulder Silhouette
余韻 — Introspection
over-shoulder / eye-level
カメラ設定
  • ハニワくんの背後 1-1.5m、肩越し (over-shoulder)
  • 広角気味 (28mm 相当) — 背中が左右に広がり、前方の東京が全景で見える
  • ピント: 無限遠 (東京の光) — ハニワくんは意図的にアウトフォーカス気味のシルエット
  • 静的フレーム — カメラ固定で主人公の止まった時間を演出
構図 / 演出意図
  • 暗い背中シルエット (前景) vs ネオン輝く東京夜景 (後景) の圧倒的コントラスト
  • 「未来∞」タリスマンが腰の中央に朱く光り、唯一のアイデンティティ表示
  • 東京タワーの橙光と IVS ビルボードの青光が二分割で空を染める
  • Chapter 1 の核心テーマ「旧きものが新世界を前に佇む」を一枚で表現
プロンプト追加キー (BASE_PROMPT に付加)
CAMERA: Over-the-shoulder, 1.5m behind Haniwa boy, 28mm wide equivalent, static tripod.
COMPOSITION: Full dark silhouette of protagonist occupies lower 40% of frame.
Tokyo night panorama: Tokyo Tower orange glow LEFT / IVS billboard blue neon RIGHT.
Talisman "未来∞" glows vermilion at protagonist's waist — only identifiable detail.
Protagonist's gaze fixed forward toward city. No face visible. Back slightly hunched.
Infinite focus on city; protagonist edge-blur renders as thick ink brushstroke silhouette.
MOOD: Longing, resolve, isolation. Ancient soul contemplating the machine city ahead.
05
インサート × 連続コマ
Insert Shot Sequence
寄り (連続) — Emotional Focus
macro insert + reaction CU (3-panel rhythm)
カメラ設定
  • 3コマ構成: [瓦礫の手アップ] → [タリスマン極クローズアップ] → [ハニワの目 / 面孔 CU]
  • 各コマ: マクロ域 (100mm 相当)、被写界深度極浅
  • コマ間のサイズ変化で加速感を出す: 大 → 中 → 極小
  • 連続コマのため横長 1 枚に 3 分割でレイアウト
構図 / 演出意図
  • コマ1: 瓦礫の中から伸びる土まみれの手。人工物ではなく土から生まれた存在感
  • コマ2: 「未来∞」タリスマンの文字を極UP — 文字の筆跡まで読める解像度
  • コマ3: ハニワの目穴の暗闇 — 内側に宿る意志の光 (朱の反射) がかすかに見える
  • 3 コマで「手 → タリスマン → 眼」の物語的ズームイン。感情の焦点化
プロンプト追加キー (BASE_PROMPT に付加)
LAYOUT: Three-panel horizontal strip (16:9 total). Equal-width vertical panels, thin ink border dividing them.
PANEL 1 (left): Extreme CU of earth-caked hand emerging from rubble. Macro.
  Fingernails cracked, clay soil texture. COMPOSITION: Diagonal hand fills 80% of panel.
PANEL 2 (center): Extreme macro CU of "未来∞" talisman at waist belt.
  Characters legible. Vermilion ink brushstroke glows. Tiny woven cord texture visible.
PANEL 3 (right): CU of Haniwa helmet eye-holes in near-darkness.
  A faint vermilion reflection inside the void — will and consciousness implied.
MOOD: Intimate. Ancient magic awakening. The world re-starts from these three details.
Part D — D1 — 映像化フロー

映像生成マニュアル

絵コンテ → 動画クリップ。コミュニティ評価(2026-05)に基づき Kling 3.0 主軸 / Seedance 2.0 サブ として整理。

調査: 2026-05-20 / Sources: Kling AI官方, fal.ai, Higgsfield API, Adcreate, Creatok, Atlas Cloud, LiromFilms 150+ レビュー
⚠ 前版(2026-05-19)は Seedance 2.0 を ELO 数値で推奨していたが、ELO は単発 I2V の評価軸であり、マルチショット・絵コンテ忠実度・アニメスタイルでは Kling 3.0 が優位というのがコミュニティの現状コンセンサス。本版で修正。
現行モデル (2026-06) — 動画は全て「キーフレーム補間」に統一

各 cut / 境界の前後 2 枚を first / last frame に置き、間を補間させる。Kling 3.0 と Seedance 2.0 は同一の i2v プロンプトを共用(Omni / multi-reference は廃止)。

  • Cut-to-Cut チェーン(既定): first=自cut / last=次cut。次 cut の字コンテを読み滑らかに補間。通常 cut の標準。
  • Scene Transition: first=前シーン最終cut(章頭=前章最終cut)/ last=本シーン冒頭cut。dolly / match-cut / morph。
  • Reveal: first=直前cut(シーン冒頭は転換の from cut)/ last=墨絵 namecard。ink-splash 3-shot。転換 / cut-to-cut の端点も namecard をそのまま使う(BEFORE 2 フレーム制は 2026-06-11 廃止)。
  • Scene Video(長尺): 戦闘 scene 丸ごと first/last + hard-cut(任意)。
  • 主役は相手 / アクション方向に正対(カメラ目線禁止・非 reveal)。

SoT: storyboard-gen-spec.md §0 / §8 / §12 / §13。以下の Kling / Seedance 比較は背景研究として残置。

前提知識 — マルチショットには 2 種類のアーキテクチャがある
Type A — セマンティック型
Seedance 2.0

プロンプト内にタイムスタンプで各ショットを記述。AI が 1 本の動画の中で自動的にカット割りを実行。絵コンテ画像のグリッドは読めないが、プロンプトで全カットを記述すれば 1 本にまとまる

例: [00:00-03:00] LS 俯瞰 → [03:01-07:00] CU 顔寄り
Type B — ストラクチャー型
Kling 3.0 Omni

各ショットの絵コンテカット画像を 1 枚ずつアップし、ショットごとに duration・カメラ角度を指定。2〜6 ショット分の画像をそのまま渡してシーケンスを構成できる。キャラと空間の一貫性をモデルが保持。

絵コンテグリッド → ショット別に分解 → 各カット画像を個別アップ
Model A — Seedance 2.0(Bytedance)完全仕様
✅ ネイティブ・マルチショット対応 — "automated multi-shot narrative capabilities that maintain visual logic and character consistency across scene sequences" (公式)
パラメータ値 / 選択肢備考
model IDseedance_2_0Bytedance提供。video_standard も同じモデル
解像度480p / 720p / 1080p⚠ 最大 1080p (1920×1080)。2048px は非対応
モードstd / faststd = 高品質、fast = 速度優先
duration4–15 秒絵コンテの cut.sec から計算して渡す。最大 15 秒
アスペクト比16:9 / 21:9 / 4:3 / 1:1 / 3:4 / 9:16 / auto絵コンテは 16:9 で生成済み → 16:9 を指定
genreauto / action / horror / comedy / noir / drama / epic劇画アニメ → drama または action を推奨
medias[].roleimage / start_image / end_image / video / audioimage = 最大 9 枚のスタイル参照。start/end でトランジション
マルチショット✅ プロンプト内タイムスタンプで記述[00:00-03:00] Shot 1: ... [03:01-07:00] Shot 2: ... の形式
キャラ一貫性reference image 最大 9 枚キャラシート + マスターショット複数枚を同時送信できる
I2V ELO(単発のみ)1,351※単発クリップの評価軸。マルチショット性能とは別。Kling 3.0: 1,269(Artificial Analysis 2026/05)
Seedance 2.0 — マルチショット・プロンプト構造(タイムスタンプ型)
VISUAL STYLE: Theatrical gekiga-anime hybrid. Heavy ink outlines, rich saturated color. Vermilion reserved for eye-glow and seal flashes only. Hand-drawn cel animation with crosshatching.

[00:00-03:00] SHOT 1 — Long Shot, Eye Level, FIX
茶屋入口の穏やかな確立ショット。石畳の前景、藍の暖簾が揺れる。提灯が灯る。人影なし。

[03:01-07:00] SHOT 2 — Medium Shot, Eye Level, TRACKING
ハニワの背後からトラッキング。ドーム仮面と背中、ヌンチャクが見える。前方の提灯光に近づく。

[07:01-11:00] SHOT 3 — Close-Up, Eye Level, FIX
暗がりからドグーの同心円目が浮かび上がるリビール。朱色ではなく古代テックの涼しい光。

[11:01-15:00] SHOT 4 — Wide Shot, Eye Level, DOLLY-OUT
二人が3体分の間を挟んで向き合い静止。提灯が両側から照らし、中央に深影。

CHARACTERS: haniwa_boy (terracotta dome helmet, mushroom silhouette), dogu_boy (enormous concentric-circle goggle eyes, dark navy samurai armor)
SINGULARITY RULE: Each character appears EXACTLY ONCE.
冒頭に VISUAL STYLE(劇画スタイル宣言)を置く
[MM:SS-MM:SS] SHOT N — SIZE, ANGLE, MOVE の形式でタイムスタンプ付きカット記述
各ショットの composition を日本語でそのまま引用(絵コンテの cut.composition から)
末尾に CHARACTERS と SINGULARITY RULE を明示
Seedance 2.0 — 入力組み合わせ
role: start_image1 枚絵コンテ C1 PNG — 起点フレームを固定。AI がここから映像を展開
role: end_image1 枚(任意)絵コンテ C末 PNG — 終点フレームを指定。2カット間トランジション
role: image最大 9 枚マスターショット + キャラシート複数枚。スタイル・外見参照に使う
role: audio1 枚(任意)BGM や音声参照。音響的雰囲気を指定できる
⚠ 解像度: 最大 1080p (1920×1080)。2048px 非対応。  ⚠ 1 生成あたり最大 15 秒。15 秒超はセグメント分割して生成。
Model B — Kling 3.0 Omni(Kuaishou)完全仕様
✅ ストーリーボード入力型マルチショット — 各カットの絵コンテ画像を 1 枚ずつアップして 2〜6 ショットをシーケンス生成
パラメータ値 / 選択肢備考
model ID (Higgsfield)kling3_0Higgsfield 経由。公式 Kling AI では Kling Video 3.0 Omni
modestd / pro / 4k4k = 4K ネイティブ出力(2026/05 時点)
soundon / offオーディオ生成のオン・オフ
duration3–15 秒各ショットに個別の duration を指定可
アスペクト比16:9 / 9:16 / 1:116:9 = 絵コンテ標準
medias[].rolestart_image / end_imageHiggsfield 経由時。ショット間の start/end フレーム
マルチショット入力2〜6 ショット各ショットの画像 + duration + カメラ指示をショット別に渡す
I2V ELO(単発のみ)1,269Seedance (1,351) より低いが、マルチショット・キャラ一貫性・アニメスタイルではコミュニティ評価で優位
// Higgsfield generate_video — Kling 3.0 ストーリーボード型
{
  "model": "kling3_0",
  "prompt": "Theatrical gekiga-anime. Shot 1: LS establishing teahouse entrance. Shot 2: MS tracking Haniwa from behind. Shot 3: CU reveal of Dogu's concentric goggle eyes from shadow. Shot 4: WS standoff, 3-body gap between characters.",
  "mode": "4k",
  "sound": "off",
  "duration": 12,
  "aspect_ratio": "16:9",
  "medias": [
    { "role": "start_image", "value": "<CH03_SC01_C1_UUID>" },
    { "role": "end_image",   "value": "<CH03_SC01_C3_UUID>" }
  ]
}
モデル比較表 — マルチショット・品質・コスト(2026-05-19)
モデルマルチショット方式入力最大枚数解像度ELO劇画向き
Kling 3.0 Omni ★ストラクチャー型(絵コンテ画像→各ショット最大6)start + end ×64K / 60fps1,269 ✦◎ 主軸
Seedance 2.0セマンティック型(プロンプトタイムスタンプ)image ×9 + start + end最大1080p1,351 ✦○ サブ
Cinema Studio 3.0不明(Higgsfield SOTA)image + start + end4K 相当○ (実験的)
Wan 2.7単一ショットstart + end + audio1080p△ (音声特化)
Veo 3.1単一ショットstart_image ×1ultra△ (実写寄り)
✦ Image-to-Video ELO(単発クリップ評価)。Artificial Analysis 2026/05。マルチショット性能・アニメスタイル・絵コンテ忠実度はこの数値とは別の評価軸。
推奨ワークフロー — 絵コンテ → 映像 3 戦略
A
Kling 3.0 Omni — ストーリーボード型(絵コンテ画像を直接渡す)★ 推奨

各カットの絵コンテ PNG を 1 枚ずつアップロードし、ショット別に duration・カメラ指示を付与。2〜6 ショットの画像を構造化入力としてそのまま渡せる。絵コンテ忠実度が高く、キャラと空間の一貫性をモデルが保持。4K / 60fps ネイティブ出力。マルチショット・アニメスタイルでコミュニティ評価が高い。

Input: 各カット PNG (start_image/end_image ×最大6) + プロンプト
Output: 最大 15 秒・4K 60fps マルチショット
Cost: fal.ai Pro audio-off $0.112/秒 / 5秒 ≈ $0.56 / カット
B
Seedance 2.0 — マスターショット 9 枚参照・単発写実重視

キャラシート + マスターショット複数枚を image に最大 9 枚添付し、 タイムスタンプ構造でマルチショットを 1 本に収める。参照モーダル数で最多。単発写実クリップ・1080p 許容・予算優先の場合に向く。

Input: タイムスタンプ付きプロンプト + image[] (master shot + char sheets 最大9枚)
Output: 最大 15 秒・最大 1080p マルチショットクリップ
Cost: $0.24/秒 (fast) / 15秒 ≈ $3.60 / シーン
C
Seedance 2.0 — start_image + end_image トランジション(2カット橋渡し)

C1 → start_image、C2 → end_image として渡し、カット間の動きを 1 クリップに収める。 Seedance の start/end フレーム固定はトランジション品質が高い。

Input: C(n) PNG + C(n+1) PNG + image[] (master shot)
Output: 2カット間トランジション入りクリップ(Seedance 強み領域)
Vermilion ルール(映像でも厳守)

朱色 (#c1272d) はハニワの目の光・御札の印・衝撃フラッシュ専用。
背景やキャラクター全身には使わない。マスターショットのアンカー画像で視覚的に誘導する。

Section IX-B — API Direct Access (2026-05)

Kling 公式 API + Higgsfield 直接利用仕様

どちらも直接課金(カード)で利用可能。Kling 公式は JWT 認証が必要。Higgsfield は Bearer キー + 公式 SDK。

Kling AI 公式 API — api.klingai.com
認証方式 — AccessKey + SecretKey → JWT (HS256)

app.klingai.com のデベロッパーコンソールでAccessKeySecretKey を発行。 リクエスト毎にサーバーサイドで JWT を生成して Bearer として渡す。

import jwt from "jsonwebtoken"; // npm i jsonwebtoken

function makeKlingToken() {
  const now = Math.floor(Date.now() / 1000);
  return jwt.sign(
    { iss: process.env.KLING_ACCESS_KEY, iat: now - 5, exp: now + 30 * 60 },
    process.env.KLING_SECRET_KEY,
    { algorithm: "HS256" }
  );
}
// Authorization: Bearer <makeKlingToken()>  (30分有効・毎リクエスト再発行推奨)
モデル ID 一覧(2026-05 時点)
モデル名model_name特徴
Kling 3.0 Standard T2V ★kling-v3-text-to-video最新世代。15秒・60FPS・4K対応
Kling 3.0 Standard I2V ★kling-v3-image-to-video絵コンテ→動画の主力。画像忠実度が高い
Kling 3.0 Pro T2Vkling-v3-pro/text-to-video2K/4Kネイティブ出力
Kling O3kling-o3-text-to-videoキャラ一貫性特化。ブランドコンテンツ向け
Kling v2.1 Masterklingai/v2-master/text-to-video安定版・廉価。ネイティブ音声未対応
エンドポイント
POST https://api.klingai.com/v1/videos/text2video
POST https://api.klingai.com/v1/videos/image2video ← 絵コンテ I2V メイン
GET https://api.klingai.com/v1/videos/{task_id} ← ステータスポーリング
POST https://api.klingai.com/v1/videos/extend ← 動画延長
主要パラメータ(image2video)
パラメータ値・説明
model_namestring ✓kling-v3-image-to-video(上記参照)
image_urlstring ✓入力画像 URL。JPEG/PNG、最大 10MB、最小 300px
promptstring ✓最大 2,500文字。カメラムーブ・演出を記述
negative_promptstring除外したい要素
durationinteger5 / 10 / 15(Kling 3.0のみ15秒対応)
aspect_ratiostring16:9 / 9:16 / 1:1。絵コンテは 16:9 固定
modestringstd(Standard)/ pro(Professional)
cfg_scalefloat0〜1。プロンプト準拠度。デフォルト 0.5
image_tail_urlstring終了フレーム画像 URL(トランジション用)
enable_audiobooleanネイティブ音声生成(v2.6以降)
seedinteger再現性確保
guidances[]arrayKling 3.0のみ。マルチショット 最大6カット分
料金(公式プラットフォーム直接課金)
公式クレジット単価(720p, 音声なし)
6 クレジット / 秒
5秒 = 30cr / 10秒 = 60cr
サブスク換算(Standard $6.99 / 660cr)
5秒 ≈ $0.32 / クリップ
サードパーティ API 単価参考
PiAPI: $0.10〜$0.15 / 秒
EvoLink: $0.075 / 秒
fal.ai: $0.084〜$0.112 / 秒
※公式直接利用は JWT 実装が必要
import jwt from "jsonwebtoken";

function makeKlingToken() {
  const now = Math.floor(Date.now() / 1000);
  return jwt.sign(
    { iss: process.env.KLING_ACCESS_KEY, iat: now - 5, exp: now + 30 * 60 },
    process.env.KLING_SECRET_KEY,
    { algorithm: "HS256" }
  );
}

async function klingI2V(imageUrl, prompt, durationSec = 5) {
  const res = await fetch("https://api.klingai.com/v1/videos/image2video", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${makeKlingToken()}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model_name: "kling-v3-image-to-video",
      image_url: imageUrl,
      prompt,
      duration: durationSec,       // 5 / 10 / 15
      aspect_ratio: "16:9",
      mode: "std",
      cfg_scale: 0.5,
    }),
  });
  const { data } = await res.json();
  const taskId = data.task_id;

  // ポーリング(5秒間隔、最大15分)
  for (let i = 0; i < 180; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const poll = await fetch(`https://api.klingai.com/v1/videos/${taskId}`, {
      headers: { Authorization: `Bearer ${makeKlingToken()}` },
    });
    const result = await poll.json();
    const status = result.data?.task_status;
    if (status === "succeed") return result.data.task_result.videos[0].url;
    if (status === "failed") throw new Error("Kling generation failed");
  }
  throw new Error("Kling polling timeout");
}

// 使用例(絵コンテカット画像 → 5秒クリップ)
const videoUrl = await klingI2V(
  "https://cdn.example.com/storyboard-cuts/ch01/c1.png",
  "Camera dolly-in descending from altitude. Night Tokyo cityscape. Dramatic anime style."
);
Higgsfield API — cloud.higgsfield.ai(SDK + MCP 両対応)
認証方式 — Bearer APIキー + シークレット

higgsfield.ai でカード課金 → APIキーペア(Key ID + Key Secret)を発行。 Node.js 公式 SDK あり。Claude Code の MCP からも直接呼び出し可能。

# 環境変数
HF_CREDENTIALS="YOUR_KEY_ID:YOUR_KEY_SECRET"
# または
HF_API_KEY="YOUR_KEY_ID" HF_API_SECRET="YOUR_KEY_SECRET"
利用可能モデル(Higgsfield 経由)
モデル種別単価備考
DoP LiteI2V 5秒$0.125 / クリップ最安。シネマティックモーション
DoP TurboI2V 5秒$0.406 / クリップ2倍高速。中品質
DoP PreviewI2V 5秒プレミアムHiggsfield 最高品質
Kling 3.0 (経由)I2V / T2V7cr(Plus換算≈$0.34)公式Kling最新世代
Seedance 2.0 (経由)I2V / T2V25crマルチショット対応
Veo 3 Fast (経由)T2V 8秒22crGoogle製。音声同時生成
Sora 2 (経由)T2V / I2V40〜70crOpenAI製
サブスクリプション(月払い)
Free
$0
150cr/月
Starter
$15
200cr/月
Plus
$49
1,000cr/月
Ultra
$129
3,000cr/月
追加購入:$5 / 80cr、$80 / 1,700cr(90日で失効)。並列処理:Free 2本 / Plus 4本 / Ultra 16本
// npm install @higgsfield/client
import { higgsfield, config } from "@higgsfield/client/v2";

config({ credentials: process.env.HF_CREDENTIALS });
// HF_CREDENTIALS="YOUR_KEY_ID:YOUR_KEY_SECRET"

async function higgsfieldI2V(imageUrl, prompt) {
  const jobSet = await higgsfield.subscribe("/v1/image2video/dop", {
    input: {
      model: "DOP_TURBO",    // DOP_LITE / DOP_TURBO / DOP_PREVIEW
      prompt,
      input_images: [imageUrl],
      motion_strength: 0.75, // 0〜1
      enhance_prompt: true,
    },
    withPolling: true,       // 完了まで自動ポーリング
  });

  if (jobSet.isCompleted) return jobSet.jobs[0].results?.raw.url;
  throw new Error(`Higgsfield failed: ${jobSet.jobs[0].status}`);
}

// Kling 3.0 経由(Higgsfield マルチモデル)
async function higgsfieldKling3(imageUrl, prompt) {
  return higgsfield.subscribe("/v1/image2video/kling", {
    input: {
      model: "kling3_0",
      prompt,
      medias: [{ url: imageUrl, role: "start_image" }],
      duration: 5,
      mode: "std",
    },
    withPolling: true,
  });
}

// 使用例
const videoUrl = await higgsfieldI2V(
  "https://cdn.example.com/storyboard-cuts/ch01/c1.png",
  "Camera dolly-in descending. Night Tokyo ruins. Anime gekiga style."
);
IVS2026 推奨使い分け
絵コンテ → 動画クリップ(本番)Kling AI 公式 API 直接I2V の画像忠実度が高い。マルチショット最大6カット。公式課金で管理が簡単
テスト・比較生成・MCP連携Higgsfield 経由Kling / Seedance / Veo 3 を1つのAPIキーで使い分け可能。Claude Code MCP から直接呼び出せる
コスト最安で大量生成Higgsfield DoP Lite$0.125/5秒クリップ。品質はやや落ちるが試作向き
キャラ一貫性最優先Kling O3 または Seedance 2.0Kling O3はブランド一貫性特化。Seedance 2.0 は参照画像9枚まで同時送信可
Section IX-C — Community Workflow (2026-05)

マルチショット実戦ワークフロー — コミュニティ知見

150+ 生成検証、技術ブログ、fal.ai / WaveSpeed / LiromFilms 等の実測データより。2026-05 時点。

Seedance 2.0 — コミュニティ知見
タイムスタンプ型プロンプト — ベストプラクティス

レンジ形式 [00:00-00:05] が最も強い境界指示として解釈される。シンプルな [0s] 形式でも動作するが、カット指示としての強度が弱い。

[00:00-00:03] 俯瞰ショット・Bird's eye. 東京の解体現場. 月夜. ハニワの仮面が土に半埋まり.
  Camera: DOLLY-IN descending from altitude. Dramatic silhouettes. Deep indigo sky.
  Style: theatrical anime, gekiga brushstroke, sepia-washi, VIVID SATURATED.

[00:03-00:06] ECU close-up. 眼の穴に月光が差し込む. 暗闘の奥. 徐々に朱の光が滲む.
  Camera: FIX with slow PUSH-IN. Vermilion glow begins. Single accent color only.
  Style: match opening. Maximum darkness drama.

[00:06-00:10] MS Low angle. ハニワが土から半身を起こす. 月光バック. 泥が落ちる.
  Camera: ultra LO. Moon directly behind dome — silhouette halo. Mud mid-air.
  Style: thick brushstroke silhouette. Rim light on clay edge. Emergence drama.

// ルール:
// - 1 ビートあたり 50〜75語、2〜3文が上限
// - 5秒クリップ = 2〜3タイムスタンプ、15秒 = 4〜6タイムスタンプ
// - 冒頭に [style anchor: theatrical gekiga anime, sepia-washi, VIVID] を挿入するとスタイルドリフト防止になる
Reference Image — コミュニティ定石
最大9枚だが精選 2〜3枚が推奨6枚→2枚に絞ると Identity drift が約60%減(WaveSpeed実測)
@Image1 メンション構文プロンプト内で @Image1 / @Image2 と参照して役割を明示する
reference strength 70〜80%85%超えると出力が硬直する。自然な動きとのバランス点
推奨順序①キャラ(正面・斜め45°・横顔の3方向セット) ②スタイル ③モーション動画
PNG推奨圧縮JPEGは顔の再現精度が落ちる
参照が強固なときはプロンプトをシンプルにreference強度とテキスト記述量を競合させない
よくある失敗パターンと対策
失敗原因対策
スタイルドリフトタイムスタンプ境界で再解釈が起きる冒頭に [style anchor: cel-shaded anime, 2D] を固定挿入
テンポラルフリッカー照明指示が競合(sunset + bright daylight)単一光源を一貫して指定する
Pose flip中立ポーズを指定すると左右が反転左右を明示(facing right / camera left)
Identity blend2枚の参照で人物が中間顔になる参照は同一照明条件で揃える
コンテンツ拒否流血・暴力シーンで参照画像を含む場合Kling 3.0 の方が制限緩め
Kling 3.0 — コミュニティ知見
I2V 設定値 — 実用域
cfg_scale(プロンプト準拠度)
0.5 — デフォルト。自由度あり
0.7〜0.8絵コンテ忠実度を上げたい場合の実用域
0.9+ — 動きが硬直しがち
mode 選択
std — 大量テスト・確認用(速度優先)
pro — 最終確認・本番用(品質優先)
4k — 現状スキンテクスチャにバグあり。1080p pro → 別途アップスケール推奨
絵コンテ→動画 コミュニティ定番フロー
Step 1各カットの絵コンテ PNG を 1 枚ずつ start_image に指定
Step 2cfg_scale: 0.7〜0.8 で I2V 生成。入力画像への構図忠実度を維持
Step 3最大 6 ショット分を Omni マルチショットモードで繋いで共有音声タイムライン付与
Step 4スタイルが崩れたショットのみ Seedance 2.0 で再生成して差し替え
失敗パターン
失敗原因対策
アニメ入力が実写寄りに崩れる学習データが実写偏重成功率40〜50%。2〜3倍のリロール覚悟。スタイルキーワードを強くアンカー
4K生成でプラスチック質ネイティブ4K既知バグ1080p Proで生成後に別途アップスケール
ショット間でキャラが別人参照なしで連続生成するとリセット全ショットに同一参照画像を必ず指定
文字看板の崩れ文字認識が弱いテキストを含む構図を避けるか後処理合成
2026-05 コミュニティ consensus(150+ 生成レビュー統合)
"Kling 3.0 はプロダクション寄りで外部評価が高い。Seedance 2.0 はリファレンスベースのアニメとシリアルコンテンツで強みを発揮する。どちらが優れているかではなく、どちらのツールをどのシーンに使うかを考える段階に来ている。"— LiromFilms (150+ generations review, 2026-05)
用途推奨理由
絵コンテ忠実・マルチショット一貫 ★ IVS2026Kling 3.0 Omni絵コンテ画像を構造化で渡せる唯一の本番投入可能オプション。4K60fps
アニメ・劇画スタイル(3Dアニメ系)Kling 3.0 優位日本クリエイター報告: Seedance は3Dアニメlip-syncが想定以下
マルチショット音声付き長尺Kling 3.0 Omni6ショット + 共有音声タイムライン。ネイティブ4K60fps
単発写実クリップ・素材Seedance 2.0単発の写実性・テクスチャ・ライティング物理はSeedanceが上
マスターショット多枚参照(9枚まで)Seedance 2.0参照モーダルの種類と枚数が最多。ここだけSeedanceに分がある
コスト最安・大量テストKling 3.0 Standardfal.ai $0.112/秒 audio-off。Seedance fast $0.24/秒より安い
アクション・流血描写Kling 3.0制限がゆるめ。Seedance は拒否率が高い
Sources: LiromFilms, WaveSpeed, fal.ai, Atlabs AI, WeShop AI, CuriousRefuge, PiAPI (2026-05)
Section IX-D — Batch Implementation

二段階バッチ生成 — 実装アーキテクチャ

退役 (2026-06-10): この節の CLI(gen-kling-videos.mjs)と site/lib/kling/ は削除済み(git 履歴参照)。 現役の動画ルートは /storyboard UI の各 cut コピーボタン(CutVideoButton: I2V / Multi-Shot / Battle Bridge / Reveal タブ + シーン見出しの Transition パネル。 プロンプトは lib/video/prompt.ts のビルダー)、実行は Higgsfield MCP(Kling 3.0 Omni mode=pro 主軸)。 以下の二段運用 / duration ロジックは設計の歴史記録として残す。

std(1080p) で安く確認 → 承認分だけ pro(4K) に再生成する二段運用(旧 CLI 時代の設計)。

二段階ワークフロー — コストとリスクを最小化
Stage 1
std (1080p)
$0.084 / 秒
ch01全12カット ≈ $3.11
Review
approved?
BatchResult.approved
= true のみ次へ
Stage 2
pro (4K)
$0.168 / 秒
承認分のみ再生成
Merge
videoUrl4K
upgradeBatchToPro()
元の結果にマージ
NGカットに4K費用をかけない。Stage 1 で全カットを確認後、approved=true を立てた分だけ Stage 2 へ進む。
2 ルートの選択基準
Route A — カット単位 I2V
batchByCuts()
対象単発クリップ・差し替え・試作
並列デフォルト 4 並列(セマフォ)
モデルkling-v3-image-to-video
入力カット画像 1 枚 + composition
Route B — シーン単位マルチショット
batchByScenes()
対象絵コンテ忠実・キャラ一貫
並列デフォルト 2 並列(シーン単位)
モデルkling-v3-image-to-video (guidances[])
入力最大 6 カット画像 + 各 composition
Duration 決定ロジック — resolveCutDuration()
優先①cut.customDuration明示指定。clamp(3〜10秒)
優先②cut.sec ("0:03" 形式)絵コンテ由来の秒数。clamp(3〜10秒)
優先③cut.isLongTake8 秒固定
優先④cut.dialogue あり5 秒固定(セリフ分の尺を確保)
デフォルト3 秒
Kling API 制約: duration は 3〜10 秒 (単体) / 合計最大 15 秒 (マルチショット)
Auto-split — 6ショット / 15秒 超過時の自動グループ分割

Kling Omni の制約(最大 6 ショット / 合計 15 秒)を超えるシーンは validateSceneDuration() がグリーディにグループ分割。 各グループを順次送信してシーン結果として集約する。

// ch01 sc01 — 5 cuts, 15s → ギリギリ 1 グループ
C1(3s) + C2(3s) + C3(3s) + C4(3s) + C5(3s) = 15s ✓
// 仮に C1 が 4s なら超過 → 自動分割
Group 1: C1(4s)+C2(3s)+C3(3s)+C4(3s) = 13s
Group 2: C5(3s) → 2 タスクに分割して連結
現行ライブラリ構成 — lib/video/
prompt.tsbuildI2VPrompt / buildBattleBridgePrompt / buildRevealPrompt / buildSceneVideoPrompt / buildSceneTransitionPrompt — 統合ビルダー
style.tsCORE_ANIM_STYLE / VIDEO_STYLE_HEADER / KLING_NEGATIVE_PROMPT 等 (prompt-blocks に video.* で登録)
camera.tsMOVE/SIZE/ANGLE map / translateMove — カメラ語彙翻訳
namecard.tsbuildNamecardDirective — リビール墨絵 namecard 指示
プロンプトの組み立ては /storyboard の CutVideoButton / Transition パネルが lib/video/* を呼んで表示する。 旧 CLI のコマンド例・lib/kling/ 構成は削除済 — git 履歴 (2026-06-10 以前) を参照。
ch01 コスト試算(実測ベース)
ch01 全 12 カット(37 秒合計)
Route A / std
$3.11
37s × $0.084 = $3.11
全承認後 4K アップグレード
Stage 2 / pro
$6.22
37s × $0.168 = $6.22
二段合計(全承認の場合)
Stage 1 + 2
$9.33
一部 NG なら Stage 2 分が削減される
コスト目安(2026-05 更新・修正版)
Kling 3.0 Pro / fal.ai (audio off)
$0.112 / 秒
5秒 = $0.56 / カット / 全16章12カット ≈ $107
audio on: $0.168/秒
Higgsfield DoP Lite (5秒)
$0.125 / クリップ
1章12カット = $1.50 / 全16章 = $24
Seedance 2.0 fast (fal.ai)
$0.24 / 秒
5秒 = $1.20 / カット。Kling Pro より高い
std: ~$0.30/秒
Part E — E1

画像生成プリセット

Copy-Paste Generation Recipes

すべて OpenAI gpt-image-2。絵コンテ cut は gen.mjs(composer 経由・reference_images 添付)、 シート系(キャラ / アイテム / ロケーション)は dump-supplement-prompts-with-refs.mjsopenai_batch_with_refs。 size / quality は config/generation-params.json(単一 SoT)から live 導出(lib/api-presets.ts)。 旧「カットは Higgsfield Nano Banana Pro / text prompt only」ルートは退役(2026-06-10、git 履歴参照)。

Rule · Always Parallelgpt-image-2 (images.generate / images.edit)

gpt-image-2 を叩く時は常に並列。直列は禁止。

1 枚あたり 60–180 秒かかる。N 枚を直列で回すと N 倍待つ。--concurrency で並列化すれば全体時間は 1 枚分とほぼ同じ。 バッチが 1 枚でも将来の N 枚化を見越して --concurrency を渡すこと。

バッチ枚数--concurrency想定時間
1–3 枚31 枚分 (~2:30)
4–8 枚81 枚分 (~2:30)
9 枚以上8 (Tier 1 上限)枚数 / 8 * 2:30
python -m src.openai_batch_with_refs <jsonl> --label <name> --concurrency 8 --size 1536x1024 --quality high

⚠️ 禁止: --concurrency 1 での実行 (待ち時間 N 倍)。バッチ生成スクリプトを書く / 直す時は必ず --concurrency3 以上 に設定。

根拠: OpenAI Tier 1 で 8 並列は安全帯 (CLAUDE.md §9)。バッチ枚数より大きい concurrency 指定は OK (内部で枚数で頭打ち)。

🎬 絵コンテ cut (章バッチ)

OpenAI
~$0.011 / 枚

字コンテ → cut 画像の正規ルート。composer が style anchor / location / 前cut / char sheets を reference_images に自動添付し、prompt-blocks SoT (STYLE_BASE 等) を注入。

{
  "model": "gpt-image-2",
  "size": "2048x1152",
  "quality": "high",
  "output_format": "png",
  "n": 1
}
node site/scripts/gen.mjs <chId>        # DRY: cut一覧 + anchor健全性 + 概算費用で停止
node site/scripts/gen.mjs <chId> --go   # 実生成: dump→batch(with_refs)→sync→webp→check

👤 キャラクターシート

OpenAI
$0.40 / 枚

主役・敵キャラのフル設定資料シート (turnaround + 能力 + 色印譜 + 物語位置)。format anchor + style anchor を reference_images に添付。

{
  "model": "gpt-image-2",
  "size": "1536x1024",
  "quality": "high",
  "output_format": "png",
  "n": 1
}
node site/scripts/dump-supplement-prompts-with-refs.mjs
python -m src.openai_batch_with_refs out/_supplement_with_refs.jsonl --concurrency 8 --label supplement_vX

🛡️ アイテムシート

OpenAI
$0.40 / 枚

道具・装備・聖物の詳細シート (state variant + 素材 + 機構 + 物語上の意味)。format anchor + style anchor を reference_images に添付。

{
  "model": "gpt-image-2",
  "size": "1536x1024",
  "quality": "high",
  "output_format": "png",
  "n": 1
}
node site/scripts/dump-supplement-prompts-with-refs.mjs
python -m src.openai_batch_with_refs out/_supplement_with_refs.jsonl --concurrency 8 --label supplement_vX

🏞️ ロケーションシート

OpenAI
$0.40 / 枚

場所の establishing shot + 細部パネル + 鳥瞰図 + 素材スウォッチ。format anchor + style anchor を reference_images に添付。単一の一枚絵にしない。

{
  "model": "gpt-image-2",
  "size": "1536x1024",
  "quality": "high",
  "output_format": "png",
  "n": 1
}
node site/scripts/dump-supplement-prompts-with-refs.mjs
python -m src.openai_batch_with_refs out/_supplement_with_refs.jsonl --concurrency 8 --label supplement_vX

♻️ キャラシート再生成

OpenAI
$0.40 / 枚

既存キャラの sheet を profile.md SoT + prompt-blocks registry で再生成。anti-drift 指示は profile.md frontmatter generation_directives に書く。

{
  "model": "gpt-image-2",
  "size": "1536x1024",
  "quality": "high",
  "output_format": "png",
  "n": 1
}
npx tsx site/scripts/regen-sheet.mts <slug>
python -m src.openai_batch_with_refs out/_sheet_regen.jsonl --concurrency 3 --label sheet_regen

📐 三面図 (正面/側面/背面)

OpenAI
$0.40 / 枚

クリーン正投影の turnaround。ref = 正本 sheet (promote 後に実行)。テンプレートは prompt-blocks の turnaround.template。

{
  "model": "gpt-image-2",
  "size": "1536x1024",
  "quality": "high",
  "output_format": "png",
  "n": 1
}
npx tsx site/scripts/regen-turnaround.mts <slug>
python -m src.openai_batch_with_refs out/_turnaround.jsonl --concurrency 3 --label turnaround
Part E — E2 — Live

世界観統計 (live)

Codex State Snapshot — auto-computed

登場人物
34
34 / 34 sheet 済
アイテム (curated)
2
content/items
ロケーション (canonical)
28
lib/locations
補足資料 (supplement)
56
55 / 56 画像済
confirmed (style anchor)
0
lib/confirmed.ts
rejected (没)
5
lib/rejected.ts
物語 章数
15
lib/chapter-refs
章 ↔ 場所 紐付済
15
/15 章中
REJECTED: pivot_kitsune · procrastination_imp · copycat_ninja · regulatory_tengu · burnout_jorogumo
Part E — E3

章 ↔ 場所 / 道具 マップ

Chapter Cross-References

lib/chapter-refs.tsCHAPTER_LOCATION_MAP + CHAPTER_ITEMS_MAP から live 描画。

01
第一章 ハニワくん出土
02
第二章 初期バグ虫との戦い
04
第四章 フィードバック河童との共闘
09
第九章 ハニワくんの孤独な戦い
13
第十三章 阿修羅モード覚醒
Part E — E4 — Key Visual

キービジュアル生成

Key Visual — Collective Poster Generation

全キャラクターを学習させた縦長集合ビジュアル(商業ポスター用)。
テスト解像度: 1024×1536 / 本番目標: 2894×4093 (350dpi A4)

生成コマンド
テスト (1024×1536 / high) python gen_key_visual.py
出力先 out/key_visual/ → public/key_visual_v*.png
参照画像 IVS2026ロゴ + haniwa_boy + dogu_boy + haniwa_ashura + dogu_indra
推定コスト $0.40 / 枚 (high)
生成済み — 2 バージョン
key_visual_v1.png
key_visual_v1.png
key_visual_v2.png
key_visual_v2.png
素材集 (char_cards) — 117

各素材はキービジュアルでの立ち位置・ポーズに合わせた個別生成。黒背景合成用。

bg 01 fuji sakura sunset
bg 01 fuji sakura sunset
char 04 haniwa boy
char 04 haniwa boy
char 05 dogu boy
char 05 dogu boy
char 06 kongo agyo
char 06 kongo agyo
char 08 haniwa youth
char 08 haniwa youth
char 09 haniwa ashura
char 09 haniwa ashura
char 15 initial bug swarm
char 15 initial bug swarm
char 16 cac hungry spirit
char 16 cac hungry spirit
char 20 scaling gravity oni
char 20 scaling gravity oni
char 26 giant corp mecha
char 26 giant corp mecha
char 28 jugemu swarm single
char 28 jugemu swarm single
fx 01 lightning burst blue
fx 01 lightning burst blue
fx 11 logo jomon pottery
fx 11 logo jomon pottery
fx 12 logo lightning burst
fx 12 logo lightning burst
fx 19a logo premium mandala jomon
fx 19a logo premium mandala jomon
fx 24a circle yokai v1
fx 24a circle yokai v1
fx 27a circle ashura vermilion
fx 27a circle ashura vermilion
fx 27b circle pure red v1
fx 27b circle pure red v1
fx 30 lightning pack basic
fx 30 lightning pack basic
fx 40 lightning bolts isolated
fx 40 lightning bolts isolated
fx 50 logo shu urushi
fx 50 logo shu urushi
fx 54 logo chunky 3d rough
fx 54 logo chunky 3d rough
fx 70 circle volumetric pack v1
fx 70 circle volumetric pack v1
fx 73 logo magiccircle molten
fx 73 logo magiccircle molten
fx 76 logo glow particle lines
fx 76 logo glow particle lines
fx 80 logo machete sunburst red
fx 80 logo machete sunburst red
fx 81 text 3d white blocky
fx 81 text 3d white blocky
bg 06 pagoda kyoto storm
bg 06 pagoda kyoto storm
char 05 dogu boy
char 05 dogu boy
char 09 haniwa ashura
char 09 haniwa ashura
char 11 dogu indra
char 11 dogu indra
char 17 cash drain deity
char 17 cash drain deity
char 18 data thief
char 18 data thief
char 19 overwork gaki
char 19 overwork gaki
char 21 ai rampage tsukumogami
char 21 ai rampage tsukumogami
fx 02 lightning swirl spiral
fx 02 lightning swirl spiral
fx 19b logo premium mandala buddhist
fx 19b logo premium mandala buddhist
fx 24b circle yokai v2
fx 24b circle yokai v2
fx 28a circle shrine torii
fx 28a circle shrine torii
fx 28b circle pure red v2
fx 28b circle pure red v2
fx 31 lightning pack advanced
fx 31 lightning pack advanced
fx 41 lightning branches pack
fx 41 lightning branches pack
fx 51 logo bronze aged
fx 51 logo bronze aged
fx 55 logo original glow 3d
fx 55 logo original glow 3d
fx 71 circle volumetric pack v2
fx 71 circle volumetric pack v2
fx 74 logo magiccircle bronze
fx 74 logo magiccircle bronze
fx 77 logo volumetric bloom sparks
fx 77 logo volumetric bloom sparks
fx 82 text 3d chrome red
fx 82 text 3d chrome red
bg 09 jugemu army horizon
bg 09 jugemu army horizon
char 05 dogu boy
char 05 dogu boy
char 06 kongo agyo
char 06 kongo agyo
char 10 dogu youth
char 10 dogu youth
char 18 data thief
char 18 data thief
char 21 ai rampage tsukumogami
char 21 ai rampage tsukumogami
char 24 legacy ghost
char 24 legacy ghost
fx 03 vermilion flame burst
fx 03 vermilion flame burst
fx 13 logo buddhist mandala
fx 13 logo buddhist mandala
fx 19c logo premium mandala kongo
fx 19c logo premium mandala kongo
fx 25a circle cyber v1
fx 25a circle cyber v1
fx 29a circle vermilion flame
fx 29a circle vermilion flame
fx 29b circle pure red v3
fx 29b circle pure red v3
fx 32 flame pack basic
fx 32 flame pack basic
fx 42 lightning arcs curves
fx 42 lightning arcs curves
fx 52 logo stone carved
fx 52 logo stone carved
fx 72 circle volumetric pack v3
fx 72 circle volumetric pack v3
fx 75 logo magiccircle crystal
fx 75 logo magiccircle crystal
fx 78 logo heat shimmer glow
fx 78 logo heat shimmer glow
fx 83 text 3d stone carved
fx 83 text 3d stone carved
char 07 kongo ungyo
char 07 kongo ungyo
char 11 dogu indra
char 11 dogu indra
char 19 overwork gaki
char 19 overwork gaki
char 22 brain drain nue
char 22 brain drain nue
char 23 founder mode hermit
char 23 founder mode hermit
fx 04 golden aura radiation
fx 04 golden aura radiation
fx 14 logo urushi brush
fx 14 logo urushi brush
fx 25b circle cyber v2
fx 25b circle cyber v2
fx 33 flame pack advanced
fx 33 flame pack advanced
fx 43 spark streaks long
fx 43 spark streaks long
fx 60 smoke vermilion drift
fx 60 smoke vermilion drift
fx 79 logo machete grunge red
fx 79 logo machete grunge red
char 12 angel investor kami
char 12 angel investor kami
char 20 scaling gravity oni
char 20 scaling gravity oni
char 28 jugemu swarm single
char 28 jugemu swarm single
fx 05 jugemu mandala bg
fx 05 jugemu mandala bg
fx 15 logo stone kofun
fx 15 logo stone kofun
fx 24a circle yokai v1
fx 24a circle yokai v1
fx 26a circle zen v1
fx 26a circle zen v1
fx 44 spark clusters burst
fx 44 spark clusters burst
fx 61 smoke black chaos
fx 61 smoke black chaos
char 13 media buzz tengu
char 13 media buzz tengu
char 21 ai rampage tsukumogami
char 21 ai rampage tsukumogami
fx 06 jugemu nametag rain
fx 06 jugemu nametag rain
fx 16 logo meka kikai
fx 16 logo meka kikai
fx 24b circle yokai v2
fx 24b circle yokai v2
fx 26b circle zen v2
fx 26b circle zen v2
fx 45 energy arcs trails
fx 45 energy arcs trails
fx 62 smoke white mystic
fx 62 smoke white mystic
char 14 feedback kappa
char 14 feedback kappa
char 22 brain drain nue
char 22 brain drain nue
fx 07 ash ember storm
fx 07 ash ember storm
fx 17 logo shuin stamp
fx 17 logo shuin stamp
fx 25a circle cyber v1
fx 25a circle cyber v1
fx 46 ember swirl trails
fx 46 ember swirl trails
char 15 initial bug swarm
char 15 initial bug swarm
char 23 founder mode hermit
char 23 founder mode hermit
fx 08 lightning dragon arc
fx 08 lightning dragon arc
fx 18 logo calligraphy burst
fx 18 logo calligraphy burst
fx 25b circle cyber v2
fx 25b circle cyber v2
fx 47 ember particles field
fx 47 ember particles field
char 24 legacy ghost
char 24 legacy ghost
fx 09 lotus aura bloom
fx 09 lotus aura bloom
fx 26a circle zen v1
fx 26a circle zen v1
char 25 regulation centipede
char 25 regulation centipede
fx 10 cyber jomon glyph rain
fx 10 cyber jomon glyph rain
fx 26b circle zen v2
fx 26b circle zen v2
char 26 giant corp mecha
char 26 giant corp mecha
char 27 market storm
char 27 market storm
構図設計 (Phase 0-1 確定版)
ZONE A
上部 20%
IVS2026 ∞ロゴ — 炎・朱印融合 立体エンボス
ZONE B
上中段 25%
金剛力士 阿形・吽形 — 霧の中に半透明で守護
ZONE C
中段 30%
後方: 阿修羅ハニワ × インドラドグー(大)/ 前方: 少年二人が背中合わせ(小)
ZONE D
下中段 15%
東証宮の残骸 + 過去の妖怪シルエット(煙)
ZONE E
最下部 10%
寿限無軍団 — 完全シルエット、霧の向こう
Colophon

このページは完全 data-driven。
site/lib/* のどれかを更新すると、ここの統計・プリセット・参照がすべて自動同期する。