@unityclaw/skills 1.0.5 → 1.0.8

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.
@@ -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 (TikTok, YouTube, etc.).
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.code === 0 && result.data) {
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.code === 0 && result.data) {
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.code === 0 && result.data) {
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.code === 0 && result.data) {
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.code === 0 && result.data) {
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.code === 0 && result.data) {
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,4 @@ 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-sora](../unityclaw-video-generation-sora/SKILL.md) - Generate videos
349
+ - [unityclaw-video-generation-kling](../unityclaw-video-generation-kling/SKILL.md) - Generate videos
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: unityclaw-media-download-xhs
3
+ description: Download Xiaohongshu media and return cover/video URLs
4
+ version: 1.0.1
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`
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: unityclaw-media-stats
3
+ description: Extract social media post metrics (play, like, comment, share, etc.) from links
4
+ version: 1.0.1
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`
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: unityclaw-media-user-info
3
+ description: Extract social media user profile metrics from homepage links
4
+ version: 1.0.1
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`
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: unityclaw-video-frame-extract
3
+ description: Extract first/last/specified-time frame from video attachments
4
+ version: 1.0.1
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`
@@ -0,0 +1,70 @@
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.1
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`.
@@ -264,6 +264,5 @@ console.log('Downloaded Videos:', result.attachments);
264
264
 
265
265
  ## Related Skills
266
266
 
267
- - [unityclaw-video-generation-sora](../unityclaw-video-generation-sora/SKILL.md) - OpenAI Sora
268
- - [unityclaw-video-generation-veo](../unityclaw-video-generation-veo/SKILL.md) - Google Veo
269
- - [unityclaw-video-generation-other](../unityclaw-video-generation-other/SKILL.md) - Other video models
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
@@ -0,0 +1,70 @@
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.1
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`.