@milenyumai/film-kit 2.1.0 ā 2.2.1
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 +109 -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 +41 -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 -23
- 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/package.json +6 -2
- 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/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 +48 -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 +8 -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 +94 -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 +10 -1
- package/packages/multi/content/skills/storyboard-reference/SKILL.md +28 -0
- package/packages/multi/content/workflows/generate-storyboard.md +19 -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 +20 -1
- 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 +59 -7
- 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 +4 -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,24 +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
|
|
|
54
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.
|
|
55
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
|
+
|
|
56
60
|
## Presets
|
|
57
61
|
|
|
58
62
|
| Preset | Purpose | Supported video model surface | Default notes |
|
|
59
63
|
|---|---|---|---|
|
|
60
64
|
| `single` | Single-agent prompt runtime | `veo31`, `kling-3.0`, `seedance-2.0` | Defaults to all supported platforms |
|
|
61
65
|
| `multi` | Lead-directed multi-agent shot generation | `veo31`, `kling-3.0`, `seedance-2.0` | Defaults to `maxTeammates=5`, `batchSize=4` |
|
|
62
|
-
| `hybrid` | Nano Banana still generation + fixed Kling video runtime | fixed `kling-3.0` | No `--model` flag |
|
|
63
|
-
| `hybrid-smart` | Nano Banana still generation + dialogue-aware Veo/Kling routing | fixed smart route | No `--model` flag |
|
|
64
|
-
| `
|
|
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 |
|
|
65
70
|
|
|
66
71
|
## Model Support
|
|
67
72
|
|
|
@@ -87,15 +92,25 @@ In Codex-enabled projects, all presets now include an optional `/codex-images` s
|
|
|
87
92
|
- Supported in `single`, `multi`, and `studio`
|
|
88
93
|
- Fixed inside `hybrid`
|
|
89
94
|
- Part of the router inside `hybrid-smart`
|
|
95
|
+
- Part of the router inside `gpt-image-smart`
|
|
90
96
|
- Uses Kling-specific Start+End / storyboard prompt structure
|
|
91
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
|
+
|
|
92
107
|
### `kling-preset`
|
|
93
108
|
|
|
94
109
|
`preset` and `kling-preset` are different things:
|
|
95
110
|
|
|
96
111
|
- `preset` selects the Film-Kit product mode
|
|
97
112
|
- `kling-preset` selects Kling quality behavior
|
|
98
|
-
- `kling-preset`
|
|
113
|
+
- `kling-preset` applies when the active video model is `kling-3.0`, including Kling-routed sections inside smart presets
|
|
99
114
|
|
|
100
115
|
Supported `kling-preset` values:
|
|
101
116
|
|
|
@@ -105,12 +120,41 @@ Supported `kling-preset` values:
|
|
|
105
120
|
|
|
106
121
|
When the active model is not Kling, generated runtime files intentionally render the Kling preset as `n/a (Kling-only)`.
|
|
107
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
|
+
|
|
108
152
|
## CLI
|
|
109
153
|
|
|
110
154
|
Base command:
|
|
111
155
|
|
|
112
156
|
```bash
|
|
113
|
-
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
|
|
114
158
|
```
|
|
115
159
|
|
|
116
160
|
Help:
|
|
@@ -124,10 +168,12 @@ Examples:
|
|
|
124
168
|
```bash
|
|
125
169
|
npx @milenyumai/film-kit init --preset single --model veo31
|
|
126
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
|
|
127
172
|
npx @milenyumai/film-kit init --preset multi --model seedance-2.0 --max-teammates 5 --batch-size 4
|
|
128
173
|
npx @milenyumai/film-kit init --preset multi --model kling-3.0 --kling-preset balanced
|
|
129
174
|
npx @milenyumai/film-kit init --preset hybrid --kling-preset ultra-realism --aspect 16:9 --nano-size 2K
|
|
130
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
|
|
131
177
|
npx @milenyumai/film-kit init --preset studio --model seedance-2.0 --refs-dir ./refs
|
|
132
178
|
npx @milenyumai/film-kit init --preset studio --model kling-3.0 --fal-video-model fal-ai/kling-video/v3/pro/image-to-video
|
|
133
179
|
npx @milenyumai/film-kit init --preset single --overwrite
|
|
@@ -142,27 +188,34 @@ npx @milenyumai/film-kit init --preset single --overwrite
|
|
|
142
188
|
| `--scenario-hint` | Scenario file hint. Default: `scenario.md` |
|
|
143
189
|
| `--scenario` | Alias of `--scenario-hint` |
|
|
144
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` |
|
|
145
193
|
|
|
146
194
|
### Preset-Specific Flags
|
|
147
195
|
|
|
148
196
|
| Preset | Allowed flags |
|
|
149
197
|
|---|---|
|
|
150
|
-
| `single` | `--model`, `--kling-preset`, `--platforms` |
|
|
151
|
-
| `multi` | `--model`, `--kling-preset`, `--max-teammates`, `--batch-size` |
|
|
152
|
-
| `hybrid` | `--kling-preset`, `--aspect`, `--nano-size`, `--platforms` |
|
|
153
|
-
| `hybrid-smart` | `--kling-preset`, `--aspect`, `--nano-size`, `--max-kling-custom-shots`, `--platforms` |
|
|
154
|
-
| `
|
|
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` |
|
|
155
204
|
|
|
156
205
|
### Supported Flag Values
|
|
157
206
|
|
|
158
207
|
| Flag | Supported values |
|
|
159
208
|
|---|---|
|
|
160
|
-
| `--preset` | `single`, `multi`, `hybrid`, `hybrid-smart`, `studio` |
|
|
209
|
+
| `--preset` | `single`, `multi`, `hybrid`, `hybrid-smart`, `gpt-image-smart`, `studio` |
|
|
161
210
|
| `--model` | `veo31`, `kling-3.0`, `seedance-2.0` |
|
|
162
211
|
| `--kling-preset` | `ultra-realism`, `balanced`, `custom` |
|
|
163
212
|
| `--aspect` | `16:9`, `9:16`, `1:1` |
|
|
164
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` |
|
|
165
217
|
| `--platforms` | `cursor`, `claude`, `copilot`, `antigravity`, `codex` |
|
|
218
|
+
| `--reference-mode` | `start-end`, `storyboard-reference`, `hybrid` |
|
|
166
219
|
|
|
167
220
|
## Canonical Config
|
|
168
221
|
|
|
@@ -177,12 +230,23 @@ Example:
|
|
|
177
230
|
"scenarioHint": "scenario.md",
|
|
178
231
|
"platforms": ["cursor", "claude", "copilot", "antigravity", "codex"],
|
|
179
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
|
+
},
|
|
180
241
|
"klingPreset": "ultra-realism",
|
|
181
242
|
"maxTeammates": 5,
|
|
182
243
|
"batchSize": 4,
|
|
183
244
|
"refsDir": "./refs",
|
|
184
245
|
"falImageModel": "fal-ai/nano-banana-2/edit",
|
|
185
246
|
"falVideoModel": "fal-ai/kling-video/v3/pro/image-to-video",
|
|
247
|
+
"gptImageSize": "2048x1152",
|
|
248
|
+
"gptImageQuality": "medium",
|
|
249
|
+
"gptImageFormat": "png",
|
|
186
250
|
"includeAgentsMd": true,
|
|
187
251
|
"copyContent": true
|
|
188
252
|
}
|
|
@@ -190,24 +254,29 @@ Example:
|
|
|
190
254
|
|
|
191
255
|
### Config Field Support Matrix
|
|
192
256
|
|
|
193
|
-
| Field | `single` | `multi` | `hybrid` | `hybrid-smart` | `studio` |
|
|
194
|
-
|
|
195
|
-
| `preset` | yes | yes | yes | yes | yes |
|
|
196
|
-
| `outputDir` | yes | yes | yes | yes | yes |
|
|
197
|
-
| `scenarioHint` | yes | yes | yes | yes | yes |
|
|
198
|
-
| `platforms` | yes | no | yes | yes | yes |
|
|
199
|
-
| `model` | yes | yes | no | no | yes |
|
|
200
|
-
| `
|
|
201
|
-
| `
|
|
202
|
-
| `
|
|
203
|
-
| `
|
|
204
|
-
| `
|
|
205
|
-
| `
|
|
206
|
-
| `
|
|
207
|
-
| `
|
|
208
|
-
| `
|
|
209
|
-
| `
|
|
210
|
-
| `
|
|
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 |
|
|
211
280
|
|
|
212
281
|
## Legacy Config Migration
|
|
213
282
|
|
|
@@ -217,6 +286,7 @@ Film-Kit automatically detects and migrates one existing legacy config file on f
|
|
|
217
286
|
- `film-kit-multi.config.json`
|
|
218
287
|
- `film-kit-hybrid.config.json`
|
|
219
288
|
- `film-kit-hybrid-smart.config.json`
|
|
289
|
+
- `film-kit-gpt-image-smart.config.json`
|
|
220
290
|
- `film-kit-studio.config.json`
|
|
221
291
|
|
|
222
292
|
Migration behavior:
|
|
@@ -240,7 +310,7 @@ Film-Kit writes repo-scoped runtime files for supported editors and agents. Depe
|
|
|
240
310
|
- `.cursor/`
|
|
241
311
|
- `.github/copilot-instructions.md`
|
|
242
312
|
- `AGENTS.md`
|
|
243
|
-
- runtime workflows such as `generate`, `codex-images`, `chain`, `safety-check`, `recover`, `finish`
|
|
313
|
+
- runtime workflows such as `generate`, `generate-storyboard`, `codex-images`, `chain`, `safety-check`, `recover`, `finish`
|
|
244
314
|
|
|
245
315
|
Editorial/runtime contract shared across the package:
|
|
246
316
|
|
|
@@ -257,7 +327,7 @@ Editorial/runtime contract shared across the package:
|
|
|
257
327
|
|
|
258
328
|
When a reference image exists, Film-Kit now treats it as an immutable source, not a loose style hint.
|
|
259
329
|
|
|
260
|
-
Default behavior across `single`, `multi`, `hybrid`, `hybrid-smart`, and `studio`:
|
|
330
|
+
Default behavior across `single`, `multi`, `hybrid`, `hybrid-smart`, `gpt-image-smart`, and `studio`:
|
|
261
331
|
|
|
262
332
|
- face, hair, skin tone, body proportions, wardrobe, accessories, props, materials, patterns, and logos are treated as locked invariants
|
|
263
333
|
- generated prompts should not re-describe identity details already visible in the reference
|
|
@@ -289,7 +359,7 @@ This means:
|
|
|
289
359
|
- old image-quality heuristics based on minimum word counts are no longer the primary control surface
|
|
290
360
|
- detailed prose is still expected for video prompts, where motion, timing, audio, and camera language need richer direction
|
|
291
361
|
|
|
292
|
-
`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.
|
|
293
363
|
|
|
294
364
|
## Semantic QA And Render QA
|
|
295
365
|
|
|
@@ -386,6 +456,9 @@ Supported postinstall environment variables:
|
|
|
386
456
|
- `FILM_KIT_KLING_PRESET`
|
|
387
457
|
- `FILM_KIT_HYBRID_ASPECT`
|
|
388
458
|
- `FILM_KIT_HYBRID_IMAGE_SIZE`
|
|
459
|
+
- `FILM_KIT_GPT_IMAGE_SIZE`
|
|
460
|
+
- `FILM_KIT_GPT_IMAGE_QUALITY`
|
|
461
|
+
- `FILM_KIT_GPT_IMAGE_FORMAT`
|
|
389
462
|
- `FILM_KIT_MAX_TEAMMATES`
|
|
390
463
|
- `FILM_KIT_BATCH_SIZE`
|
|
391
464
|
- `FILM_KIT_MAX_KLING_CUSTOM_SHOTS`
|
|
@@ -406,6 +479,7 @@ Internal preset source layout:
|
|
|
406
479
|
- `packages/multi`
|
|
407
480
|
- `packages/hybrid`
|
|
408
481
|
- `packages/hybrid-smart`
|
|
482
|
+
- `packages/gpt-image-smart`
|
|
409
483
|
- `packages/studio`
|
|
410
484
|
|
|
411
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;
|