@milenyumai/film-kit 2.3.5 → 2.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -198,9 +198,10 @@ Rules:
198
198
  - GPT Image 2 still prompts use `REFERENCE LOCK`, `Keep same`, `Change only`, and `Avoid` sections so character identity, wardrobe, props, and materials stay immutable unless explicitly changed.
199
199
  - Each `SHOTNN.md` includes a professional `GPT IMAGE 2 STORYBOARD PROMPT`; the generated shot storyboard controls composition, blocking, camera, timing, and editorial phase order only.
200
200
  - If no external storyboard image exists, Film-Kit still generates the GPT Image 2 storyboard bootstrap prompt and writes it to both `outputs/storyboard-prompts/SHOTNN-GPT-IMAGE-2-STORYBOARD.md` and the convenience alias `outputs/storyboard-prompt.md`.
201
- - Storyboard prompts use production-board grammar: 16:9 storyboard sheet, rough black-and-white pencil panels, strong silhouettes, visible body/camera momentum, cinematic camera variety, and optional color-coded planning annotations. Seedance is instructed to follow the panel order while ignoring arrows, notes, labels, and timestamps in the rendered video.
201
+ - Storyboard prompts default to a 12-panel 16:9 production-board sheet: white paper, rough black-and-white pencil drawings, strong silhouettes, visible body/camera momentum, cinematic camera variety, and color-coded planning annotations only. Hard negatives block photorealistic stills, full-color rendered panels, concept-art strips, CGI, anime, and polished illustration.
202
+ - Seedance treats the generated storyboard token as the complete visual/action/camera/choreography source, follows all beats left-to-right/top-to-bottom, and ignores arrows, labels, notes, page headers, timestamps, panel borders, and other annotations in the rendered video.
202
203
  - Seedance provider-facing tokens map generated character sheets first (`@Image1`, `@Image2`, ...) and the generated shot storyboard next. Legacy lowercase aliases remain documented in runtime text.
203
- - `SHOTNN.bundle.json` includes `storyboard_creation` metadata with provider, prompt path, alias path, reading order, panel count, Seedance token, annotation policy, and prompt text.
204
+ - `SHOTNN.bundle.json` includes `storyboard_creation` metadata with provider, prompt path, alias path, style contract, default panel count, reading order, panel count, forbidden visual modes, Seedance token, annotation policy, and prompt text.
204
205
  - Speaking shots must bind `Audio Plan.activeSpeakerKey` back to project-level `voiceCast`; broken voice bindings fail QA.
205
206
  - Public-figure, celebrity, likeness, logo, trademark, or brand references in the brief, dialogue metadata, or reference metadata are blocked unless safely anonymized first.
206
207
  - Phase budget: 4-6s uses 1-2 phases, 7-10s uses 2-3 phases, and 11-15s uses 3-4 phases.
@@ -219,7 +220,7 @@ CLI flags for direct storyboard bundle generation:
219
220
  | `--models` | Comma-separated target models: `veo31`, `seedance-2.0`, `kling-3.0` |
220
221
  | `--duration` | Duration in seconds per generated shot. Seedance provider range is 4-15 seconds |
221
222
  | `--aspect` | `16:9`, `9:16`, or `1:1` |
222
- | `--storyboard-panel-count-hint` | Optional GPT Image 2 storyboard sheet panel count, `1-12`. This does not by itself split SHOT files |
223
+ | `--storyboard-panel-count-hint` | Optional GPT Image 2 storyboard sheet panel count, `1-12`. Default: `12`. This does not by itself split SHOT files |
223
224
  | `--max-storyboard-phases` | Upper bound per shot. Default: `4` |
224
225
 
225
226
  ## CLI
@@ -10,6 +10,7 @@ export declare class Seedance20PromptAdapter extends BaseVideoModelPromptAdapter
10
10
  private getMappingEntries;
11
11
  private formatCharacterRoleLine;
12
12
  private formatStoryboardRoleLine;
13
+ private hasDanceOrSingingIntent;
13
14
  buildPrompt(input: AdapterInput): ModelPromptOutput;
14
15
  validate(output: ModelPromptOutput): ModelPromptQa;
15
16
  }
@@ -40,24 +40,37 @@ export class Seedance20PromptAdapter extends BaseVideoModelPromptAdapter {
40
40
  const storyboardEntry = this.getMappingEntries(input, "storyboard_plan")[0];
41
41
  const token = storyboardEntry?.token ?? "@Image2";
42
42
  const alias = storyboardEntry?.legacyAlias;
43
- return `Use ${token} as the shot storyboard reference for composition, blocking, camera direction, timing, action rhythm, and phase order only. Do not copy storyboard text, labels, panel borders, watermarks, logos, or alternate character design from ${token}.${alias ? ` Legacy alias: ${alias}.` : ""}`;
43
+ return `Use ${token} as the shot storyboard reference and generated storyboard reference image: the complete visual/action/camera/choreography source for beat order, composition, blocking, camera direction, timing, action rhythm, framing variety, and final pose only. Do not copy storyboard text, labels, notes, arrows, panel borders, page headers, watermarks, logos, or alternate character design from ${token}.${alias ? ` Legacy alias: ${alias}.` : ""}`;
44
+ }
45
+ hasDanceOrSingingIntent(input) {
46
+ const combined = [
47
+ input.request.brief,
48
+ input.request.audioIntent,
49
+ input.request.styleIntent,
50
+ ...input.request.dialogue.map(line => `${line.speaker}: ${line.text}`)
51
+ ].join(" ").toLowerCase();
52
+ return /dance|dancing|choreograph|sing|singing|song|vocal|sarki|sark|soyl|dans/.test(combined);
44
53
  }
45
54
  buildPrompt(input) {
46
55
  const audioPlan = buildAudioPlan(input);
47
56
  const storyboardEntry = this.getMappingEntries(input, "storyboard_plan")[0];
48
57
  const storyboardToken = storyboardEntry?.token ?? "@Image2";
49
58
  const continuityInstruction = input.continuityMode === "continuous-shot"
50
- ? `Use the generated storyboard reference ${storyboardToken} as the complete visual, action, camera, and choreography source for this ${input.request.durationSeconds}-second video. Follow the single storyboard beat exactly. No scene cuts throughout, one continuous shot.`
51
- : `Use the generated storyboard reference ${storyboardToken} as the complete visual, action, camera, and choreography source for this ${input.request.durationSeconds}-second video. Follow all ${input.storyboardImagePrompt.panelCount} beats sequentially from left-to-right, top-to-bottom as the exact visual beat order. Do not reinterpret actions, poses, camera angles, emotional progression, frame variety, movement logic, shot order, or the final pose. Compress the full ${input.storyboardImagePrompt.panelCount}-beat sequence into the full duration as fast readable motion snapshots, not full-length actions. Use urgent rhythm, storyboard-motivated cuts, quick cuts, match cuts, whip transitions, or motivated camera moves only when the storyboard supports them. Do not add unplanned cuts, extra scene jumps, duplicate performers, or new locations.`;
59
+ ? `Use the generated storyboard reference ${storyboardToken} as the complete visual/action/camera/choreography source for this ${input.request.durationSeconds}-second video. Follow all ${input.storyboardImagePrompt.panelCount} beats sequentially from left-to-right, top-to-bottom as the exact visual beat order within one uninterrupted camera move. Do not reinterpret pose, action, camera angle, emotional progression, framing variety, movement logic, shot order, or final pose. Compress the full ${input.storyboardImagePrompt.panelCount}-beat sequence into the requested duration as fast readable motion snapshots, not full-length actions. No scene cuts throughout, one continuous shot.`
60
+ : `Use the generated storyboard reference ${storyboardToken} as the complete visual/action/camera/choreography source for this ${input.request.durationSeconds}-second video. Follow all ${input.storyboardImagePrompt.panelCount} beats sequentially from left-to-right, top-to-bottom as the exact visual beat order. Do not reinterpret pose, action, camera angle, emotional progression, framing variety, movement logic, shot order, or final pose. Compress the full ${input.storyboardImagePrompt.panelCount}-beat sequence into the requested duration as fast readable motion snapshots, not full-length actions. Use urgent rhythm, storyboard-motivated cuts, quick cuts, match cuts, whip transitions, or motivated camera moves only when the storyboard supports them. Do not add unplanned cuts, extra scene jumps, duplicate performers, or new locations.`;
52
61
  const characterEntries = this.getMappingEntries(input, "character_identity");
53
62
  const characterTokenText = characterEntries.map(entry => entry.token).join(", ") || "@Image1";
63
+ const performanceEmphasis = this.hasDanceOrSingingIntent(input)
64
+ ? "\nFor singing or dance briefs: continuous live singing must show visible breath, synchronized mouth movement, body strain, fabric motion, grounded footwork, floor contact, and phrase-level physical effort across the full movement."
65
+ : "";
54
66
  const promptText = `${this.formatCharacterRoleLine(input)}
55
67
  ${this.formatStoryboardRoleLine(input)}
56
68
 
57
69
  [REFERENCE ROLES]
58
70
  - Identity reference: ${characterTokenText} locks face, hair, body proportions, wardrobe, accessories, visible props, and material continuity.
59
- - Camera reference: ${storyboardToken} controls composition, camera direction, framing, screen direction, shot order, and lens rhythm only.
60
- - Action reference: ${storyboardToken} controls blocking, pose logic, timing, action rhythm, phase order, and emotional progression only.
71
+ - Storyboard reference image: ${storyboardToken} is the complete visual/action/camera/choreography source.
72
+ - Camera reference: ${storyboardToken} controls composition, camera direction, framing, screen direction, shot order, framing variety, and lens rhythm only.
73
+ - Action reference: ${storyboardToken} controls blocking, pose logic, timing, action rhythm, phase order, choreography, and emotional progression only.
61
74
  - Audio reference: use the Audio Plan text below for dialogue, SFX, ambience, and music intent; do not infer audio from storyboard annotations unless explicitly requested.
62
75
 
63
76
  ${continuityInstruction}
@@ -69,13 +82,13 @@ ${input.request.brief}
69
82
  ${formatPhaseLines(input.interpretation.phases)}
70
83
 
71
84
  [GPT IMAGE 2 STORYBOARD SOURCE]
72
- Use the generated storyboard image from ${input.storyboardImagePrompt.outputPath} as ${storyboardToken}. It has ${input.storyboardImagePrompt.panelCount} panel(s), follows the shot handoff, and is not an identity source. Treat colored arrows, panel labels, lens notes, and framing marks as planning annotations only; never render arrows, annotation marks, notes, labels, timestamps, panel borders, or storyboard text into the video.
85
+ Use the generated storyboard image from ${input.storyboardImagePrompt.outputPath} as ${storyboardToken}. It has ${input.storyboardImagePrompt.panelCount} panel(s), follows the shot handoff, and is not an identity source. Treat colored arrows, panel labels, lens notes, framing marks, and page headers as planning annotations only; never render storyboard annotations, arrows, labels, notes, timestamps, page headers, panel borders, or storyboard text into the video.
73
86
 
74
87
  [CAMERA]
75
88
  ${input.interpretation.cameraPlan.framing}, ${input.interpretation.cameraPlan.movement}, ${input.interpretation.cameraPlan.lens}, ${input.interpretation.cameraPlan.stabilization}. Preserve ${input.interpretation.cameraPlan.screenDirection}.
76
89
 
77
90
  [PERFORMANCE]
78
- Keep the same performer identity from ${characterTokenText}; do not duplicate the character. Visible performance must include breath, mouth movement when dialogue or singing is present, body strain, fabric motion, floor or prop contact, and emotional escalation while preserving exact identity. Acting stays concrete and physically grounded: gaze, breathing, posture, hand behavior, and facial tension evolve from the brief without changing wardrobe or body design.
91
+ Keep the same performer identity from ${characterTokenText}; do not duplicate the character. Visible performance must include breath, mouth movement when dialogue or singing is present, body strain, fabric motion, floor or prop contact, and emotional escalation while preserving exact identity. Acting stays concrete and physically grounded: gaze, breathing, posture, hand behavior, and facial tension evolve from the brief without changing wardrobe or body design.${performanceEmphasis}
79
92
 
80
93
  [AUDIO]
81
94
  Dialogue: ${buildDialogueTranscript(input)}.
@@ -84,9 +97,9 @@ Ambience: ${audioPlan.ambience.join(", ")}.
84
97
  Music: NONE.
85
98
 
86
99
  [CONTINUITY]
87
- Identity reference stays locked to ${characterTokenText}. Storyboard ${storyboardToken} controls staging, shot order, pose logic, camera variety, emotional progression, and visual rhythm only. Character design, wardrobe, accessories, and visible props cannot be inherited from the storyboard. Storyboard text, panel borders, arrows, colored marks, lens notes, watermark, logo, and alternate character design are never identity sources and must not appear in the rendered video.
100
+ Identity reference stays locked to ${characterTokenText}. Storyboard ${storyboardToken} controls staging, shot order, pose logic, camera variety, framing variety, emotional progression, choreography, final pose, and visual rhythm only. Character design, wardrobe, accessories, and visible props cannot be inherited from the storyboard. Storyboard text, panel borders, arrows, colored marks, lens notes, page headers, watermark, logo, and alternate character design are never identity sources and must not appear in the rendered video.
88
101
 
89
- Avoid: identity drift, face drift, outfit drift, duplicated performer, storyboard text, annotations, panel borders, colored arrows, annotation marks, lens notes, timestamps, watermark, logo, distorted hands, rubbery motion, flicker, unnatural camera jumps. No text, no annotations, no timestamps, no watermark.`;
102
+ Avoid: identity drift, face drift, outfit drift, duplicated performer, storyboard text, annotations, panel borders, colored arrows, annotation marks, lens notes, labels, notes, page headers, timestamps, watermark, logo, distorted hands, rubbery motion, flicker, unnatural camera jumps. No text, no annotations, no labels, no notes, no timestamps, no page headers, no watermark.`;
90
103
  const output = {
91
104
  model: this.model,
92
105
  displayName: getDisplayName(this.model),
@@ -123,13 +136,16 @@ Avoid: identity drift, face drift, outfit drift, duplicated performer, storyboar
123
136
  usesStoryboardToken: output.promptText.includes(storyboardToken) && /shot storyboard reference/i.test(output.promptText),
124
137
  followsStoryboardOrder: continuityMode === "continuous-shot"
125
138
  ? hasNoCutsRule
139
+ && /Follow all \d+ beats sequentially from left-to-right, top-to-bottom/i.test(output.promptText)
140
+ && /Do not reinterpret pose, action, camera angle, emotional progression/i.test(output.promptText)
126
141
  : /left-to-right, top-to-bottom/i.test(output.promptText)
127
- && /Do not reinterpret actions, poses, camera angles, emotional progression/i.test(output.promptText),
142
+ && /Do not reinterpret pose, action, camera angle, emotional progression/i.test(output.promptText),
128
143
  separatesReferenceRoles: /Identity reference:/i.test(output.promptText)
144
+ && /Storyboard reference image:/i.test(output.promptText)
129
145
  && /Camera reference:/i.test(output.promptText)
130
146
  && /Action reference:/i.test(output.promptText)
131
147
  && /Audio reference:/i.test(output.promptText),
132
- blocksStoryboardIdentitySources: /Storyboard text, panel borders, arrows, colored marks, lens notes, watermark, logo, and alternate character design are never identity sources/i.test(output.promptText),
148
+ blocksStoryboardIdentitySources: /Storyboard text, panel borders, arrows, colored marks, lens notes, page headers, watermark, logo, and alternate character design are never identity sources/i.test(output.promptText),
133
149
  continuityMode: continuityMode === "continuous-shot"
134
150
  ? hasNoCutsRule
135
151
  : !hasNoCutsRule && /storyboard-motivated cuts/i.test(output.promptText),
@@ -43,8 +43,9 @@ function resolvePromptAdapter(model) {
43
43
  return adapter;
44
44
  }
45
45
  const MAX_STORYBOARD_SHEET_PANELS = 12;
46
- function getStoryboardSheetPanelCount(request, phaseBudget) {
47
- const panelCount = request.storyboardPanelCountHint ?? phaseBudget.recommendedMaxPhases;
46
+ const DEFAULT_STORYBOARD_SHEET_PANELS = 12;
47
+ function getStoryboardSheetPanelCount(request) {
48
+ const panelCount = request.storyboardPanelCountHint ?? DEFAULT_STORYBOARD_SHEET_PANELS;
48
49
  if (panelCount > MAX_STORYBOARD_SHEET_PANELS) {
49
50
  throw new Error(`Invalid storyboardPanelCountHint. Expected 1-${MAX_STORYBOARD_SHEET_PANELS} panels for one GPT Image 2 storyboard sheet.`);
50
51
  }
@@ -180,8 +181,11 @@ function buildStoryboardImagePrompt(input) {
180
181
  const phaseDirection = interpretation.phases
181
182
  .map(phase => `Phase ${phase.index}: ${phase.job}; ${phase.subjectAction}; camera behavior: ${phase.cameraBehavior}; background behavior: ${phase.backgroundBehavior}.`)
182
183
  .join(" ");
184
+ const panelLabel = input.storyboardSheetPanelCount === 1
185
+ ? "1 cinematic panel"
186
+ : `${input.storyboardSheetPanelCount} cinematic panels`;
183
187
  const continuityStyle = interpretation.phases.length <= 1
184
- ? "Because this is a single uninterrupted beat, show one decisive action moment with a clear entry pose, motion direction, and final body intention inside the same panel."
188
+ ? `Because this is a single uninterrupted beat, still create ${panelLabel} as sequential motion snapshots of one continuous camera move. Each panel must clarify entry pose, motion direction, body mechanics, camera shift, and final body intention without implying separate scenes.`
185
189
  : `Read panels left-to-right, top-to-bottom as a planned visual beat sequence. Create ${input.storyboardSheetPanelCount} distinct beat snapshot${input.storyboardSheetPanelCount === 1 ? "" : "s"} distributed across the video phases. Each panel must show a distinct body pose, camera size/angle, movement logic, and emotional escalation, not decorative micro-poses.`;
186
190
  return {
187
191
  shotId,
@@ -189,18 +193,24 @@ function buildStoryboardImagePrompt(input) {
189
193
  provider: "gpt-image-2",
190
194
  aspectRatio: "16:9",
191
195
  panelCount: input.storyboardSheetPanelCount,
192
- style: "professional-production-storyboard",
196
+ style: "raw-pencil-production-storyboard",
193
197
  characterSheetIds,
194
198
  externalStoryboardGuideIds,
195
199
  previousShotHandoff: input.previousShotHandoff,
196
200
  nextShotHandoff: input.nextShotHandoff,
197
- promptText: `REFERENCE LOCK: Use the generated character sheet reference${characterReferenceSheetPrompts.length === 1 ? "" : "s"} (${sheetRefs}) as the only source for character identity, face, hair, skin texture, body proportions, wardrobe, accessories, material behavior, and visible props.
201
+ promptText: `HARD NEGATIVE STORYBOARD STYLE LOCK:
202
+ Do not create photorealistic cinematic stills.
203
+ Do not create full-color rendered panels.
204
+ Do not create concept art, movie frames, underwater/color-grade panels, 3D render, anime, CGI, or polished illustration.
205
+ Only annotation arrows/marks may use color; all storyboard artwork remains black pencil on white paper.
206
+
207
+ REFERENCE LOCK: Use the generated character sheet reference${characterReferenceSheetPrompts.length === 1 ? "" : "s"} (${sheetRefs}) as the only source for character identity, face, hair, skin texture, body proportions, wardrobe, accessories, material behavior, and visible props.
198
208
 
199
209
  Keep same: every character identity detail from the character sheet${characterReferenceSheetPrompts.length === 1 ? "" : "s"}, the declared visual world, screen direction, environmental continuity, lighting direction, prop continuity, and shot handoff logic. Storyboard text, arrows, labels, panel borders, watermarks, logos, and alternate character designs are never identity sources.
200
210
 
201
- Change only: create a raw cinematic storyboard sheet for ${shotId}. 16:9 storyboard sheet, exactly ${input.storyboardSheetPanelCount} cinematic panel${input.storyboardSheetPanelCount === 1 ? "" : "s"}. The storyboard controls composition, blocking, camera direction, timing, phase order, action rhythm, and emotional progression only. ${externalGuideText}
211
+ Change only: Create a raw ${shotId} storyboard focused on intense physical movement and clear cinematic action from this scene: ${request.brief}. White paper production layout. 16:9 storyboard sheet, ${panelLabel}. Use exactly ${panelLabel}. The storyboard controls composition, blocking, camera direction, timing, phase order, action rhythm, and emotional progression only. ${externalGuideText}
202
212
 
203
- Storyboard drawing style: raw contemporary film storyboard with black-and-white rough pencil linework. The actual storyboard drawings must be black-and-white only: rough pencil lines, minimal detail, fast gesture drawing energy, simple anatomy construction, strong silhouette readability, lightweight unfinished choreography previs, not polished concept art or final render.
213
+ Storyboard drawing style: raw contemporary production storyboard with black-and-white rough pencil linework. Actual storyboard drawings must be black and white only. Use rough pencil lines, minimal detail, fast gesture drawing energy, simple anatomy construction, strong silhouette readability, lightweight unfinished choreography previs, not polished concept art or final render.
204
214
 
205
215
  Panel direction: ${continuityStyle} The scene brief is: ${request.brief} Previous handoff: ${input.previousShotHandoff}. Next handoff: ${input.nextShotHandoff}. Planned panel actions: ${phaseDirection}
206
216
 
@@ -308,6 +318,15 @@ function buildStoryboardCreationMetadata(request, storyboardImagePrompt, provide
308
318
  ? "generated-with-external-guide"
309
319
  : "generated",
310
320
  panel_count: storyboardImagePrompt.panelCount,
321
+ default_panel_count: DEFAULT_STORYBOARD_SHEET_PANELS,
322
+ style_contract: "raw-pencil-production-storyboard",
323
+ forbidden_visual_modes: [
324
+ "photorealistic stills",
325
+ "full-color panels",
326
+ "concept-art strip",
327
+ "CGI render"
328
+ ],
329
+ annotation_colors_allowed: true,
311
330
  reading_order: "left-to-right, top-to-bottom",
312
331
  character_sheet_ids: storyboardImagePrompt.characterSheetIds,
313
332
  external_storyboard_guide_ids: storyboardImagePrompt.externalStoryboardGuideIds,
@@ -421,7 +440,7 @@ export function buildStoryboardReferencePromptBundles(input) {
421
440
  const voiceCast = buildVoiceCast(request);
422
441
  const phaseBudget = buildStoryboardPhaseBudget(request.durationSeconds, request.storyboardReferenceMode.maxStoryboardPhases);
423
442
  const providerFileLimits = buildProviderFileLimitReport(request, characterReferenceSheetPrompts.length + 1);
424
- const storyboardSheetPanelCount = getStoryboardSheetPanelCount(request, phaseBudget);
443
+ const storyboardSheetPanelCount = getStoryboardSheetPanelCount(request);
425
444
  const videoPhaseCount = getVideoPhaseCount(request, phaseBudget);
426
445
  const maxPhases = phaseBudget.effectiveMaxStoryboardPhases;
427
446
  const splitRequired = videoPhaseCount > maxPhases;
@@ -128,7 +128,7 @@ export interface StoryboardImagePrompt {
128
128
  provider: "gpt-image-2";
129
129
  aspectRatio: "16:9";
130
130
  panelCount: number;
131
- style: "professional-production-storyboard";
131
+ style: "raw-pencil-production-storyboard";
132
132
  characterSheetIds: string[];
133
133
  externalStoryboardGuideIds: string[];
134
134
  previousShotHandoff: string;
@@ -141,6 +141,15 @@ export interface StoryboardCreationMetadata {
141
141
  alias_path: string;
142
142
  source_mode: "generated" | "generated-with-external-guide";
143
143
  panel_count: number;
144
+ default_panel_count: 12;
145
+ style_contract: "raw-pencil-production-storyboard";
146
+ forbidden_visual_modes: [
147
+ "photorealistic stills",
148
+ "full-color panels",
149
+ "concept-art strip",
150
+ "CGI render"
151
+ ];
152
+ annotation_colors_allowed: true;
144
153
  reading_order: "left-to-right, top-to-bottom";
145
154
  character_sheet_ids: string[];
146
155
  external_storyboard_guide_ids: string[];
@@ -114,8 +114,13 @@ export function validatePromptBundle(bundle, assets, voiceCast = []) {
114
114
  hasStoryboardReference: assets.storyboards.length >= 1 || Boolean(bundle.storyboardImagePrompt),
115
115
  hasStoryboardImagePrompt: Boolean(bundle.storyboardImagePrompt?.promptText.trim()),
116
116
  hasStoryboardCreationMetadata: Boolean(bundle.storyboard_creation?.prompt_text.trim())
117
+ && bundle.storyboard_creation?.prompt_text === bundle.storyboardImagePrompt.promptText
117
118
  && bundle.storyboard_creation?.prompt_path === bundle.storyboardImagePrompt.outputPath
118
119
  && bundle.storyboard_creation?.panel_count === bundle.storyboardImagePrompt.panelCount
120
+ && bundle.storyboard_creation?.default_panel_count === 12
121
+ && bundle.storyboard_creation?.style_contract === "raw-pencil-production-storyboard"
122
+ && bundle.storyboard_creation?.forbidden_visual_modes.includes("photorealistic stills")
123
+ && bundle.storyboard_creation?.annotation_colors_allowed === true
119
124
  && bundle.storyboard_creation?.annotation_policy.rendered_in_video === false,
120
125
  storyboardPromptHasReferenceLockStructure: hasGptImageStillPromptContract(bundle.storyboardImagePrompt?.promptText ?? ""),
121
126
  hasAvoidLineEverywhere: Object.values(bundle.modelPrompts).every(output => Boolean(output) && hasAvoidOrNegativePrompt(output.promptText)),
@@ -36,12 +36,13 @@ For each shot, generate a professional GPT Image 2 storyboard prompt:
36
36
 
37
37
  - provider: `gpt-image-2`
38
38
  - aspect ratio: `16:9`
39
- - storyboard sheet panel budget: default follows the duration-aware phase budget, but an explicit storyboard panel hint may request 1-12 panels in one GPT Image 2 storyboard sheet
39
+ - storyboard sheet panel budget: default is 12 cinematic panels in one GPT Image 2 storyboard sheet; an explicit storyboard panel hint may request 1-12 panels
40
40
  - video phase budget: 4-6s = 1-2 phases, 7-10s = 2-3 phases, 11-15s = 3-4 phases
41
41
  - hard cap: max 4 video phases per shot unless the configured project cap is lower
42
42
  - split policy: 5+ distinct real video phases, scene changes, or location/action blocks must become separate chained `SHOTNN.md` files; 5-12 storyboard sheet panels alone do not force a split
43
43
  - target detail: dense professional storyboard direction, concrete blocking and camera language, no decorative prose
44
- - storyboard art grammar: black-and-white rough pencil drawings, minimal detail, rapid gesture energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
44
+ - storyboard art grammar: white paper 16:9 production storyboard sheet, actual drawings black and white only, rough pencil lines, minimal detail, fast gesture drawing energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
45
+ - hard negative style lock: do not create photorealistic cinematic stills, full-color rendered panels, concept art, movie frames, underwater/color-grade panels, 3D render, anime, CGI, or polished illustration
45
46
  - annotation grammar: red arrows = body movement, blue arrows = camera movement, green marks = framing/composition, orange marks = lighting direction, purple marks = vocal/emotional emphasis, black text = very short lens notes and panel labels
46
47
  - continuity: include previous shot handoff, next shot handoff, shared `visual_world`, screen direction, lighting, and action rhythm
47
48
 
@@ -76,9 +77,10 @@ Seedance 2.0:
76
77
  - Map character sheet images to `@Image1`, `@Image2`, ... with legacy aliases `@image1`, `@image2`, ...
77
78
  - Map the generated shot storyboard to the next image token, for example one character means `@Image2`, two characters means `@Image3`.
78
79
  - Character image tokens control identity, face, body proportions, wardrobe, accessories, and visible props.
79
- - The storyboard token controls composition, blocking, camera direction, timing, action rhythm, and phase order only.
80
- - Follow generated storyboard panels left-to-right, top-to-bottom. Do not reinterpret the action, pose logic, camera angle, emotional progression, frame variety, or final pose.
81
- - Treat storyboard arrows, labels, lens notes, and colored marks as planning annotations only; never render them into the video.
80
+ - The storyboard token is the complete visual/action/camera/choreography source and controls composition, blocking, camera direction, timing, action rhythm, framing variety, final pose, and phase order only.
81
+ - Follow all storyboard beats left-to-right, top-to-bottom. Do not reinterpret pose, action, camera angle, emotional progression, framing variety, movement logic, shot order, or final pose.
82
+ - Compress the full 12-beat default storyboard sheet into the requested duration as readable motion snapshots while preserving the duration-aware video phase budget.
83
+ - Treat storyboard arrows, labels, notes, lens notes, page headers, panel borders, and colored marks as planning annotations only; never render them into the video.
82
84
  - Use explicit timeline phases when the storyboard has multiple beats.
83
85
  - Use `No scene cuts throughout, one continuous shot` only for a true single uninterrupted camera move.
84
86
  - For multi-phase storyboard prompts, use only the planned phase transitions and do not add unplanned cuts.
@@ -37,7 +37,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
37
37
  - 4-6 seconds: 1-2 video phases
38
38
  - 7-10 seconds: 2-3 video phases
39
39
  - 11-15 seconds: 3-4 video phases
40
- - GPT Image 2 storyboard sheet may contain 1-12 panels
40
+ - GPT Image 2 storyboard sheet defaults to 12 panels; explicit panel hints may request 1-12 panels
41
41
  - 5+ distinct real video phases, scene changes, or location/action blocks: split into multiple `SHOTNN.md` files
42
42
  5. Build `visual_world`:
43
43
  - environment
@@ -48,6 +48,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
48
48
  6. Generate one GPT Image 2 storyboard prompt per shot:
49
49
  - use character sheets as the only identity source
50
50
  - use optional storyboard guide only for composition, blocking, camera, timing, and rhythm
51
+ - enforce white-paper, black-and-white rough pencil production storyboard artwork; only annotation arrows/marks may use color
51
52
  - include previous shot handoff and next shot handoff
52
53
  - preserve shared location, lighting, screen direction, action rhythm, and scene continuity
53
54
  7. Build model prompt bundle:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milenyumai/film-kit",
3
- "version": "2.3.5",
3
+ "version": "2.3.6",
4
4
  "description": "Single-package Film-Kit distribution with preset-driven cinematic runtime setup for OpenAI Codex App, Claude Code, Cursor, Copilot, and Antigravity.",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",
@@ -36,12 +36,13 @@ For each shot, generate a professional GPT Image 2 storyboard prompt:
36
36
 
37
37
  - provider: `gpt-image-2`
38
38
  - aspect ratio: `16:9`
39
- - storyboard sheet panel budget: default follows the duration-aware phase budget, but an explicit storyboard panel hint may request 1-12 panels in one GPT Image 2 storyboard sheet
39
+ - storyboard sheet panel budget: default is 12 cinematic panels in one GPT Image 2 storyboard sheet; an explicit storyboard panel hint may request 1-12 panels
40
40
  - video phase budget: 4-6s = 1-2 phases, 7-10s = 2-3 phases, 11-15s = 3-4 phases
41
41
  - hard cap: max 4 video phases per shot unless the configured project cap is lower
42
42
  - split policy: 5+ distinct real video phases, scene changes, or location/action blocks must become separate chained `SHOTNN.md` files; 5-12 storyboard sheet panels alone do not force a split
43
43
  - target detail: dense professional storyboard direction, concrete blocking and camera language, no decorative prose
44
- - storyboard art grammar: black-and-white rough pencil drawings, minimal detail, rapid gesture energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
44
+ - storyboard art grammar: white paper 16:9 production storyboard sheet, actual drawings black and white only, rough pencil lines, minimal detail, fast gesture drawing energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
45
+ - hard negative style lock: do not create photorealistic cinematic stills, full-color rendered panels, concept art, movie frames, underwater/color-grade panels, 3D render, anime, CGI, or polished illustration
45
46
  - annotation grammar: red arrows = body movement, blue arrows = camera movement, green marks = framing/composition, orange marks = lighting direction, purple marks = vocal/emotional emphasis, black text = very short lens notes and panel labels
46
47
  - continuity: include previous shot handoff, next shot handoff, shared `visual_world`, screen direction, lighting, and action rhythm
47
48
 
@@ -76,9 +77,10 @@ Seedance 2.0:
76
77
  - Map character sheet images to `@Image1`, `@Image2`, ... with legacy aliases `@image1`, `@image2`, ...
77
78
  - Map the generated shot storyboard to the next image token, for example one character means `@Image2`, two characters means `@Image3`.
78
79
  - Character image tokens control identity, face, body proportions, wardrobe, accessories, and visible props.
79
- - The storyboard token controls composition, blocking, camera direction, timing, action rhythm, and phase order only.
80
- - Follow generated storyboard panels left-to-right, top-to-bottom. Do not reinterpret the action, pose logic, camera angle, emotional progression, frame variety, or final pose.
81
- - Treat storyboard arrows, labels, lens notes, and colored marks as planning annotations only; never render them into the video.
80
+ - The storyboard token is the complete visual/action/camera/choreography source and controls composition, blocking, camera direction, timing, action rhythm, framing variety, final pose, and phase order only.
81
+ - Follow all storyboard beats left-to-right, top-to-bottom. Do not reinterpret pose, action, camera angle, emotional progression, framing variety, movement logic, shot order, or final pose.
82
+ - Compress the full 12-beat default storyboard sheet into the requested duration as readable motion snapshots while preserving the duration-aware video phase budget.
83
+ - Treat storyboard arrows, labels, notes, lens notes, page headers, panel borders, and colored marks as planning annotations only; never render them into the video.
82
84
  - Use explicit timeline phases when the storyboard has multiple beats.
83
85
  - Use `No scene cuts throughout, one continuous shot` only for a true single uninterrupted camera move.
84
86
  - For multi-phase storyboard prompts, use only the planned phase transitions and do not add unplanned cuts.
@@ -37,7 +37,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
37
37
  - 4-6 seconds: 1-2 video phases
38
38
  - 7-10 seconds: 2-3 video phases
39
39
  - 11-15 seconds: 3-4 video phases
40
- - GPT Image 2 storyboard sheet may contain 1-12 panels
40
+ - GPT Image 2 storyboard sheet defaults to 12 panels; explicit panel hints may request 1-12 panels
41
41
  - 5+ distinct real video phases, scene changes, or location/action blocks: split into multiple `SHOTNN.md` files
42
42
  5. Build `visual_world`:
43
43
  - environment
@@ -48,6 +48,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
48
48
  6. Generate one GPT Image 2 storyboard prompt per shot:
49
49
  - use character sheets as the only identity source
50
50
  - use optional storyboard guide only for composition, blocking, camera, timing, and rhythm
51
+ - enforce white-paper, black-and-white rough pencil production storyboard artwork; only annotation arrows/marks may use color
51
52
  - include previous shot handoff and next shot handoff
52
53
  - preserve shared location, lighting, screen direction, action rhythm, and scene continuity
53
54
  7. Build model prompt bundle:
@@ -95,3 +96,19 @@ npx @milenyumai/film-kit generate-storyboard \
95
96
  - Missing GPT Image 2 per-shot storyboard prompt: output is invalid.
96
97
  - Missing `Avoid` / negative prompt: output is invalid.
97
98
  - Kling prompt missing required block structure: output is invalid.
99
+ - Main-shot `ILK FRAME`, `İLK FRAME`, `SON FRAME`, `SHOTNN_START`, `SHOTNN_END`, exact first-frame reuse instructions, or mandatory Start+End transition fields: output is invalid in storyboard-reference mode.
100
+
101
+ ## Required SHOTNN.md Sections
102
+
103
+ Every storyboard-reference shot file must include:
104
+
105
+ - `Model Control`
106
+ - `Input Asset Roles`
107
+ - `Reference Asset Requirements`
108
+ - `GPT Image 2 Character Sheet Prompt` or a link to the generated character sheet prompt
109
+ - `GPT Image 2 SHOTNN Storyboard Prompt`
110
+ - `Storyboard Plan`
111
+ - `Audio Plan`
112
+ - `Seedance 2.0 Ready Video Prompt` or model-ready equivalent
113
+ - `Coverage Shots`
114
+ - `QA Verdict`
@@ -36,12 +36,13 @@ For each shot, generate a professional GPT Image 2 storyboard prompt:
36
36
 
37
37
  - provider: `gpt-image-2`
38
38
  - aspect ratio: `16:9`
39
- - storyboard sheet panel budget: default follows the duration-aware phase budget, but an explicit storyboard panel hint may request 1-12 panels in one GPT Image 2 storyboard sheet
39
+ - storyboard sheet panel budget: default is 12 cinematic panels in one GPT Image 2 storyboard sheet; an explicit storyboard panel hint may request 1-12 panels
40
40
  - video phase budget: 4-6s = 1-2 phases, 7-10s = 2-3 phases, 11-15s = 3-4 phases
41
41
  - hard cap: max 4 video phases per shot unless the configured project cap is lower
42
42
  - split policy: 5+ distinct real video phases, scene changes, or location/action blocks must become separate chained `SHOTNN.md` files; 5-12 storyboard sheet panels alone do not force a split
43
43
  - target detail: dense professional storyboard direction, concrete blocking and camera language, no decorative prose
44
- - storyboard art grammar: black-and-white rough pencil drawings, minimal detail, rapid gesture energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
44
+ - storyboard art grammar: white paper 16:9 production storyboard sheet, actual drawings black and white only, rough pencil lines, minimal detail, fast gesture drawing energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
45
+ - hard negative style lock: do not create photorealistic cinematic stills, full-color rendered panels, concept art, movie frames, underwater/color-grade panels, 3D render, anime, CGI, or polished illustration
45
46
  - annotation grammar: red arrows = body movement, blue arrows = camera movement, green marks = framing/composition, orange marks = lighting direction, purple marks = vocal/emotional emphasis, black text = very short lens notes and panel labels
46
47
  - continuity: include previous shot handoff, next shot handoff, shared `visual_world`, screen direction, lighting, and action rhythm
47
48
 
@@ -76,9 +77,10 @@ Seedance 2.0:
76
77
  - Map character sheet images to `@Image1`, `@Image2`, ... with legacy aliases `@image1`, `@image2`, ...
77
78
  - Map the generated shot storyboard to the next image token, for example one character means `@Image2`, two characters means `@Image3`.
78
79
  - Character image tokens control identity, face, body proportions, wardrobe, accessories, and visible props.
79
- - The storyboard token controls composition, blocking, camera direction, timing, action rhythm, and phase order only.
80
- - Follow generated storyboard panels left-to-right, top-to-bottom. Do not reinterpret the action, pose logic, camera angle, emotional progression, frame variety, or final pose.
81
- - Treat storyboard arrows, labels, lens notes, and colored marks as planning annotations only; never render them into the video.
80
+ - The storyboard token is the complete visual/action/camera/choreography source and controls composition, blocking, camera direction, timing, action rhythm, framing variety, final pose, and phase order only.
81
+ - Follow all storyboard beats left-to-right, top-to-bottom. Do not reinterpret pose, action, camera angle, emotional progression, framing variety, movement logic, shot order, or final pose.
82
+ - Compress the full 12-beat default storyboard sheet into the requested duration as readable motion snapshots while preserving the duration-aware video phase budget.
83
+ - Treat storyboard arrows, labels, notes, lens notes, page headers, panel borders, and colored marks as planning annotations only; never render them into the video.
82
84
  - Use explicit timeline phases when the storyboard has multiple beats.
83
85
  - Use `No scene cuts throughout, one continuous shot` only for a true single uninterrupted camera move.
84
86
  - For multi-phase storyboard prompts, use only the planned phase transitions and do not add unplanned cuts.
@@ -37,7 +37,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
37
37
  - 4-6 seconds: 1-2 video phases
38
38
  - 7-10 seconds: 2-3 video phases
39
39
  - 11-15 seconds: 3-4 video phases
40
- - GPT Image 2 storyboard sheet may contain 1-12 panels
40
+ - GPT Image 2 storyboard sheet defaults to 12 panels; explicit panel hints may request 1-12 panels
41
41
  - 5+ distinct real video phases, scene changes, or location/action blocks: split into multiple `SHOTNN.md` files
42
42
  5. Build `visual_world`:
43
43
  - environment
@@ -48,6 +48,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
48
48
  6. Generate one GPT Image 2 storyboard prompt per shot:
49
49
  - use character sheets as the only identity source
50
50
  - use optional storyboard guide only for composition, blocking, camera, timing, and rhythm
51
+ - enforce white-paper, black-and-white rough pencil production storyboard artwork; only annotation arrows/marks may use color
51
52
  - include previous shot handoff and next shot handoff
52
53
  - preserve shared location, lighting, screen direction, action rhythm, and scene continuity
53
54
  7. Build model prompt bundle:
@@ -95,3 +96,19 @@ npx @milenyumai/film-kit generate-storyboard \
95
96
  - Missing GPT Image 2 per-shot storyboard prompt: output is invalid.
96
97
  - Missing `Avoid` / negative prompt: output is invalid.
97
98
  - Kling prompt missing required block structure: output is invalid.
99
+ - Main-shot `ILK FRAME`, `İLK FRAME`, `SON FRAME`, `SHOTNN_START`, `SHOTNN_END`, exact first-frame reuse instructions, or mandatory Start+End transition fields: output is invalid in storyboard-reference mode.
100
+
101
+ ## Required SHOTNN.md Sections
102
+
103
+ Every storyboard-reference shot file must include:
104
+
105
+ - `Model Control`
106
+ - `Input Asset Roles`
107
+ - `Reference Asset Requirements`
108
+ - `GPT Image 2 Character Sheet Prompt` or a link to the generated character sheet prompt
109
+ - `GPT Image 2 SHOTNN Storyboard Prompt`
110
+ - `Storyboard Plan`
111
+ - `Audio Plan`
112
+ - `Seedance 2.0 Ready Video Prompt` or model-ready equivalent
113
+ - `Coverage Shots`
114
+ - `QA Verdict`
@@ -36,12 +36,13 @@ For each shot, generate a professional GPT Image 2 storyboard prompt:
36
36
 
37
37
  - provider: `gpt-image-2`
38
38
  - aspect ratio: `16:9`
39
- - storyboard sheet panel budget: default follows the duration-aware phase budget, but an explicit storyboard panel hint may request 1-12 panels in one GPT Image 2 storyboard sheet
39
+ - storyboard sheet panel budget: default is 12 cinematic panels in one GPT Image 2 storyboard sheet; an explicit storyboard panel hint may request 1-12 panels
40
40
  - video phase budget: 4-6s = 1-2 phases, 7-10s = 2-3 phases, 11-15s = 3-4 phases
41
41
  - hard cap: max 4 video phases per shot unless the configured project cap is lower
42
42
  - split policy: 5+ distinct real video phases, scene changes, or location/action blocks must become separate chained `SHOTNN.md` files; 5-12 storyboard sheet panels alone do not force a split
43
43
  - target detail: dense professional storyboard direction, concrete blocking and camera language, no decorative prose
44
- - storyboard art grammar: black-and-white rough pencil drawings, minimal detail, rapid gesture energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
44
+ - storyboard art grammar: white paper 16:9 production storyboard sheet, actual drawings black and white only, rough pencil lines, minimal detail, fast gesture drawing energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
45
+ - hard negative style lock: do not create photorealistic cinematic stills, full-color rendered panels, concept art, movie frames, underwater/color-grade panels, 3D render, anime, CGI, or polished illustration
45
46
  - annotation grammar: red arrows = body movement, blue arrows = camera movement, green marks = framing/composition, orange marks = lighting direction, purple marks = vocal/emotional emphasis, black text = very short lens notes and panel labels
46
47
  - continuity: include previous shot handoff, next shot handoff, shared `visual_world`, screen direction, lighting, and action rhythm
47
48
 
@@ -76,9 +77,10 @@ Seedance 2.0:
76
77
  - Map character sheet images to `@Image1`, `@Image2`, ... with legacy aliases `@image1`, `@image2`, ...
77
78
  - Map the generated shot storyboard to the next image token, for example one character means `@Image2`, two characters means `@Image3`.
78
79
  - Character image tokens control identity, face, body proportions, wardrobe, accessories, and visible props.
79
- - The storyboard token controls composition, blocking, camera direction, timing, action rhythm, and phase order only.
80
- - Follow generated storyboard panels left-to-right, top-to-bottom. Do not reinterpret the action, pose logic, camera angle, emotional progression, frame variety, or final pose.
81
- - Treat storyboard arrows, labels, lens notes, and colored marks as planning annotations only; never render them into the video.
80
+ - The storyboard token is the complete visual/action/camera/choreography source and controls composition, blocking, camera direction, timing, action rhythm, framing variety, final pose, and phase order only.
81
+ - Follow all storyboard beats left-to-right, top-to-bottom. Do not reinterpret pose, action, camera angle, emotional progression, framing variety, movement logic, shot order, or final pose.
82
+ - Compress the full 12-beat default storyboard sheet into the requested duration as readable motion snapshots while preserving the duration-aware video phase budget.
83
+ - Treat storyboard arrows, labels, notes, lens notes, page headers, panel borders, and colored marks as planning annotations only; never render them into the video.
82
84
  - Use explicit timeline phases when the storyboard has multiple beats.
83
85
  - Use `No scene cuts throughout, one continuous shot` only for a true single uninterrupted camera move.
84
86
  - For multi-phase storyboard prompts, use only the planned phase transitions and do not add unplanned cuts.
@@ -37,7 +37,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
37
37
  - 4-6 seconds: 1-2 video phases
38
38
  - 7-10 seconds: 2-3 video phases
39
39
  - 11-15 seconds: 3-4 video phases
40
- - GPT Image 2 storyboard sheet may contain 1-12 panels
40
+ - GPT Image 2 storyboard sheet defaults to 12 panels; explicit panel hints may request 1-12 panels
41
41
  - 5+ distinct real video phases, scene changes, or location/action blocks: split into multiple `SHOTNN.md` files
42
42
  5. Build `visual_world`:
43
43
  - environment
@@ -48,6 +48,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
48
48
  6. Generate one GPT Image 2 storyboard prompt per shot:
49
49
  - use character sheets as the only identity source
50
50
  - use optional storyboard guide only for composition, blocking, camera, timing, and rhythm
51
+ - enforce white-paper, black-and-white rough pencil production storyboard artwork; only annotation arrows/marks may use color
51
52
  - include previous shot handoff and next shot handoff
52
53
  - preserve shared location, lighting, screen direction, action rhythm, and scene continuity
53
54
  7. Build model prompt bundle:
@@ -95,3 +96,19 @@ npx @milenyumai/film-kit generate-storyboard \
95
96
  - Missing GPT Image 2 per-shot storyboard prompt: output is invalid.
96
97
  - Missing `Avoid` / negative prompt: output is invalid.
97
98
  - Kling prompt missing required block structure: output is invalid.
99
+ - Main-shot `ILK FRAME`, `İLK FRAME`, `SON FRAME`, `SHOTNN_START`, `SHOTNN_END`, exact first-frame reuse instructions, or mandatory Start+End transition fields: output is invalid in storyboard-reference mode.
100
+
101
+ ## Required SHOTNN.md Sections
102
+
103
+ Every storyboard-reference shot file must include:
104
+
105
+ - `Model Control`
106
+ - `Input Asset Roles`
107
+ - `Reference Asset Requirements`
108
+ - `GPT Image 2 Character Sheet Prompt` or a link to the generated character sheet prompt
109
+ - `GPT Image 2 SHOTNN Storyboard Prompt`
110
+ - `Storyboard Plan`
111
+ - `Audio Plan`
112
+ - `Seedance 2.0 Ready Video Prompt` or model-ready equivalent
113
+ - `Coverage Shots`
114
+ - `QA Verdict`
@@ -36,12 +36,13 @@ For each shot, generate a professional GPT Image 2 storyboard prompt:
36
36
 
37
37
  - provider: `gpt-image-2`
38
38
  - aspect ratio: `16:9`
39
- - storyboard sheet panel budget: default follows the duration-aware phase budget, but an explicit storyboard panel hint may request 1-12 panels in one GPT Image 2 storyboard sheet
39
+ - storyboard sheet panel budget: default is 12 cinematic panels in one GPT Image 2 storyboard sheet; an explicit storyboard panel hint may request 1-12 panels
40
40
  - video phase budget: 4-6s = 1-2 phases, 7-10s = 2-3 phases, 11-15s = 3-4 phases
41
41
  - hard cap: max 4 video phases per shot unless the configured project cap is lower
42
42
  - split policy: 5+ distinct real video phases, scene changes, or location/action blocks must become separate chained `SHOTNN.md` files; 5-12 storyboard sheet panels alone do not force a split
43
43
  - target detail: dense professional storyboard direction, concrete blocking and camera language, no decorative prose
44
- - storyboard art grammar: black-and-white rough pencil drawings, minimal detail, rapid gesture energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
44
+ - storyboard art grammar: white paper 16:9 production storyboard sheet, actual drawings black and white only, rough pencil lines, minimal detail, fast gesture drawing energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
45
+ - hard negative style lock: do not create photorealistic cinematic stills, full-color rendered panels, concept art, movie frames, underwater/color-grade panels, 3D render, anime, CGI, or polished illustration
45
46
  - annotation grammar: red arrows = body movement, blue arrows = camera movement, green marks = framing/composition, orange marks = lighting direction, purple marks = vocal/emotional emphasis, black text = very short lens notes and panel labels
46
47
  - continuity: include previous shot handoff, next shot handoff, shared `visual_world`, screen direction, lighting, and action rhythm
47
48
 
@@ -76,9 +77,10 @@ Seedance 2.0:
76
77
  - Map character sheet images to `@Image1`, `@Image2`, ... with legacy aliases `@image1`, `@image2`, ...
77
78
  - Map the generated shot storyboard to the next image token, for example one character means `@Image2`, two characters means `@Image3`.
78
79
  - Character image tokens control identity, face, body proportions, wardrobe, accessories, and visible props.
79
- - The storyboard token controls composition, blocking, camera direction, timing, action rhythm, and phase order only.
80
- - Follow generated storyboard panels left-to-right, top-to-bottom. Do not reinterpret the action, pose logic, camera angle, emotional progression, frame variety, or final pose.
81
- - Treat storyboard arrows, labels, lens notes, and colored marks as planning annotations only; never render them into the video.
80
+ - The storyboard token is the complete visual/action/camera/choreography source and controls composition, blocking, camera direction, timing, action rhythm, framing variety, final pose, and phase order only.
81
+ - Follow all storyboard beats left-to-right, top-to-bottom. Do not reinterpret pose, action, camera angle, emotional progression, framing variety, movement logic, shot order, or final pose.
82
+ - Compress the full 12-beat default storyboard sheet into the requested duration as readable motion snapshots while preserving the duration-aware video phase budget.
83
+ - Treat storyboard arrows, labels, notes, lens notes, page headers, panel borders, and colored marks as planning annotations only; never render them into the video.
82
84
  - Use explicit timeline phases when the storyboard has multiple beats.
83
85
  - Use `No scene cuts throughout, one continuous shot` only for a true single uninterrupted camera move.
84
86
  - For multi-phase storyboard prompts, use only the planned phase transitions and do not add unplanned cuts.
@@ -37,7 +37,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
37
37
  - 4-6 seconds: 1-2 video phases
38
38
  - 7-10 seconds: 2-3 video phases
39
39
  - 11-15 seconds: 3-4 video phases
40
- - GPT Image 2 storyboard sheet may contain 1-12 panels
40
+ - GPT Image 2 storyboard sheet defaults to 12 panels; explicit panel hints may request 1-12 panels
41
41
  - 5+ distinct real video phases, scene changes, or location/action blocks: split into multiple `SHOTNN.md` files
42
42
  5. Build `visual_world`:
43
43
  - environment
@@ -48,6 +48,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
48
48
  6. Generate one GPT Image 2 storyboard prompt per shot:
49
49
  - use character sheets as the only identity source
50
50
  - use optional storyboard guide only for composition, blocking, camera, timing, and rhythm
51
+ - enforce white-paper, black-and-white rough pencil production storyboard artwork; only annotation arrows/marks may use color
51
52
  - include previous shot handoff and next shot handoff
52
53
  - preserve shared location, lighting, screen direction, action rhythm, and scene continuity
53
54
  7. Build model prompt bundle:
@@ -95,3 +96,19 @@ npx @milenyumai/film-kit generate-storyboard \
95
96
  - Missing GPT Image 2 per-shot storyboard prompt: output is invalid.
96
97
  - Missing `Avoid` / negative prompt: output is invalid.
97
98
  - Kling prompt missing required block structure: output is invalid.
99
+ - Main-shot `ILK FRAME`, `İLK FRAME`, `SON FRAME`, `SHOTNN_START`, `SHOTNN_END`, exact first-frame reuse instructions, or mandatory Start+End transition fields: output is invalid in storyboard-reference mode.
100
+
101
+ ## Required SHOTNN.md Sections
102
+
103
+ Every storyboard-reference shot file must include:
104
+
105
+ - `Model Control`
106
+ - `Input Asset Roles`
107
+ - `Reference Asset Requirements`
108
+ - `GPT Image 2 Character Sheet Prompt` or a link to the generated character sheet prompt
109
+ - `GPT Image 2 SHOTNN Storyboard Prompt`
110
+ - `Storyboard Plan`
111
+ - `Audio Plan`
112
+ - `Seedance 2.0 Ready Video Prompt` or model-ready equivalent
113
+ - `Coverage Shots`
114
+ - `QA Verdict`
@@ -36,12 +36,13 @@ For each shot, generate a professional GPT Image 2 storyboard prompt:
36
36
 
37
37
  - provider: `gpt-image-2`
38
38
  - aspect ratio: `16:9`
39
- - storyboard sheet panel budget: default follows the duration-aware phase budget, but an explicit storyboard panel hint may request 1-12 panels in one GPT Image 2 storyboard sheet
39
+ - storyboard sheet panel budget: default is 12 cinematic panels in one GPT Image 2 storyboard sheet; an explicit storyboard panel hint may request 1-12 panels
40
40
  - video phase budget: 4-6s = 1-2 phases, 7-10s = 2-3 phases, 11-15s = 3-4 phases
41
41
  - hard cap: max 4 video phases per shot unless the configured project cap is lower
42
42
  - split policy: 5+ distinct real video phases, scene changes, or location/action blocks must become separate chained `SHOTNN.md` files; 5-12 storyboard sheet panels alone do not force a split
43
43
  - target detail: dense professional storyboard direction, concrete blocking and camera language, no decorative prose
44
- - storyboard art grammar: black-and-white rough pencil drawings, minimal detail, rapid gesture energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
44
+ - storyboard art grammar: white paper 16:9 production storyboard sheet, actual drawings black and white only, rough pencil lines, minimal detail, fast gesture drawing energy, simple anatomy construction, strong silhouette readability, unfinished previsualization feel
45
+ - hard negative style lock: do not create photorealistic cinematic stills, full-color rendered panels, concept art, movie frames, underwater/color-grade panels, 3D render, anime, CGI, or polished illustration
45
46
  - annotation grammar: red arrows = body movement, blue arrows = camera movement, green marks = framing/composition, orange marks = lighting direction, purple marks = vocal/emotional emphasis, black text = very short lens notes and panel labels
46
47
  - continuity: include previous shot handoff, next shot handoff, shared `visual_world`, screen direction, lighting, and action rhythm
47
48
 
@@ -76,9 +77,10 @@ Seedance 2.0:
76
77
  - Map character sheet images to `@Image1`, `@Image2`, ... with legacy aliases `@image1`, `@image2`, ...
77
78
  - Map the generated shot storyboard to the next image token, for example one character means `@Image2`, two characters means `@Image3`.
78
79
  - Character image tokens control identity, face, body proportions, wardrobe, accessories, and visible props.
79
- - The storyboard token controls composition, blocking, camera direction, timing, action rhythm, and phase order only.
80
- - Follow generated storyboard panels left-to-right, top-to-bottom. Do not reinterpret the action, pose logic, camera angle, emotional progression, frame variety, or final pose.
81
- - Treat storyboard arrows, labels, lens notes, and colored marks as planning annotations only; never render them into the video.
80
+ - The storyboard token is the complete visual/action/camera/choreography source and controls composition, blocking, camera direction, timing, action rhythm, framing variety, final pose, and phase order only.
81
+ - Follow all storyboard beats left-to-right, top-to-bottom. Do not reinterpret pose, action, camera angle, emotional progression, framing variety, movement logic, shot order, or final pose.
82
+ - Compress the full 12-beat default storyboard sheet into the requested duration as readable motion snapshots while preserving the duration-aware video phase budget.
83
+ - Treat storyboard arrows, labels, notes, lens notes, page headers, panel borders, and colored marks as planning annotations only; never render them into the video.
82
84
  - Use explicit timeline phases when the storyboard has multiple beats.
83
85
  - Use `No scene cuts throughout, one continuous shot` only for a true single uninterrupted camera move.
84
86
  - For multi-phase storyboard prompts, use only the planned phase transitions and do not add unplanned cuts.
@@ -37,7 +37,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
37
37
  - 4-6 seconds: 1-2 video phases
38
38
  - 7-10 seconds: 2-3 video phases
39
39
  - 11-15 seconds: 3-4 video phases
40
- - GPT Image 2 storyboard sheet may contain 1-12 panels
40
+ - GPT Image 2 storyboard sheet defaults to 12 panels; explicit panel hints may request 1-12 panels
41
41
  - 5+ distinct real video phases, scene changes, or location/action blocks: split into multiple `SHOTNN.md` files
42
42
  5. Build `visual_world`:
43
43
  - environment
@@ -48,6 +48,7 @@ description: Generate character sheet prompts, per-shot GPT Image 2 storyboard p
48
48
  6. Generate one GPT Image 2 storyboard prompt per shot:
49
49
  - use character sheets as the only identity source
50
50
  - use optional storyboard guide only for composition, blocking, camera, timing, and rhythm
51
+ - enforce white-paper, black-and-white rough pencil production storyboard artwork; only annotation arrows/marks may use color
51
52
  - include previous shot handoff and next shot handoff
52
53
  - preserve shared location, lighting, screen direction, action rhythm, and scene continuity
53
54
  7. Build model prompt bundle:
@@ -95,3 +96,19 @@ npx @milenyumai/film-kit generate-storyboard \
95
96
  - Missing GPT Image 2 per-shot storyboard prompt: output is invalid.
96
97
  - Missing `Avoid` / negative prompt: output is invalid.
97
98
  - Kling prompt missing required block structure: output is invalid.
99
+ - Main-shot `ILK FRAME`, `İLK FRAME`, `SON FRAME`, `SHOTNN_START`, `SHOTNN_END`, exact first-frame reuse instructions, or mandatory Start+End transition fields: output is invalid in storyboard-reference mode.
100
+
101
+ ## Required SHOTNN.md Sections
102
+
103
+ Every storyboard-reference shot file must include:
104
+
105
+ - `Model Control`
106
+ - `Input Asset Roles`
107
+ - `Reference Asset Requirements`
108
+ - `GPT Image 2 Character Sheet Prompt` or a link to the generated character sheet prompt
109
+ - `GPT Image 2 SHOTNN Storyboard Prompt`
110
+ - `Storyboard Plan`
111
+ - `Audio Plan`
112
+ - `Seedance 2.0 Ready Video Prompt` or model-ready equivalent
113
+ - `Coverage Shots`
114
+ - `QA Verdict`