blitzreels 0.1.22 → 0.1.23
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 +24 -283
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +2 -0
- package/dist/command-registry.js.map +1 -1
- package/dist/commands/clips.d.ts.map +1 -1
- package/dist/commands/clips.js +16 -4
- package/dist/commands/clips.js.map +1 -1
- package/dist/commands/faceless.d.ts.map +1 -1
- package/dist/commands/faceless.js +2 -0
- package/dist/commands/faceless.js.map +1 -1
- package/dist/commands/generation.d.ts.map +1 -1
- package/dist/commands/generation.js +2 -0
- package/dist/commands/generation.js.map +1 -1
- package/dist/commands/projects.d.ts.map +1 -1
- package/dist/commands/projects.js +6 -0
- package/dist/commands/projects.js.map +1 -1
- package/dist/commands/series.d.ts +41 -0
- package/dist/commands/series.d.ts.map +1 -0
- package/dist/commands/series.js +202 -0
- package/dist/commands/series.js.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ npx blitzreels auth login
|
|
|
36
36
|
Local repo development:
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
pnpm --filter blitzreels dev auth login --base-url http://localhost:
|
|
39
|
+
pnpm --filter blitzreels dev auth login --base-url http://localhost:3100/api/v1
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
## Auth
|
|
@@ -80,235 +80,18 @@ For generation jobs, use `GET /generation-jobs/{job_id}` through `client.generat
|
|
|
80
80
|
An in-progress finalization is protected from concurrent retries; a stale attempt can be reclaimed after five minutes.
|
|
81
81
|
Use the same generation idempotency key only with the original request.
|
|
82
82
|
|
|
83
|
-
##
|
|
83
|
+
## Choose a workflow
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
blitzreels
|
|
87
|
-
blitzreels workspace settings update --name "Creator Studio" --protected-words "Brand,Product"
|
|
88
|
-
|
|
89
|
-
blitzreels onboarding scan start --website-url "https://example.com" --json
|
|
90
|
-
blitzreels onboarding scan get --run-id RUN_ID --json
|
|
91
|
-
blitzreels onboarding profile get --json
|
|
92
|
-
blitzreels onboarding profile update --brand-name "Creator Studio" --protected-words "Brand,Product"
|
|
93
|
-
blitzreels onboarding logo import --profile-id PROFILE_ID --replace-existing false
|
|
94
|
-
blitzreels onboarding complete --brand-name "Creator Studio" --platforms tiktok,linkedin --save-workspace-icon true --json
|
|
95
|
-
|
|
96
|
-
blitzreels projects list --status active --json
|
|
97
|
-
blitzreels projects create --name "Launch short" --aspect-ratio 9:16
|
|
98
|
-
blitzreels projects get --project-id PROJECT_ID --json
|
|
99
|
-
blitzreels projects rename --project-id PROJECT_ID --name "New title"
|
|
100
|
-
blitzreels projects update --project-id PROJECT_ID --description "New description"
|
|
101
|
-
blitzreels projects delete --project-id PROJECT_ID --confirm-delete
|
|
102
|
-
|
|
103
|
-
blitzreels media list --asset-type video --json
|
|
104
|
-
blitzreels media get --asset-id ASSET_ID --json
|
|
105
|
-
blitzreels media verify --asset-id ASSET_ID --json
|
|
106
|
-
blitzreels media download --asset-id ASSET_ID --output ./source.mp4
|
|
107
|
-
blitzreels media delete --asset-id ASSET_ID --confirm-delete \
|
|
108
|
-
--reason "Remove duplicate upload" --idempotency-key media-delete:ASSET_ID:v1
|
|
109
|
-
blitzreels media delete --search "old upload" --confirm-delete \
|
|
110
|
-
--reason "Remove obsolete imports" --idempotency-key media-delete:old-upload:v1 \
|
|
111
|
-
--delete-generated-clips true --delete-linked-projects true
|
|
112
|
-
blitzreels media upload --file ./video.mp4 --timeout-ms 300000 --auto-transcribe true
|
|
113
|
-
blitzreels media import-youtube --url "https://www.youtube.com/watch?v=..."
|
|
114
|
-
blitzreels media rename --asset-id ASSET_ID --name "New media name"
|
|
115
|
-
blitzreels media update --asset-id ASSET_ID --description "B-roll" --folder-id FOLDER_ID
|
|
116
|
-
blitzreels media move --asset-id ASSET_ID --target-folder-id FOLDER_ID
|
|
117
|
-
blitzreels media attach --project-id PROJECT_ID --asset-id ASSET_ID --at 0 --duration 4
|
|
118
|
-
blitzreels media attach --project-id PROJECT_ID --asset-id ASSET_ID --at 0 --duration 4 \
|
|
119
|
-
--placement-intent overlay --volume 0.4
|
|
120
|
-
blitzreels media overlay update --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID --mute true
|
|
121
|
-
blitzreels media attach --project-id PROJECT_ID --asset-id IMAGE_ID --at 6 --duration 1.6 --position-preset center --position-y -230 --width-px 561 --height-px 212 --animation-preset popIn
|
|
122
|
-
blitzreels media reframe apply --asset-id ASSET_ID --project-id PROJECT_ID \
|
|
123
|
-
--expected-revision 7 \
|
|
124
|
-
--replace-timeline-item-id TIMELINE_ITEM_ID \
|
|
125
|
-
--aspect-ratio 9:16 --content-type-hint podcast --layout-strategy split \
|
|
126
|
-
--idempotency-key reframe:PROJECT_ID:v1
|
|
127
|
-
blitzreels media reframe status --asset-id ASSET_ID --json
|
|
128
|
-
blitzreels media reframe analyze --asset-id ASSET_ID \
|
|
129
|
-
--idempotency-key reframe-analysis:ASSET_ID:v1 --json
|
|
130
|
-
blitzreels media reframe get --project-id PROJECT_ID --reframe-id REFRAME_ID --json
|
|
131
|
-
blitzreels media reframe source-update --project-id PROJECT_ID \
|
|
132
|
-
--reframe-id REFRAME_ID --source-asset-id SOURCE_ASSET_ID \
|
|
133
|
-
--source-crop-json '{"x":0,"y":0,"width":0.5,"height":1}' \
|
|
134
|
-
--idempotency-key reframe-source:REFRAME_ID:SOURCE_ASSET_ID:v1 --json
|
|
135
|
-
blitzreels media folders list --json
|
|
136
|
-
blitzreels media folders create --name "B-roll" --icon-type video
|
|
137
|
-
blitzreels media folders rename --folder-id FOLDER_ID --name "New folder name"
|
|
138
|
-
blitzreels media folders update --folder-id FOLDER_ID --parent-folder-id root
|
|
139
|
-
blitzreels media folders delete --folder-id FOLDER_ID --confirm-delete
|
|
140
|
-
|
|
141
|
-
blitzreels publishing connections list --json
|
|
142
|
-
blitzreels publishing video schedule --video ./launch.mp4 \
|
|
143
|
-
--targets instagram:INSTAGRAM_CONNECTION_ID,tiktok:TIKTOK_CONNECTION_ID,facebook:FACEBOOK_CONNECTION_ID \
|
|
144
|
-
--caption "Launch day" --scheduled-for 2030-08-31T22:45:00Z \
|
|
145
|
-
--tiktok-publish-mode draft
|
|
146
|
-
blitzreels publishing video schedule --media-asset-id VIDEO_ASSET_ID \
|
|
147
|
-
--targets youtube:YOUTUBE_CONNECTION_ID --title "Launch day" \
|
|
148
|
-
--scheduled-for 2030-08-31T22:45:00Z --contains-synthetic-media
|
|
149
|
-
blitzreels publishing tiktok schedule --project-id PROJECT_ID --export-id EXPORT_ID \
|
|
150
|
-
--connection-id TIKTOK_CONNECTION_ID --scheduled-for 2030-08-31T22:45:00Z \
|
|
151
|
-
--privacy-level SELF_ONLY --consent-accepted
|
|
152
|
-
blitzreels publishing tiktok schedule --images ./01.jpg,./02.webp,./03.jpg \
|
|
153
|
-
--project-name "Ancient facts slideshow" --connection-id TIKTOK_CONNECTION_ID \
|
|
154
|
-
--caption "Three facts from the ancient world" --scheduled-for 2030-08-31T22:45:00Z \
|
|
155
|
-
--privacy-level SELF_ONLY --photo-cover-index 1 --auto-add-music --consent-accepted
|
|
156
|
-
blitzreels publishing tiktok schedule --images ./01.jpg,./02.webp \
|
|
157
|
-
--connection-id TIKTOK_CONNECTION_ID --scheduled-for 2030-08-31T22:45:00Z \
|
|
158
|
-
--publish-mode draft
|
|
159
|
-
|
|
160
|
-
# Uploaded video publishing accepts MP4, MOV, and WebM. Every selected provider
|
|
161
|
-
# is validated atomically before scheduling. A target without a connection ID is
|
|
162
|
-
# resolved automatically when exactly one active account exists.
|
|
163
|
-
# TikTok direct posts require --privacy-level; drafts do not.
|
|
164
|
-
|
|
165
|
-
# Upload output includes processing_run_id and accepted follow_up intent.
|
|
166
|
-
|
|
167
|
-
blitzreels clips create --asset-id ASSET_ID --output ./clips
|
|
168
|
-
blitzreels clips create --asset-id ASSET_ID --logo-asset-id LOGO_ASSET_ID --output ./clips --count 5
|
|
169
|
-
blitzreels clips create --asset-id ASSET_ID --layout-mode people_first --content-type-hint podcast
|
|
170
|
-
blitzreels clips create --asset-id ASSET_ID --studio-sound --output ./clips
|
|
171
|
-
blitzreels clips create --youtube-url "https://www.youtube.com/watch?v=..." --name "MKBHD hero loop"
|
|
172
|
-
blitzreels clips get --clip-id CLIP_ID --json
|
|
173
|
-
blitzreels clips wait --clip-id CLIP_ID --json
|
|
174
|
-
blitzreels clips reselect --clip-id CLIP_ID --start-seconds 52 --end-seconds 64 --idempotency-key reselect:CLIP_ID:v1
|
|
175
|
-
blitzreels clips reselect --clip-id CLIP_ID --suggestion-id SUGGESTION_ID
|
|
176
|
-
blitzreels clips reselect --clip-id CLIP_ID --suggestion-id SUGGESTION_ID \
|
|
177
|
-
--layout-mode people_first --content-type-hint podcast --caption-style-id cinematic-film \
|
|
178
|
-
--caption-word-reveal-animation fade --caption-max-lines 2 \
|
|
179
|
-
--caption-words-per-line 8 --caption-page-combine-ms 3000
|
|
180
|
-
blitzreels clips reject --clip-id CLIP_ID --reason "Main speaker cropped out" --idempotency-key review:CLIP_ID:v1
|
|
181
|
-
blitzreels clips repair --clip-id CLIP_ID
|
|
182
|
-
blitzreels clips export --clip-id CLIP_ID
|
|
183
|
-
blitzreels clips attach-export --asset-id ASSET_ID --project-id PROJECT_ID \
|
|
184
|
-
--export-id EXPORT_ID --confirm-visual-qa --idempotency-key attach:EXPORT_ID:v1
|
|
185
|
-
blitzreels clips promote-export --clip-id CLIP_ID --export-id EXPORT_ID \
|
|
186
|
-
--confirm-visual-qa --idempotency-key promote:CLIP_ID:EXPORT_ID:v1
|
|
187
|
-
blitzreels clip-batches recover --batch-id BATCH_ID --target-count 10 \
|
|
188
|
-
--idempotency-key clip-recovery:BATCH_ID:v1
|
|
189
|
-
blitzreels clip-batches get --batch-id BATCH_ID --json
|
|
190
|
-
blitzreels clip-batches wait --batch-id BATCH_ID --json
|
|
191
|
-
blitzreels clip-share-pages publish --asset-id ASSET_ID \
|
|
192
|
-
--allow-downloads true --idempotency-key clip-share:ASSET_ID:publish:v1
|
|
193
|
-
blitzreels clip-share-pages set-clip-visibility --asset-id ASSET_ID --clip-id CLIP_ID \
|
|
194
|
-
--visibility hidden --idempotency-key clip-share:CLIP_ID:hidden:v1
|
|
195
|
-
blitzreels clip-share-pages get --asset-id ASSET_ID --json
|
|
196
|
-
|
|
197
|
-
blitzreels recording-sets create --name "Product demo" --idempotency-key recording-set:create:v1 --json
|
|
198
|
-
blitzreels recording-sets list --status ready --json
|
|
199
|
-
blitzreels recording-sets tracks attach --recording-set-id SET_ID --asset-id CAMERA_ASSET_ID \
|
|
200
|
-
--role camera --primary --idempotency-key recording-set:camera:v1
|
|
201
|
-
blitzreels recording-sets tracks attach --recording-set-id SET_ID --asset-id SCREEN_ASSET_ID \
|
|
202
|
-
--role screen --idempotency-key recording-set:screen:v1
|
|
203
|
-
blitzreels recording-sets finalize --recording-set-id SET_ID --idempotency-key recording-set:finalize:v1
|
|
204
|
-
blitzreels recording-sets get --recording-set-id SET_ID --json
|
|
205
|
-
blitzreels recording-sets delete --recording-set-id EMPTY_SET_ID --confirm-delete \
|
|
206
|
-
--idempotency-key recording-set:delete:v1
|
|
207
|
-
blitzreels recording-sets clips create --recording-set-id SET_ID --max-clip-count 5 \
|
|
208
|
-
--max-duration 60 \
|
|
209
|
-
--layout-mode prefer_focus --content-type-hint podcast --caption-theme-id hormozi \
|
|
210
|
-
--studio-sound \
|
|
211
|
-
--idempotency-key recording-set:clips:v1
|
|
212
|
-
|
|
213
|
-
# `clips get|list --json` exposes `layout.segments` with time ranges, panel assets,
|
|
214
|
-
# crops, canvas geometry, and split-only caption placement.
|
|
215
|
-
|
|
216
|
-
blitzreels characters create --name "Virgile" \
|
|
217
|
-
--reference-asset-ids CHARACTER_SHEET_ASSET_ID \
|
|
218
|
-
--primary-reference-asset-id CHARACTER_SHEET_ASSET_ID \
|
|
219
|
-
--idempotency-key character:virgile:v1
|
|
220
|
-
blitzreels characters list --json
|
|
221
|
-
blitzreels faceless plans create --project-id PROJECT_ID --script-file ./script.txt \
|
|
222
|
-
--character-ids CHARACTER_ID --video-model seedance-2.0-ref2v \
|
|
223
|
-
--idempotency-key faceless:PROJECT_ID:v1
|
|
224
|
-
|
|
225
|
-
blitzreels project inspect --project-id PROJECT_ID --json
|
|
226
|
-
blitzreels project timeline --project-id PROJECT_ID --json
|
|
227
|
-
blitzreels project snapshot --project-id PROJECT_ID --at 00:03
|
|
228
|
-
blitzreels project snapshots --project-id PROJECT_ID --at 00:01,00:03
|
|
229
|
-
|
|
230
|
-
blitzreels timeline transform --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID --position-x 0 --position-y -230 --width-px 561 --height-px 212 --keep-aspect-ratio true
|
|
231
|
-
blitzreels timeline move --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID --at 00:06 --layer-index 2
|
|
232
|
-
blitzreels timeline delete --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID --auto-pack false
|
|
233
|
-
|
|
234
|
-
blitzreels effects zoom add --project-id PROJECT_ID --at 9.8 --duration 1.8 --scale-start 1 --scale-end 1.1 --easing easeInOut
|
|
235
|
-
blitzreels effects zoom update --project-id PROJECT_ID --timeline-item-id EFFECT_TIMELINE_ITEM_ID --scale-end 1.1 --easing easeInOut --duration 1.8
|
|
236
|
-
blitzreels effects mask add --project-id PROJECT_ID --settings-json '{"shape":"rounded","size":{"width":0.8,"height":0.8}}'
|
|
237
|
-
blitzreels effects colorgrade update --project-id PROJECT_ID --timeline-item-id EFFECT_TIMELINE_ITEM_ID --settings-json '{"brightness":1.1,"vignetteEnabled":true}'
|
|
238
|
-
|
|
239
|
-
blitzreels text add --project-id PROJECT_ID --text "Hook" --at 0 --duration 4
|
|
240
|
-
blitzreels text add --project-id PROJECT_ID --text "SERVEURS MCP" --at 24.33 --duration 2.8 --font-family Pacifico --font-size 82 --color "#17FFA6" --background-color "rgba(3,7,18,0.82)" --top "24%"
|
|
241
|
-
blitzreels text list --project-id PROJECT_ID --json
|
|
242
|
-
blitzreels text update --project-id PROJECT_ID --content-item-id CONTENT_ITEM_ID --text "New hook" --font-family Inter --font-size 64 --color "#FFFFFF"
|
|
243
|
-
blitzreels text remove --project-id PROJECT_ID --content-item-id CONTENT_ITEM_ID
|
|
244
|
-
|
|
245
|
-
blitzreels audio search --query "ambient riser" --license cc0 --json
|
|
246
|
-
blitzreels audio import --provider openverse --external-id AUDIO_ID --project-id PROJECT_ID --at 0 --duration 12 --volume 0.03
|
|
247
|
-
blitzreels audio add --project-id PROJECT_ID --asset-id ASSET_ID --at 0 --volume 0.03
|
|
248
|
-
|
|
249
|
-
blitzreels captions words list --project-id PROJECT_ID --match-text "Supabase" --json
|
|
250
|
-
blitzreels captions words text --project-id PROJECT_ID --word-id WORD_ID --text "Supabase"
|
|
251
|
-
blitzreels captions words update --project-id PROJECT_ID --word-id WORD_ID --text "Supabase"
|
|
252
|
-
blitzreels captions words batch-text --project-id PROJECT_ID --updates-json '[{"word_id":"WORD_ID","new_text":"Supabase"}]'
|
|
253
|
-
blitzreels captions words batch-text --project-id PROJECT_ID --updates-file caption-updates.json
|
|
254
|
-
blitzreels captions words style --project-id PROJECT_ID --word-id WORD_ID --font-family Pacifico --color "#17FFA6" --scale 1.45
|
|
255
|
-
blitzreels captions words style --project-id PROJECT_ID --all --style-file caption-word-style.json
|
|
256
|
-
blitzreels captions words emphasis --project-id PROJECT_ID --match-text "MCP" --emphasis true
|
|
257
|
-
blitzreels captions words delete --project-id PROJECT_ID --word-id WORD_ID
|
|
258
|
-
blitzreels captions words merge --project-id PROJECT_ID --word-ids WORD_ID_1,WORD_ID_2 --text "serveurs MCP"
|
|
259
|
-
blitzreels captions words split --project-id PROJECT_ID --word-id WORD_ID --words "serveurs,MCP"
|
|
260
|
-
|
|
261
|
-
blitzreels silence plan --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID --json
|
|
262
|
-
blitzreels silence plan --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID \
|
|
263
|
-
--strategy audio --json > silence-plan.json
|
|
264
|
-
blitzreels silence apply --project-id PROJECT_ID --confirm-preview \
|
|
265
|
-
--plan-json "$(cat silence-plan.json)"
|
|
266
|
-
blitzreels silence apply --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID --confirm-preview
|
|
267
|
-
|
|
268
|
-
blitzreels mistakes plan --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID --json
|
|
269
|
-
blitzreels mistakes apply --project-id PROJECT_ID --timeline-item-id TIMELINE_ITEM_ID --confirm-preview
|
|
270
|
-
|
|
271
|
-
blitzreels captions looks list --json
|
|
272
|
-
blitzreels captions look set --project-id PROJECT_ID --look-id editor-premium-lime
|
|
273
|
-
blitzreels captions style update --project-id PROJECT_ID --look-id paper-karaoke --text-stroke-enabled false
|
|
274
|
-
|
|
275
|
-
blitzreels exports start --project-id PROJECT_ID --cover-frame-seconds 1
|
|
276
|
-
blitzreels exports wait --export-id EXPORT_ID
|
|
277
|
-
blitzreels exports download --export-id EXPORT_ID --output ./short.mp4
|
|
278
|
-
|
|
279
|
-
blitzreels formats run --format video-model-benchmark \
|
|
280
|
-
--prompt "A red figure walks toward a circular platform under a deep blue night sky" \
|
|
281
|
-
--left-model wan-2.1 --right-model krea-wan-14b-t2v --confirm-cost
|
|
282
|
-
blitzreels credits pricing --kind video --json
|
|
283
|
-
blitzreels generate videos --options --json
|
|
284
|
-
blitzreels jobs get --job-id JOB_ID --json
|
|
285
|
-
|
|
286
|
-
`generate videos --options` is the live model catalog. `seedance-2.5` I2V
|
|
287
|
-
`input_notes` warn that BytePlus rejects human-face stills on `source_image`
|
|
288
|
-
and image references. Character-sheet I2V uses `seedance-2.0-ref2v`. Killing
|
|
289
|
-
the local process does not cancel the remote job; `jobs get` is the status
|
|
290
|
-
surface (SDK `generation.cancel` exists, no `jobs cancel` CLI yet).
|
|
291
|
-
|
|
292
|
-
blitzreels api docs
|
|
293
|
-
blitzreels api spec
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
Use `--json` for script and AI-agent workflows.
|
|
297
|
-
Quoted `--prompt` values preserve line breaks.
|
|
298
|
-
Use `credits pricing --kind KIND --json` to load current AI Studio models,
|
|
299
|
-
limits, and credit rates.
|
|
300
|
-
Use `--fields id,name` with `--json` to trim large responses.
|
|
301
|
-
Export status responses include `thumbnail_url`, `thumbnail.frame_seconds`, `thumbnail.rationale`, and first-pass `platform_metadata` suggestions for YouTube, TikTok, and Instagram.
|
|
302
|
-
Onboarding scan responses include `run_id`, `status`, optional `profile`, and `next_actions`; poll the run before completing onboarding. Mutating onboarding commands support `--dry-run`.
|
|
85
|
+
Use `blitzreels <command> --help` or the one-command contract below for exact flags.
|
|
86
|
+
The [generated CLI guide](https://blitzreels.com/cli.md) owns the full command catalog.
|
|
303
87
|
|
|
304
|
-
|
|
305
|
-
|
|
88
|
+
- Inspect/edit: `projects`, `project`, `timeline`, `captions`, `text`, `audio`, `silence` and `mistakes`.
|
|
89
|
+
- Sources and finished clips: `media`, `clips`, `clip-batches` and `exports`.
|
|
90
|
+
- Generation and continuity: `generate`, `characters` and `story-kits`.
|
|
91
|
+
- Workspace setup: `workspace settings` and `onboarding`.
|
|
306
92
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
Caption style receipts include `verified`, `effective_settings`, `warnings`, and `cleared_word_overrides`.
|
|
311
|
-
Overlay attach and update accept `volume`; `--mute true` sets it to zero.
|
|
93
|
+
The stored API key selects one workspace; `auth whoami` identifies it.
|
|
94
|
+
Workspace membership listing and account-level switching are not implied by `auth login`.
|
|
312
95
|
|
|
313
96
|
## Machine-Readable Contract
|
|
314
97
|
|
|
@@ -365,25 +148,7 @@ Set `BLITZREELS_NO_UPDATE_NOTIFIER=1` to disable passive update notices.
|
|
|
365
148
|
The CLI validates commands and flags before making API calls. Faulty commands
|
|
366
149
|
print the closest known command or flag, then the command-specific usage.
|
|
367
150
|
|
|
368
|
-
|
|
369
|
-
blitzreels caption words list --project-id PROJECT_ID
|
|
370
|
-
# Unknown command: caption words list
|
|
371
|
-
# Did you mean?
|
|
372
|
-
# blitzreels captions words list --project-id ID ...
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
With `--json`, errors are structured on stderr:
|
|
376
|
-
|
|
377
|
-
```json
|
|
378
|
-
{
|
|
379
|
-
"error": {
|
|
380
|
-
"code": "unknown_flag",
|
|
381
|
-
"message": "Unknown flag --poject-id for `projects get`.",
|
|
382
|
-
"suggestions": ["--project-id"],
|
|
383
|
-
"usage": "blitzreels projects get --project-id ID [--json]"
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
```
|
|
151
|
+
With `--json`, errors are structured on stderr with their code, message, suggestions and usage.
|
|
387
152
|
|
|
388
153
|
Plan-limit failures use `upgrade_required`, exit code `3`, and include an
|
|
389
154
|
`upgrade_url`. Human output prints the same billing link after the error.
|
|
@@ -394,8 +159,6 @@ auth.
|
|
|
394
159
|
## Source, releases, and license
|
|
395
160
|
|
|
396
161
|
The npm package is publicly installable, but its canonical source is private and proprietary.
|
|
397
|
-
Workspace `0.1.18` adds the current generation model catalog and prompt controls.
|
|
398
|
-
It includes the `0.1.12` reusable character commands and faceless-generation character selection.
|
|
399
162
|
|
|
400
163
|
Admin recovery and other internal operator commands are not part of the public CLI artifact.
|
|
401
164
|
|
|
@@ -403,45 +166,23 @@ Published behavior depends on the installed version; inspect it with `blitzreels
|
|
|
403
166
|
See `LICENSE` for the package terms.
|
|
404
167
|
|
|
405
168
|
|
|
406
|
-
|
|
169
|
+
## Generation inputs
|
|
407
170
|
|
|
408
|
-
|
|
409
|
-
Omit it (or send null through REST/MCP) to retain the model default.
|
|
410
|
-
`generate images --options --json` and `generate videos --options --json` report
|
|
411
|
-
`parameters.resolution` with `supported`, `values`, `default`, and an unavailable reason.
|
|
412
|
-
`parameters.quality` reports that a separate quality tier is unavailable.
|
|
413
|
-
Unsupported explicit settings return validation errors before generation is queued.
|
|
171
|
+
Discover current models, resolution values/costs and reference limits with:
|
|
414
172
|
|
|
415
|
-
```
|
|
416
|
-
blitzreels generate images --
|
|
417
|
-
blitzreels generate videos --
|
|
418
|
-
blitzreels
|
|
173
|
+
```bash
|
|
174
|
+
blitzreels generate images --options --json
|
|
175
|
+
blitzreels generate videos --options --json
|
|
176
|
+
blitzreels generate voiceovers --options --json
|
|
419
177
|
```
|
|
420
178
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
Generation references use model-specific limits from `generate images --options` and `generate videos --options`.
|
|
429
|
-
Nano Banana 2 and Pro accept 14 images; Seedance 2.0 ref2v accepts 9 images, 3 videos, and 3 audio files
|
|
430
|
-
(12 total); Seedance 2.5 accepts 30 images, 10 videos, and 10 audio files (50 total) through BytePlus.
|
|
431
|
-
A source image counts as the first reference in reference mode. Reference order is preserved; missing,
|
|
432
|
-
wrong-type, duplicate, or excess assets fail instead of being dropped.
|
|
433
|
-
|
|
434
|
-
Use `--reference-video-asset-id` and `--reference-audio-asset-id` with processed library assets
|
|
435
|
-
(repeatable or comma-separated). Video references guide motion/camera; audio guides speech, sound, or rhythm.
|
|
436
|
-
Seedance 2.0 audio references require an image or video. Seedance 2.5 permits audio-only references.
|
|
437
|
-
Use `--end-frame FILE` or `--end-frame-asset-id ID` alongside a source image for supported first/last-frame models.
|
|
438
|
-
End frames cannot be mixed with reference arrays. Reference images do not lock the exact opening frame.
|
|
439
|
-
|
|
440
|
-
Omit `--generate-audio` for model behavior; use `--generate-audio` or `--no-generate-audio` for an explicit request.
|
|
441
|
-
Unsupported audio toggles, seeds, negative prompts, and provider overrides fail with model-specific errors.
|
|
442
|
-
`--enhance-prompt` uses BlitzReels model grammar, input roles, bounded image previews, duration, and audio intent.
|
|
443
|
-
Video/audio contents are not inspected by the enhancer. Voice IDs come from `generate voiceovers --options`,
|
|
444
|
-
which includes the provider, names, and previews. Custom voice IDs are not supported by this catalog API.
|
|
179
|
+
- Omitted `--resolution` uses the model default; unsupported explicit settings fail validation.
|
|
180
|
+
- Reference order is preserved. Missing, duplicate, wrong-type or excess assets are rejected.
|
|
181
|
+
- First/last-frame input requires a source image and cannot mix an end frame with reference arrays.
|
|
182
|
+
- Omit `--generate-audio` for model behavior; use its positive/negative form for an explicit choice.
|
|
183
|
+
- `--enhance-prompt` uses model grammar and bounded image previews, not video/audio content inspection.
|
|
184
|
+
- Choose voice IDs from the options catalog, including its provider and preview fields.
|
|
185
|
+
- Export resolution controls output canvas size; it does not add native detail to generated media.
|
|
445
186
|
|
|
446
187
|
## Recovery contracts
|
|
447
188
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAgCzD,eAAO,MAAM,aAAa,EAAE,WAAW,EA+BtC,CAAC"}
|
package/dist/command-registry.js
CHANGED
|
@@ -21,6 +21,7 @@ import { PROJECT_READ_COMMAND_SPECS } from "./commands/project-read.js";
|
|
|
21
21
|
import { PROJECTS_COMMAND_SPECS } from "./commands/projects.js";
|
|
22
22
|
import { PUBLISHING_COMMAND_SPECS } from "./commands/publishing.js";
|
|
23
23
|
import { RECORDING_SET_COMMAND_SPECS } from "./commands/recording-sets.js";
|
|
24
|
+
import { SERIES_COMMAND_SPECS } from "./commands/series.js";
|
|
24
25
|
import { STOCK_LIBRARY_COMMAND_SPECS } from "./commands/stock-library.js";
|
|
25
26
|
import { STORY_KIT_COMMAND_SPECS } from "./commands/story-kits.js";
|
|
26
27
|
import { SYSTEM_COMMAND_SPECS } from "./commands/system.js";
|
|
@@ -50,6 +51,7 @@ export const COMMAND_SPECS = [
|
|
|
50
51
|
...EXPORTS_COMMAND_SPECS,
|
|
51
52
|
...FACELESS_COMMAND_SPECS,
|
|
52
53
|
...STORY_KIT_COMMAND_SPECS,
|
|
54
|
+
...SERIES_COMMAND_SPECS,
|
|
53
55
|
...FORMATS_COMMAND_SPECS,
|
|
54
56
|
...GENERATION_COMMAND_SPECS,
|
|
55
57
|
...JOBS_COMMAND_SPECS,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,GAAG,oBAAoB;IACvB,GAAG,kBAAkB;IACrB,GAAG,wBAAwB;IAC3B,GAAG,uBAAuB;IAC1B,GAAG,sBAAsB;IACzB,GAAG,2BAA2B;IAC9B,GAAG,yBAAyB;IAC5B,GAAG,2BAA2B;IAC9B,GAAG,mBAAmB;IACtB,GAAG,oBAAoB;IACvB,GAAG,0BAA0B;IAC7B,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;IAC7B,GAAG,mBAAmB;IACtB,GAAG,qBAAqB;IACxB,GAAG,2BAA2B;IAC9B,GAAG,8BAA8B;IACjC,GAAG,sBAAsB;IACzB,GAAG,uBAAuB;IAC1B,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;IACzB,GAAG,uBAAuB;IAC1B,GAAG,qBAAqB;IACxB,GAAG,wBAAwB;IAC3B,GAAG,kBAAkB;IACrB,GAAG,uBAAuB;IAC1B,GAAG,qBAAqB;IACxB,GAAG,iBAAiB;IACpB,GAAG,wBAAwB;CAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,GAAG,oBAAoB;IACvB,GAAG,kBAAkB;IACrB,GAAG,wBAAwB;IAC3B,GAAG,uBAAuB;IAC1B,GAAG,sBAAsB;IACzB,GAAG,2BAA2B;IAC9B,GAAG,yBAAyB;IAC5B,GAAG,2BAA2B;IAC9B,GAAG,mBAAmB;IACtB,GAAG,oBAAoB;IACvB,GAAG,0BAA0B;IAC7B,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;IAC7B,GAAG,mBAAmB;IACtB,GAAG,qBAAqB;IACxB,GAAG,2BAA2B;IAC9B,GAAG,8BAA8B;IACjC,GAAG,sBAAsB;IACzB,GAAG,uBAAuB;IAC1B,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;IACzB,GAAG,uBAAuB;IAC1B,GAAG,oBAAoB;IACvB,GAAG,qBAAqB;IACxB,GAAG,wBAAwB;IAC3B,GAAG,kBAAkB;IACrB,GAAG,uBAAuB;IAC1B,GAAG,qBAAqB;IACxB,GAAG,iBAAiB;IACpB,GAAG,wBAAwB;CAC5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clips.d.ts","sourceRoot":"","sources":["../../src/commands/clips.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,YAAY,EAGjB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEtB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAe,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,eAAO,MAAM,mBAAmB,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"clips.d.ts","sourceRoot":"","sources":["../../src/commands/clips.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/clips.js
CHANGED
|
@@ -206,6 +206,7 @@ export const CLIPS_COMMAND_SPECS = [
|
|
|
206
206
|
description: "Maximum complete clip duration in seconds (1–180); no mid-sentence truncation.",
|
|
207
207
|
},
|
|
208
208
|
{ name: "caption-theme-id" },
|
|
209
|
+
{ name: "series-id" },
|
|
209
210
|
{
|
|
210
211
|
name: "studio-sound",
|
|
211
212
|
type: "boolean",
|
|
@@ -1065,6 +1066,7 @@ function buildClipsDryRun({ context, spec, helpers, }) {
|
|
|
1065
1066
|
min_duration_seconds: options.minDurationSeconds,
|
|
1066
1067
|
max_duration_seconds: options.maxDurationSeconds,
|
|
1067
1068
|
caption_theme_id: options.captionThemeId,
|
|
1069
|
+
series_id: options.seriesId,
|
|
1068
1070
|
studio_sound: options.studioSound,
|
|
1069
1071
|
create_flow_options: buildClipWorkflowCreateFlowOptions({ options }),
|
|
1070
1072
|
branding_options: buildClipWorkflowBrandingOptions({
|
|
@@ -1241,6 +1243,9 @@ function parseClipWorkflowOptions({ flags, helpers, }) {
|
|
|
1241
1243
|
throw new Error("--no-captions is not supported. Clip batches use captions like /dashboard/clip.");
|
|
1242
1244
|
}
|
|
1243
1245
|
return {
|
|
1246
|
+
seriesId: parseNullableWorkflowString({
|
|
1247
|
+
value: helpers.getStringFlag({ flags, name: "series-id" }),
|
|
1248
|
+
}),
|
|
1244
1249
|
source: assetId !== null
|
|
1245
1250
|
? {
|
|
1246
1251
|
sourceType: "asset",
|
|
@@ -1252,7 +1257,9 @@ function parseClipWorkflowOptions({ flags, helpers, }) {
|
|
|
1252
1257
|
assetId: null,
|
|
1253
1258
|
youtubeUrl: youtubeUrl ?? "",
|
|
1254
1259
|
},
|
|
1255
|
-
logoAssetId:
|
|
1260
|
+
logoAssetId: parseNullableWorkflowString({
|
|
1261
|
+
value: helpers.getStringFlag({ flags, name: "logo-asset-id" }),
|
|
1262
|
+
}),
|
|
1256
1263
|
outputDir: helpers.getStringFlag({ flags, name: "output" }) ?? null,
|
|
1257
1264
|
count,
|
|
1258
1265
|
minDurationSeconds,
|
|
@@ -1287,7 +1294,9 @@ function normalizeClipPresetId({ value }) {
|
|
|
1287
1294
|
throw new Error("--clip-preset-id must be default, formation-clipperz, high-retention, or demo-focus.");
|
|
1288
1295
|
}
|
|
1289
1296
|
function parseNullableWorkflowString({ value, }) {
|
|
1290
|
-
if (value === undefined
|
|
1297
|
+
if (value === undefined)
|
|
1298
|
+
return undefined;
|
|
1299
|
+
if (value === "null") {
|
|
1291
1300
|
return null;
|
|
1292
1301
|
}
|
|
1293
1302
|
const trimmed = value.trim();
|
|
@@ -1310,6 +1319,7 @@ async function createClipWorkflow({ context, helpers, }) {
|
|
|
1310
1319
|
minDurationSeconds: options.minDurationSeconds,
|
|
1311
1320
|
maxDurationSeconds: options.maxDurationSeconds,
|
|
1312
1321
|
captionThemeId: options.captionThemeId,
|
|
1322
|
+
seriesId: options.seriesId,
|
|
1313
1323
|
studioSound: options.studioSound,
|
|
1314
1324
|
createFlowOptions: buildClipWorkflowCreateFlowOptions({ options }),
|
|
1315
1325
|
brandingOptions: buildClipWorkflowBrandingOptions({
|
|
@@ -1323,7 +1333,7 @@ async function createClipWorkflow({ context, helpers, }) {
|
|
|
1323
1333
|
batch_id: created.batch.batch_id,
|
|
1324
1334
|
status: created.batch.status,
|
|
1325
1335
|
preset: options.clipPresetId,
|
|
1326
|
-
caption_theme_id: options.captionThemeId,
|
|
1336
|
+
caption_theme_id: options.captionThemeId ?? null,
|
|
1327
1337
|
output_dir: null,
|
|
1328
1338
|
summary: {
|
|
1329
1339
|
requested: options.count,
|
|
@@ -1371,7 +1381,7 @@ async function createClipWorkflow({ context, helpers, }) {
|
|
|
1371
1381
|
batch_id: readyBatch.batch.batch_id,
|
|
1372
1382
|
status: readyBatch.batch.status,
|
|
1373
1383
|
preset: options.clipPresetId,
|
|
1374
|
-
caption_theme_id: options.captionThemeId,
|
|
1384
|
+
caption_theme_id: options.captionThemeId ?? null,
|
|
1375
1385
|
output_dir: outputDir,
|
|
1376
1386
|
summary: {
|
|
1377
1387
|
requested: options.count,
|
|
@@ -1402,6 +1412,8 @@ async function waitForClipBatchEnvelope({ context, helpers, batchId, }) {
|
|
|
1402
1412
|
}
|
|
1403
1413
|
}
|
|
1404
1414
|
function buildClipWorkflowBrandingOptions({ logoAssetId, }) {
|
|
1415
|
+
if (logoAssetId === undefined)
|
|
1416
|
+
return {};
|
|
1405
1417
|
return {
|
|
1406
1418
|
logoOverlayEnabled: logoAssetId !== null,
|
|
1407
1419
|
logoMediaAssetId: logoAssetId,
|