@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,284 @@
1
+ ---
2
+ name: unityclaw-video-generation-other
3
+ description: Generate videos using Doubao, Wan (Alibaba), MiniMax, and JiMeng models
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 - Other Models
23
+
24
+ Generate videos using multiple AI models: Doubao, Wan (Alibaba), MiniMax, and JiMeng.
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
+ // Using Doubao
48
+ const result = await client.video.doubao({
49
+ prompt: 'A cinematic drone shot of mountains',
50
+ resolution: { value: '1080p', label: '1080p' },
51
+ ratio: { value: '16:9', label: '16:9' }
52
+ });
53
+ ```
54
+
55
+ ## Available APIs
56
+
57
+ ### 1. Doubao Video
58
+
59
+ ```typescript
60
+ const result = await client.video.doubao({
61
+ prompt: 'A cinematic drone shot of mountains at golden hour',
62
+ resolution: { value: '1080p', label: '1080p' },
63
+ ratio: { value: '16:9', label: '16:9' },
64
+ duration: { value: '5', label: '5s' }
65
+ });
66
+ ```
67
+
68
+ **Parameters:**
69
+
70
+ | Parameter | Type | Required | Description |
71
+ |-----------|------|----------|-------------|
72
+ | `prompt` | `string \| TextFieldItem[]` | No | Text description |
73
+ | `attachment` | `AttachmentFieldItem[]` | No | Reference image |
74
+ | `action` | `LabelFieldItem \| string` | No | Action type |
75
+ | `resolution` | `LabelFieldItem \| string` | Yes | Video resolution |
76
+ | `ratio` | `LabelFieldItem \| string` | Yes | Aspect ratio |
77
+ | `duration` | `LabelFieldItem \| string` | No | Video duration |
78
+
79
+ ### 2. Wan Video (Alibaba)
80
+
81
+ ```typescript
82
+ const result = await client.video.wan({
83
+ prompt: 'A futuristic city at night with neon lights',
84
+ size: { value: '1280*720', label: '720p' },
85
+ duration: { value: '5', label: '5s' },
86
+ model: { value: 'wan2.6-t2v', label: 'Wan 2.6' }
87
+ });
88
+ ```
89
+
90
+ **Parameters:**
91
+
92
+ | Parameter | Type | Required | Description |
93
+ |-----------|------|----------|-------------|
94
+ | `prompt` | `string \| TextFieldItem[]` | No | Text description |
95
+ | `attachment` | `AttachmentFieldItem[]` | No | Reference image |
96
+ | `size` | `LabelFieldItem \| string` | No | Video size (e.g., '1280*720') |
97
+ | `duration` | `LabelFieldItem \| string` | No | Video duration |
98
+ | `model` | `LabelFieldItem \| string` | No | Model version |
99
+ | `shot_type` | `LabelFieldItem \| string` | No | Camera shot type |
100
+
101
+ ### 3. MiniMax Video
102
+
103
+ ```typescript
104
+ const result = await client.video.minimax({
105
+ prompt: 'A person walking through a serene forest',
106
+ size: { value: '1360*768', label: '768p' },
107
+ model: { value: 'MiniMax-Hailuo-2.3', label: 'Hailuo 2.3' }
108
+ });
109
+ ```
110
+
111
+ **Parameters:**
112
+
113
+ | Parameter | Type | Required | Description |
114
+ |-----------|------|----------|-------------|
115
+ | `prompt` | `string \| TextFieldItem[]` | No | Text description |
116
+ | `attachment` | `AttachmentFieldItem[]` | No | Reference image |
117
+ | `size` | `LabelFieldItem \| string` | No | Video size |
118
+ | `duration` | `LabelFieldItem \| string` | No | Video duration |
119
+ | `model` | `LabelFieldItem \| string` | No | Model version |
120
+
121
+ ### 4. JiMeng Video
122
+
123
+ ```typescript
124
+ const result = await client.video.jimeng({
125
+ action: { value: 't2v', label: 'Text to Video' },
126
+ prompt: 'A beautiful landscape with flowing river',
127
+ aspect_ratio: { value: '16:9', label: '16:9' }
128
+ });
129
+ ```
130
+
131
+ **Parameters:**
132
+
133
+ | Parameter | Type | Required | Description |
134
+ |-----------|------|----------|-------------|
135
+ | `action` | `LabelFieldItem \| string` | Yes | Action type ('t2v' for text-to-video) |
136
+ | `prompt` | `string \| TextFieldItem[]` | No | Text description |
137
+ | `attachment` | `AttachmentFieldItem[]` | No | Reference image |
138
+ | `aspect_ratio` | `LabelFieldItem \| string` | Yes | Aspect ratio |
139
+
140
+ ## Examples
141
+
142
+ ### Doubao - Text-to-Video
143
+
144
+ ```typescript
145
+ const client = new UnityClawClient();
146
+
147
+ const result = await client.video.doubao({
148
+ prompt: 'A luxury car driving along a coastal road at sunset',
149
+ resolution: { value: '1080p', label: '1080p' },
150
+ ratio: { value: '16:9', label: '16:9' },
151
+ duration: { value: '5', label: '5s' }
152
+ });
153
+ ```
154
+
155
+ ### Doubao - Image-to-Video
156
+
157
+ ```typescript
158
+ const result = await client.video.doubao({
159
+ action: { value: 'i2v', label: 'Image to Video' },
160
+ attachment: [
161
+ { tmp_url: 'https://example.com/image.jpg', name: 'image.jpg' }
162
+ ],
163
+ prompt: 'Animate this image with gentle movement',
164
+ resolution: { value: '1080p', label: '1080p' },
165
+ ratio: { value: '16:9', label: '16:9' }
166
+ });
167
+ ```
168
+
169
+ ### Wan - High Quality
170
+
171
+ ```typescript
172
+ const result = await client.video.wan({
173
+ prompt: 'A samurai walking through cherry blossom petals falling',
174
+ size: { value: '1920*1080', label: '1080p' },
175
+ duration: { value: '5', label: '5s' },
176
+ model: { value: 'wan2.6-t2v', label: 'Wan 2.6' },
177
+ shot_type: { value: 'cinematic', label: 'Cinematic' }
178
+ });
179
+ ```
180
+
181
+ ### MiniMax - Portrait Video
182
+
183
+ ```typescript
184
+ const result = await client.video.minimax({
185
+ prompt: 'A dancer performing an elegant routine',
186
+ size: { value: '768*1360', label: 'Portrait 768p' },
187
+ model: { value: 'MiniMax-Hailuo-2.3', label: 'Hailuo 2.3' }
188
+ });
189
+ ```
190
+
191
+ ### JiMeng - Chinese Prompt
192
+
193
+ ```typescript
194
+ const result = await client.video.jimeng({
195
+ action: { value: 't2v', label: 'Text to Video' },
196
+ prompt: '一只可爱的熊猫在竹林里吃竹子',
197
+ aspect_ratio: { value: '16:9', label: '16:9' }
198
+ });
199
+ ```
200
+
201
+ ### Compare Multiple Models
202
+
203
+ ```typescript
204
+ const prompt = 'A serene mountain lake at sunrise';
205
+
206
+ const results = await Promise.all([
207
+ client.video.doubao({
208
+ prompt,
209
+ resolution: '1080p',
210
+ ratio: '16:9'
211
+ }),
212
+ client.video.wan({
213
+ prompt,
214
+ size: '1280*720'
215
+ }),
216
+ client.video.minimax({
217
+ prompt,
218
+ size: '1360*768'
219
+ })
220
+ ]);
221
+
222
+ results.forEach((result, i) => {
223
+ const model = ['Doubao', 'Wan', 'MiniMax'][i];
224
+ if (result.code === 0) {
225
+ console.log(`${model}: ${result.data?.[0]?.content}`);
226
+ }
227
+ });
228
+ ```
229
+
230
+ ## Model Comparison
231
+
232
+ | Model | Strengths | Best For |
233
+ |-------|-----------|----------|
234
+ | Doubao | High quality, Chinese prompts | General purpose, Chinese content |
235
+ | Wan | Multiple shot types | Cinematic videos |
236
+ | MiniMax | Fast generation | Quick iterations |
237
+ | JiMeng | Chinese language | Chinese content |
238
+
239
+ ## Response Format
240
+
241
+ ```typescript
242
+ interface AttachmentResult {
243
+ name: string;
244
+ contentType: 'attachment/url';
245
+ content: string; // URL to generated video
246
+ }
247
+ ```
248
+
249
+ ## Error Handling
250
+
251
+ ```typescript
252
+ const result = await client.video.doubao({
253
+ prompt: 'test',
254
+ resolution: '1080p',
255
+ ratio: '16:9'
256
+ });
257
+
258
+ if (result.code !== 0) {
259
+ console.error('Failed:', result.msg);
260
+ } else {
261
+ console.log('Success:', result.data);
262
+ }
263
+ ```
264
+
265
+ ## Task Folders
266
+
267
+ Each execution creates a task folder:
268
+
269
+ ```typescript
270
+ const result = await client.video.wan({
271
+ prompt: 'test',
272
+ size: '1280*720'
273
+ });
274
+
275
+ console.log('Task ID:', result.taskId);
276
+ console.log('Task Folder:', result.taskFolder);
277
+ console.log('Videos:', result.attachments);
278
+ ```
279
+
280
+ ## Related Skills
281
+
282
+ - [unityclaw-video-generation-sora](../unityclaw-video-generation-sora/SKILL.md) - OpenAI Sora
283
+ - [unityclaw-video-generation-veo](../unityclaw-video-generation-veo/SKILL.md) - Google Veo
284
+ - [unityclaw-video-generation-kling](../unityclaw-video-generation-kling/SKILL.md) - Kling
@@ -0,0 +1,250 @@
1
+ ---
2
+ name: unityclaw-video-generation-sora
3
+ description: Generate cinematic videos using OpenAI Sora 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 - Sora
23
+
24
+ Generate cinematic videos using OpenAI's Sora AI model.
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.sora({
48
+ prompt: 'A cat playing piano in a cozy living room',
49
+ orientation: { value: 'landscape', label: 'Landscape' }
50
+ });
51
+
52
+ if (result.code === 0) {
53
+ console.log('Generated video:', result.data);
54
+ }
55
+ ```
56
+
57
+ ## Available APIs
58
+
59
+ ### Sora Video Generation
60
+
61
+ ```typescript
62
+ // Basic usage
63
+ const result = await client.video.sora({
64
+ prompt: 'A drone shot flying over snowy mountains',
65
+ orientation: { value: 'landscape', label: 'Landscape' }
66
+ });
67
+
68
+ // With reference image
69
+ const result = await client.video.sora({
70
+ prompt: 'Animate this scene with gentle movement',
71
+ attachment: [{ tmp_url: 'https://...', name: 'scene.jpg' }],
72
+ orientation: { value: 'portrait', label: 'Portrait' }
73
+ });
74
+ ```
75
+
76
+ ### Sora Stable Video Generation
77
+
78
+ ```typescript
79
+ // With duration and size control
80
+ const result = await client.video.soraStable({
81
+ prompt: 'A peaceful ocean wave at sunset',
82
+ size: { value: '1920x1080', label: '1080p' },
83
+ seconds: { value: '10', label: '10s' }
84
+ });
85
+
86
+ // Image-to-video
87
+ const result = await client.video.soraStable({
88
+ attachment: [{ tmp_url: 'https://...', name: 'image.jpg' }],
89
+ prompt: 'Bring this image to life',
90
+ size: { value: '1280x720', label: '720p' },
91
+ seconds: { value: '5', label: '5s' }
92
+ });
93
+ ```
94
+
95
+ ## Parameter Types
96
+
97
+ ### SoraVideoParams
98
+
99
+ | Parameter | Type | Required | Description |
100
+ |-----------|------|----------|-------------|
101
+ | `prompt` | `string \| TextFieldItem[]` | No | Text description of the video |
102
+ | `attachment` | `AttachmentFieldItem[]` | No | Reference image for image-to-video |
103
+ | `orientation` | `LabelFieldItem` | Yes | Video orientation |
104
+
105
+ ### SoraStableParams
106
+
107
+ | Parameter | Type | Required | Description |
108
+ |-----------|------|----------|-------------|
109
+ | `prompt` | `string \| TextFieldItem[]` | No | Text description |
110
+ | `attachment` | `AttachmentFieldItem[]` | No | Reference image |
111
+ | `size` | `LabelFieldItem` | No | Video resolution |
112
+ | `seconds` | `LabelFieldItem` | No | Video duration |
113
+
114
+ ## Examples
115
+
116
+ ### Text-to-Video
117
+
118
+ ```typescript
119
+ const client = new UnityClawClient();
120
+
121
+ const result = await client.video.sora({
122
+ prompt: 'A cinematic drone shot flying through a futuristic neon-lit city at night, with flying cars and holographic billboards',
123
+ orientation: { value: 'landscape', label: 'Landscape' }
124
+ });
125
+
126
+ if (result.code === 0 && result.data) {
127
+ console.log('Video URL:', result.data[0].content);
128
+ }
129
+ ```
130
+
131
+ ### Image-to-Video
132
+
133
+ ```typescript
134
+ const result = await client.video.sora({
135
+ prompt: 'Animate this image with subtle camera movement and parallax effect',
136
+ attachment: [
137
+ { tmp_url: 'https://example.com/landscape.jpg', name: 'landscape.jpg' }
138
+ ],
139
+ orientation: { value: 'landscape', label: 'Landscape' }
140
+ });
141
+ ```
142
+
143
+ ### Long Duration Video
144
+
145
+ ```typescript
146
+ const result = await client.video.soraStable({
147
+ prompt: 'A time-lapse of a flower blooming in a garden',
148
+ size: { value: '1920x1080', label: '1080p Landscape' },
149
+ seconds: { value: '15', label: '15s' }
150
+ });
151
+ ```
152
+
153
+ ### Portrait Video for Social Media
154
+
155
+ ```typescript
156
+ const result = await client.video.sora({
157
+ prompt: 'A person walking through a misty forest with sunlight filtering through the trees',
158
+ orientation: { value: 'portrait', label: 'Portrait' }
159
+ });
160
+ ```
161
+
162
+ ### Batch Generation
163
+
164
+ ```typescript
165
+ const prompts = [
166
+ 'A serene beach at golden hour with waves gently rolling',
167
+ 'A busy Tokyo street crossing at night with neon signs',
168
+ 'An astronaut floating in space with Earth in the background'
169
+ ];
170
+
171
+ const results = await Promise.all(
172
+ prompts.map(prompt => client.video.sora({
173
+ prompt,
174
+ orientation: { value: 'landscape', label: 'Landscape' }
175
+ }))
176
+ );
177
+
178
+ results.forEach((result, i) => {
179
+ if (result.code === 0) {
180
+ console.log(`Video ${i + 1}: ${result.data?.[0]?.content}`);
181
+ }
182
+ });
183
+ ```
184
+
185
+ ## Orientation Options
186
+
187
+ | Value | Label | Aspect Ratio | Use Case |
188
+ |-------|-------|--------------|----------|
189
+ | `landscape` | Landscape | 16:9 | YouTube, presentations |
190
+ | `portrait` | Portrait | 9:16 | TikTok, Instagram Reels |
191
+ | `square` | Square | 1:1 | Instagram feed |
192
+
193
+ ## Response Format
194
+
195
+ ```typescript
196
+ interface AttachmentResult {
197
+ name: string;
198
+ contentType: 'attachment/url';
199
+ content: string; // URL to generated video
200
+ }
201
+
202
+ interface APIResponse<AttachmentResult[]> {
203
+ code: number;
204
+ msg?: string;
205
+ data?: AttachmentResult[];
206
+ }
207
+ ```
208
+
209
+ ## Error Handling
210
+
211
+ ```typescript
212
+ const result = await client.video.sora({
213
+ prompt: 'A test video',
214
+ orientation: { value: 'landscape', label: 'Landscape' }
215
+ });
216
+
217
+ if (result.code !== 0) {
218
+ console.error('Video generation failed:', result.msg);
219
+ } else {
220
+ console.log('Success:', result.data);
221
+ }
222
+ ```
223
+
224
+ ## Task Folders
225
+
226
+ Each execution creates a task folder:
227
+
228
+ ```typescript
229
+ const result = await client.video.sora({
230
+ prompt: 'test',
231
+ orientation: { value: 'landscape', label: 'Landscape' }
232
+ });
233
+
234
+ console.log('Task ID:', result.taskId);
235
+ console.log('Task Folder:', result.taskFolder);
236
+ console.log('Downloaded Videos:', result.attachments);
237
+ ```
238
+
239
+ ## Best Practices
240
+
241
+ 1. **Detailed Prompts**: Include camera angles, lighting, and movement descriptions
242
+ 2. **Reference Images**: Use high-quality images for image-to-video
243
+ 3. **Orientation**: Match orientation to target platform
244
+ 4. **Duration**: Use `soraStable` for precise duration control
245
+
246
+ ## Related Skills
247
+
248
+ - [unityclaw-video-generation-veo](../unityclaw-video-generation-veo/SKILL.md) - Google Veo video generation
249
+ - [unityclaw-video-generation-kling](../unityclaw-video-generation-kling/SKILL.md) - Kling video generation
250
+ - [unityclaw-image-generation](../unityclaw-image-generation/SKILL.md) - Generate reference images