@unityclaw/skills 1.0.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.
@@ -0,0 +1,239 @@
1
+ ---
2
+ name: unityclaw-video-generation-veo
3
+ description: Generate high-quality videos using Google Veo AI model
4
+ version: 1.0.0
5
+ metadata:
6
+ openclaw:
7
+ requires:
8
+ env:
9
+ - UNITYCLAW_API_KEY
10
+ bins:
11
+ - node
12
+ - npm
13
+ primaryEnv: UNITYCLAW_API_KEY
14
+ emoji: "🎥"
15
+ homepage: https://unityclaw.com
16
+ install:
17
+ - kind: node
18
+ package: "@unityclaw/sdk"
19
+ bins: []
20
+ ---
21
+
22
+ # UnityClaw Video Generation - Veo
23
+
24
+ Generate high-quality videos using Google's Veo AI model with advanced control over aspect ratio, resolution, and duration.
25
+
26
+ ## Installation
27
+
28
+ ```bash
29
+ npm install @unityclaw/sdk
30
+ ```
31
+
32
+ ## Configuration
33
+
34
+ Set your API key as environment variable:
35
+
36
+ ```bash
37
+ export UNITYCLAW_API_KEY=your-api-key
38
+ ```
39
+
40
+ ## Quick Start
41
+
42
+ ```typescript
43
+ import { UnityClawClient } from '@unityclaw/sdk';
44
+
45
+ const client = new UnityClawClient();
46
+
47
+ const result = await client.video.veo({
48
+ prompt: 'A beautiful sunset over the ocean with waves crashing',
49
+ aspect_ratio: { value: '16:9', label: '16:9' },
50
+ duration: { value: '8', label: '8s' }
51
+ });
52
+
53
+ if (result.code === 0) {
54
+ console.log('Generated video:', result.data);
55
+ }
56
+ ```
57
+
58
+ ## API Reference
59
+
60
+ ### veo()
61
+
62
+ Generate video using Google Veo model.
63
+
64
+ ```typescript
65
+ await client.video.veo({
66
+ prompt?: string | TextFieldItem[];
67
+ attachment?: AttachmentFieldItem[];
68
+ first_frame?: AttachmentFieldItem[];
69
+ last_frame?: AttachmentFieldItem[];
70
+ aspect_ratio?: LabelFieldItem | string;
71
+ resolution?: LabelFieldItem | string;
72
+ duration?: LabelFieldItem | string;
73
+ }): Promise<APIResponse<AttachmentResult[]>>
74
+ ```
75
+
76
+ ## Parameters
77
+
78
+ | Parameter | Type | Required | Description |
79
+ |-----------|------|----------|-------------|
80
+ | `prompt` | `string \| TextFieldItem[]` | No* | Text description (*required if no attachment) |
81
+ | `attachment` | `AttachmentFieldItem[]` | No* | Reference image (*required if no prompt) |
82
+ | `first_frame` | `AttachmentFieldItem[]` | No | Starting frame for video |
83
+ | `last_frame` | `AttachmentFieldItem[]` | No | Ending frame for video |
84
+ | `aspect_ratio` | `LabelFieldItem \| string` | No | Video aspect ratio |
85
+ | `resolution` | `LabelFieldItem \| string` | No | Video resolution |
86
+ | `duration` | `LabelFieldItem \| string` | No | Video duration in seconds |
87
+
88
+ ## Examples
89
+
90
+ ### Text-to-Video
91
+
92
+ ```typescript
93
+ const client = new UnityClawClient();
94
+
95
+ const result = await client.video.veo({
96
+ prompt: 'A majestic eagle soaring through misty mountain peaks at sunrise',
97
+ aspect_ratio: { value: '16:9', label: '16:9' },
98
+ resolution: { value: '1080p', label: '1080p' },
99
+ duration: { value: '8', label: '8s' }
100
+ });
101
+ ```
102
+
103
+ ### Image-to-Video
104
+
105
+ ```typescript
106
+ const result = await client.video.veo({
107
+ attachment: [
108
+ { tmp_url: 'https://example.com/landscape.jpg', name: 'landscape.jpg' }
109
+ ],
110
+ aspect_ratio: { value: '16:9', label: '16:9' },
111
+ duration: { value: '5', label: '5s' }
112
+ });
113
+ ```
114
+
115
+ ### First/Last Frame Control
116
+
117
+ ```typescript
118
+ // Generate video with specific start and end frames
119
+ const result = await client.video.veo({
120
+ first_frame: [
121
+ { tmp_url: 'https://example.com/start.jpg', name: 'start.jpg' }
122
+ ],
123
+ last_frame: [
124
+ { tmp_url: 'https://example.com/end.jpg', name: 'end.jpg' }
125
+ ],
126
+ prompt: 'Smooth transition between the two scenes',
127
+ duration: { value: '8', label: '8s' }
128
+ });
129
+ ```
130
+
131
+ ### High Resolution Video
132
+
133
+ ```typescript
134
+ const result = await client.video.veo({
135
+ prompt: 'A cinematic shot of a luxury car driving through a city at night',
136
+ aspect_ratio: { value: '16:9', label: '16:9' },
137
+ resolution: { value: '4K', label: '4K' },
138
+ duration: { value: '10', label: '10s' }
139
+ });
140
+ ```
141
+
142
+ ### Portrait Video
143
+
144
+ ```typescript
145
+ const result = await client.video.veo({
146
+ prompt: 'A model walking down a fashion runway with dramatic lighting',
147
+ aspect_ratio: { value: '9:16', label: '9:16' },
148
+ duration: { value: '5', label: '5s' }
149
+ });
150
+ ```
151
+
152
+ ### Simple String Parameters
153
+
154
+ ```typescript
155
+ // You can also use simple strings instead of LabelFieldItem
156
+ const result = await client.video.veo({
157
+ prompt: 'A peaceful garden scene',
158
+ aspect_ratio: '16:9',
159
+ resolution: '1080p',
160
+ duration: '8'
161
+ });
162
+ ```
163
+
164
+ ## Aspect Ratio Options
165
+
166
+ | Value | Use Case |
167
+ |-------|----------|
168
+ | `16:9` | Standard landscape (YouTube, presentations) |
169
+ | `9:16` | Portrait (TikTok, Instagram Reels) |
170
+ | `1:1` | Square (Instagram feed) |
171
+
172
+ ## Duration Options
173
+
174
+ | Value | Description |
175
+ |-------|-------------|
176
+ | `5` | 5 seconds |
177
+ | `8` | 8 seconds (default) |
178
+ | `10` | 10 seconds |
179
+
180
+ ## Resolution Options
181
+
182
+ | Value | Description |
183
+ |-------|-------------|
184
+ | `720p` | HD quality |
185
+ | `1080p` | Full HD |
186
+ | `4K` | Ultra HD |
187
+
188
+ ## Response Format
189
+
190
+ ```typescript
191
+ interface AttachmentResult {
192
+ name: string;
193
+ contentType: 'attachment/url';
194
+ content: string; // URL to generated video
195
+ }
196
+ ```
197
+
198
+ ## Error Handling
199
+
200
+ ```typescript
201
+ const result = await client.video.veo({
202
+ prompt: 'A test video',
203
+ aspect_ratio: '16:9'
204
+ });
205
+
206
+ if (result.code !== 0) {
207
+ console.error('Video generation failed:', result.msg);
208
+ } else {
209
+ console.log('Success:', result.data);
210
+ }
211
+ ```
212
+
213
+ ## Task Folders
214
+
215
+ Each execution creates a task folder:
216
+
217
+ ```typescript
218
+ const result = await client.video.veo({
219
+ prompt: 'test',
220
+ aspect_ratio: '16:9'
221
+ });
222
+
223
+ console.log('Task ID:', result.taskId);
224
+ console.log('Task Folder:', result.taskFolder);
225
+ console.log('Downloaded Videos:', result.attachments);
226
+ ```
227
+
228
+ ## Best Practices
229
+
230
+ 1. **First/Last Frame**: Use for precise control over video start/end
231
+ 2. **Resolution**: Match to your output requirements
232
+ 3. **Duration**: Shorter videos generate faster
233
+ 4. **Prompts**: Be specific about camera movement and style
234
+
235
+ ## Related Skills
236
+
237
+ - [unityclaw-video-generation-sora](../unityclaw-video-generation-sora/SKILL.md) - OpenAI Sora video generation
238
+ - [unityclaw-video-generation-kling](../unityclaw-video-generation-kling/SKILL.md) - Kling video generation
239
+ - [unityclaw-image-generation](../unityclaw-image-generation/SKILL.md) - Generate reference images