@renoise/video-maker 0.1.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/.claude-plugin/plugin.json +5 -0
- package/README.md +50 -0
- package/hooks/hooks.json +16 -0
- package/hooks/session-start.sh +17 -0
- package/lib/gemini.ts +49 -0
- package/package.json +22 -0
- package/skills/director/SKILL.md +272 -0
- package/skills/director/references/narrative-pacing.md +257 -0
- package/skills/director/references/style-library.md +179 -0
- package/skills/product-sheet-generate/SKILL.md +75 -0
- package/skills/renoise-gen/SKILL.md +362 -0
- package/skills/renoise-gen/references/api-endpoints.md +138 -0
- package/skills/renoise-gen/references/video-capabilities.md +524 -0
- package/skills/renoise-gen/renoise-cli.mjs +723 -0
- package/skills/scene-generate/SKILL.md +52 -0
- package/skills/short-film-editor/SKILL.md +479 -0
- package/skills/short-film-editor/examples/mystery-package-4shot.md +260 -0
- package/skills/short-film-editor/references/continuity-guide.md +170 -0
- package/skills/short-film-editor/scripts/analyze-beats.py +271 -0
- package/skills/short-film-editor/scripts/batch-generate.sh +150 -0
- package/skills/short-film-editor/scripts/generate-storyboard-html.ts +714 -0
- package/skills/short-film-editor/scripts/split-grid.sh +70 -0
- package/skills/tiktok-content-maker/SKILL.md +143 -0
- package/skills/tiktok-content-maker/examples/dress-demo.md +86 -0
- package/skills/tiktok-content-maker/references/ecom-prompt-guide.md +261 -0
- package/skills/tiktok-content-maker/scripts/analyze-images.ts +122 -0
- package/skills/video-download/SKILL.md +161 -0
- package/skills/video-download/scripts/download-video.sh +91 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: renoise-gen
|
|
3
|
+
description: Generate AI videos and images via Renoise platform. Create tasks, upload materials, browse characters, poll results, download outputs. Supports text-to-video, image-to-video, video-to-video, and text-to-image. Use this skill whenever the user asks to "generate video", "create video", "text to video", "image to video", "generate image", "AI video", "AI image", or describes any video/image content they want generated with AI.
|
|
4
|
+
allowed-tools: Bash, Read, Write, Glob
|
|
5
|
+
metadata:
|
|
6
|
+
author: renoise
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
category: video-production
|
|
9
|
+
tags: [general, video-generation]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# AI Video & Image Generation (via Renoise)
|
|
13
|
+
|
|
14
|
+
Generate AI videos and images through the Renoise platform.
|
|
15
|
+
|
|
16
|
+
## Supported Models
|
|
17
|
+
|
|
18
|
+
| Model | Type | Description |
|
|
19
|
+
|-------|------|-------------|
|
|
20
|
+
| `renoise-2.0` | Video | Default video model with storyboard control |
|
|
21
|
+
| `nano-banana-2` | Image | AI image generation model |
|
|
22
|
+
|
|
23
|
+
## Core Concept: Two Video Modes — Finished Cut vs Clip Stock
|
|
24
|
+
|
|
25
|
+
Choose between two generation modes based on user needs:
|
|
26
|
+
|
|
27
|
+
### Finished Cut Mode — Default
|
|
28
|
+
|
|
29
|
+
For producing a complete, ready-to-use video. Leverages powerful storyboard control to **direct content, camera movement, and pacing across different time segments within a single 15s clip**:
|
|
30
|
+
|
|
31
|
+
- Music/SFX flow naturally with coherent progression
|
|
32
|
+
- Character consistency maintained within the same segment
|
|
33
|
+
- Complex continuous camera movements (e.g., close-up → orbit → wide pull back)
|
|
34
|
+
- Only 1 API call needed
|
|
35
|
+
|
|
36
|
+
**Default 15s, use time-annotated prompt to control content.**
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
[0-3s] Close-up of hands unboxing a sleek black device on a white desk. Camera snaps dolly in to reveal the logo.
|
|
40
|
+
|
|
41
|
+
[3-10s] The woman picks it up, examines it from different angles. Medium shot, smooth orbit around the product. Spoken dialogue: "I've been waiting for this." Mouth clearly visible, lip-sync aligned.
|
|
42
|
+
|
|
43
|
+
[10-15s] She places it on a wireless charger, LED glows blue. Pull back to wide shot of the full workspace. The frame holds steady.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Clip Stock Mode
|
|
47
|
+
|
|
48
|
+
For producing atomic clips for post-production editing. Each clip focuses on **a single action + single camera move** for maximum flexibility:
|
|
49
|
+
|
|
50
|
+
- Each clip **3-5s**, one clip does one thing
|
|
51
|
+
- No time annotations needed, just describe a single scene
|
|
52
|
+
- Batch generate multiple clips, organize with tags
|
|
53
|
+
- Combine freely in post-production
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Clip stock example: prepare clips for a product video
|
|
57
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task create --prompt "Extreme close-up of a matte black smartwatch on white marble, slow dolly in, studio lighting." --duration 5 --tags product-x,detail
|
|
58
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task create --prompt "A hand picks up the smartwatch from the table, medium shot, tracking follows the hand upward." --duration 5 --tags product-x,pickup
|
|
59
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task create --prompt "Wrist-level shot of the watch on a person's arm, smooth orbit, outdoor golden hour." --duration 5 --tags product-x,lifestyle
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### How to Decide?
|
|
63
|
+
|
|
64
|
+
| Signal | Mode |
|
|
65
|
+
|--------|------|
|
|
66
|
+
| "generate a video", "make a short film" | Finished Cut — 15s storyboard |
|
|
67
|
+
| "prepare clips", "clip", "for editing", "B-roll" | Clip Stock — 3-5s atomic clips |
|
|
68
|
+
| "shot list", "storyboard" | Clip Stock — generate per shot |
|
|
69
|
+
| Unclear | **Default to Finished Cut**, confirm with user |
|
|
70
|
+
|
|
71
|
+
## Model Specs
|
|
72
|
+
|
|
73
|
+
### renoise-2.0 (Video)
|
|
74
|
+
|
|
75
|
+
| Parameter | Value |
|
|
76
|
+
|-----------|-------|
|
|
77
|
+
| Duration range | 5-15s, any integer |
|
|
78
|
+
| **Default duration** | **15s** (maximize storyboard capability) |
|
|
79
|
+
| Aspect ratio | `1:1`, `16:9`, `9:16` |
|
|
80
|
+
| Recommended mode | **Image-to-Video with storyboard grid** (best visual consistency) |
|
|
81
|
+
| Prompt language | **English**, natural narrative paragraphs |
|
|
82
|
+
|
|
83
|
+
> **Default to Image-to-Video with storyboard grid**: Generate reference images as a 9-grid or 16-grid composite, upload as `ref_image`. Grid images bypass privacy detection more reliably than individual face photos because faces are small within the grid cells. **Fallback to Text-to-Video** only when the grid is still blocked by privacy detection (`PrivacyInformation` error) — text-only prompts are never subject to this limitation.
|
|
84
|
+
|
|
85
|
+
### nano-banana-2 (Image)
|
|
86
|
+
|
|
87
|
+
| Parameter | Value |
|
|
88
|
+
|-----------|-------|
|
|
89
|
+
| Resolution | `1k`, `2k` |
|
|
90
|
+
| Aspect ratio | `1:1`, `16:9`, `9:16` |
|
|
91
|
+
| Prompt language | **English** |
|
|
92
|
+
|
|
93
|
+
See `${CLAUDE_SKILL_DIR}/references/video-capabilities.md` for details.
|
|
94
|
+
|
|
95
|
+
## Configuration
|
|
96
|
+
|
|
97
|
+
CLI path: `${CLAUDE_SKILL_DIR}/renoise-cli.mjs` (Node.js 18+)
|
|
98
|
+
|
|
99
|
+
API Key and base URL are configured via environment variables (`RENOISE_API_KEY`, `RENOISE_BASE_URL`).
|
|
100
|
+
|
|
101
|
+
## CLI Commands
|
|
102
|
+
|
|
103
|
+
All commands: `node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs <domain> <action> [options]`
|
|
104
|
+
|
|
105
|
+
Four domains: `task`, `material`, `character`, `credit`
|
|
106
|
+
|
|
107
|
+
### Check Balance (always check before creating tasks)
|
|
108
|
+
```bash
|
|
109
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs credit me # User info + balance
|
|
110
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs credit estimate --duration 10 # Estimate cost
|
|
111
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs credit history # Transaction history
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Video Input Modes (Mutually Exclusive)
|
|
115
|
+
|
|
116
|
+
Three ways to provide visual input. **These are mutually exclusive — do NOT mix them in the same task.**
|
|
117
|
+
|
|
118
|
+
| Mode | `--materials` | Description |
|
|
119
|
+
|------|---------------|-------------|
|
|
120
|
+
| **First frame only** | `ID:first_frame` (1 image) | Pin the first frame; prompt is optional |
|
|
121
|
+
| **First + last frame** | `ID1:first_frame,ID2:last_frame` (2 images, both roles required) | Pin start and end frames; model generates the transition |
|
|
122
|
+
| **Multimodal reference** | `ID:ref_image`, `ID:ref_video`, etc. | Reference images (1-9), videos (0-3), audio (0-3) for style/content guidance |
|
|
123
|
+
|
|
124
|
+
> **Cannot combine**: e.g. you cannot use `first_frame` together with `ref_image` in the same task. If you need "first/last frame + reference style", use multimodal reference mode and describe in the prompt which image should be the first/last frame — but for strict frame accuracy, prefer the dedicated first+last frame mode.
|
|
125
|
+
|
|
126
|
+
**Image requirements** (for first/last frame and ref_image):
|
|
127
|
+
- Format: jpeg, png, webp, bmp, tiff, gif
|
|
128
|
+
- Aspect ratio (W/H): 0.4 ~ 2.5
|
|
129
|
+
- Dimensions: 300 ~ 6000 px per side
|
|
130
|
+
- Size: < 30 MB per image
|
|
131
|
+
|
|
132
|
+
### Generate Video (one step: create + wait for completion)
|
|
133
|
+
```bash
|
|
134
|
+
# Text-to-video finished cut (default renoise-2.0, 15s storyboard)
|
|
135
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task generate \
|
|
136
|
+
--prompt "[0-5s] Close-up of a cat on the moon, slow push in. [5-12s] The cat starts dancing, smooth orbit camera, stars twinkling. [12-15s] Wide pull back revealing the full lunar landscape, frame holds steady. Cinematic lighting, shallow depth of field." \
|
|
137
|
+
--duration 15 --ratio 1:1
|
|
138
|
+
|
|
139
|
+
# First frame only — pin the opening shot
|
|
140
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material upload /path/to/start.jpg
|
|
141
|
+
# (note the material ID from output, e.g. #42)
|
|
142
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task generate \
|
|
143
|
+
--prompt "The woman walks toward the camera, gentle breeze, cinematic lighting." \
|
|
144
|
+
--materials "42:first_frame" --duration 10 --ratio 16:9
|
|
145
|
+
|
|
146
|
+
# First + last frame — pin both start and end
|
|
147
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material upload /path/to/start.jpg # e.g. #42
|
|
148
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material upload /path/to/end.jpg # e.g. #43
|
|
149
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task generate \
|
|
150
|
+
--prompt "Smooth transition from dawn to sunset over the city skyline." \
|
|
151
|
+
--materials "42:first_frame,43:last_frame" --duration 10 --ratio 16:9
|
|
152
|
+
|
|
153
|
+
# Multimodal reference — image-to-video
|
|
154
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material upload /path/to/photo.jpg
|
|
155
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task generate \
|
|
156
|
+
--prompt "[0-5s] Close-up of the product on a white surface, gentle dolly in. [5-12s] Camera orbits around the product revealing all angles, soft studio lighting. [12-15s] Pull back to wide shot, product centered, frame holds steady." \
|
|
157
|
+
--materials "ID:ref_image" --duration 15 --ratio 16:9
|
|
158
|
+
|
|
159
|
+
# Multimodal reference — video-to-video
|
|
160
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task generate \
|
|
161
|
+
--prompt "recreate this motion with a robot character" \
|
|
162
|
+
--materials "ID:ref_video" --duration 5
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Generate Image
|
|
166
|
+
```bash
|
|
167
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task generate \
|
|
168
|
+
--prompt "A cute cat sitting on a crescent moon, watercolor style, dreamy atmosphere" \
|
|
169
|
+
--model nano-banana-2 --resolution 2k --ratio 1:1
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Create Task Only (no waiting)
|
|
173
|
+
```bash
|
|
174
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task create \
|
|
175
|
+
--prompt "[0-5s] ... [5-12s] ... [12-15s] ..." \
|
|
176
|
+
--duration 15 --ratio 16:9 --tags cinematic
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**generate/create parameters**:
|
|
180
|
+
- `--prompt` (required) — English natural narrative prompt; use `[time segment]` annotations for video storyboards
|
|
181
|
+
- `--model` — Model name (default: renoise-2.0; use nano-banana-2 for images)
|
|
182
|
+
- `--duration` — Video duration 5-15s (CLI default: 5). **Always set `--duration 15` for Finished Cut mode**
|
|
183
|
+
- `--ratio` — `1:1` / `16:9` / `9:16` (default: 1:1)
|
|
184
|
+
- `--resolution` — Image resolution `1k` / `2k` (image models only)
|
|
185
|
+
- `--tags` — Comma-separated tags for organization
|
|
186
|
+
- `--materials` — Material references `id:role`, comma-separated for multiple
|
|
187
|
+
- `--characters` — Character references `id1,id2` or `id1:role,id2:role`
|
|
188
|
+
|
|
189
|
+
### Task Management
|
|
190
|
+
```bash
|
|
191
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task list # List tasks
|
|
192
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task list --status completed # Filter by status
|
|
193
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task list --tag project-x # Filter by tag
|
|
194
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task get <id> # Task detail
|
|
195
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task result <id> # Get result URL
|
|
196
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task wait <id> # Poll until complete
|
|
197
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task wait <id> --interval 15 --timeout 300
|
|
198
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task cancel <id> # Cancel (pending only)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Material Upload & Management
|
|
202
|
+
```bash
|
|
203
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material upload /path/to/file.jpg # Upload (auto-detect type)
|
|
204
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material upload /path/to/clip.mp4 --type video
|
|
205
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material list # List materials
|
|
206
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material list --type image --search cat
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Character Browsing
|
|
210
|
+
```bash
|
|
211
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs character list # List available characters
|
|
212
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs character list --category female --search Jasmine
|
|
213
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs character get <id> # Character detail
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Tag Management
|
|
217
|
+
```bash
|
|
218
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task tags # List all tags
|
|
219
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task tag <id> --tags a,b,c # Update task tags
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Task Statuses
|
|
223
|
+
|
|
224
|
+
`pending` → `assigning` → `assigned` → `queued` → `running` → `completed` / `failed`
|
|
225
|
+
|
|
226
|
+
Only `pending` tasks can be cancelled (auto-refund).
|
|
227
|
+
|
|
228
|
+
## Workflows
|
|
229
|
+
|
|
230
|
+
### Finished Cut Mode (Default)
|
|
231
|
+
```
|
|
232
|
+
credit me → credit estimate → task generate (15s + storyboard prompt)
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
`task generate` = create + wait + output result, all in one step.
|
|
236
|
+
|
|
237
|
+
### Clip Stock Mode
|
|
238
|
+
```
|
|
239
|
+
credit me → credit estimate → task create (3-5s × N, grouped by tag) → task wait each → collect task result
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Batch generate atomic clips, combine in post-production.
|
|
243
|
+
|
|
244
|
+
### Image Generation
|
|
245
|
+
```
|
|
246
|
+
credit me → task generate --model nano-banana-2 --prompt "..." --resolution 2k
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### With First/Last Frame
|
|
250
|
+
```
|
|
251
|
+
material upload (start.jpg) → material upload (end.jpg) → task generate (--materials "ID1:first_frame,ID2:last_frame")
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
First frame only: omit the second upload, use `--materials "ID:first_frame"`.
|
|
255
|
+
|
|
256
|
+
### With Multimodal Reference
|
|
257
|
+
```
|
|
258
|
+
material upload → task generate (--materials "ID:ref_image" or "ID:ref_video")
|
|
259
|
+
```
|
|
260
|
+
**Preferred**: Use storyboard grid images as ref_image — see "Storyboard Grid Workflow" section below.
|
|
261
|
+
|
|
262
|
+
### With Character Reference
|
|
263
|
+
```
|
|
264
|
+
character list → task generate (--characters "ID")
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Finished Cut > 15s
|
|
268
|
+
|
|
269
|
+
When target duration exceeds 15s, split into 15s segments, each with its own storyboard prompt:
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
# 30s = 2 × 15s
|
|
273
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task create --prompt "[0-5s] ... [5-12s] ... [12-15s] ..." --duration 15 --tags vid-001,s1
|
|
274
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task create --prompt "[0-5s] ... [5-12s] ... [12-15s] ..." --duration 15 --tags vid-001,s2
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Maintain consistency**: Repeat full character appearance description at the start of each segment's prompt, use consistent lighting/style keywords, bridge with `Continuing from the previous shot:`.
|
|
278
|
+
|
|
279
|
+
## Storyboard Grid Workflow (Preferred Approach)
|
|
280
|
+
|
|
281
|
+
The storyboard grid method produces the best visual consistency across clips by anchoring each generation to a reference image from a unified grid.
|
|
282
|
+
|
|
283
|
+
### Why Storyboard Grid?
|
|
284
|
+
|
|
285
|
+
| Approach | Visual Consistency | Privacy Detection Risk | Setup Effort |
|
|
286
|
+
|----------|-------------------|----------------------|--------------|
|
|
287
|
+
| **Storyboard Grid (preferred)** | Highest — all panels share style context | Low — faces are small in grid cells | Medium |
|
|
288
|
+
| Text-to-Video (fallback) | Lower — model interprets style differently each call | None | Low |
|
|
289
|
+
| Individual ref_image | Medium | High — close-up faces trigger blocking | Medium |
|
|
290
|
+
|
|
291
|
+
### Step-by-Step
|
|
292
|
+
|
|
293
|
+
1. **Generate reference images as a grid**: Use Midjourney (v7) or Gemini to create a single composite image containing all shots as panels in a 3x3 (9-grid) or 4x4 (16-grid) layout. Each panel shows one key moment from a shot with consistent character appearance and style.
|
|
294
|
+
|
|
295
|
+
2. **Upload the grid as material**:
|
|
296
|
+
```bash
|
|
297
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs material upload storyboard_grid.png
|
|
298
|
+
# Returns material ID
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
3. **Generate video with ref_image + time-annotated prompt**:
|
|
302
|
+
```bash
|
|
303
|
+
node ${CLAUDE_SKILL_DIR}/renoise-cli.mjs task generate \
|
|
304
|
+
--prompt "Follow the attached storyboard panels. [0-5s] ... [5-10s] ... [10-15s] ..." \
|
|
305
|
+
--materials "MATERIAL_ID:ref_image" \
|
|
306
|
+
--duration 15 --ratio 16:9
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
4. **For videos > 15s**: Split into multiple grids (e.g., 3x3 for shots 1-9, another for shots 10-18), generate each 15s segment with its corresponding grid.
|
|
310
|
+
|
|
311
|
+
5. **Fallback**: If a grid triggers `PrivacyInformation`, retry without `--materials` (pure text-to-video), copying full character descriptions into the prompt.
|
|
312
|
+
|
|
313
|
+
### When to Use Each Approach
|
|
314
|
+
|
|
315
|
+
| Signal | Approach |
|
|
316
|
+
|--------|----------|
|
|
317
|
+
| Any project with recurring characters | **Storyboard grid** (preferred) |
|
|
318
|
+
| Product shots, landscapes, no people | Image-to-Video with individual ref_image |
|
|
319
|
+
| Grid ref_image blocked by privacy detection | **Text-to-Video** (fallback) |
|
|
320
|
+
| Quick one-off generation, no consistency needs | Text-to-Video |
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Prompt Writing
|
|
325
|
+
|
|
326
|
+
**General rules**:
|
|
327
|
+
- **Must be English** — The model understands English narrative paragraphs best. Chinese or tag lists degrade quality and coherence.
|
|
328
|
+
- **Natural narrative paragraphs** — Use complete descriptive sentences, not comma-separated keyword lists (e.g., `woman, café, coffee, 4k`). The model needs to understand causal and temporal relationships.
|
|
329
|
+
- **Specific > Abstract** — `a golden retriever running through shallow ocean waves at sunset` is far better than `a dog on a beach`. More detail = more accurate output.
|
|
330
|
+
- **Structure**: Subject (detailed appearance) + Action (action sequence) + Camera (camera movement) + Scene (environment/lighting) + Style (visual style)
|
|
331
|
+
|
|
332
|
+
**Finished cut prompt**:
|
|
333
|
+
- Use `[time segment]` annotations for storyboard beats — core advantage, the model switches content and camera per segment
|
|
334
|
+
- Each segment = Subject + Action + Camera
|
|
335
|
+
- At least 2-3 camera changes (e.g., close-up → orbit → wide pull back) for editing rhythm
|
|
336
|
+
- End last segment with `frame holds steady` for easy continuation or natural ending
|
|
337
|
+
|
|
338
|
+
**Clip stock prompt**:
|
|
339
|
+
- No time annotations needed, describe a single scene directly
|
|
340
|
+
- One clip does one thing: one action + one camera move, for flexible post-editing
|
|
341
|
+
- Keep concise, 3-5 sentences
|
|
342
|
+
|
|
343
|
+
**Image prompt**:
|
|
344
|
+
- Describe content, style, and atmosphere
|
|
345
|
+
- No time annotations or camera movements needed
|
|
346
|
+
|
|
347
|
+
See `${CLAUDE_SKILL_DIR}/references/video-capabilities.md` for detailed prompt writing guide and camera movement cheat sheet.
|
|
348
|
+
|
|
349
|
+
## Error Handling
|
|
350
|
+
|
|
351
|
+
| Error | Cause | Solution |
|
|
352
|
+
|-------|-------|----------|
|
|
353
|
+
| `PrivacyInformation` | Reference image/video with human faces blocked by privacy detection | Switch to Text-to-Video, describe person's appearance in text |
|
|
354
|
+
| `Insufficient credits` (402) | Balance too low | Inform user of current balance and required cost, suggest top-up |
|
|
355
|
+
| Task `failed` | Generation failed | Use `task get <id>` to check error field. Common causes: prompt violation, server timeout. Adjust prompt and retry |
|
|
356
|
+
| `Auth Error` (401) | Invalid API Key | Check that the `RENOISE_API_KEY` environment variable is set correctly |
|
|
357
|
+
| `wait` timeout | Generation time exceeds timeout | 15s videos typically need 5-10 minutes, increase `--timeout` (e.g., 900) |
|
|
358
|
+
|
|
359
|
+
## References
|
|
360
|
+
|
|
361
|
+
- [Video Model Capabilities](references/video-capabilities.md) — Model specs, detailed prompt writing guide, camera movement cheat sheet. Consult when writing prompts.
|
|
362
|
+
- [API Endpoint Reference](reference.md) — Renoise API endpoints and request/response formats. Consult when calling API directly or debugging HTTP errors.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Renoise API Reference
|
|
2
|
+
|
|
3
|
+
## API Endpoints
|
|
4
|
+
|
|
5
|
+
Base URL: `https://staging--ujgsvru36x4korjj10nq.edgespark.app`
|
|
6
|
+
API Prefix: `/api/public/v1`
|
|
7
|
+
|
|
8
|
+
All endpoints require `X-API-Key: <api_key>` header.
|
|
9
|
+
|
|
10
|
+
### Credits
|
|
11
|
+
|
|
12
|
+
| Method | Path | Description |
|
|
13
|
+
|--------|------|-------------|
|
|
14
|
+
| GET | `/api/public/v1/me` | User info + credit balance |
|
|
15
|
+
| GET | `/api/public/v1/credit/estimate?model=X&duration=Y&hasVideoRef=0` | Cost estimate |
|
|
16
|
+
| GET | `/api/public/v1/credit/history?limit=50&offset=0` | Credit transactions |
|
|
17
|
+
|
|
18
|
+
### Tasks
|
|
19
|
+
|
|
20
|
+
| Method | Path | Description |
|
|
21
|
+
|--------|------|-------------|
|
|
22
|
+
| POST | `/api/public/v1/tasks` | Create task |
|
|
23
|
+
| GET | `/api/public/v1/tasks?status=X&tag=Y&limit=50&offset=0` | List tasks |
|
|
24
|
+
| GET | `/api/public/v1/tasks/:id` | Task detail |
|
|
25
|
+
| GET | `/api/public/v1/tasks/:id/result` | Task result (video/image/cover URLs) |
|
|
26
|
+
| POST | `/api/public/v1/tasks/:id/cancel` | Cancel pending task |
|
|
27
|
+
| PATCH | `/api/public/v1/tasks/:id/tags` | Update tags |
|
|
28
|
+
| GET | `/api/public/v1/tags` | List all tags |
|
|
29
|
+
|
|
30
|
+
### Materials
|
|
31
|
+
|
|
32
|
+
| Method | Path | Description |
|
|
33
|
+
|--------|------|-------------|
|
|
34
|
+
| POST | `/api/public/v1/materials/upload` | Upload material (multipart) |
|
|
35
|
+
| GET | `/api/public/v1/materials?type=X&search=Y` | List materials with download URLs |
|
|
36
|
+
|
|
37
|
+
### Characters
|
|
38
|
+
|
|
39
|
+
| Method | Path | Description |
|
|
40
|
+
|--------|------|-------------|
|
|
41
|
+
| GET | `/api/public/v1/characters?category=X&usage_group=Y&search=Z&page=1&page_size=20` | List characters |
|
|
42
|
+
| GET | `/api/public/v1/characters/:id` | Character detail |
|
|
43
|
+
|
|
44
|
+
## Request/Response Formats
|
|
45
|
+
|
|
46
|
+
### POST /api/public/v1/tasks
|
|
47
|
+
|
|
48
|
+
Request:
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"prompt": "string (required)",
|
|
52
|
+
"model": "renoise-2.0",
|
|
53
|
+
"duration": 5,
|
|
54
|
+
"ratio": "1:1",
|
|
55
|
+
"resolution": "2k",
|
|
56
|
+
"materials": [
|
|
57
|
+
{ "id": 42, "role": "ref_video" },
|
|
58
|
+
{ "character_id": 3, "role": "reference_image" }
|
|
59
|
+
],
|
|
60
|
+
"tags": ["demo"]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Response (201):
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"task": {
|
|
68
|
+
"id": 1,
|
|
69
|
+
"prompt": "...",
|
|
70
|
+
"model": "renoise-2.0",
|
|
71
|
+
"status": "pending",
|
|
72
|
+
"estimatedCredit": 5.0,
|
|
73
|
+
"createdAt": "2026-03-10T..."
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Error (402 — insufficient credits):
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"error": "Insufficient credits",
|
|
82
|
+
"available": 2.5,
|
|
83
|
+
"required": 5.0
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### GET /api/public/v1/tasks/:id/result
|
|
88
|
+
|
|
89
|
+
Response:
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"taskId": 1,
|
|
93
|
+
"status": "completed",
|
|
94
|
+
"videoUrl": "https://...",
|
|
95
|
+
"imageUrl": "https://...",
|
|
96
|
+
"coverUrl": "https://...",
|
|
97
|
+
"resolutions": { "720p": "https://..." },
|
|
98
|
+
"itemCount": 1,
|
|
99
|
+
"fetchedAt": "2026-03-10T...",
|
|
100
|
+
"cached": true
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Task Statuses
|
|
105
|
+
|
|
106
|
+
| Status | Description |
|
|
107
|
+
|--------|-------------|
|
|
108
|
+
| `pending` | Waiting for assignment |
|
|
109
|
+
| `assigning` | Being assigned to account |
|
|
110
|
+
| `assigned` | Assigned, waiting to start |
|
|
111
|
+
| `queued` | Queued on provider |
|
|
112
|
+
| `running` | Generating |
|
|
113
|
+
| `completed` | Done — result available |
|
|
114
|
+
| `failed` | Failed — check error field |
|
|
115
|
+
| `cancelled` | User cancelled |
|
|
116
|
+
|
|
117
|
+
## Models
|
|
118
|
+
|
|
119
|
+
- `renoise-2.0` — Default video model (Renoise 2.0)
|
|
120
|
+
- `nano-banana-2` — Image generation model
|
|
121
|
+
|
|
122
|
+
## Material Roles
|
|
123
|
+
|
|
124
|
+
- `ref_video` — Reference video (affects pricing)
|
|
125
|
+
- `ref_image` — Reference image
|
|
126
|
+
- `image1`, `image2` — Additional reference images
|
|
127
|
+
- `reference_image` — Character reference image
|
|
128
|
+
|
|
129
|
+
## Aspect Ratios
|
|
130
|
+
|
|
131
|
+
- `1:1` (default)
|
|
132
|
+
- `16:9`
|
|
133
|
+
- `9:16`
|
|
134
|
+
|
|
135
|
+
## Image Resolutions
|
|
136
|
+
|
|
137
|
+
- `1k`
|
|
138
|
+
- `2k`
|