veogent 1.3.0 → 1.4.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.
Files changed (4) hide show
  1. package/README.md +155 -324
  2. package/index.js +123 -165
  3. package/package.json +1 -1
  4. package/skills/SKILL.md +314 -734
package/skills/SKILL.md CHANGED
@@ -1,819 +1,399 @@
1
1
  ---
2
2
  name: veogent
3
- description: Full CLI skill guide for the VEOGENT API AI-powered movie/story project management, image & video generation, and YouTube publishing.
3
+ description: "Operate the VEOGENT CLI for AI video/story production workflows: authentication, project setup, chapters, scenes, character readiness, image/video generation, scene repair, and YouTube metadata/thumbnail flows."
4
4
  ---
5
5
 
6
6
  # VEOGENT CLI — Agent Skill Guide
7
7
 
8
- The `veogent` command-line interface interacts with the **VEOGENT API** for managing AI movie/story projects, chapters, scenes, characters, and media generation requests (images, videos, upscales). All data outputs are strict **JSON** — designed for AI agent parsing and chaining.
8
+ Use the `veogent` CLI as the source of truth for VEOGENT workflows. Always use `--agent-safe` for automation-friendly JSON output.
9
9
 
10
10
  ---
11
11
 
12
- ## Table of Contents
13
-
14
- 1. [Authentication & Configuration](#-authentication--configuration)
15
- 2. [Projects & Assets](#-projects--assets)
16
- 3. [Chapters](#-chapters)
17
- 4. [Scenes](#-scenes)
18
- 5. [Characters & Readiness](#-characters)
19
- 6. [Scene Editing & Prompt Crafting](#-scene-editing--prompt-crafting)
20
- 7. [Generation Requests (Images / Videos / Upscale)](#-generation-requests)
21
- 8. [Monitoring & Status](#-monitoring--status)
22
- 9. [YouTube Metadata & Thumbnails](#-youtube-metadata--thumbnails)
23
- 10. [Flow Token & Credits](#-flow-token-management)
24
- 11. [The Complete VEOGENT Pipeline (Best Practices)](#-the-complete-veogent-pipeline)
25
- 12. [Error Handling](#-error-handling)
12
+ ## How VEOGENT Works — The Mental Model
26
13
 
27
- ---
28
-
29
- ## 🔐 Authentication & Configuration
30
-
31
- ### Skill: `login`
32
- - **Description:** Login to obtain access token via Web Browser. Opens a local browser for **Google Firebase OAuth** — agents **cannot** authenticate automatically.
33
- - **Guidelines:** If `veogent status` returns `{"error": "Not logged in"}`, instruct the user to run `veogent login` manually in their desktop terminal and wait for confirmation.
34
- - **Example:**
35
- ```bash
36
- veogent login
37
- ```
38
-
39
- ### Skill: `logout`
40
- - **Description:** Clear saved credentials and remove the stored access token.
41
- - **Example:**
42
- ```bash
43
- veogent logout
44
- ```
45
-
46
- ### Skill: `status`
47
- - **Description:** Show current authenticated user, Flow Key details, and payment tier.
48
- - **Guidelines:** Always call this first to verify the agent has valid authentication before making API calls.
49
- - **Example:**
50
- ```bash
51
- veogent status
52
- # Output: { "authenticated": true, "flowKey": "ya29.xxx", "paymentTier": "PAYGATE_TIER_TWO" }
53
- ```
54
-
55
- ### Skill: `setup-flow`
56
- - **Description:** Setup/update the Google Flow Key and User Payment Tier. Required for video generation and AI-assisted features.
57
- - **Guidelines:**
58
- - If any VEOGENT API request fails with a `"status code 401"` or Flow error, the Flow Key has expired.
59
- - Prompt the user for a new key and update it via `setup-flow` before retrying.
60
- - **Options:**
61
- | Flag | Required | Description | Default |
62
- |------|----------|-------------|---------|
63
- | `--flowkey <key>` | ✅ | The Google access token (ya29...) | — |
64
- | `--tier <tier>` | ❌ | User payment tier | `PAYGATE_TIER_TWO` |
65
- - **Example:**
66
- ```bash
67
- veogent setup-flow --flowkey "ya29.a0AW..." --tier "PAYGATE_TIER_TWO"
68
- ```
69
-
70
- ### Skill: `obtain-flow`
71
- - **Description:** Auto-extract your labs.google Flow Token (`ya29.`) using a secure Chromium browser overlay.
72
- - **Guidelines:** This opens a Chromium window to `https://labs.google/fx/tools/flow` and captures the Bearer Token from network traffic. The user must click "Create with Flow" and login if requested.
73
- - **Example:**
74
- ```bash
75
- veogent obtain-flow
76
- # Output: 🎉 Extracted Flow Token: ya29.xxx
77
- # Then apply it:
78
- veogent setup-flow --flowkey "ya29.xxx"
79
- ```
80
-
81
- ---
82
-
83
- ## 📁 Projects & Assets
84
-
85
- ### Skill: `image-materials`
86
- - **Description:** Get all available Image Material styles (e.g., `CINEMATIC`, `PIXAR_3D`, `Anime style`).
87
- - **Guidelines:** **Always call this before creating a project** to know which material strings are valid. `CINEMATIC` is an acceptable default if unsure.
88
- - **Example:**
89
- ```bash
90
- veogent image-materials
91
- ```
92
-
93
- ### Skill: `custom-prompts`
94
- - **Description:** Get all custom prompt templates / story directives.
95
- - **Guidelines:** Call this to find a matching `customPromptId` if a custom stylistic prompt is needed when creating a project or generating descriptions.
96
- - **Example:**
97
- ```bash
98
- veogent custom-prompts
99
- ```
100
-
101
- ### Skill: `projects`
102
- - **Description:** List all your available projects.
103
- - **Guidelines:**
104
- - IDs are **Firebase Document Strings** (e.g., `APQF6Ay0kLeXLhpctTdD`), not simple integers.
105
- - Always use the field `"id"` from the JSON response array.
106
- - **Example:**
107
- ```bash
108
- veogent projects
109
- ```
110
-
111
- ### Skill: `project`
112
- - **Description:** Get details for a specific project including its progress status, characters, and configuration.
113
- - **Example:**
114
- ```bash
115
- veogent project <projectId>
116
- veogent project APQF6Ay0kLeXLhpctTdD
117
- ```
118
-
119
- ### Skill: `create-project-description`
120
- - **Description:** Generate an AI-powered description for a new project based on keywords. This should be called **before** `create-project` to build the story payload.
121
- - **Options:**
122
- | Flag | Required | Description |
123
- |------|----------|-------------|
124
- | `--keyword <keyword>` | ✅ | Keywords for the project |
125
- | `--lang <lang>` | ✅ | Story language (e.g., `English`, `Vietnamese`) |
126
- | `--promptId <promptId>` | ✅ | Custom Prompt ID from `custom-prompts` |
127
- | `--objects <json>` | ❌ | Objects JSON array (characters/visual assets) |
128
- | `--objects-file <path>` | ❌ | Path to JSON file containing objects array |
129
- - **Example:**
130
- ```bash
131
- veogent create-project-description --keyword "T-rex, Neon, Tokyo" --lang "English" --promptId "promptId123"
132
- # With objects:
133
- veogent create-project-description --keyword "A knight saves a dragon" --lang "English" \
134
- --objects '[{"name":"Knight","entityType":"character","description":"A brave medieval knight"}]'
135
- ```
136
-
137
- ### Skill: `create-project`
138
- - **Description:** Create a new AI movie/story project with full configuration.
139
- - **Options:**
140
- | Flag | Required | Description | Default |
141
- |------|----------|-------------|---------|
142
- | `--name <name>` | ✅ | Project name | — |
143
- | `--keyword <keyword>` | ✅ | Keywords | — |
144
- | `--desc <desc>` | ✅ | Description (use output from `create-project-description`) | — |
145
- | `--lang <lang>` | ✅ | Story language | — |
146
- | `--sound` | ✅ | Sound effects | `true` |
147
- | `--material <material>` | ✅ | Image material (from `image-materials`) | — |
148
- | `--chapters <count>` | ✅ | Number of chapters | `1` |
149
- | `--customPromptId <id>` | ❌ | Custom Prompt ID | — |
150
- | `--objects <json>` | ❌ | Objects JSON array (inline) | — |
151
- | `--objects-file <path>` | ❌ | Path to JSON file with objects array | — |
152
- | `--object-images <paths...>` | ❌ | Image files to auto-convert (use with `--object-names`) | — |
153
- | `--object-names <names...>` | ❌ | Names for each object image | — |
154
- | `--object-types <types...>` | ❌ | Entity types per object (`character`\|`visual_asset`) | `character` |
155
-
156
- - **Objects format** (max 4 image objects, max 10 JSON objects):
157
- ```json
158
- [
159
- {"name": "Hero", "entityType": "character", "description": "A brave knight", "file": "data:image/jpeg;base64,..."},
160
- {"name": "Castle", "entityType": "visual_asset", "description": "Medieval castle"}
161
- ]
162
- ```
163
-
164
- - **Examples:**
165
- ```bash
166
- # Basic (no objects)
167
- veogent create-project --name "Cyberpunk T-Rex" --keyword "T-rex, Neon, Sci-fi" \
168
- --desc "A massive T-rex walking inside Tokyo at night..." \
169
- --lang "English" --material "CINEMATIC" --chapters 5
170
-
171
- # With inline objects JSON
172
- veogent create-project --name "Knight Story" --keyword "medieval knight dragon" \
173
- --desc "A brave knight..." --lang "English" --material "CINEMATIC" --chapters 3 \
174
- --objects '[{"name":"Knight","entityType":"character","description":"A brave knight","file":"data:image/jpeg;base64,..."}]'
175
-
176
- # With objects from file
177
- veogent create-project --name "Knight Story" --keyword "medieval" \
178
- --desc "desc..." --lang "English" --material "CINEMATIC" --chapters 3 \
179
- --objects-file ./my-objects.json
180
-
181
- # Auto-convert image files
182
- veogent create-project --name "Knight Story" --keyword "medieval" \
183
- --desc "desc..." --lang "English" --material "CINEMATIC" --chapters 3 \
184
- --object-images hero.jpg castle.png \
185
- --object-names "Hero" "Castle" \
186
- --object-types "character" "visual_asset"
187
- ```
14
+ ```
15
+ --idea → AI Description → Project + Character References (image URIs)
16
+ Storyboard (scene scripts)
17
+ → Scenes → Images → Videos
18
+ ```
188
19
 
189
- ---
20
+ **The key insight:** Names in `--idea` become character/entity references with image URIs at **project level**. These references ensure visual consistency across ALL chapters and scenes.
190
21
 
191
- ## 📖 Chapters
192
-
193
- ### Skill: `chapters`
194
- - **Description:** Get all chapters for a specific project.
195
- - **Example:**
196
- ```bash
197
- veogent chapters <projectId>
198
- ```
199
-
200
- ### Skill: `recent-chapters`
201
- - **Description:** Get recently created or updated chapters across all projects.
202
- - **Options:**
203
- | Flag | Required | Description | Default |
204
- |------|----------|-------------|---------|
205
- | `--limit <limit>` | ❌ | Maximum number of recent chapters to return | `10` |
206
- - **Example:**
207
- ```bash
208
- veogent recent-chapters --limit 5
209
- ```
210
-
211
- ### Skill: `create-chapter-content`
212
- - **Description:** Generate AI story/narrative content for a specific chapter, producing scene scripts.
213
- - **Guidelines:**
214
- - This is a **synchronous AI generation call** — use the `chapterContent` array from the returned response directly.
215
- - Do NOT poll chapter state for contents; the canonical output is the response itself.
216
- - Each scene maps to approximately an **~8-second video clip**. The returned scene-script array should be **immediately** passed to `create-scene`.
217
- - **Response:**
218
- ```json
219
- { "status": "success", "chapterContent": ["Scene 1 script...", "Scene 2 script..."] }
220
- ```
221
- - **Options:**
222
- | Flag | Required | Description | Default |
223
- |------|----------|-------------|---------|
224
- | `--project <project>` | ✅ | Project ID | — |
225
- | `--chapter <chapter>` | ✅ | Chapter ID | — |
226
- | `--scenes <count>` | ✅ | Number of scenes to generate | `1` |
227
- - **Example:**
228
- ```bash
229
- veogent create-chapter-content --project "projID" --chapter "chapID" --scenes 5
230
- # → { "status": "success", "chapterContent": ["...", "..."] }
231
- ```
22
+ That's why you use character **NAMES only** in prompts — never describe appearance. The reference images already define exactly how each character looks.
232
23
 
233
24
  ---
234
25
 
235
- ## 🎬 Scenes
236
-
237
- ### Skill: `scenes`
238
- - **Description:** Get all scenes for a specific chapter within a project.
239
- - **Example:**
240
- ```bash
241
- veogent scenes <projectId> <chapterId>
242
- ```
243
-
244
- ### Skill: `create-scene`
245
- - **Description:** Create new scenes from an array of text content/script lines.
246
- - **Guidelines:** Pass the scene-script array returned from `create-chapter-content` directly. Use `--flowkey` to sync context via Firebase.
247
- - **Options:**
248
- | Flag | Required | Description | Default |
249
- |------|----------|-------------|---------|
250
- | `--project <project>` | ✅ | Project ID | — |
251
- | `--chapter <chapter>` | ✅ | Chapter ID | — |
252
- | `--content <content...>` | ✅ | Array of scene text scripts | — |
253
- | `--flowkey` | ❌ | Enable useFlowKey to sync context via Firebase | `false` |
254
- - **Example:**
255
- ```bash
256
- veogent create-scene --project "projID" --chapter "chapID" \
257
- --content "The T-Rex looks up at the sky." "A meteor shower begins." "Explosions rock the city." \
258
- --flowkey
259
- ```
260
-
261
- ### Skill: `add-scene`
262
- - **Description:** Add a single new scene to a chapter using a user prompt. Unlike `create-scene` (which bulk-creates from script arrays), this inserts one scene at a specific position.
263
- - **Guidelines:**
264
- - Use this to insert additional scenes into an existing chapter after initial scene creation.
265
- - By default, `regenerateImage` is `true` — the backend will auto-generate the scene image.
266
- - Use `--after-scene-id` to control insertion order; omit to append at the end.
267
- - **Options:**
268
- | Flag | Required | Description | Default |
269
- |------|----------|-------------|---------|
270
- | `--project <project>` | ✅ | Project ID | — |
271
- | `--chapter <chapter>` | ✅ | Chapter ID | — |
272
- | `--userprompt <userPrompt>` | ✅ | User narrative prompt for the new scene | — |
273
- | `--no-regenerate-image` | ❌ | Skip automatic image regeneration | `false` (images regenerated by default) |
274
- | `--after-scene-id <afterSceneId>` | ❌ | Scene ID to insert after (appends to end if omitted) | — |
275
- - **Examples:**
276
- ```bash
277
- # Add a scene at the end of the chapter
278
- veogent add-scene --project "projID" --chapter "chapID" \
279
- --userprompt "A meteor crashes into the city, sending shockwaves across the skyline."
280
-
281
- # Insert after a specific scene
282
- veogent add-scene --project "projID" --chapter "chapID" \
283
- --userprompt "The hero turns and runs toward the explosion." \
284
- --after-scene-id "ayeaOIYYlpY0o7xeRtRu"
285
-
286
- # Add without auto image generation
287
- veogent add-scene --project "projID" --chapter "chapID" \
288
- --userprompt "A quiet moment before the storm." --no-regenerate-image
289
- ```
26
+ ## Recommended Workflow (4 Phases)
290
27
 
291
- ---
28
+ ### Phase 1: Create Project
292
29
 
293
- ## 🧑‍🎨 Characters
294
-
295
- ### Skill: `characters`
296
- - **Description:** Get all characters for a specific project, including `imageUri` status and readiness info.
297
- - **Guidelines:** After creating scenes, the system **auto-generates characters**. Poll this command until `characterReadiness.allReady === true` before proceeding to image/video generation.
298
- - **Response:**
299
- ```json
300
- {
301
- "status": "success",
302
- "characters": [
303
- { "id": "...", "name": "...", "imageUri": "https://...", "ready": true }
304
- ],
305
- "characterReadiness": { "total": 4, "ready": 4, "allReady": true }
306
- }
307
- ```
308
- - **Example:**
309
- ```bash
310
- veogent characters <projectId>
311
- # Poll until: characterReadiness.allReady === true
312
- ```
313
-
314
- ### Skill: `scene-materialization-status`
315
- - **Description:** Check how many scenes have been materialized (created on the backend) for a chapter.
316
- - **Guidelines:** Use this after `create-scene` to verify all scenes are ready before starting image generation. Poll until `status === "READY"`.
317
- - **Options:**
318
- | Flag | Required | Description |
319
- |------|----------|-------------|
320
- | `--project <project>` | ✅ | Project ID |
321
- | `--chapter <chapter>` | ✅ | Chapter ID |
322
- - **Response:**
323
- ```json
324
- { "expectedScenes": 5, "materializedScenes": 5, "status": "READY" }
325
- ```
326
- Status values: `"PROCESSING"` | `"READY"` | `"EMPTY"`
327
- - **Example:**
328
- ```bash
329
- veogent scene-materialization-status --project "projID" --chapter "chapID"
330
- # Poll until: status === "READY"
331
- ```
332
-
333
- ### Skill: `edit-character`
334
- - **Description:** Update a character's description/traits or edit their generated image directly via AI prompt.
335
- - **Guidelines:**
336
- - **Regenerate Profile Mode** (default): Updates description/traits and generates a new portrait base.
337
- - **Direct Image Edit Mode** (`--editimage` flag): Applies changes directly to the existing generated portrait image via in-painting.
338
- - **Options:**
339
- | Flag | Required | Description | Default |
340
- |------|----------|-------------|---------|
341
- | `--project <project>` | ✅ | Project ID | — |
342
- | `--character <character>` | ✅ | Character ID (e.g., `drelenavance`) | — |
343
- | `--userprompt <userprompt>` | ✅ | User instruction to modify the character | — |
344
- | `--editimage` | ❌ | Enable direct Image Editing Mode | `false` |
345
- | `--flowkey` | ❌ | Enable useFlowKey to sync context via Firebase | `true` |
346
- - **Examples:**
347
- ```bash
348
- # Regenerate character profile with new traits
349
- veogent edit-character --project "projID" --character "drelenavance" --userprompt "change outfit to lab coat"
350
-
351
- # Direct image edit (in-paint on existing portrait)
352
- veogent edit-character --project "projID" --character "drelenavance" --userprompt "change shoes to black boots" --editimage
353
- ```
30
+ ```bash
31
+ veogent create-project \
32
+ --idea "Bella the white Bichon Frisé CEO in pink blazer, two Doberman bodyguards Rex and Duke in black suits, luxury shopping mall Saigon" \
33
+ --name "Boss Babe in Fur" \
34
+ --lang English --material CINEMATIC
35
+ ```
354
36
 
355
- ---
37
+ Internally: CLI calls `/app/description` → generates rich AI description from --idea → creates project with character references.
356
38
 
357
- ## 🖌️ Scene Editing & Prompt Crafting
358
-
359
- ### Skill: `edit-scene`
360
- - **Description:** Edit an existing scene's image prompt via AI assistance, hitting the `updateScriptSegment` workflow.
361
- - **Guidelines:**
362
- - You are editing the **Image Prompt for Frame 0** (the starting image) used for video generation.
363
- - By default, editing a scene auto-regenerates the image. Use `--no-regenerate` to skip.
364
- - To edit a specific past generated image, pass the previous `requestId` using `--request`.
365
-
366
- #### 📐 Prompting Guide for Scene Image Prompts
367
-
368
- Beside the main visual description, you **CAN** include minor action descriptions (e.g., "bus speeding over cliff", "smoke rising"). You **SHOULD** heavily leverage camera terminology to steer frame composition:
369
-
370
- **Shot Types:**
371
- | Shot Type | Description | Vietnamese |
372
- |-----------|-------------|------------|
373
- | Close-up | Tight framing on subject | Cận cảnh |
374
- | Wide shot | Full environment visible | Toàn cảnh |
375
- | Medium shot | Waist-up framing | Trung cảnh |
376
- | Extreme close-up | Detail-level (face, object) | Cận mặt |
377
- | Long shot | Subject small in frame | Tầm trung xa |
378
-
379
- **Camera Angles:**
380
- | Angle | Description |
381
- |-------|-------------|
382
- | High angle | Looking down on subject (Góc cao) |
383
- | Low angle | Looking up at subject (Góc thấp) |
384
- | Bird's-eye | Directly overhead (Góc chim) |
385
- | Eye-level | Neutral perspective (Góc ngang mắt) |
386
- | Over-the-shoulder | Behind a character looking forward |
387
- | POV | First-person perspective |
388
-
389
- **Camera Movements:**
390
- | Movement | Symbol | Description |
391
- |----------|--------|-------------|
392
- | Pan left | ← | Horizontal sweep left |
393
- | Pan right | → | Horizontal sweep right |
394
- | Tilt up | ↑ | Vertical sweep up |
395
- | Tilt down | ↓ | Vertical sweep down |
396
- | Zoom in | + | Push closer |
397
- | Zoom out | - | Pull farther |
398
-
399
- - **Options:**
400
- | Flag | Required | Description |
401
- |------|----------|-------------|
402
- | `--project <project>` | ✅ | Project ID |
403
- | `--chapter <chapter>` | ✅ | Chapter ID |
404
- | `--scene <scene>` | ✅ | Scene ID |
405
- | `--userprompt <userprompt>` | ✅ | User narrative prompt to modify the scene |
406
- | `--no-regenerate` | ❌ | Skip auto-regeneration of image |
407
- | `--request <request>` | ❌ | Target a specific past Request ID to edit its output |
408
-
409
- - **Examples:**
410
- ```bash
411
- # Modify image prompt (auto-regenerates)
412
- veogent edit-scene --project "projID" --chapter "chapID" --scene "sceneID" \
413
- --userprompt "Low angle shot of a yellow school bus speeding over a cliff, wide angle, dramatic lighting. Camera tilts down."
414
-
415
- # Modify image prompt WITHOUT auto-regeneration
416
- veogent edit-scene --project "projID" --chapter "chapID" --scene "sceneID" \
417
- --userprompt "child seat behind Paulo" --no-regenerate
418
-
419
- # Edit a specific past generated image directly
420
- veogent edit-scene --project "projID" --chapter "chapID" --scene "sceneID" \
421
- --userprompt "make the car red" --request "requestId123"
422
- ```
39
+ **--idea rules:**
40
+ - ✅ Specific character names + species/role: `"Mochi the Shiba Inu"`, `"Chef Gordon the Bulldog"`
41
+ - ✅ Location names: `"Grand Luxury Mall Saigon"`, `"Tokyo Night Market"`
42
+ - Visual traits: `"pink blazer"`, `"black tactical suit"`
43
+ - ✅ Props/creatures: `"robot vacuum"`, `"durian toy"`, `"golden shopping bags"`
44
+ - Vague: `"cute dog shopping"` VEOGENT invents random characters
423
45
 
424
- ---
46
+ ### Phase 2: Storyboard + Scenes
425
47
 
426
- ## 🎬 Generation Requests
48
+ ```bash
49
+ veogent chapters <projectId>
50
+ veogent create-chapter-content --project <projectId> --chapter <chapterId> --scenes 5
51
+ veogent create-scene --project <projectId> --chapter <chapterId> \
52
+ --content "Scene 1 script" "Scene 2 script" "Scene 3" "Scene 4" "Scene 5" --flowkey
53
+ veogent characters <projectId> # poll until allReady === true
54
+ ```
427
55
 
428
- ### Skill: `request`
429
- - **Description:** Create a generation job request. Supports `GENERATE_IMAGES`, `GENERATE_VIDEO`, and `VIDEO_UPSCALE`.
430
- - **Guidelines:**
431
- > ⚠️ **CRITICAL VALIDATION RULES (Strict DTO):** Do not pass unsupported flags for a specific type, or the server will return a `400 Bad Request` or `Validation Error`.
56
+ NEVER skip `create-chapter-content` — always let VEOGENT AI generate the storyboard.
432
57
 
433
- #### 1. Generate Images (`GENERATE_IMAGES`)
58
+ ### Phase 3: Generate Images + Videos
434
59
 
435
- | Flag | Required | Description | Allowed Values |
436
- |------|----------|-------------|----------------|
437
- | `--type` | | `GENERATE_IMAGES` | — |
438
- | `--project` | | Project ID | — |
439
- | `--chapter` | | Chapter ID | — |
440
- | `--scene` | ✅ | Scene ID | — |
441
- | `--imagemodel` | ✅ | Image model | `imagen3.5` |
60
+ ```bash
61
+ veogent batch-request --type GENERATE_IMAGES \
62
+ --project X --chapter Y --all --orientation VERTICAL --wait
63
+ veogent batch-request --type GENERATE_VIDEO \
64
+ --project X --chapter Y --all --orientation VERTICAL --wait
65
+ ```
442
66
 
443
- > 🚫 **Prohibited flags:** Do NOT pass `--orientation`, `--videomodel`, or `--speed`.
67
+ ### Phase 4: QA + Fix Loop
444
68
 
445
69
  ```bash
446
- veogent request --type "GENERATE_IMAGES" --project "projID" --chapter "chapID" --scene "sceneID" --imagemodel "imagen3.5"
70
+ veogent workflow-status --project X --chapter Y
447
71
  ```
448
72
 
449
- #### 2. Generate Video (`GENERATE_VIDEO`)
73
+ Then fix using edit-scene modes and video regen (see Scene Management below).
450
74
 
451
- | Flag | Required | Description | Allowed Values |
452
- |------|----------|-------------|----------------|
453
- | `--type` | ✅ | `GENERATE_VIDEO` | — |
454
- | `--project` | ✅ | Project ID | — |
455
- | `--chapter` | ✅ | Chapter ID | — |
456
- | `--scene` | ✅ | Scene ID | — |
457
- | `--videomodel` | ✅ | Video model | `veo_3_1_fast` (recommended), `veo_3_1_fast_r2v` |
458
- | `--speed` | ✅ | Video speed | `normal`, `timelapse`, `slowmotion` |
459
- | `--imagemodel` | ✅ | Image model for video context | `imagen3.5` |
460
- | `--orientation` | ✅ | Orientation | `HORIZONTAL`, `VERTICAL` |
461
- | `--endscene` | ❌ | End Scene ID for continuous video generation (interpolation to next frame) | — |
75
+ ---
462
76
 
463
- > ℹ️ `useFlowKey` is **locked natively to `true`** — you must have a valid Flow Key.
464
- > ℹ️ Only run `GENERATE_VIDEO` **after** the scene already has a successful matching-orientation image.
77
+ ## Scene Management
465
78
 
466
- ```bash
467
- veogent request --type "GENERATE_VIDEO" --project "projID" --chapter "chapID" --scene "sceneA" \
468
- --endscene "sceneB" --orientation "VERTICAL" --imagemodel "imagen3.5" --videomodel "veo_3_1_fast" --speed "normal"
469
- ```
79
+ ### insert-scene — Add a scene to an existing chapter
470
80
 
471
- #### 3. Video Upscale (`VIDEO_UPSCALE`)
81
+ ```bash
82
+ # Append to end
83
+ veogent insert-scene --project X --chapter Y --prompt "Bella exits the mall into sunset"
472
84
 
473
- | Flag | Required | Description | Allowed Values |
474
- |------|----------|-------------|----------------|
475
- | `--type` | | `VIDEO_UPSCALE` | — |
476
- | `--project` | ✅ | Project ID | — |
477
- | `--chapter` | ✅ | Chapter ID | — |
478
- | `--scene` | ✅ | Scene ID | — |
479
- | `--orientation` | ✅ | Orientation | `HORIZONTAL`, `VERTICAL` |
85
+ # Insert after a specific scene
86
+ veogent insert-scene --project X --chapter Y \
87
+ --prompt "Bella checks phone in lobby" --after <sceneId>
88
+ ```
480
89
 
481
- > 🚫 **Prohibited flags:** Do NOT pass `--imagemodel` or `--videomodel`.
90
+ ### edit-scene Two modes
482
91
 
92
+ **Mode A — Edit storyboard/prompt only (no image regen):**
483
93
  ```bash
484
- veogent request --type "VIDEO_UPSCALE" --project "projID" --chapter "chapID" --scene "sceneID" --orientation "HORIZONTAL"
94
+ veogent edit-scene --project X --chapter Y --scene Z \
95
+ --prompt "Bella walks through mall on all four paws, steady tracking shot"
485
96
  ```
97
+ → Updates scene storyboard + image prompt text only. No image generated.
98
+ → You trigger image gen separately: `request --type GENERATE_IMAGES --scene Z --wait`
99
+ → **Use when:** image is fundamentally wrong, OR fixing video (image fine, update prompt then regen video)
486
100
 
487
- ### Skill: `upscale` (Shortcut)
488
- - **Description:** Shortcut command for upscaling video output for a specific scene.
489
- - **Options:**
490
- | Flag | Required | Description | Default |
491
- |------|----------|-------------|---------|
492
- | `--project` | ✅ | Project ID | — |
493
- | `--chapter` | | Chapter ID | |
494
- | `--scene` | | Scene ID | |
495
- | `--orientation` | ❌ | Orientation | `VERTICAL` |
496
- | `--resolution` | ❌ | Target resolution | `VIDEO_RESOLUTION_4K` |
497
- - **Example:**
498
- ```bash
499
- veogent upscale --project "projID" --chapter "chapID" --scene "sceneID" --orientation VERTICAL --resolution VIDEO_RESOLUTION_4K
500
- ```
101
+ **Mode B Regenerate image directly (with request ID):**
102
+ ```bash
103
+ veogent edit-scene --project X --chapter Y --scene Z \
104
+ --prompt "adjust lighting to warmer tones, shift camera right" \
105
+ --request <requestId> --wait
106
+ ```
107
+ VEOGENT AI edits the existing generated image using your instruction
108
+ **Use when:** image is close but needs a tweak (lighting, pose, angle, crop)
501
109
 
502
- ---
110
+ **Decision guide:**
503
111
 
504
- ## 📊 Monitoring & Status
505
-
506
- ### Skill: `requests`
507
- - **Description:** Get generation requests/jobs status for the current user. This is the **primary status board** for all generation workflows (image/video/character-edit).
508
- - **Guidelines:**
509
- - Always check this before retrying any generation.
510
- - Results are sorted by `createdAt` descending (most recent first).
511
- - Use `--limit` to limit results for efficiency in agent loops.
512
- - **Options:**
513
- | Flag | Required | Description |
514
- |------|----------|-------------|
515
- | `--limit <n>` | ❌ | Return only the N most recent requests |
516
- | `--project <projectId>` | ❌ | Filter by project ID |
517
- | `--chapter <chapterId>` | ❌ | Filter by chapter ID |
518
- | `--status <status>` | ❌ | Filter by status (`COMPLETED`, `FAILED`, `PROCESSING`, `PENDING`) |
519
- - **Response:** `{ "status": "success", "total": N, "data": [...] }`
520
- - **Examples:**
521
- ```bash
522
- veogent requests # all requests, newest first
523
- veogent requests --limit 10 # 10 most recent
524
- veogent requests --project <projId> --chapter <chapId> # filter by project/chapter
525
- veogent requests --status FAILED --limit 20 # 20 most recent failures
526
- ```
527
-
528
- ### Skill: `scene-status`
529
- - **Description:** Get scene status snapshot for a chapter, with **embedded asset URLs** (image + video) per scene.
530
- - **Guidelines:** Use this as the canonical status view for scenes — no need for separate asset-history lookup.
531
- - **Options:**
532
- | Flag | Required | Description |
533
- |------|----------|-------------|
534
- | `--project <project>` | ✅ | Project ID |
535
- | `--chapter <chapter>` | ✅ | Chapter ID |
536
- - **Response per scene:**
537
- ```json
538
- {
539
- "sceneId": "...",
540
- "image": { "status": "COMPLETED", "url": "https://...", "completedAt": 1234567890 },
541
- "video": { "status": "COMPLETED", "url": "https://...", "completedAt": 1234567890 }
542
- }
543
- ```
544
- - **Example:**
545
- ```bash
546
- veogent scene-status --project "projID" --chapter "chapID"
547
- ```
548
-
549
- ### Skill: `workflow-status`
550
- - **Description:** Export a full workflow snapshot — scenes, requests, and embedded asset URLs — for a project/chapter.
551
- - **Guidelines:** The most comprehensive single-command status view for agents. Use this to audit progress before and after generation steps.
552
- - **Options:**
553
- | Flag | Required | Description |
554
- |------|----------|-------------|
555
- | `--project <project>` | ✅ | Project ID |
556
- | `--chapter <chapter>` | ✅ | Chapter ID |
557
- - **Example:**
558
- ```bash
559
- veogent workflow-status --project "projID" --chapter "chapID"
560
- ```
561
-
562
- ### Skill: `wait-images`
563
- - **Description:** Wait until all image requests in a chapter finish processing.
564
- - **Guidelines:**
565
- - Default: waits until queue is drained (no longer pending/processing).
566
- - `--require-success`: after queue drains, also verifies every scene has at least one `COMPLETED` image asset. Exits non-zero if any scene lacks a successful asset.
567
- - **Distinction:** "finished" ≠ "succeeded". Always use `--require-success` in automated pipelines.
568
- - **Options:**
569
- | Flag | Required | Description |
570
- |------|----------|-------------|
571
- | `--project <project>` | ✅ | Project ID |
572
- | `--chapter <chapter>` | ✅ | Chapter ID |
573
- | `--require-success` | ❌ | Fail if any scene has no completed image asset |
574
- - **Example:**
575
- ```bash
576
- veogent wait-images --project "projID" --chapter "chapID" --require-success
577
- ```
578
-
579
- ### Skill: `wait-videos`
580
- - **Description:** Wait until all video requests in a chapter finish processing.
581
- - **Options:**
582
- | Flag | Required | Description |
583
- |------|----------|-------------|
584
- | `--project <project>` | ✅ | Project ID |
585
- | `--chapter <chapter>` | ✅ | Chapter ID |
586
- | `--require-success` | ❌ | Fail if any scene has no completed video asset |
587
- - **Example:**
588
- ```bash
589
- veogent wait-videos --project "projID" --chapter "chapID" --require-success
590
- ```
591
-
592
- ### Skill: `image-models`
593
- - **Description:** List all supported image generation models.
594
- - **Example:**
595
- ```bash
596
- veogent image-models
597
- # → { "status": "success", "models": ["imagen3.5"] }
598
- ```
599
-
600
- ### Skill: `video-models`
601
- - **Description:** List all supported video generation models.
602
- - **Example:**
603
- ```bash
604
- veogent video-models
605
- # → { "status": "success", "models": ["veo_3_1_fast", "veo_3_1_fast_r2v"] }
606
- ```
607
-
608
- ### Skill: `flow-credits`
609
- - **Description:** Fetch plan and credit balance from Google AI Sandbox using your Flow key (Bearer token).
610
- - **Options:**
611
- | Flag | Required | Description |
612
- |------|----------|-------------|
613
- | `--flowkey <flowkey>` | ❌ | Flow key (`ya29.` token). Defaults to stored key. |
614
- - **Response:**
615
- ```json
616
- { "status": "success", "plan": "...", "credits": 100, "totalCredits": 200, "usedCredits": 100, "resetAt": "..." }
617
- ```
618
- - **Example:**
619
- ```bash
620
- veogent flow-credits
621
- veogent flow-credits --flowkey "ya29.a0ATk..."
622
- ```
623
-
624
- ### Skill: `assets`
625
- - **Description:** Check generated assets history/status for a specific scene.
626
- - **Guidelines:**
627
- - **Anti-Spam Rule:** If status is `PENDING` or `PROCESSING`, **WAIT** and do not duplicate requests.
628
- - **Concurrency:** Maximum **5 requests** can be processed simultaneously. `"maximum request limit reached"` means the queue is full — wait and retry later.
629
- - **Example:**
630
- ```bash
631
- # Types: GENERATE_IMAGES, GENERATE_VIDEO, EDIT_IMAGE
632
- veogent assets <projectId> <chapterId> <sceneId> GENERATE_IMAGES
633
- veogent assets <projectId> <chapterId> <sceneId> GENERATE_VIDEO
634
- ```
112
+ | Situation | Action |
113
+ |-----------|--------|
114
+ | Image fundamentally wrong | Mode A → regen image → regen video |
115
+ | Image close, needs tweak | Mode B (--request) regen video |
116
+ | Image fine, video wrong | Mode A (update prompt) → regen video only |
635
117
 
636
118
  ---
637
119
 
638
- ## 📺 YouTube Metadata & Thumbnails
639
-
640
- ### Skill: `generate-yt-metadata`
641
- - **Description:** Generate YouTube metadata (Title, Description, Tags) for a chapter using AI.
642
- - **Options:**
643
- | Flag | Required | Description |
644
- |------|----------|-------------|
645
- | `--project` | ✅ | Project ID |
646
- | `--chapter` | ✅ | Chapter ID |
647
- | `--lang` | ✅ | Story language |
648
- - **Example:**
649
- ```bash
650
- veogent generate-yt-metadata --project "projID" --chapter "chapID" --lang "English"
651
- ```
652
-
653
- ### Skill: `generate-yt-thumbnail`
654
- - **Description:** Triggers a request to generate a YouTube thumbnail for a chapter.
655
- - **Options:**
656
- | Flag | Required | Description |
657
- |------|----------|-------------|
658
- | `--project` | ✅ | Project ID |
659
- | `--chapter` | ✅ | Chapter ID |
660
- | `--lang` | ✅ | Story language |
661
- - **Example:**
662
- ```bash
663
- veogent generate-yt-thumbnail --project "projID" --chapter "chapID" --lang "English"
664
- ```
665
-
666
- ### Skill: `yt-thumbnails`
667
- - **Description:** Retrieve generated YouTube thumbnails for a chapter.
668
- - **Example:**
669
- ```bash
670
- veogent yt-thumbnails <projectId> <chapterId>
671
- ```
120
+ ## Character Management
672
121
 
673
- ---
122
+ Characters are project-level — shared across all chapters for visual consistency.
674
123
 
675
- ## 🗝️ Flow Token Management
676
-
677
- ### Skill: `obtain-flow`
678
- - **Description:** Auto-extract the Google Flow Token (`ya29.`) by opening a secure Chromium browser overlay to `https://labs.google/fx/tools/flow`.
679
- - **Guidelines:**
680
- 1. This opens a Chromium window automatically.
681
- 2. The user must click **"Create with Flow"** and login if requested.
682
- 3. The tool captures the underlying Bearer Token from network traffic.
683
- 4. After extraction, apply the token with `veogent setup-flow --flowkey "<token>"`.
684
- - **Example:**
685
- ```bash
686
- veogent obtain-flow
687
- # Then:
688
- veogent setup-flow --flowkey "ya29.a0AW..."
689
- ```
124
+ ### 3 Commands:
690
125
 
691
- ---
126
+ **Add character to project (no image yet):**
127
+ ```bash
128
+ veogent add-character --project X --name "Bella" --type character
129
+ ```
130
+ Entity types: `character`, `creature`, `location`, `visual_asset`, `faction`, `generic_troop`
692
131
 
693
- ## 💡 The Complete VEOGENT Pipeline
132
+ **Generate reference image (first time):**
133
+ ```bash
134
+ veogent generate-character --project X --character bella \
135
+ --prompt "A small white Bichon Frisé wearing a pink blazer, regal and confident"
136
+ ```
137
+ → This image defines how the character looks in ALL scenes
694
138
 
695
- Follow this 11-step production pipeline for end-to-end AI movie generation:
139
+ **Edit existing reference image:**
140
+ ```bash
141
+ veogent edit-character --project X --character bella \
142
+ --prompt "change blazer color to red"
143
+ ```
144
+ → Modifies existing image directly (preserves identity)
696
145
 
697
- ### Step 0: Resolve IDs
698
- If not provided by the user, fetch style/template IDs first:
146
+ **List characters + check readiness:**
699
147
  ```bash
700
- veogent custom-prompts # → get customPromptId
701
- veogent image-materials # → get material ID (default: CINEMATIC)
148
+ veogent characters <projectId>
149
+ # → allReady === true means all characters have reference images
702
150
  ```
703
151
 
704
- ### Step 1: Prepare Story Input
705
- Build your story arc, summary, and key notes **before** making API calls. This is the creative foundation.
152
+ **Rules:**
153
+ - Characters from `--idea` are auto-created (no manual add needed)
154
+ - `add-character` only for characters NOT in original --idea
155
+ - ⚠️ NEVER edit-character mid-project when scenes already generated
156
+ - More references = better consistency (locations, props, troops too)
157
+ - Mention a reference name in edit-scene → that entity appears in the scene
706
158
 
707
- ### Step 2: Description First
708
- Generate an AI description from story input, then use that payload for project creation:
159
+ ---
160
+
161
+ ## Video Generation
162
+
163
+ **Single scene:**
709
164
  ```bash
710
- veogent create-project-description --keyword "keywords" --lang "English" --promptId "promptId"
711
- # Use the returned description in create-project
165
+ veogent request --type GENERATE_VIDEO --project X --chapter Y --scene Z \
166
+ --videomodel veo_3_1_fast --orientation VERTICAL --wait
712
167
  ```
713
168
 
714
- ### Step 3: Create Project
169
+ **Batch all scenes:**
715
170
  ```bash
716
- veogent create-project --name "Name" --keyword "keywords" --desc "AI-generated description" --lang "English" --material "CINEMATIC" --chapters 5
171
+ veogent batch-request --type GENERATE_VIDEO --project X --chapter Y \
172
+ --all --orientation VERTICAL --wait
717
173
  ```
718
174
 
719
- ### Step 4: Chapter & Scene Content
720
- Generate chapter narrative content, then **immediately** pass the returned `chapterContent` array to `create-scene`:
721
- ```bash
722
- veogent create-chapter-content --project <projId> --chapter <chapId> --scenes 5
723
- # → { "status": "success", "chapterContent": ["scene 1...", "scene 2...", ...] }
724
- # Use chapterContent directly — do NOT poll chapter state
175
+ ### Speed Modes
725
176
 
726
- veogent create-scene --project <projId> --chapter <chapId> --content "script 1" "script 2" "script 3" --flowkey
727
- ```
177
+ | Mode | Flag | Use case |
178
+ |------|------|----------|
179
+ | Normal | `--speed normal` (default) | Most scenes |
180
+ | Timelapse | `--speed timelapse` | Sunrise, cooking montage, traffic, cloud movement |
181
+ | Slow motion | `--speed slowmotion` | Impact, water splash, dramatic reveal, emotional beat |
728
182
 
729
- ### Step 4b: Verify Scene Materialization
730
- After `create-scene`, scenes appear incrementally. Poll until ready:
731
183
  ```bash
732
- veogent scene-materialization-status --project <projId> --chapter <chapId>
733
- # Poll until: { "status": "READY", "expectedScenes": N, "materializedScenes": N }
184
+ veogent request --type GENERATE_VIDEO --project X --chapter Y --scene Z \
185
+ --speed slowmotion --videomodel veo_3_1_fast --orientation VERTICAL --wait
734
186
  ```
735
187
 
736
- ### Step 5: Await Character Casting (⚠️ CRITICAL)
737
- The system **auto-generates characters**. Do NOT rush to image/video generation.
738
- ```bash
739
- # Poll until characterReadiness.allReady === true
740
- veogent characters <projectId>
741
- # → { "characterReadiness": { "total": 4, "ready": 4, "allReady": true } }
188
+ ### Chained Video (endScene)
742
189
 
743
- # Alternative: check project progress object
744
- veogent project <projectId>
745
- # Look at: progress if FAILED/PROCESSING/PENDING, wait. Avoid spam retries.
190
+ Smooth transition between two consecutive scenes:
191
+ ```bash
192
+ veogent request --type GENERATE_VIDEO --project X --chapter Y --scene sceneA \
193
+ --endscene sceneB --videomodel veo_3_1_fast --orientation VERTICAL --wait
746
194
  ```
195
+ Uses sceneA image → sceneB image as start/end frames. Both must have successful images. Only `veo_3_1_fast`.
196
+
197
+ ---
198
+
199
+ ## Monitoring & Status
200
+
201
+ | Command | Use when |
202
+ |---------|----------|
203
+ | `workflow-status --project X --chapter Y` | Full snapshot: scenes + requests + assets (best for agents) |
204
+ | `scene-status --project X --chapter Y` | Quick image/video status per scene |
205
+ | `requests --project X --limit 10` | Check recent generation jobs |
206
+ | `failed-requests --project X --chapter Y` | Debug why gen failed |
207
+ | `wait-images --project X --chapter Y --require-success` | Block until all images done |
208
+ | `wait-videos --project X --chapter Y --require-success` | Block until all videos done |
209
+ | `queue-status` | Check concurrency (max 5) |
210
+ | `characters <projectId>` | Check character readiness |
211
+
212
+ ---
213
+
214
+ ## Workflow Rules
215
+
216
+ 1. Verify auth before any command (`veogent status`).
217
+ 2. Wait for character readiness (`allReady`) before requesting images.
218
+ 3. Use `--wait` flag on `request`/`batch-request`/`edit-scene` to block until completion.
219
+ 4. Use `workflow-status` as the main status view.
220
+ 5. Respect queue limits (max 5 concurrent). `queue-status` to check.
221
+ 6. **QA image BEFORE video** — bad image = bad video. Each video gen costs 8-10 min.
222
+ 7. **NEVER `edit-character` mid-project** — breaks visual identity across ALL scenes.
223
+ 8. **Batch parallel** — edit ALL + request ALL at once, not sequentially.
224
+ 9. **Fix at the right level** — use the decision guide in Scene Management.
225
+ 10. **Retry before changing prompts** — FAILED/TIMEOUT may be infra issues.
226
+ 11. **Use character names only** in prompts — reference images define appearance.
227
+ 12. Scene numbering: `displayOrder` is 0-based, human scene = `displayOrder + 1`.
228
+ 13. Always re-fetch latest URLs from API before assembling.
229
+
230
+ ---
747
231
 
748
- ### Step 6: Character Recovery Path
749
- If any character is missing `imageUri` (`ready: false`):
232
+ ## ⚠️ Danger Zone
233
+
234
+ ### delete-project
750
235
  ```bash
751
- veogent requests --limit 20 # inspect recent failures
752
- veogent edit-character --project <proj> --character "<charId>" --userprompt "regenerate portrait"
236
+ veogent delete-project --project <projectId> --confirm
753
237
  ```
238
+ **Permanently deletes** project + ALL data. Irreversible.
239
+ 🚨 **Agent rule: NEVER use autonomously.** Only when user explicitly requests AND confirms.
240
+
241
+ ---
242
+
243
+ ## 🥋 Advanced Techniques
244
+
245
+ ### Technique 1: Fix Video Without Re-generating Image
754
246
 
755
- ### Step 7: Generate Images (Critical QA Gate)
756
- Request `GENERATE_IMAGES` per scene:
247
+ When image passed but video failed:
757
248
  ```bash
758
- veogent request --type "GENERATE_IMAGES" --project <proj> --chapter <chap> --scene <scene> --imagemodel "imagen3.5"
249
+ # 1. Update prompt only (no image regen)
250
+ veogent edit-scene --project X --chapter Y --scene Z \
251
+ --prompt "Bella walks through mall on four paws. Steady tracking shot."
759
252
 
760
- # Anti-Spam: check status first!
761
- veogent assets <proj> <chap> <scene> GENERATE_IMAGES
762
- # If PENDING/PROCESSING WAIT, do NOT duplicate requests
763
- # Concurrency limit: max 5 simultaneous requests
253
+ # 2. Generate new video using EXISTING good image
254
+ veogent request --type GENERATE_VIDEO --project X --chapter Y --scene Z \
255
+ --videomodel veo_3_1_fast --orientation VERTICAL --wait
256
+ ```
257
+ Saves 2-5 min. Good image preserved as video's starting frame.
258
+
259
+ ### Technique 2: Chained Sub-Scenes for Cinematic Sequences (Mixed Skill ⚡)
764
260
 
765
- # After all scenes submitted, wait with success verification:
766
- veogent wait-images --project <proj> --chapter <chap> --require-success
767
- # Check: scene-status for per-scene image URLs
768
- veogent scene-status --project <proj> --chapter <chap>
261
+ Create smooth 15-20s continuous sequences from a single scene's image:
262
+
263
+ ```
264
+ Scene 1: Good image (passed QA)
265
+
266
+ ├─ insert-scene 1.1 (after scene 1)
267
+ │ └─ edit-scene 1.1 --request <scene1_requestId>
268
+ │ --prompt "camera shifts to reveal escalator"
269
+ │ → Edits scene 1's image → scene 1.1 inherits environment
270
+
271
+ ├─ Chain video: scene 1 → scene 1.1
272
+ │ └─ request --type GENERATE_VIDEO --scene scene1 --endscene scene1.1
273
+
274
+ ├─ insert-scene 1.2 (after scene 1.1)
275
+ │ └─ edit-scene 1.2 --request <scene1.1_requestId>
276
+ │ --prompt "steps off escalator at food court"
277
+
278
+ └─ Chain video: scene 1.1 → scene 1.2
769
279
  ```
770
280
 
771
- ### Step 8: AI Review on Image Mismatch
772
- If a generated image is reported as incorrect:
773
- 1. Decode/export the image to Base64 and send to an AI reviewer agent for visual evaluation.
774
- 2. If mismatch confirmed → refine prompt:
775
- ```bash
776
- veogent edit-scene --project <proj> --chapter <chap> --scene <scene> --userprompt "refined prompt..."
777
- ```
778
- 3. For direct correction on a specific generated image:
779
- ```bash
780
- veogent edit-scene --project <proj> --chapter <chap> --scene <scene> --userprompt "make the car red" --request <requestId>
781
- ```
782
-
783
- ### Step 9: Art Directing & QA
784
- Continue the visual QA loop until the scene image is **director-approved**. Iterate between `edit-scene` and `GENERATE_IMAGES` as needed.
785
-
786
- ### Step 10: Animate
787
- Only run `GENERATE_VIDEO` **after** the scene already has a successful matching-orientation image:
281
+ **Step-by-step:**
788
282
  ```bash
789
- veogent request --type "GENERATE_VIDEO" --project <proj> --chapter <chap> --scene <scene> \
790
- --videomodel "veo_3_1_fast" --speed "normal" --imagemodel "imagen3.5" --orientation "HORIZONTAL"
283
+ # 1. Get scene 1's requestId
284
+ veogent workflow-status --project X --chapter Y
791
285
 
792
- # Wait for all videos with success verification:
793
- veogent wait-videos --project <proj> --chapter <chap> --require-success
794
- # Full snapshot:
795
- veogent workflow-status --project <proj> --chapter <chap>
286
+ # 2. Insert sub-scene
287
+ veogent insert-scene --project X --chapter Y \
288
+ --prompt "Camera follows Bella inside mall" --after <scene1_id>
289
+
290
+ # 3. Edit sub-scene image FROM scene 1's image
291
+ veogent edit-scene --project X --chapter Y --scene <scene1.1_id> \
292
+ --prompt "Same mall entrance, camera shifts right to reveal escalator" \
293
+ --request <scene1_requestId> --wait
294
+
295
+ # 4. Chain video
296
+ veogent request --type GENERATE_VIDEO --project X --chapter Y \
297
+ --scene <scene1_id> --endscene <scene1.1_id> \
298
+ --videomodel veo_3_1_fast --orientation VERTICAL --wait
299
+
300
+ # 5. Continue: insert 1.2, edit from 1.1, chain 1.1→1.2...
796
301
  ```
797
302
 
798
- ### Step 11: YouTube Publishing Assets
799
- Finalize with metadata and thumbnails:
303
+ **Why powerful:** Each sub-scene inherits environment via direct image edit. endScene chaining = smooth continuous motion. One good image → entire cinematic sequence.
304
+
305
+ ### Technique 3: Speed Mode for Storytelling
306
+
800
307
  ```bash
801
- veogent generate-yt-metadata --project <proj> --chapter <chap> --lang "English"
802
- veogent generate-yt-thumbnail --project <proj> --chapter <chap> --lang "English"
803
- veogent yt-thumbnails <proj> <chap>
308
+ # Timelapse: passage of time
309
+ veogent request --type GENERATE_VIDEO --project X --chapter Y --scene Z \
310
+ --speed timelapse --wait
311
+
312
+ # Slowmotion: dramatic emphasis
313
+ veogent request --type GENERATE_VIDEO --project X --chapter Y --scene Z \
314
+ --speed slowmotion --wait
804
315
  ```
805
316
 
806
317
  ---
807
318
 
808
- ## ⚠️ Error Handling
809
-
810
- The CLI returns JSON for all responses:
811
-
812
- | Pattern | Meaning | Action |
813
- |---------|---------|--------|
814
- | `{"status": "success", ...}` | Operation completed | Proceed to next step |
815
- | `{"status": "error", "message": "..."}` | Operation failed | Read the message, fix inputs, retry |
816
- | `{"error": "Not logged in"}` | No valid auth token | Have user run `veogent login` |
817
- | `400 Bad Request` | Invalid flags/payload for DTO | Review your flags — likely passing prohibited options for the request type |
818
- | `401` / Flow error | Flow Key expired | Get new key via `veogent obtain-flow` or user, then `veogent setup-flow` |
819
- | `"maximum request limit reached"` | Queue full (5 max concurrent) | Wait and retry later — not a hard failure |
319
+ ## Command Reference
320
+
321
+ ### Project Commands
322
+
323
+ | Command | Description | Key Options |
324
+ |---------|-------------|-------------|
325
+ | `create-project` | Create project (auto-gen description from --idea) | `--idea`, `--name`, `--lang`, `--material`, `--chapters` |
326
+ | `projects` | List all projects | |
327
+ | `project <id>` | Get project details | |
328
+ | `delete-project` | ⚠️ Delete project permanently | `--project`, `--confirm` |
329
+
330
+ ### Chapter Commands
331
+
332
+ | Command | Description | Key Options |
333
+ |---------|-------------|-------------|
334
+ | `chapters <projectId>` | List chapters | — |
335
+ | `recent-chapters` | Recently updated chapters | `--limit` |
336
+ | `create-chapter-content` | Generate storyboard via AI | `--project`, `--chapter`, `--scenes` |
337
+
338
+ ### Scene Commands
339
+
340
+ | Command | Description | Key Options |
341
+ |---------|-------------|-------------|
342
+ | `create-scene` | Create scenes from storyboard | `--project`, `--chapter`, `--content`, `--flowkey` |
343
+ | `insert-scene` | Insert single scene into chapter | `--project`, `--chapter`, `--prompt`, `--after` |
344
+ | `edit-scene` | Edit prompt or regen image | `--project`, `--chapter`, `--scene`, `--prompt`, `--request`, `--wait` |
345
+ | `scenes <proj> <chap>` | List all scenes | — |
346
+
347
+ ### Character Commands
348
+
349
+ | Command | Description | Key Options |
350
+ |---------|-------------|-------------|
351
+ | `add-character` | Add character (no image) | `--project`, `--name`, `--type` |
352
+ | `generate-character` | Gen reference image (first time) | `--project`, `--character`, `--prompt` |
353
+ | `edit-character` | Edit existing reference image | `--project`, `--character`, `--prompt` |
354
+ | `characters <projectId>` | List + readiness check | — |
355
+
356
+ ### Generation Commands
357
+
358
+ | Command | Description | Key Options |
359
+ |---------|-------------|-------------|
360
+ | `request` | Single generation job | `--type`, `--project`, `--chapter`, `--scene`, `--orientation`, `--speed`, `--endscene`, `--wait` |
361
+ | `batch-request` | Batch generation | `--type`, `--project`, `--chapter`, `--all`/`--scenes`, `--orientation`, `--speed`, `--wait` |
362
+
363
+ ### Monitoring Commands
364
+
365
+ | Command | Description | Key Options |
366
+ |---------|-------------|-------------|
367
+ | `workflow-status` | Full snapshot (best for agents) | `--project`, `--chapter` |
368
+ | `scene-status` | Per-scene image/video status | `--project`, `--chapter` |
369
+ | `requests` | List generation jobs | `--project`, `--chapter`, `--status`, `--limit` |
370
+ | `failed-requests` | Failed jobs only | `--project`, `--chapter` |
371
+ | `wait-images` | Poll until images done | `--project`, `--chapter`, `--require-success` |
372
+ | `wait-videos` | Poll until videos done | `--project`, `--chapter`, `--require-success` |
373
+ | `queue-status` | Concurrency check | — |
374
+
375
+ ### Auth & Config
376
+
377
+ | Command | Description | Key Options |
378
+ |---------|-------------|-------------|
379
+ | `login` | Authenticate | `--device` (headless) |
380
+ | `logout` | Clear credentials | — |
381
+ | `status` | Session + Flow Key info | — |
382
+ | `setup-flow` | Setup Google Flow Key | `--flowkey`, `--tier` |
383
+ | `obtain-flow` | Auto-extract Flow Token | — |
384
+ | `flow-credits` | Check plan + credits | `--flowkey` |
385
+
386
+ ### YouTube
387
+
388
+ | Command | Description | Key Options |
389
+ |---------|-------------|-------------|
390
+ | `generate-yt-metadata` | Generate Title/Desc/Tags | `--project`, `--chapter`, `--lang` |
391
+ | `generate-yt-thumbnail` | Trigger thumbnail gen | `--project`, `--chapter`, `--lang` |
392
+ | `yt-thumbnails <proj> <chap>` | Get generated thumbnails | — |
393
+
394
+ ### Discovery
395
+
396
+ | Command | Description |
397
+ |---------|-------------|
398
+ | `image-materials` | List available image styles |
399
+ | `custom-prompts` | List custom prompt templates |