@unityclaw/skills 1.0.6 → 1.0.9
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 +70 -70
- package/package.json +3 -2
- package/unityclaw-document-convert/SKILL.md +18 -5
- package/unityclaw-document-translation/SKILL.md +11 -2
- package/unityclaw-idp-business-extraction/SKILL.md +63 -0
- package/unityclaw-idp-contract-extraction/SKILL.md +63 -0
- package/unityclaw-idp-invoice-extraction/SKILL.md +65 -0
- package/unityclaw-idp-personal-documents/SKILL.md +69 -0
- package/unityclaw-image-compress/SKILL.md +10 -1
- package/unityclaw-image-generation/SKILL.md +59 -16
- package/unityclaw-media-analysis/SKILL.md +27 -19
- package/unityclaw-media-download-xhs/SKILL.md +49 -0
- package/unityclaw-media-stats/SKILL.md +49 -0
- package/unityclaw-media-user-info/SKILL.md +49 -0
- package/unityclaw-video-frame-extract/SKILL.md +50 -0
- package/unityclaw-video-generation-jimeng-doubao/SKILL.md +79 -0
- package/unityclaw-video-generation-kling/SKILL.md +12 -4
- package/unityclaw-video-generation-wan-minimax/SKILL.md +79 -0
- package/unityclaw-video-generation-other/SKILL.md +0 -324
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: unityclaw-image-generation
|
|
3
3
|
description: Generate high-quality images using Gemini or JiMeng (Doubao) models
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.9
|
|
5
5
|
metadata:
|
|
6
6
|
openclaw:
|
|
7
7
|
requires:
|
|
@@ -22,6 +22,7 @@ metadata:
|
|
|
22
22
|
# UnityClaw Image Generation
|
|
23
23
|
|
|
24
24
|
Generate high-quality images using Gemini or JiMeng (Doubao) AI models.
|
|
25
|
+
This skill keeps JiMeng as one unified entry (no separate v3 skill).
|
|
25
26
|
|
|
26
27
|
## Installation
|
|
27
28
|
|
|
@@ -89,6 +90,12 @@ if (result.success && result.response?.data) {
|
|
|
89
90
|
}
|
|
90
91
|
```
|
|
91
92
|
|
|
93
|
+
You can pass local files directly and SDK will auto-upload them:
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
attachment: [{ path: './files/reference.jpg' }]
|
|
97
|
+
```
|
|
98
|
+
|
|
92
99
|
## Available APIs
|
|
93
100
|
|
|
94
101
|
### Gemini Image Generation
|
|
@@ -117,30 +124,56 @@ const result = await client.image.geminiV2({
|
|
|
117
124
|
|
|
118
125
|
### JiMeng Image Generation
|
|
119
126
|
|
|
127
|
+
> **IMPORTANT:** JiMeng uses different parameters than Gemini. Pay attention to the `size` and `model_selector` values.
|
|
128
|
+
|
|
120
129
|
```typescript
|
|
121
|
-
// Basic usage
|
|
130
|
+
// Basic usage (defaults to Seedream 5.0 Lite model)
|
|
122
131
|
const result = await client.image.jimeng({
|
|
123
132
|
prompt: '一只可爱的猫咪在花园里玩耍',
|
|
124
|
-
size: { value: '
|
|
133
|
+
size: { value: '2048x2048', label: '2K 1:1' }
|
|
125
134
|
});
|
|
126
135
|
|
|
127
|
-
// With
|
|
136
|
+
// With Seedream 5.0 Lite (supports web_search, 2K and 3K resolutions)
|
|
128
137
|
const result = await client.image.jimeng({
|
|
129
138
|
prompt: 'A serene Japanese garden in autumn',
|
|
130
139
|
attachment: [{ tmp_url: 'https://...', name: 'style.jpg' }],
|
|
131
|
-
size: { value: '
|
|
132
|
-
model_selector: { value: '
|
|
133
|
-
web_search: { value: true, label: 'Enable' },
|
|
140
|
+
size: { value: '2048x2048', label: '2K 1:1' },
|
|
141
|
+
model_selector: { value: 'doubao-seedream-5-0-260128', label: 'Seedream 5.0 Lite' },
|
|
142
|
+
web_search: { value: 'true', label: 'Enable' },
|
|
134
143
|
image_count: { value: 4, label: '4 images' }
|
|
135
144
|
});
|
|
136
145
|
|
|
137
|
-
//
|
|
138
|
-
const result = await client.image.
|
|
146
|
+
// With Seedream 4.5 (supports 4K resolution, no web_search)
|
|
147
|
+
const result = await client.image.jimeng({
|
|
139
148
|
prompt: 'A mystical forest with glowing mushrooms',
|
|
140
|
-
size: { value: '
|
|
149
|
+
size: { value: '4096x4096', label: '4K 1:1' },
|
|
150
|
+
model_selector: { value: 'doubao-seedream-4-5-251128', label: 'Seedream 4.5' }
|
|
141
151
|
});
|
|
152
|
+
|
|
142
153
|
```
|
|
143
154
|
|
|
155
|
+
#### JiMeng Size Options
|
|
156
|
+
|
|
157
|
+
| Resolution | 5.0 Lite | 4.5 | Size Values |
|
|
158
|
+
|------------|----------|-----|-------------|
|
|
159
|
+
| 2K | ✅ | ✅ | `2048x2048`, `1728x2304`, `2304x1728`, `2848x1600`, `1600x2848`, `2496x1664`, `1664x2496`, `3136x1344` |
|
|
160
|
+
| 3K | ✅ | ❌ | `3072x3072`, `2592x3456`, `3456x2592`, `4096x2304`, `2304x4096`, `3744x2496`, `2496x3744`, `4704x2016` |
|
|
161
|
+
| 4K | ❌ | ✅ | `4096x4096`, `3520x4704`, `4704x3520`, `5504x3040`, `3040x5504`, `4992x3328`, `3328x4992`, `6240x2656` |
|
|
162
|
+
|
|
163
|
+
> **Note:** `web_search` only works with Seedream 5.0 Lite model.
|
|
164
|
+
|
|
165
|
+
## Troubleshooting (`/api/jimeng/image`)
|
|
166
|
+
|
|
167
|
+
If you see backend errors like `{"code":1254500}`, check these first:
|
|
168
|
+
|
|
169
|
+
- Do not use `jimeng/image/v3` size values (for example `1152x896`) on `/api/jimeng/image`.
|
|
170
|
+
- For `/api/jimeng/image`, use 2K/3K/4K size values such as:
|
|
171
|
+
`2048x2048`, `3072x3072`, `4096x4096`.
|
|
172
|
+
- Model and size must match:
|
|
173
|
+
- `doubao-seedream-5-0-260128` does **not** support 4K.
|
|
174
|
+
- `doubao-seedream-4-5-251128` does **not** support 3K.
|
|
175
|
+
- `web_search=true` only works with `doubao-seedream-5-0-260128`.
|
|
176
|
+
|
|
144
177
|
## Parameter Types
|
|
145
178
|
|
|
146
179
|
### GeminiImageParams
|
|
@@ -158,11 +191,12 @@ const result = await client.image.jimengV3({
|
|
|
158
191
|
| Parameter | Type | Required | Description |
|
|
159
192
|
|-----------|------|----------|-------------|
|
|
160
193
|
| `prompt` | `string \| TextFieldItem[]` | Yes | Text description (supports Chinese) |
|
|
161
|
-
| `attachment` | `AttachmentFieldItem[]` | No | Reference images |
|
|
162
|
-
| `size` | `LabelFieldItem` | Yes | Size: `'
|
|
163
|
-
| `model_selector` | `LabelFieldItem` | No | Model
|
|
164
|
-
| `web_search` | `LabelFieldItem` | No | Enable web search
|
|
165
|
-
| `image_count` | `LabelFieldItem \| number` | No | Number of images to generate |
|
|
194
|
+
| `attachment` | `AttachmentFieldItem[]` | No | Reference images for style transfer |
|
|
195
|
+
| `size` | `LabelFieldItem` | Yes | Size: `'2048x2048'` (2K), `'3072x3072'` (3K), `'4096x4096'` (4K) and more |
|
|
196
|
+
| `model_selector` | `LabelFieldItem` | No | Model: `'doubao-seedream-5-0-260128'` (5.0 Lite) or `'doubao-seedream-4-5-251128'` (4.5) |
|
|
197
|
+
| `web_search` | `LabelFieldItem` | No | Enable web search (5.0 Lite only): `'true'` or `'false'` |
|
|
198
|
+
| `image_count` | `LabelFieldItem \| number` | No | Number of images to generate (0-5) |
|
|
199
|
+
| `model` | `string` | No | Direct model override |
|
|
166
200
|
|
|
167
201
|
## Examples
|
|
168
202
|
|
|
@@ -267,4 +301,13 @@ console.log('Task Folder:', result.taskFolder); // e.g., "~/Documents/tasks/2026
|
|
|
267
301
|
## Related Skills
|
|
268
302
|
|
|
269
303
|
- [unityclaw-image-compress](../unityclaw-image-compress/SKILL.md) - Compress generated images
|
|
270
|
-
- [unityclaw-video-generation-
|
|
304
|
+
- [unityclaw-video-generation-kling](../unityclaw-video-generation-kling/SKILL.md) - Generate videos
|
|
305
|
+
|
|
306
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
307
|
+
## SDK Version Check Rule
|
|
308
|
+
|
|
309
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
310
|
+
- Required minimum SDK version: `1.0.9`
|
|
311
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
312
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
313
|
+
<!-- SDK_VERSION_RULE_END -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: unityclaw-media-analysis
|
|
3
3
|
description: Analyze video and audio content to extract subtitles, summaries, and insights
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.9
|
|
5
5
|
metadata:
|
|
6
6
|
openclaw:
|
|
7
7
|
requires:
|
|
@@ -96,18 +96,17 @@ await client.media.analyze({
|
|
|
96
96
|
|
|
97
97
|
### analyzeVideo()
|
|
98
98
|
|
|
99
|
-
Analyze a video file directly.
|
|
99
|
+
Analyze a video file directly (SDK helper on top of `/api/media_analysis`).
|
|
100
100
|
|
|
101
101
|
```typescript
|
|
102
102
|
await client.media.analyzeVideo({
|
|
103
103
|
file: { tmp_url: string; type?: string; name?: string; size?: number };
|
|
104
|
-
prompt?: string;
|
|
105
104
|
}): Promise<APIResponse<MediaAnalysisResult>>
|
|
106
105
|
```
|
|
107
106
|
|
|
108
107
|
### analyzeSocialVideo()
|
|
109
108
|
|
|
110
|
-
Analyze social media videos (
|
|
109
|
+
Analyze social media videos by URL (SDK helper on top of `/api/media_analysis`).
|
|
111
110
|
|
|
112
111
|
```typescript
|
|
113
112
|
await client.media.analyzeSocialVideo({
|
|
@@ -172,8 +171,8 @@ const result = await client.media.analyzeSocialVideo({
|
|
|
172
171
|
url: 'https://www.tiktok.com/@user/video/123456789'
|
|
173
172
|
});
|
|
174
173
|
|
|
175
|
-
if (result.
|
|
176
|
-
console.log('Content:', result.data.summary);
|
|
174
|
+
if (result.success && result.response?.data) {
|
|
175
|
+
console.log('Content:', result.response.data.summary);
|
|
177
176
|
}
|
|
178
177
|
```
|
|
179
178
|
|
|
@@ -188,8 +187,8 @@ const result = await client.media.analyzeVideo({
|
|
|
188
187
|
}
|
|
189
188
|
});
|
|
190
189
|
|
|
191
|
-
if (result.
|
|
192
|
-
console.log('Meeting summary:', result.data.summary);
|
|
190
|
+
if (result.success && result.response?.data) {
|
|
191
|
+
console.log('Meeting summary:', result.response.data.summary);
|
|
193
192
|
}
|
|
194
193
|
```
|
|
195
194
|
|
|
@@ -204,8 +203,8 @@ const result = await client.media.analyzeVideo({
|
|
|
204
203
|
prompt: 'Extract all code snippets and programming concepts mentioned in this tutorial'
|
|
205
204
|
});
|
|
206
205
|
|
|
207
|
-
if (result.
|
|
208
|
-
console.log('Analysis:', result.data.summary);
|
|
206
|
+
if (result.success && result.response?.data) {
|
|
207
|
+
console.log('Analysis:', result.response.data.summary);
|
|
209
208
|
}
|
|
210
209
|
```
|
|
211
210
|
|
|
@@ -242,9 +241,9 @@ const result = await client.media.analyze({
|
|
|
242
241
|
]
|
|
243
242
|
});
|
|
244
243
|
|
|
245
|
-
if (result.
|
|
246
|
-
console.log('Podcast summary:', result.data.summary);
|
|
247
|
-
console.log('Transcript:', result.data.subtitle);
|
|
244
|
+
if (result.success && result.response?.data) {
|
|
245
|
+
console.log('Podcast summary:', result.response.data.summary);
|
|
246
|
+
console.log('Transcript:', result.response.data.subtitle);
|
|
248
247
|
}
|
|
249
248
|
```
|
|
250
249
|
|
|
@@ -259,8 +258,8 @@ const result = await client.media.analyzeVideo({
|
|
|
259
258
|
prompt: 'Extract action items, decisions made, and key discussion points'
|
|
260
259
|
});
|
|
261
260
|
|
|
262
|
-
if (result.
|
|
263
|
-
console.log('Meeting Notes:', result.data.summary);
|
|
261
|
+
if (result.success && result.response?.data) {
|
|
262
|
+
console.log('Meeting Notes:', result.response.data.summary);
|
|
264
263
|
}
|
|
265
264
|
```
|
|
266
265
|
|
|
@@ -271,9 +270,9 @@ const result = await client.media.analyze({
|
|
|
271
270
|
url: [{ link: 'https://youtube.com/watch?v=lecture-id' }]
|
|
272
271
|
});
|
|
273
272
|
|
|
274
|
-
if (result.
|
|
275
|
-
console.log('Lecture Summary:', result.data.summary);
|
|
276
|
-
console.log('Full Transcript:', result.data.subtitle);
|
|
273
|
+
if (result.success && result.response?.data) {
|
|
274
|
+
console.log('Lecture Summary:', result.response.data.summary);
|
|
275
|
+
console.log('Full Transcript:', result.response.data.subtitle);
|
|
277
276
|
}
|
|
278
277
|
```
|
|
279
278
|
|
|
@@ -347,4 +346,13 @@ console.log('Task Folder:', result.taskFolder);
|
|
|
347
346
|
## Related Skills
|
|
348
347
|
|
|
349
348
|
- [unityclaw-document-translation](../unityclaw-document-translation/SKILL.md) - Translate transcripts
|
|
350
|
-
- [unityclaw-video-generation-
|
|
349
|
+
- [unityclaw-video-generation-kling](../unityclaw-video-generation-kling/SKILL.md) - Generate videos
|
|
350
|
+
|
|
351
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
352
|
+
## SDK Version Check Rule
|
|
353
|
+
|
|
354
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
355
|
+
- Required minimum SDK version: `1.0.9`
|
|
356
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
357
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
358
|
+
<!-- SDK_VERSION_RULE_END -->
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unityclaw-media-download-xhs
|
|
3
|
+
description: Download Xiaohongshu media and return cover/video URLs
|
|
4
|
+
version: 1.0.9
|
|
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 Xiaohongshu Download
|
|
23
|
+
|
|
24
|
+
Download media metadata from Xiaohongshu links.
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { UnityClawClient } from '@unityclaw/sdk';
|
|
28
|
+
|
|
29
|
+
const client = new UnityClawClient();
|
|
30
|
+
const result = await client.media.downloadXiaohongshu({
|
|
31
|
+
url: [{ link: 'https://www.xiaohongshu.com/explore/xxxx' }],
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
if (result.success && result.response?.data) {
|
|
35
|
+
console.log(result.response.data.cover_url, result.response.data.video_urls);
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- API: `/api/xiaohongshu/download`
|
|
40
|
+
- field-feishu: `xiaohongshu/download`
|
|
41
|
+
|
|
42
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
43
|
+
## SDK Version Check Rule
|
|
44
|
+
|
|
45
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
46
|
+
- Required minimum SDK version: `1.0.9`
|
|
47
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
48
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
49
|
+
<!-- SDK_VERSION_RULE_END -->
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unityclaw-media-stats
|
|
3
|
+
description: Extract social media post metrics (play, like, comment, share, etc.) from links
|
|
4
|
+
version: 1.0.9
|
|
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 Media Stats
|
|
23
|
+
|
|
24
|
+
Get media metrics from social video links.
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { UnityClawClient } from '@unityclaw/sdk';
|
|
28
|
+
|
|
29
|
+
const client = new UnityClawClient();
|
|
30
|
+
const result = await client.media.stats({
|
|
31
|
+
link: [{ link: 'https://www.xiaohongshu.com/explore/xxxx' }],
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
if (result.success && result.response?.data) {
|
|
35
|
+
console.log(result.response.data.play_count, result.response.data.like_count);
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- API: `/api/media_stats`
|
|
40
|
+
- field-feishu: `media_stats`
|
|
41
|
+
|
|
42
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
43
|
+
## SDK Version Check Rule
|
|
44
|
+
|
|
45
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
46
|
+
- Required minimum SDK version: `1.0.9`
|
|
47
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
48
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
49
|
+
<!-- SDK_VERSION_RULE_END -->
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unityclaw-media-user-info
|
|
3
|
+
description: Extract social media user profile metrics from homepage links
|
|
4
|
+
version: 1.0.9
|
|
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 Media User Info
|
|
23
|
+
|
|
24
|
+
Get user profile information from social media homepage links.
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { UnityClawClient } from '@unityclaw/sdk';
|
|
28
|
+
|
|
29
|
+
const client = new UnityClawClient();
|
|
30
|
+
const result = await client.media.userInfo({
|
|
31
|
+
link: [{ link: 'https://www.xiaohongshu.com/user/profile/xxxx' }],
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
if (result.success && result.response?.data) {
|
|
35
|
+
console.log(result.response.data.user_id, result.response.data.follower_count);
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- API: `/api/media_user_info`
|
|
40
|
+
- field-feishu: `media_user_info`
|
|
41
|
+
|
|
42
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
43
|
+
## SDK Version Check Rule
|
|
44
|
+
|
|
45
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
46
|
+
- Required minimum SDK version: `1.0.9`
|
|
47
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
48
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
49
|
+
<!-- SDK_VERSION_RULE_END -->
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unityclaw-video-frame-extract
|
|
3
|
+
description: Extract first/last/specified-time frame from video attachments
|
|
4
|
+
version: 1.0.9
|
|
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 Frame Extract
|
|
23
|
+
|
|
24
|
+
Extract one frame from video at first frame, last frame, or specific `mm:ss`.
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { UnityClawClient } from '@unityclaw/sdk';
|
|
28
|
+
|
|
29
|
+
const client = new UnityClawClient();
|
|
30
|
+
const result = await client.media.extractFrame({
|
|
31
|
+
attachment: [{ path: './files/demo.mp4' }],
|
|
32
|
+
frame_option: 'first',
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
if (result.success && result.response?.data?.[0]) {
|
|
36
|
+
console.log(result.response.data[0].content);
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
- API: `/api/video/frame`
|
|
41
|
+
- field-feishu: `video/frame`
|
|
42
|
+
|
|
43
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
44
|
+
## SDK Version Check Rule
|
|
45
|
+
|
|
46
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
47
|
+
- Required minimum SDK version: `1.0.9`
|
|
48
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
49
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
50
|
+
<!-- SDK_VERSION_RULE_END -->
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unityclaw-video-generation-jimeng-doubao
|
|
3
|
+
description: Generate videos with JiMeng or Doubao models (text-to-video and image-to-video)
|
|
4
|
+
version: 1.0.9
|
|
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 - JiMeng & Doubao
|
|
23
|
+
|
|
24
|
+
Use this skill when the task matches `client.video.jimeng(...)` or `client.video.doubao(...)`.
|
|
25
|
+
|
|
26
|
+
## When To Use
|
|
27
|
+
|
|
28
|
+
- JiMeng: explicit `action` + `aspect_ratio` flow
|
|
29
|
+
- Doubao: `resolution` + `ratio` flow, optional image input
|
|
30
|
+
|
|
31
|
+
## Quick Start
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { UnityClawClient } from '@unityclaw/sdk';
|
|
35
|
+
|
|
36
|
+
const client = new UnityClawClient();
|
|
37
|
+
|
|
38
|
+
const result = await client.video.doubao({
|
|
39
|
+
prompt: 'A cinematic drone shot of mountains at sunrise',
|
|
40
|
+
resolution: '1080p',
|
|
41
|
+
ratio: '16:9',
|
|
42
|
+
duration: 5,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
if (result.success && result.response?.data) {
|
|
46
|
+
console.log(result.response.data[0].content);
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## API Map
|
|
51
|
+
|
|
52
|
+
- `client.video.jimeng(...)`
|
|
53
|
+
: fields: `action`, `prompt`, `attachment`, `aspect_ratio`
|
|
54
|
+
- `client.video.doubao(...)`
|
|
55
|
+
: fields: `prompt`, `attachment`, `resolution`, `ratio`, `duration`
|
|
56
|
+
|
|
57
|
+
## Local File Input
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
attachment: [{ path: './files/first-frame.jpg' }]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
SDK will auto-upload local files and fill `tmp_url`.
|
|
64
|
+
|
|
65
|
+
## Notes For Agent
|
|
66
|
+
|
|
67
|
+
- Prefer `doubao` for generic prompts if user did not specify model family.
|
|
68
|
+
- For JiMeng, ensure `action` and `aspect_ratio` are provided.
|
|
69
|
+
- For Doubao, prefer numeric duration values (`5`, `10`) instead of string duration.
|
|
70
|
+
- Always check `result.success` first, then read `result.response.data`.
|
|
71
|
+
|
|
72
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
73
|
+
## SDK Version Check Rule
|
|
74
|
+
|
|
75
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
76
|
+
- Required minimum SDK version: `1.0.9`
|
|
77
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
78
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
79
|
+
<!-- SDK_VERSION_RULE_END -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: unityclaw-video-generation-kling
|
|
3
3
|
description: Generate AI videos using Kling model with multi-version support
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.9
|
|
5
5
|
metadata:
|
|
6
6
|
openclaw:
|
|
7
7
|
requires:
|
|
@@ -264,6 +264,14 @@ console.log('Downloaded Videos:', result.attachments);
|
|
|
264
264
|
|
|
265
265
|
## Related Skills
|
|
266
266
|
|
|
267
|
-
- [unityclaw-video-generation-
|
|
268
|
-
- [unityclaw-video-generation-
|
|
269
|
-
|
|
267
|
+
- [unityclaw-video-generation-jimeng-doubao](../unityclaw-video-generation-jimeng-doubao/SKILL.md) - JiMeng and Doubao video models
|
|
268
|
+
- [unityclaw-video-generation-wan-minimax](../unityclaw-video-generation-wan-minimax/SKILL.md) - Wan and MiniMax video models
|
|
269
|
+
|
|
270
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
271
|
+
## SDK Version Check Rule
|
|
272
|
+
|
|
273
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
274
|
+
- Required minimum SDK version: `1.0.9`
|
|
275
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
276
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
277
|
+
<!-- SDK_VERSION_RULE_END -->
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unityclaw-video-generation-wan-minimax
|
|
3
|
+
description: Generate videos with Wan and MiniMax models for cinematic or controllable workflows
|
|
4
|
+
version: 1.0.9
|
|
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 - Wan & MiniMax
|
|
23
|
+
|
|
24
|
+
Use this skill when the task matches `client.video.wan(...)` or `client.video.minimax(...)`.
|
|
25
|
+
|
|
26
|
+
## When To Use
|
|
27
|
+
|
|
28
|
+
- Wan: stronger control on model/shot style (`model`, `shot_type`, `size`, `duration`)
|
|
29
|
+
- MiniMax: Hailuo model family workflows (`model`, `size`, `duration`)
|
|
30
|
+
|
|
31
|
+
## Quick Start
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { UnityClawClient } from '@unityclaw/sdk';
|
|
35
|
+
|
|
36
|
+
const client = new UnityClawClient();
|
|
37
|
+
|
|
38
|
+
const result = await client.video.wan({
|
|
39
|
+
prompt: 'A samurai crossing a snowy bridge in cinematic style',
|
|
40
|
+
model: 'wan2.6-t2v',
|
|
41
|
+
size: '1280*720',
|
|
42
|
+
duration: '5',
|
|
43
|
+
shot_type: 'single',
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
if (result.success && result.response?.data) {
|
|
47
|
+
console.log(result.response.data[0].content);
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## API Map
|
|
52
|
+
|
|
53
|
+
- `client.video.wan(...)`
|
|
54
|
+
: fields: `prompt`, `attachment`, `model`, `size`, `duration`, `shot_type`
|
|
55
|
+
- `client.video.minimax(...)`
|
|
56
|
+
: fields: `prompt`, `attachment`, `model`, `size`, `duration`
|
|
57
|
+
|
|
58
|
+
## Local File Input
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
attachment: [{ path: './files/reference.jpg' }]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
SDK will auto-upload local files and fill `tmp_url`.
|
|
65
|
+
|
|
66
|
+
## Notes For Agent
|
|
67
|
+
|
|
68
|
+
- If model family is not specified, default to Wan for cinematic control.
|
|
69
|
+
- Keep prompt concise and explicit; avoid overlong instructions.
|
|
70
|
+
- Always check `result.success` first, then read `result.response.data`.
|
|
71
|
+
|
|
72
|
+
<!-- SDK_VERSION_RULE_START -->
|
|
73
|
+
## SDK Version Check Rule
|
|
74
|
+
|
|
75
|
+
- Before invoking this skill, check local `@unityclaw/sdk` version.
|
|
76
|
+
- Required minimum SDK version: `1.0.9`
|
|
77
|
+
- If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
|
|
78
|
+
- Suggested command: `npm i @unityclaw/sdk@latest`
|
|
79
|
+
<!-- SDK_VERSION_RULE_END -->
|