@milenyumai/film-kit 2.3.5 → 2.3.7
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 +107 -3
- package/build/lib/storyboard-reference/adapters/seedance20.d.ts +1 -0
- package/build/lib/storyboard-reference/adapters/seedance20.js +27 -11
- package/build/lib/storyboard-reference/prompt-bundle-builder.js +27 -8
- package/build/lib/storyboard-reference/types.d.ts +10 -1
- package/build/lib/storyboard-reference/validators.js +5 -0
- package/content/skills/storyboard-reference/SKILL.md +7 -5
- package/content/workflows/generate-storyboard.md +2 -1
- package/package.json +1 -1
- package/packages/gpt-image-smart/content/skills/storyboard-reference/SKILL.md +7 -5
- package/packages/gpt-image-smart/content/workflows/generate-storyboard.md +18 -1
- package/packages/hybrid/content/skills/storyboard-reference/SKILL.md +7 -5
- package/packages/hybrid/content/workflows/generate-storyboard.md +18 -1
- package/packages/hybrid-smart/content/skills/storyboard-reference/SKILL.md +7 -5
- package/packages/hybrid-smart/content/workflows/generate-storyboard.md +18 -1
- package/packages/multi/content/skills/storyboard-reference/SKILL.md +7 -5
- package/packages/multi/content/workflows/generate-storyboard.md +18 -1
- package/packages/studio/content/skills/storyboard-reference/SKILL.md +7 -5
- package/packages/studio/content/workflows/generate-storyboard.md +18 -1
package/README.md
CHANGED
|
@@ -126,6 +126,109 @@ When the active model is not Kling, generated runtime files intentionally render
|
|
|
126
126
|
|
|
127
127
|
Use this mode when the source material is a character reference image plus a brief rather than explicit start/end frames. Film-Kit first prepares character-sheet prompts, then per-shot storyboard prompts. Optional storyboard images can be supplied as loose composition/timing guides.
|
|
128
128
|
|
|
129
|
+
### Storyboard Mode Setup For Supported Tools
|
|
130
|
+
|
|
131
|
+
Storyboard-reference mode is installed from the same canonical package for every tool:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
npm install --save-dev @milenyumai/film-kit
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
You can also skip local install and use package-direct `npx` commands. Do not install or run old standalone preset package names.
|
|
138
|
+
|
|
139
|
+
Create your input files first:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
mkdir -p refs
|
|
143
|
+
# Put the exact character identity image here:
|
|
144
|
+
# refs/character.png
|
|
145
|
+
#
|
|
146
|
+
# Put the video brief here:
|
|
147
|
+
# scenario.md
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Install the storyboard runtime for all supported tools at once:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npx @milenyumai/film-kit init \
|
|
154
|
+
--preset single \
|
|
155
|
+
--model seedance-2.0 \
|
|
156
|
+
--reference-mode storyboard-reference \
|
|
157
|
+
--platforms codex,claude,cursor,copilot,antigravity \
|
|
158
|
+
--max-storyboard-phases 4
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Supported tool-specific setup commands:
|
|
162
|
+
|
|
163
|
+
| Tool | Setup command | Main files created |
|
|
164
|
+
|---|---|---|
|
|
165
|
+
| OpenAI Codex App | `npx @milenyumai/film-kit init --preset single --model seedance-2.0 --reference-mode storyboard-reference --platforms codex --max-storyboard-phases 4` | `AGENTS.md`, `.codex/config.toml`, `.codex/agents/*.toml`, `.agents/skills/storyboard-reference/SKILL.md` |
|
|
166
|
+
| Claude Code | `npx @milenyumai/film-kit init --preset single --model seedance-2.0 --reference-mode storyboard-reference --platforms claude --max-storyboard-phases 4` | `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*`, `.claude/agents/prompt-engineer.md` |
|
|
167
|
+
| Cursor | `npx @milenyumai/film-kit init --preset single --model seedance-2.0 --reference-mode storyboard-reference --platforms cursor --max-storyboard-phases 4` | `.cursorrules`, `.cursor/rules/global.mdc`, `.agent/workflows/generate-storyboard.md` |
|
|
168
|
+
| GitHub Copilot | `npx @milenyumai/film-kit init --preset single --model seedance-2.0 --reference-mode storyboard-reference --platforms copilot --max-storyboard-phases 4` | `.github/copilot-instructions.md`, `.github/instructions/shotforge.instructions.md` |
|
|
169
|
+
| Antigravity | `npx @milenyumai/film-kit init --preset single --model seedance-2.0 --reference-mode storyboard-reference --platforms antigravity --max-storyboard-phases 4` | `.agent/skills/shotforge-generate/SKILL.md`, `.agent/workflows/generate-storyboard.md`, `.agent/skills/storyboard-reference/SKILL.md` |
|
|
170
|
+
|
|
171
|
+
For a studio-style project with refs and render-stage metadata, use `studio` instead:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
npx @milenyumai/film-kit init \
|
|
175
|
+
--preset studio \
|
|
176
|
+
--model seedance-2.0 \
|
|
177
|
+
--reference-mode storyboard-reference \
|
|
178
|
+
--platforms codex,claude,cursor,copilot,antigravity \
|
|
179
|
+
--refs-dir ./refs \
|
|
180
|
+
--gpt-image-size 2048x1152 \
|
|
181
|
+
--gpt-image-quality medium \
|
|
182
|
+
--gpt-image-format png \
|
|
183
|
+
--max-storyboard-phases 4
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
After setup, open the Git project root in your tool. Use this as the first prompt in Codex, Claude Code, Cursor, Copilot Chat, or Antigravity:
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
Read the Film-Kit storyboard-reference instructions in AGENTS.md and .agent/workflows/generate-storyboard.md.
|
|
190
|
+
|
|
191
|
+
Use refs/character.png as the exact character identity reference.
|
|
192
|
+
Use scenario.md as the video brief.
|
|
193
|
+
Target model: seedance-2.0.
|
|
194
|
+
Duration: 15 seconds.
|
|
195
|
+
Aspect ratio: 16:9.
|
|
196
|
+
|
|
197
|
+
Generate the storyboard-reference package only:
|
|
198
|
+
- one GPT Image 2 character sheet prompt
|
|
199
|
+
- one 12-panel raw-pencil GPT Image 2 storyboard prompt
|
|
200
|
+
- one Seedance 2.0 video prompt that uses the generated storyboard as @Image2
|
|
201
|
+
- outputs/storyboard-prompt.md
|
|
202
|
+
- outputs/storyboard-prompts/SHOT01-GPT-IMAGE-2-STORYBOARD.md
|
|
203
|
+
- outputs/prompt-bundles/SHOT01.bundle.json
|
|
204
|
+
- outputs/shots/SHOT01.md
|
|
205
|
+
- outputs/reports/STORYBOARD-REFERENCE-QA.md
|
|
206
|
+
|
|
207
|
+
Do not create ILK FRAME, İLK FRAME, SON FRAME, SHOT_START, or SHOT_END sections.
|
|
208
|
+
Do not render images or video yet; first produce and QA the prompt package.
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
If your tool supports slash-style workflow prompts, this shorter first prompt is also valid:
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
/generate
|
|
215
|
+
Storyboard-reference mode. Character reference: refs/character.png. Brief: scenario.md. Model: seedance-2.0. Duration: 15s. Aspect: 16:9. Generate the 12-panel raw-pencil storyboard prompt and Seedance video prompt package only. No ILK/SON frames. No rendering yet.
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Terminal-only generation is available when you want the package files without opening an agent tool:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
npx @milenyumai/film-kit generate-storyboard \
|
|
222
|
+
--character-ref ./refs/character.png \
|
|
223
|
+
--brief ./scenario.md \
|
|
224
|
+
--models seedance-2.0 \
|
|
225
|
+
--duration 15 \
|
|
226
|
+
--aspect 16:9 \
|
|
227
|
+
--output-dir ./outputs
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
After the command finishes, start with `outputs/storyboard-prompt.md`. It is the ready-to-use GPT Image 2 storyboard image prompt. Then use `outputs/shots/SHOT01.md` or `outputs/prompt-bundles/SHOT01.bundle.json` for the Seedance 2.0 prompt.
|
|
231
|
+
|
|
129
232
|
Initialize a Seedance storyboard-reference runtime:
|
|
130
233
|
|
|
131
234
|
```bash
|
|
@@ -198,9 +301,10 @@ Rules:
|
|
|
198
301
|
- 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
302
|
- 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
303
|
- 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
|
|
304
|
+
- 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.
|
|
305
|
+
- 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
306
|
- 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.
|
|
307
|
+
- `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
308
|
- Speaking shots must bind `Audio Plan.activeSpeakerKey` back to project-level `voiceCast`; broken voice bindings fail QA.
|
|
205
309
|
- Public-figure, celebrity, likeness, logo, trademark, or brand references in the brief, dialogue metadata, or reference metadata are blocked unless safely anonymized first.
|
|
206
310
|
- Phase budget: 4-6s uses 1-2 phases, 7-10s uses 2-3 phases, and 11-15s uses 3-4 phases.
|
|
@@ -219,7 +323,7 @@ CLI flags for direct storyboard bundle generation:
|
|
|
219
323
|
| `--models` | Comma-separated target models: `veo31`, `seedance-2.0`, `kling-3.0` |
|
|
220
324
|
| `--duration` | Duration in seconds per generated shot. Seedance provider range is 4-15 seconds |
|
|
221
325
|
| `--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 |
|
|
326
|
+
| `--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
327
|
| `--max-storyboard-phases` | Upper bound per shot. Default: `4` |
|
|
224
328
|
|
|
225
329
|
## 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
|
|
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
|
|
51
|
-
: `Use the generated storyboard reference ${storyboardToken} as the complete visual
|
|
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
|
-
-
|
|
60
|
-
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
47
|
-
|
|
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
|
-
?
|
|
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: "
|
|
196
|
+
style: "raw-pencil-production-storyboard",
|
|
193
197
|
characterSheetIds,
|
|
194
198
|
externalStoryboardGuideIds,
|
|
195
199
|
previousShotHandoff: input.previousShotHandoff,
|
|
196
200
|
nextShotHandoff: input.nextShotHandoff,
|
|
197
|
-
promptText: `
|
|
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:
|
|
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
|
|
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
|
|
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: "
|
|
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
|
|
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
|
|
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
|
|
81
|
-
-
|
|
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
|
|
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.
|
|
3
|
+
"version": "2.3.7",
|
|
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
|
|
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
|
|
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
|
|
81
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
81
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
81
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
81
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
81
|
-
-
|
|
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
|
|
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`
|