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.
- package/README.md +155 -324
- package/index.js +123 -165
- package/package.json +1 -1
- package/skills/SKILL.md +314 -734
package/skills/SKILL.md
CHANGED
|
@@ -1,819 +1,399 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: veogent
|
|
3
|
-
description:
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
-
|
|
361
|
-
-
|
|
362
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
58
|
+
### Phase 3: Generate Images + Videos
|
|
434
59
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
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
|
-
|
|
67
|
+
### Phase 4: QA + Fix Loop
|
|
444
68
|
|
|
445
69
|
```bash
|
|
446
|
-
veogent
|
|
70
|
+
veogent workflow-status --project X --chapter Y
|
|
447
71
|
```
|
|
448
72
|
|
|
449
|
-
|
|
73
|
+
Then fix using edit-scene modes and video regen (see Scene Management below).
|
|
450
74
|
|
|
451
|
-
|
|
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
|
-
|
|
464
|
-
> ℹ️ Only run `GENERATE_VIDEO` **after** the scene already has a successful matching-orientation image.
|
|
77
|
+
## Scene Management
|
|
465
78
|
|
|
466
|
-
|
|
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
|
-
|
|
81
|
+
```bash
|
|
82
|
+
# Append to end
|
|
83
|
+
veogent insert-scene --project X --chapter Y --prompt "Bella exits the mall into sunset"
|
|
472
84
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
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
|
-
|
|
90
|
+
### edit-scene — Two modes
|
|
482
91
|
|
|
92
|
+
**Mode A — Edit storyboard/prompt only (no image regen):**
|
|
483
93
|
```bash
|
|
484
|
-
veogent
|
|
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
|
-
|
|
488
|
-
|
|
489
|
-
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
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
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
698
|
-
If not provided by the user, fetch style/template IDs first:
|
|
146
|
+
**List characters + check readiness:**
|
|
699
147
|
```bash
|
|
700
|
-
veogent
|
|
701
|
-
|
|
148
|
+
veogent characters <projectId>
|
|
149
|
+
# → allReady === true means all characters have reference images
|
|
702
150
|
```
|
|
703
151
|
|
|
704
|
-
|
|
705
|
-
|
|
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
|
-
|
|
708
|
-
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Video Generation
|
|
162
|
+
|
|
163
|
+
**Single scene:**
|
|
709
164
|
```bash
|
|
710
|
-
veogent
|
|
711
|
-
|
|
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
|
-
|
|
169
|
+
**Batch all scenes:**
|
|
715
170
|
```bash
|
|
716
|
-
veogent
|
|
171
|
+
veogent batch-request --type GENERATE_VIDEO --project X --chapter Y \
|
|
172
|
+
--all --orientation VERTICAL --wait
|
|
717
173
|
```
|
|
718
174
|
|
|
719
|
-
###
|
|
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
|
-
|
|
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
|
|
733
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
744
|
-
|
|
745
|
-
|
|
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
|
-
|
|
749
|
-
|
|
232
|
+
## ⚠️ Danger Zone
|
|
233
|
+
|
|
234
|
+
### delete-project
|
|
750
235
|
```bash
|
|
751
|
-
veogent
|
|
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
|
-
|
|
756
|
-
Request `GENERATE_IMAGES` per scene:
|
|
247
|
+
When image passed but video failed:
|
|
757
248
|
```bash
|
|
758
|
-
|
|
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
|
-
#
|
|
761
|
-
veogent
|
|
762
|
-
|
|
763
|
-
|
|
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
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
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
|
-
|
|
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
|
-
|
|
790
|
-
|
|
283
|
+
# 1. Get scene 1's requestId
|
|
284
|
+
veogent workflow-status --project X --chapter Y
|
|
791
285
|
|
|
792
|
-
#
|
|
793
|
-
veogent
|
|
794
|
-
|
|
795
|
-
|
|
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
|
-
|
|
799
|
-
|
|
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
|
-
|
|
802
|
-
veogent
|
|
803
|
-
|
|
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
|
-
##
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
|
813
|
-
|
|
814
|
-
| `
|
|
815
|
-
| `
|
|
816
|
-
| `
|
|
817
|
-
| `
|
|
818
|
-
|
|
819
|
-
|
|
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 |
|