@milenyumai/film-kit 2.0.1 ā 2.2.0
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 +112 -35
- package/build/cli.js +17 -1
- package/build/index.d.ts +3 -1
- package/build/index.js +1 -0
- package/build/lib/cli.d.ts +3 -1
- package/build/lib/cli.js +321 -12
- package/build/lib/configure.js +6 -0
- package/build/lib/defaults.d.ts +3 -1
- package/build/lib/defaults.js +32 -0
- package/build/lib/film-kit.js +76 -4
- package/build/lib/storyboard-reference/adapters/base.d.ts +14 -0
- package/build/lib/storyboard-reference/adapters/base.js +61 -0
- package/build/lib/storyboard-reference/adapters/generic.d.ts +24 -0
- package/build/lib/storyboard-reference/adapters/generic.js +50 -0
- package/build/lib/storyboard-reference/adapters/kling30.d.ts +11 -0
- package/build/lib/storyboard-reference/adapters/kling30.js +102 -0
- package/build/lib/storyboard-reference/adapters/seedance20.d.ts +11 -0
- package/build/lib/storyboard-reference/adapters/seedance20.js +77 -0
- package/build/lib/storyboard-reference/adapters/veo31.d.ts +11 -0
- package/build/lib/storyboard-reference/adapters/veo31.js +75 -0
- package/build/lib/storyboard-reference/asset-role-resolver.d.ts +2 -0
- package/build/lib/storyboard-reference/asset-role-resolver.js +51 -0
- package/build/lib/storyboard-reference/defaults.d.ts +9 -0
- package/build/lib/storyboard-reference/defaults.js +30 -0
- package/build/lib/storyboard-reference/index.d.ts +7 -0
- package/build/lib/storyboard-reference/index.js +6 -0
- package/build/lib/storyboard-reference/output-writer.d.ts +3 -0
- package/build/lib/storyboard-reference/output-writer.js +143 -0
- package/build/lib/storyboard-reference/prompt-bundle-builder.d.ts +2 -0
- package/build/lib/storyboard-reference/prompt-bundle-builder.js +92 -0
- package/build/lib/storyboard-reference/request-normalizer.d.ts +2 -0
- package/build/lib/storyboard-reference/request-normalizer.js +70 -0
- package/build/lib/storyboard-reference/storyboard-interpreter.d.ts +2 -0
- package/build/lib/storyboard-reference/storyboard-interpreter.js +75 -0
- package/build/lib/storyboard-reference/types.d.ts +193 -0
- package/build/lib/storyboard-reference/types.js +1 -0
- package/build/lib/storyboard-reference/validators.d.ts +5 -0
- package/build/lib/storyboard-reference/validators.js +90 -0
- package/build/lib/storyboard-reference/visual-world-builder.d.ts +4 -0
- package/build/lib/storyboard-reference/visual-world-builder.js +42 -0
- package/build/lib/templates.js +134 -15
- package/build/lib/types.d.ts +23 -1
- package/build/postinstall.js +36 -0
- package/content/ARCHITECTURE.md +14 -9
- package/content/MASTER.md +5 -3
- package/content/RULES.md +17 -10
- package/content/agents/prompt-engineer.md +25 -22
- package/content/skills/prompt-structure/SKILL.md +17 -0
- package/content/skills/reference-locking/SKILL.md +19 -7
- package/content/skills/semantic-consistency/SKILL.md +2 -0
- package/content/skills/storyboard-reference/SKILL.md +79 -0
- package/content/workflows/generate-storyboard.md +75 -0
- package/content/workflows/generate.md +5 -0
- package/package.json +7 -3
- package/packages/gpt-image-smart/LICENSE +21 -0
- package/packages/gpt-image-smart/README.md +69 -0
- package/packages/gpt-image-smart/build/cli.d.ts +2 -0
- package/packages/gpt-image-smart/build/cli.js +121 -0
- package/packages/gpt-image-smart/build/index.d.ts +2 -0
- package/packages/gpt-image-smart/build/index.js +1 -0
- package/packages/gpt-image-smart/build/lib/configure.d.ts +2 -0
- package/packages/gpt-image-smart/build/lib/configure.js +247 -0
- package/packages/gpt-image-smart/build/lib/defaults.d.ts +3 -0
- package/packages/gpt-image-smart/build/lib/defaults.js +75 -0
- package/packages/gpt-image-smart/build/lib/fs.d.ts +3 -0
- package/packages/gpt-image-smart/build/lib/fs.js +23 -0
- package/packages/gpt-image-smart/build/lib/templates.d.ts +2 -0
- package/packages/gpt-image-smart/build/lib/templates.js +862 -0
- package/packages/gpt-image-smart/build/lib/types.d.ts +54 -0
- package/packages/gpt-image-smart/build/lib/types.js +1 -0
- package/packages/gpt-image-smart/build/postinstall.d.ts +1 -0
- package/packages/gpt-image-smart/build/postinstall.js +34 -0
- package/packages/gpt-image-smart/content/GPT-IMAGE-SMART-OVERRIDES.md +119 -0
- package/packages/gpt-image-smart/content/skills/gpt-image-2-cinematic/SKILL.md +106 -0
- package/packages/gpt-image-smart/content/skills/prompt-structure/SKILL.md +288 -0
- package/packages/gpt-image-smart/content/skills/storyboard-reference/SKILL.md +28 -0
- package/packages/gpt-image-smart/content/workflows/generate-storyboard.md +19 -0
- package/packages/gpt-image-smart/content/workflows/generate.md +148 -0
- package/packages/hybrid/README.md +1 -0
- package/packages/hybrid/build/cli.js +38 -0
- package/packages/hybrid/build/index.d.ts +1 -1
- package/packages/hybrid/build/lib/configure.js +19 -0
- package/packages/hybrid/build/lib/defaults.d.ts +2 -1
- package/packages/hybrid/build/lib/defaults.js +43 -0
- package/packages/hybrid/build/lib/templates.js +142 -10
- package/packages/hybrid/build/lib/types.d.ts +11 -0
- package/packages/hybrid/build/postinstall.js +7 -1
- package/packages/hybrid/content/HYBRID-OVERRIDES.md +6 -0
- package/packages/hybrid/content/skills/nano-banana-pro-image/SKILL.md +10 -1
- package/packages/hybrid/content/skills/prompt-structure/SKILL.md +8 -2
- package/packages/hybrid/content/skills/storyboard-reference/SKILL.md +28 -0
- package/packages/hybrid/content/workflows/generate-storyboard.md +19 -0
- package/packages/hybrid/content/workflows/generate.md +11 -0
- package/packages/hybrid-smart/README.md +1 -0
- package/packages/hybrid-smart/build/cli.js +38 -0
- package/packages/hybrid-smart/build/index.d.ts +1 -1
- package/packages/hybrid-smart/build/lib/configure.js +19 -0
- package/packages/hybrid-smart/build/lib/defaults.d.ts +2 -1
- package/packages/hybrid-smart/build/lib/defaults.js +43 -0
- package/packages/hybrid-smart/build/lib/templates.js +188 -37
- package/packages/hybrid-smart/build/lib/types.d.ts +11 -0
- package/packages/hybrid-smart/build/postinstall.js +7 -1
- package/packages/hybrid-smart/content/SMART-HYBRID-OVERRIDES.md +10 -4
- package/packages/hybrid-smart/content/skills/nano-banana-pro-image/SKILL.md +16 -4
- package/packages/hybrid-smart/content/skills/prompt-structure/SKILL.md +15 -6
- package/packages/hybrid-smart/content/skills/storyboard-reference/SKILL.md +28 -0
- package/packages/hybrid-smart/content/workflows/generate-storyboard.md +19 -0
- package/packages/hybrid-smart/content/workflows/generate.md +13 -1
- package/packages/multi/README.md +2 -0
- package/packages/multi/build/lib/configure.js +3 -1
- package/packages/multi/build/lib/templates.js +102 -1
- package/packages/multi/content/agents/lead-director.md +1 -0
- package/packages/multi/content/skills/storyboard-reference/SKILL.md +28 -0
- package/packages/multi/content/workflows/generate-multi.md +1 -0
- package/packages/multi/content/workflows/generate-storyboard.md +19 -0
- package/packages/studio/README.md +2 -0
- package/packages/studio/build/cli.js +34 -1
- package/packages/studio/build/index.d.ts +1 -1
- package/packages/studio/build/lib/configure.js +23 -2
- package/packages/studio/build/lib/defaults.d.ts +2 -1
- package/packages/studio/build/lib/defaults.js +48 -0
- package/packages/studio/build/lib/templates.js +175 -8
- package/packages/studio/build/lib/types.d.ts +11 -0
- package/packages/studio/build/postinstall.js +9 -0
- package/packages/studio/content/agents/render-supervisor.md +5 -0
- package/packages/studio/content/skills/fal-render/SKILL.md +11 -0
- package/packages/studio/content/skills/storyboard-reference/SKILL.md +28 -0
- package/packages/studio/content/workflows/generate-storyboard.md +19 -0
- package/packages/studio/content/workflows/render.md +4 -1
package/README.md
CHANGED
|
@@ -44,22 +44,29 @@ Initialize a project with one of the supported presets:
|
|
|
44
44
|
npx @milenyumai/film-kit init --preset single --model veo31
|
|
45
45
|
npx @milenyumai/film-kit init --preset single --model seedance-2.0
|
|
46
46
|
npx @milenyumai/film-kit init --preset multi --model kling-3.0 --kling-preset ultra-realism
|
|
47
|
-
npx @milenyumai/film-kit init --preset
|
|
48
|
-
npx @milenyumai/film-kit init --preset hybrid-
|
|
49
|
-
npx @milenyumai/film-kit init --preset
|
|
47
|
+
npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --reference-mode storyboard-reference --refs-dir ./refs
|
|
48
|
+
npx @milenyumai/film-kit init --preset hybrid --aspect 16:9 --nano-size 4K --gpt-image-size 2048x1152
|
|
49
|
+
npx @milenyumai/film-kit init --preset hybrid-smart --kling-preset balanced --gpt-image-quality medium
|
|
50
|
+
npx @milenyumai/film-kit init --preset gpt-image-smart --gpt-image-size 2048x1152 --gpt-image-quality medium
|
|
51
|
+
npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --refs-dir ./refs --gpt-image-format png
|
|
50
52
|
```
|
|
51
53
|
|
|
52
54
|
After the first run, Film-Kit writes `film-kit.config.json` and uses that file as the canonical project configuration.
|
|
53
55
|
|
|
56
|
+
In Codex-enabled projects, all presets now include an optional `/codex-images` still phase after a successful `/generate`. It is always opt-in and never auto-starts.
|
|
57
|
+
|
|
58
|
+
Storyboard-reference prompt generation is also available when you have a character reference image, storyboard reference image, and brief. It produces model-specific prompt bundles without requiring start/end frames.
|
|
59
|
+
|
|
54
60
|
## Presets
|
|
55
61
|
|
|
56
62
|
| Preset | Purpose | Supported video model surface | Default notes |
|
|
57
63
|
|---|---|---|---|
|
|
58
64
|
| `single` | Single-agent prompt runtime | `veo31`, `kling-3.0`, `seedance-2.0` | Defaults to all supported platforms |
|
|
59
65
|
| `multi` | Lead-directed multi-agent shot generation | `veo31`, `kling-3.0`, `seedance-2.0` | Defaults to `maxTeammates=5`, `batchSize=4` |
|
|
60
|
-
| `hybrid` | Nano Banana still generation + fixed Kling video runtime | fixed `kling-3.0` | No `--model` flag |
|
|
61
|
-
| `hybrid-smart` | Nano Banana still generation + dialogue-aware Veo/Kling routing | fixed smart route | No `--model` flag |
|
|
62
|
-
| `
|
|
66
|
+
| `hybrid` | Nano Banana still generation + GPT Image 2 companion metadata + fixed Kling video runtime | fixed `kling-3.0` | No `--model` flag |
|
|
67
|
+
| `hybrid-smart` | Nano Banana still generation + GPT Image 2 companion metadata + dialogue-aware Veo/Kling routing | fixed smart route | No `--model` flag |
|
|
68
|
+
| `gpt-image-smart` | GPT Image 2 still generation + dialogue-aware Veo/Kling routing | fixed smart route | Defaults to `size=2048x1152`, `quality=medium`, `format=png` |
|
|
69
|
+
| `studio` | Scenario-to-render pipeline with fal.ai render-stage configuration plus GPT Image 2 companion metadata | `veo31`, `kling-3.0`, `seedance-2.0` | Includes refs dir and fal model configuration |
|
|
63
70
|
|
|
64
71
|
## Model Support
|
|
65
72
|
|
|
@@ -85,15 +92,25 @@ After the first run, Film-Kit writes `film-kit.config.json` and uses that file a
|
|
|
85
92
|
- Supported in `single`, `multi`, and `studio`
|
|
86
93
|
- Fixed inside `hybrid`
|
|
87
94
|
- Part of the router inside `hybrid-smart`
|
|
95
|
+
- Part of the router inside `gpt-image-smart`
|
|
88
96
|
- Uses Kling-specific Start+End / storyboard prompt structure
|
|
89
97
|
|
|
98
|
+
### `gpt-image-2`
|
|
99
|
+
|
|
100
|
+
- Supported as the still-image engine in `gpt-image-smart`
|
|
101
|
+
- Supported as companion still prompt/API metadata in `hybrid`, `hybrid-smart`, and `studio`
|
|
102
|
+
- Used for `ILK/İLK FRAME`, `SON FRAME`, and still coverage prompt sections
|
|
103
|
+
- Default Image API metadata: `size=2048x1152`, `quality=medium`, `format=png`
|
|
104
|
+
- V1 emits prompt/API command metadata only; it does not execute OpenAI SDK calls
|
|
105
|
+
- Transparent backgrounds are not exposed because GPT Image 2 does not support them in these presets
|
|
106
|
+
|
|
90
107
|
### `kling-preset`
|
|
91
108
|
|
|
92
109
|
`preset` and `kling-preset` are different things:
|
|
93
110
|
|
|
94
111
|
- `preset` selects the Film-Kit product mode
|
|
95
112
|
- `kling-preset` selects Kling quality behavior
|
|
96
|
-
- `kling-preset`
|
|
113
|
+
- `kling-preset` applies when the active video model is `kling-3.0`, including Kling-routed sections inside smart presets
|
|
97
114
|
|
|
98
115
|
Supported `kling-preset` values:
|
|
99
116
|
|
|
@@ -103,12 +120,41 @@ Supported `kling-preset` values:
|
|
|
103
120
|
|
|
104
121
|
When the active model is not Kling, generated runtime files intentionally render the Kling preset as `n/a (Kling-only)`.
|
|
105
122
|
|
|
123
|
+
## Storyboard Reference Mode
|
|
124
|
+
|
|
125
|
+
Use this mode when the source material is a character reference image plus a storyboard image rather than explicit start/end frames.
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npx @milenyumai/film-kit generate-storyboard \
|
|
129
|
+
--character-ref ./refs/character.png \
|
|
130
|
+
--storyboard-ref ./refs/storyboard.png \
|
|
131
|
+
--brief ./scenario.md \
|
|
132
|
+
--models veo31,seedance-2.0,kling-3.0 \
|
|
133
|
+
--duration 8 \
|
|
134
|
+
--aspect 16:9 \
|
|
135
|
+
--output-dir ./outputs
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Outputs:
|
|
139
|
+
|
|
140
|
+
- `outputs/storyboard-reference-plan.json`
|
|
141
|
+
- `outputs/prompt-bundles/SHOTNN.bundle.json`
|
|
142
|
+
- `outputs/shots/SHOTNN.md`
|
|
143
|
+
- `outputs/reports/STORYBOARD-REFERENCE-QA.md`
|
|
144
|
+
|
|
145
|
+
Rules:
|
|
146
|
+
|
|
147
|
+
- `@character1` is the identity lock.
|
|
148
|
+
- `@storyboard1` controls composition, blocking, camera, timing, and editorial phase order only.
|
|
149
|
+
- 5+ storyboard phases are split into multiple `SHOTNN.md` files.
|
|
150
|
+
- Existing start/end workflows stay unchanged and remain the default.
|
|
151
|
+
|
|
106
152
|
## CLI
|
|
107
153
|
|
|
108
154
|
Base command:
|
|
109
155
|
|
|
110
156
|
```bash
|
|
111
|
-
npx @milenyumai/film-kit init --preset single|multi|hybrid|hybrid-smart|studio
|
|
157
|
+
npx @milenyumai/film-kit init --preset single|multi|hybrid|hybrid-smart|gpt-image-smart|studio
|
|
112
158
|
```
|
|
113
159
|
|
|
114
160
|
Help:
|
|
@@ -122,10 +168,12 @@ Examples:
|
|
|
122
168
|
```bash
|
|
123
169
|
npx @milenyumai/film-kit init --preset single --model veo31
|
|
124
170
|
npx @milenyumai/film-kit init --preset single --model seedance-2.0 --platforms cursor,claude,codex
|
|
171
|
+
npx @milenyumai/film-kit init --preset studio --reference-mode storyboard-reference --max-storyboard-phases 4
|
|
125
172
|
npx @milenyumai/film-kit init --preset multi --model seedance-2.0 --max-teammates 5 --batch-size 4
|
|
126
173
|
npx @milenyumai/film-kit init --preset multi --model kling-3.0 --kling-preset balanced
|
|
127
174
|
npx @milenyumai/film-kit init --preset hybrid --kling-preset ultra-realism --aspect 16:9 --nano-size 2K
|
|
128
175
|
npx @milenyumai/film-kit init --preset hybrid-smart --aspect 9:16 --max-kling-custom-shots 4
|
|
176
|
+
npx @milenyumai/film-kit init --preset gpt-image-smart --aspect 16:9 --gpt-image-size 2048x1152 --gpt-image-quality high --gpt-image-format png
|
|
129
177
|
npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --refs-dir ./refs
|
|
130
178
|
npx @milenyumai/film-kit init --preset studio --model kling-3.0 --fal-video-model fal-ai/kling-video/v3/pro/image-to-video
|
|
131
179
|
npx @milenyumai/film-kit init --preset single --overwrite
|
|
@@ -140,27 +188,34 @@ npx @milenyumai/film-kit init --preset single --overwrite
|
|
|
140
188
|
| `--scenario-hint` | Scenario file hint. Default: `scenario.md` |
|
|
141
189
|
| `--scenario` | Alias of `--scenario-hint` |
|
|
142
190
|
| `--overwrite`, `-f` | Overwrite existing runtime files |
|
|
191
|
+
| `--reference-mode` | `start-end`, `storyboard-reference`, or `hybrid`. Default: `start-end` |
|
|
192
|
+
| `--max-storyboard-phases` | Storyboard-reference phase cap per prompt. Default: `4` |
|
|
143
193
|
|
|
144
194
|
### Preset-Specific Flags
|
|
145
195
|
|
|
146
196
|
| Preset | Allowed flags |
|
|
147
197
|
|---|---|
|
|
148
|
-
| `single` | `--model`, `--kling-preset`, `--platforms` |
|
|
149
|
-
| `multi` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size` |
|
|
150
|
-
| `hybrid` | `--kling-preset`, `--aspect`, `--nano-size`, `--platforms` |
|
|
151
|
-
| `hybrid-smart` | `--kling-preset`, `--aspect`, `--nano-size`, `--max-kling-custom-shots`, `--platforms` |
|
|
152
|
-
| `
|
|
198
|
+
| `single` | `--model`, `--kling-preset`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
|
|
199
|
+
| `multi` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size`, `--reference-mode`, `--max-storyboard-phases` |
|
|
200
|
+
| `hybrid` | `--kling-preset`, `--aspect`, `--nano-size`, `--gpt-image-size`, `--gpt-image-quality`, `--gpt-image-format`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
|
|
201
|
+
| `hybrid-smart` | `--kling-preset`, `--aspect`, `--nano-size`, `--gpt-image-size`, `--gpt-image-quality`, `--gpt-image-format`, `--max-kling-custom-shots`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
|
|
202
|
+
| `gpt-image-smart` | `--kling-preset`, `--aspect`, `--gpt-image-size`, `--gpt-image-quality`, `--gpt-image-format`, `--max-kling-custom-shots`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
|
|
203
|
+
| `studio` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size`, `--refs-dir`, `--fal-image-model`, `--fal-video-model`, `--gpt-image-size`, `--gpt-image-quality`, `--gpt-image-format`, `--platforms`, `--reference-mode`, `--max-storyboard-phases` |
|
|
153
204
|
|
|
154
205
|
### Supported Flag Values
|
|
155
206
|
|
|
156
207
|
| Flag | Supported values |
|
|
157
208
|
|---|---|
|
|
158
|
-
| `--preset` | `single`, `multi`, `hybrid`, `hybrid-smart`, `studio` |
|
|
209
|
+
| `--preset` | `single`, `multi`, `hybrid`, `hybrid-smart`, `gpt-image-smart`, `studio` |
|
|
159
210
|
| `--model` | `veo31`, `kling-3.0`, `seedance-2.0` |
|
|
160
211
|
| `--kling-preset` | `ultra-realism`, `balanced`, `custom` |
|
|
161
212
|
| `--aspect` | `16:9`, `9:16`, `1:1` |
|
|
162
213
|
| `--nano-size` | `1K`, `2K`, `4K` |
|
|
214
|
+
| `--gpt-image-size` | `auto` or `WIDTHxHEIGHT` where both edges are multiples of 16, max edge <= 3840, ratio <= 3:1, and total pixels stay within GPT Image 2 limits |
|
|
215
|
+
| `--gpt-image-quality` | `low`, `medium`, `high`, `auto` |
|
|
216
|
+
| `--gpt-image-format` | `png`, `jpeg`, `webp` |
|
|
163
217
|
| `--platforms` | `cursor`, `claude`, `copilot`, `antigravity`, `codex` |
|
|
218
|
+
| `--reference-mode` | `start-end`, `storyboard-reference`, `hybrid` |
|
|
164
219
|
|
|
165
220
|
## Canonical Config
|
|
166
221
|
|
|
@@ -175,12 +230,23 @@ Example:
|
|
|
175
230
|
"scenarioHint": "scenario.md",
|
|
176
231
|
"platforms": ["cursor", "claude", "copilot", "antigravity", "codex"],
|
|
177
232
|
"model": "seedance-2.0",
|
|
233
|
+
"referenceMode": "storyboard-reference",
|
|
234
|
+
"storyboardReferenceMode": {
|
|
235
|
+
"enabled": true,
|
|
236
|
+
"maxStoryboardPhases": 4,
|
|
237
|
+
"generateAllModelPrompts": true,
|
|
238
|
+
"strictReferenceLock": true,
|
|
239
|
+
"splitStoryboardOverload": true
|
|
240
|
+
},
|
|
178
241
|
"klingPreset": "ultra-realism",
|
|
179
242
|
"maxTeammates": 5,
|
|
180
243
|
"batchSize": 4,
|
|
181
244
|
"refsDir": "./refs",
|
|
182
245
|
"falImageModel": "fal-ai/nano-banana-2/edit",
|
|
183
246
|
"falVideoModel": "fal-ai/kling-video/v3/pro/image-to-video",
|
|
247
|
+
"gptImageSize": "2048x1152",
|
|
248
|
+
"gptImageQuality": "medium",
|
|
249
|
+
"gptImageFormat": "png",
|
|
184
250
|
"includeAgentsMd": true,
|
|
185
251
|
"copyContent": true
|
|
186
252
|
}
|
|
@@ -188,24 +254,29 @@ Example:
|
|
|
188
254
|
|
|
189
255
|
### Config Field Support Matrix
|
|
190
256
|
|
|
191
|
-
| Field | `single` | `multi` | `hybrid` | `hybrid-smart` | `studio` |
|
|
192
|
-
|
|
193
|
-
| `preset` | yes | yes | yes | yes | yes |
|
|
194
|
-
| `outputDir` | yes | yes | yes | yes | yes |
|
|
195
|
-
| `scenarioHint` | yes | yes | yes | yes | yes |
|
|
196
|
-
| `platforms` | yes | no | yes | yes | yes |
|
|
197
|
-
| `model` | yes | yes | no | no | yes |
|
|
198
|
-
| `
|
|
199
|
-
| `
|
|
200
|
-
| `
|
|
201
|
-
| `
|
|
202
|
-
| `
|
|
203
|
-
| `
|
|
204
|
-
| `
|
|
205
|
-
| `
|
|
206
|
-
| `
|
|
207
|
-
| `
|
|
208
|
-
| `
|
|
257
|
+
| Field | `single` | `multi` | `hybrid` | `hybrid-smart` | `gpt-image-smart` | `studio` |
|
|
258
|
+
|---|---|---|---|---|---|---|
|
|
259
|
+
| `preset` | yes | yes | yes | yes | yes | yes |
|
|
260
|
+
| `outputDir` | yes | yes | yes | yes | yes | yes |
|
|
261
|
+
| `scenarioHint` | yes | yes | yes | yes | yes | yes |
|
|
262
|
+
| `platforms` | yes | no | yes | yes | yes | yes |
|
|
263
|
+
| `model` | yes | yes | no | no | no | yes |
|
|
264
|
+
| `referenceMode` | yes | yes | yes | yes | yes | yes |
|
|
265
|
+
| `storyboardReferenceMode` | yes | yes | yes | yes | yes | yes |
|
|
266
|
+
| `klingPreset` | yes | yes | yes | yes | yes | yes |
|
|
267
|
+
| `maxTeammates` | no | yes | no | no | no | yes |
|
|
268
|
+
| `batchSize` | no | yes | no | no | no | yes |
|
|
269
|
+
| `defaultAspectRatio` | no | no | yes | yes | yes | no |
|
|
270
|
+
| `nanoBananaImageSize` | no | no | yes | yes | no | no |
|
|
271
|
+
| `gptImageSize` | no | no | yes | yes | yes | yes |
|
|
272
|
+
| `gptImageQuality` | no | no | yes | yes | yes | yes |
|
|
273
|
+
| `gptImageFormat` | no | no | yes | yes | yes | yes |
|
|
274
|
+
| `maxKlingCustomShots` | no | no | no | yes | yes | no |
|
|
275
|
+
| `refsDir` | no | no | no | no | no | yes |
|
|
276
|
+
| `falImageModel` | no | no | no | no | no | yes |
|
|
277
|
+
| `falVideoModel` | no | no | no | no | no | yes |
|
|
278
|
+
| `includeAgentsMd` | yes | yes | yes | yes | yes | yes |
|
|
279
|
+
| `copyContent` | yes | yes | yes | yes | yes | yes |
|
|
209
280
|
|
|
210
281
|
## Legacy Config Migration
|
|
211
282
|
|
|
@@ -215,6 +286,7 @@ Film-Kit automatically detects and migrates one existing legacy config file on f
|
|
|
215
286
|
- `film-kit-multi.config.json`
|
|
216
287
|
- `film-kit-hybrid.config.json`
|
|
217
288
|
- `film-kit-hybrid-smart.config.json`
|
|
289
|
+
- `film-kit-gpt-image-smart.config.json`
|
|
218
290
|
- `film-kit-studio.config.json`
|
|
219
291
|
|
|
220
292
|
Migration behavior:
|
|
@@ -238,13 +310,14 @@ Film-Kit writes repo-scoped runtime files for supported editors and agents. Depe
|
|
|
238
310
|
- `.cursor/`
|
|
239
311
|
- `.github/copilot-instructions.md`
|
|
240
312
|
- `AGENTS.md`
|
|
241
|
-
- runtime workflows such as `generate`, `chain`, `safety-check`, `recover`, `finish`
|
|
313
|
+
- runtime workflows such as `generate`, `generate-storyboard`, `codex-images`, `chain`, `safety-check`, `recover`, `finish`
|
|
242
314
|
|
|
243
315
|
Editorial/runtime contract shared across the package:
|
|
244
316
|
|
|
245
317
|
- one file per shot: `SHOTNN.md`
|
|
246
318
|
- coverage lives inside the same shot file
|
|
247
319
|
- report files live under `reports/`
|
|
320
|
+
- optional Codex still outputs live under `codex-images/` with `manifest.json` and `reports/CODEX-IMAGE-REPORT.md`
|
|
248
321
|
- continuity and first-frame chaining are explicit
|
|
249
322
|
- voice design uses top-level `voiceCast`
|
|
250
323
|
- per-shot sound control uses `Audio Plan`
|
|
@@ -254,7 +327,7 @@ Editorial/runtime contract shared across the package:
|
|
|
254
327
|
|
|
255
328
|
When a reference image exists, Film-Kit now treats it as an immutable source, not a loose style hint.
|
|
256
329
|
|
|
257
|
-
Default behavior across `single`, `multi`, `hybrid`, `hybrid-smart`, and `studio`:
|
|
330
|
+
Default behavior across `single`, `multi`, `hybrid`, `hybrid-smart`, `gpt-image-smart`, and `studio`:
|
|
258
331
|
|
|
259
332
|
- face, hair, skin tone, body proportions, wardrobe, accessories, props, materials, patterns, and logos are treated as locked invariants
|
|
260
333
|
- generated prompts should not re-describe identity details already visible in the reference
|
|
@@ -286,7 +359,7 @@ This means:
|
|
|
286
359
|
- old image-quality heuristics based on minimum word counts are no longer the primary control surface
|
|
287
360
|
- detailed prose is still expected for video prompts, where motion, timing, audio, and camera language need richer direction
|
|
288
361
|
|
|
289
|
-
`hybrid` and `
|
|
362
|
+
`hybrid`, `hybrid-smart`, and `gpt-image-smart` keep structured still-prompt behavior. `single`, `multi`, and `studio` keep richer video prompt behavior for Veo, Kling, and Seedance.
|
|
290
363
|
|
|
291
364
|
## Semantic QA And Render QA
|
|
292
365
|
|
|
@@ -383,6 +456,9 @@ Supported postinstall environment variables:
|
|
|
383
456
|
- `FILM_KIT_KLING_PRESET`
|
|
384
457
|
- `FILM_KIT_HYBRID_ASPECT`
|
|
385
458
|
- `FILM_KIT_HYBRID_IMAGE_SIZE`
|
|
459
|
+
- `FILM_KIT_GPT_IMAGE_SIZE`
|
|
460
|
+
- `FILM_KIT_GPT_IMAGE_QUALITY`
|
|
461
|
+
- `FILM_KIT_GPT_IMAGE_FORMAT`
|
|
386
462
|
- `FILM_KIT_MAX_TEAMMATES`
|
|
387
463
|
- `FILM_KIT_BATCH_SIZE`
|
|
388
464
|
- `FILM_KIT_MAX_KLING_CUSTOM_SHOTS`
|
|
@@ -403,6 +479,7 @@ Internal preset source layout:
|
|
|
403
479
|
- `packages/multi`
|
|
404
480
|
- `packages/hybrid`
|
|
405
481
|
- `packages/hybrid-smart`
|
|
482
|
+
- `packages/gpt-image-smart`
|
|
406
483
|
- `packages/studio`
|
|
407
484
|
|
|
408
485
|
These subpackages are marked `private: true` and are bundled as internal sources for the root package build and tarball.
|
package/build/cli.js
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { parseCliCommand, renderCliUsage } from "./lib/cli.js";
|
|
3
3
|
import { configureFilmKit } from "./lib/film-kit.js";
|
|
4
|
+
import { buildStoryboardReferencePromptBundles, writeStoryboardReferenceOutputs } from "./lib/storyboard-reference/index.js";
|
|
4
5
|
const args = process.argv.slice(2);
|
|
5
6
|
try {
|
|
6
7
|
const parsed = await parseCliCommand(args, process.cwd());
|
|
7
|
-
if (parsed.command === "help"
|
|
8
|
+
if (parsed.command === "help") {
|
|
8
9
|
console.log(renderCliUsage());
|
|
9
10
|
process.exit(0);
|
|
10
11
|
}
|
|
12
|
+
if (parsed.command === "generate-storyboard") {
|
|
13
|
+
if (!parsed.storyboardRequest) {
|
|
14
|
+
throw new Error("Missing generate-storyboard request.");
|
|
15
|
+
}
|
|
16
|
+
console.log("š¬ Film-Kit: Generating storyboard-reference prompt bundle...\n");
|
|
17
|
+
const buildResult = buildStoryboardReferencePromptBundles(parsed.storyboardRequest);
|
|
18
|
+
const writeResult = await writeStoryboardReferenceOutputs(buildResult, process.cwd());
|
|
19
|
+
console.log(`ā
Files written: ${writeResult.written.length}`);
|
|
20
|
+
writeResult.written.forEach(file => console.log(` ${file}`));
|
|
21
|
+
console.log(`\nš¬ Done! Storyboard-reference outputs are ready in ${writeResult.rootDir}\n`);
|
|
22
|
+
process.exit(0);
|
|
23
|
+
}
|
|
24
|
+
if (!parsed.options) {
|
|
25
|
+
throw new Error("Missing init options.");
|
|
26
|
+
}
|
|
11
27
|
console.log(`š¬ Film-Kit: Configuring '${parsed.options.preset}' preset...\n`);
|
|
12
28
|
const result = await configureFilmKit(parsed.options);
|
|
13
29
|
if (result.written.length > 0) {
|
package/build/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { configureFilmKit, detectFilmKitPreset, FILM_KIT_CONFIG_FILE, FILM_KIT_PRESETS, LEGACY_CONFIG_FILES } from "./lib/film-kit.js";
|
|
2
2
|
export { configureAgents } from "./lib/configure.js";
|
|
3
|
-
export
|
|
3
|
+
export { buildStoryboardReferencePromptBundles, normalizeVideoPromptRequest, renderShotMarkdown, writeStoryboardReferenceOutputs } from "./lib/storyboard-reference/index.js";
|
|
4
|
+
export type { AgentConfigOptions, ConfigureFilmKitResult, ConfigureResult, FilmKitConfigFile, FilmKitConfigOptions, FilmKitPreset, GptImageFormat, GptImageQuality, GptImageSize, HybridAspectRatio, KlingPreset, NanoBananaImageSize, ReferenceMode, StoryboardReferenceConfig, SupportedModel, SupportedPlatform } from "./lib/types.js";
|
|
5
|
+
export type { ModelPromptOutput, PromptBundle, ReferenceAsset, StoryboardReferenceBuildResult, StoryboardReferenceWriteResult, VideoPromptRequest } from "./lib/storyboard-reference/index.js";
|
package/build/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { configureFilmKit, detectFilmKitPreset, FILM_KIT_CONFIG_FILE, FILM_KIT_PRESETS, LEGACY_CONFIG_FILES } from "./lib/film-kit.js";
|
|
2
2
|
export { configureAgents } from "./lib/configure.js";
|
|
3
|
+
export { buildStoryboardReferencePromptBundles, normalizeVideoPromptRequest, renderShotMarkdown, writeStoryboardReferenceOutputs } from "./lib/storyboard-reference/index.js";
|
package/build/lib/cli.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { VideoPromptRequest } from "./storyboard-reference/index.js";
|
|
1
2
|
import type { FilmKitConfigOptions } from "./types.js";
|
|
2
3
|
export interface ParsedCliCommand {
|
|
3
|
-
command: "init" | "help";
|
|
4
|
+
command: "init" | "generate-storyboard" | "help";
|
|
4
5
|
options?: FilmKitConfigOptions;
|
|
6
|
+
storyboardRequest?: VideoPromptRequest;
|
|
5
7
|
}
|
|
6
8
|
export declare function parseCliCommand(args: string[], rootDir?: string): Promise<ParsedCliCommand>;
|
|
7
9
|
export declare function renderCliUsage(): string;
|