@acedatacloud/skills 2026.614.1 → 2026.615.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/AGENTS.md +0 -3
- package/README.md +0 -6
- package/package.json +1 -1
- package/skills/kling-video/SKILL.md +25 -1
- package/skills/marketing-video-factory/SKILL.md +0 -186
package/AGENTS.md
CHANGED
|
@@ -26,9 +26,6 @@ Skills are located in the `skills/` directory (also mirrored to `.agents/skills/
|
|
|
26
26
|
- **seedance-video** — Generate dance/motion videos with ByteDance Seedance
|
|
27
27
|
- **wan-video** — Generate videos with Alibaba Wan
|
|
28
28
|
|
|
29
|
-
### Video Production (workflow)
|
|
30
|
-
- **marketing-video-factory** — Produce a short-form marketing/feature video end-to-end (orchestrates the media skills: generate assets → capture UI → assemble with FFmpeg → distribute)
|
|
31
|
-
|
|
32
29
|
### AI Chat & Tools
|
|
33
30
|
- **ai-chat** — Unified LLM gateway — GPT, Claude, Gemini, Kimi, Grok (50+ models)
|
|
34
31
|
- **google-search** — Search the web, images, news, maps, places, and videos via Google
|
package/README.md
CHANGED
|
@@ -42,12 +42,6 @@ Compatible with **30+ AI coding agents** via the [agentskills.io](https://agents
|
|
|
42
42
|
| [hailuo-video](skills/hailuo-video/) | Generate videos with Hailuo / MiniMax |
|
|
43
43
|
| [seedance-video](skills/seedance-video/) | Generate dance/motion videos with ByteDance Seedance |
|
|
44
44
|
|
|
45
|
-
### Video Production (workflow)
|
|
46
|
-
|
|
47
|
-
| Skill | Description |
|
|
48
|
-
|-------|-------------|
|
|
49
|
-
| [marketing-video-factory](skills/marketing-video-factory/) | Produce a short-form marketing/feature video end-to-end — generate assets + capture UI + assemble (FFmpeg) + distribute |
|
|
50
|
-
|
|
51
45
|
### AI Chat & Tools
|
|
52
46
|
|
|
53
47
|
| Skill | Description |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acedatacloud/skills",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.615.0",
|
|
4
4
|
"description": "Agent Skills for AceDataCloud AI services — music, image, video generation, LLM chat, web search. Compatible with Claude Code, GitHub Copilot, Gemini CLI, OpenAI Codex, and 30+ AI coding agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-skills",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: kling-video
|
|
3
|
-
description: Generate AI videos with Kuaishou Kling via AceDataCloud API. Use when creating videos from text or images, extending existing videos,
|
|
3
|
+
description: Generate AI videos with Kuaishou Kling via AceDataCloud API. Use when creating videos from text or images, extending existing videos, applying motion control, or lip-syncing audio/text to video. Supports text-to-video, image-to-video, extend, motion generation, and lip-sync with multiple models and quality modes.
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
metadata:
|
|
6
6
|
author: acedatacloud
|
|
@@ -104,6 +104,19 @@ POST /kling/motion
|
|
|
104
104
|
}
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
+
### 5. Lip Sync
|
|
108
|
+
|
|
109
|
+
Create a lip-synced video from a source video plus either an audio track or input text.
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
POST /kling/lip-sync
|
|
113
|
+
{
|
|
114
|
+
"video_url": "https://example.com/source.mp4",
|
|
115
|
+
"mode": "audio2video",
|
|
116
|
+
"audio_url": "https://example.com/voiceover.mp3"
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
107
120
|
## Parameters
|
|
108
121
|
|
|
109
122
|
| Parameter | Values | Description |
|
|
@@ -120,6 +133,16 @@ POST /kling/motion
|
|
|
120
133
|
| `element_list` | array | Reference subjects from the element library (each item has `element_id`). Combined with `video_list`, total reference images + subjects ≤ 7 (or ≤ 4 if a reference video is included) |
|
|
121
134
|
| `video_list` | array | Reference video(s) via `video_url` (MP4/MOV, 3–10s, ≤200MB, max 1 video). Each item has `video_url`, `refer_type` (`"feature"` or `"base"`), and optional `keep_original_sound` |
|
|
122
135
|
| `callback_url` | string | Async callback URL |
|
|
136
|
+
| `mode` (`/kling/lip-sync`) | `"audio2video"`, `"text2video"` | Lip-sync mode |
|
|
137
|
+
| `video_url` (`/kling/lip-sync`) | URL | Source video URL for lip-sync |
|
|
138
|
+
| `video_id` (`/kling/lip-sync`) | string | Existing Kling video ID for lip-sync |
|
|
139
|
+
| `audio_url` (`/kling/lip-sync`) | URL | Audio source URL (for `audio2video`) |
|
|
140
|
+
| `audio_type` (`/kling/lip-sync`) | `"url"`, `"file"` | Audio input type (default `url`) |
|
|
141
|
+
| `audio_file` (`/kling/lip-sync`) | string | Audio file payload when `audio_type=file` |
|
|
142
|
+
| `text` (`/kling/lip-sync`) | string | Input text to synthesize speech (for `text2video`) |
|
|
143
|
+
| `voice_id` (`/kling/lip-sync`) | string | Voice preset ID used in `text2video` |
|
|
144
|
+
| `voice_language` (`/kling/lip-sync`) | `"zh"`, `"en"` | TTS language for `text2video` (default `zh`) |
|
|
145
|
+
| `voice_speed` (`/kling/lip-sync`) | number | TTS speaking speed (default `1.0`) |
|
|
123
146
|
|
|
124
147
|
## Gotchas
|
|
125
148
|
|
|
@@ -128,6 +151,7 @@ POST /kling/motion
|
|
|
128
151
|
- `generate_audio` enables synchronized audio generation (supported by `kling-v3`, `kling-v3-omni`, and `kling-v2-6` in pro mode)
|
|
129
152
|
- `end_image_url` is only for `image2video` action — it defines the last frame
|
|
130
153
|
- Motion control (`/kling/motion`) is a separate endpoint from video generation
|
|
154
|
+
- Lip-sync is a separate endpoint (`/kling/lip-sync`) and requires `mode`; use `audio_url` for `audio2video` or `text` + voice fields for `text2video`
|
|
131
155
|
- `pro` mode costs roughly 2x `std` mode but generates faster with better quality
|
|
132
156
|
- Task states use `"succeed"` (not "succeeded") — check for this value when polling
|
|
133
157
|
- `negative_prompt` helps avoid unwanted elements (e.g., "blurry, low quality, text")
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: marketing-video-factory
|
|
3
|
-
description: Produce a short-form (9:16, ~30-60s) marketing / feature-explainer video end-to-end using AceDataCloud's own AI APIs — generate B-roll + hero images (Flux/Seedream/NanoBanana/Seedance), a music bed (Suno) and voiceover (TTS), capture real product UI with Playwright, assemble with FFmpeg (burned-in captions), upload to CDN, then distribute. Use when the user wants to make a promo/feature/explainer video, a TikTok/Reels/Shorts/Bilibili/Douyin short, "automated video marketing", or to turn a product feature into a vertical video.
|
|
4
|
-
when_to_use: |
|
|
5
|
-
Trigger when the user wants to PRODUCE a finished short-form video
|
|
6
|
-
(not just call one model): a marketing/feature/promo/explainer short,
|
|
7
|
-
a vertical video for TikTok / YouTube Shorts / Reels / Bilibili /
|
|
8
|
-
Douyin / X / LinkedIn, or an "automated video factory". This skill is
|
|
9
|
-
the playbook that orchestrates the single-service skills
|
|
10
|
-
(flux-image, seedream-image, nano-banana-image, seedance-video,
|
|
11
|
-
veo-video, suno-music, fish-audio, short-url) into one pipeline.
|
|
12
|
-
allowed_tools: [Bash]
|
|
13
|
-
license: Apache-2.0
|
|
14
|
-
metadata:
|
|
15
|
-
author: acedatacloud
|
|
16
|
-
version: "1.0"
|
|
17
|
-
compatibility: Requires ACEDATACLOUD_API_TOKEN (model calls) and ACEDATACLOUD_PLATFORM_TOKEN (CDN upload) in .env (see _shared/authentication.md). Needs ffmpeg, python3 + pillow, and (for screenshots) playwright. Optionally pair with the per-service MCP servers (_shared/mcp-servers.md).
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
# Marketing Video Factory
|
|
21
|
-
|
|
22
|
-
Turn a product feature into a platform-ready vertical short, made **with the same
|
|
23
|
-
AI APIs you're advertising** (so the video is also a live demo of itself).
|
|
24
|
-
|
|
25
|
-
> **Setup:** [authentication](../_shared/authentication.md) · async behavior:
|
|
26
|
-
> [async task polling](../_shared/async-tasks.md) · tool-use: [MCP servers](../_shared/mcp-servers.md).
|
|
27
|
-
|
|
28
|
-
## Strategy (read first)
|
|
29
|
-
|
|
30
|
-
1. **Dogfood.** Generate every asset through `api.acedata.cloud` (Flux, Seedream,
|
|
31
|
-
NanoBanana, Seedance/Veo, Suno, TTS). The output *is* the proof.
|
|
32
|
-
2. **Real UI is the spine; AI footage is the spice.** For a software/dev product,
|
|
33
|
-
show real screen-captures/screenshots of the product for the demo beats;
|
|
34
|
-
reserve AI-generated clips for intro / atmosphere / transitions. AI models
|
|
35
|
-
hallucinate fake buttons/code → never use them to depict the actual product.
|
|
36
|
-
3. **Structure every video:** `Hook (0-3s) → Value (4-15s) → Demo (16-50s) →
|
|
37
|
-
CTA (last ~5s)`. One cut every 2-4s. Captions always on (≈85% watch muted).
|
|
38
|
-
|
|
39
|
-
## Workflow
|
|
40
|
-
|
|
41
|
-
1. **Brief** the feature: pull real value-prop copy from your docs (verbatim
|
|
42
|
-
on-screen text beats invented copy).
|
|
43
|
-
2. **Script** a Scene-JSON: per scene = `{visual, duration, caption}`, following
|
|
44
|
-
the hook→value→demo→CTA skeleton.
|
|
45
|
-
3. **Generate assets** (async — submit then poll): hero/B-roll images, B-roll
|
|
46
|
-
clips, a music bed, voiceover. Use `watermark=false`. Pin aspect to 9:16.
|
|
47
|
-
4. **Capture UI** screenshots with Playwright (mobile 9:16 viewport).
|
|
48
|
-
5. **Assemble** with FFmpeg: per-scene render → concat → mix music. Burn captions.
|
|
49
|
-
6. **Upload** the final MP4 to the CDN; **distribute** per platform.
|
|
50
|
-
|
|
51
|
-
## Recipe — generate an asset (submit + poll)
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
# Hero / B-roll image. Flux & NanoBanana honor true 9:16; Seedream size is an
|
|
55
|
-
# ENUM (1K/2K/...) and tends to return 16:9 — use Flux for vertical heroes.
|
|
56
|
-
curl -sS -X POST https://api.acedata.cloud/flux/images \
|
|
57
|
-
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" -H "Content-Type: application/json" \
|
|
58
|
-
-d '{"model":"flux-2-pro","prompt":"<scene visual>, deep violet/indigo, cinematic, no text","size":"9:16"}'
|
|
59
|
-
|
|
60
|
-
# B-roll clip (Seedance is fast/cheap; Veo for hero quality). watermark off.
|
|
61
|
-
curl -sS -X POST https://api.acedata.cloud/seedance/videos \
|
|
62
|
-
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" -H "Content-Type: application/json" \
|
|
63
|
-
-d '{"model":"doubao-seedance-2-0-fast-260128","content":[{"type":"text","text":"<motion>, 9:16, no text"}],"resolution":"720p","ratio":"9:16","duration":5,"watermark":false}'
|
|
64
|
-
|
|
65
|
-
# Music bed — instrumental (see suno-music). Then poll /suno/tasks.
|
|
66
|
-
curl -sS -X POST https://api.acedata.cloud/suno/audios \
|
|
67
|
-
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" -H "Content-Type: application/json" \
|
|
68
|
-
-d '{"action":"generate","prompt":"uplifting minimal electronic, premium tech","instrumental":true,"model":"chirp-v5-5"}'
|
|
69
|
-
|
|
70
|
-
# Voiceover — OpenAI-compatible TTS, SYNCHRONOUS (returns audio bytes, no polling).
|
|
71
|
-
# Generate ONE file per scene so the audio aligns to scene boundaries.
|
|
72
|
-
curl -sS -X POST https://api.acedata.cloud/v1/audio/speech \
|
|
73
|
-
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" -H "Content-Type: application/json" \
|
|
74
|
-
-o scene1.mp3 \
|
|
75
|
-
-d '{"model":"tts-1-hd","input":"<scene narration>","voice":"nova"}'
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
All of the above return a `task_id` — **poll the matching `/<service>/tasks`** until
|
|
79
|
-
`state`/`status` is terminal, then read the media URL (see _shared/async-tasks.md).
|
|
80
|
-
The media is served from `*.cdn.acedata.cloud`. Per-model details: `flux-image`,
|
|
81
|
-
`seedream-image`, `nano-banana-image`, `seedance-video`, `veo-video`, `suno-music`,
|
|
82
|
-
`fish-audio` skills.
|
|
83
|
-
|
|
84
|
-
**Voiceover (TTS):** `POST /v1/audio/speech` is the OpenAI-compatible route — it is
|
|
85
|
-
**synchronous** (returns the audio bytes directly, no `task_id`/polling), models
|
|
86
|
-
`tts-1-hd` (default) / `tts-1`, voices `alloy|echo|fable|onyx|nova|shimmer`, and it
|
|
87
|
-
speaks both English and Chinese. (`/fish/tts` is an alternate voice-cloning route.)
|
|
88
|
-
The endpoint does **not** return word timings — run WhisperX on the returned audio
|
|
89
|
-
for karaoke, or distribute words across the scene duration proportionally.
|
|
90
|
-
|
|
91
|
-
## Recipe — capture product UI (Playwright)
|
|
92
|
-
|
|
93
|
-
```python
|
|
94
|
-
# pip install playwright && python -m playwright install chromium
|
|
95
|
-
from playwright.sync_api import sync_playwright
|
|
96
|
-
with sync_playwright() as p:
|
|
97
|
-
b = p.chromium.launch(headless=True)
|
|
98
|
-
# 9:16 viewport so a vertical video doesn't center-crop a desktop layout.
|
|
99
|
-
ctx = b.new_context(viewport={"width":1080,"height":1920}, device_scale_factor=2,
|
|
100
|
-
storage_state="auth.json") # omit for public pages
|
|
101
|
-
pg = ctx.new_page(); pg.goto(URL, wait_until="networkidle"); pg.wait_for_timeout(3500)
|
|
102
|
-
pg.screenshot(path="shot.png")
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Public marketing pages capture anonymously; logged-in console/app pages need a
|
|
106
|
-
saved `storage_state`** (a throwaway demo account) — without it they redirect to
|
|
107
|
-
the login wall.
|
|
108
|
-
|
|
109
|
-
## Recipe — assemble (per-scene render → concat → music)
|
|
110
|
-
|
|
111
|
-
Do **NOT** build one giant filtergraph with all inputs — with several hi-res
|
|
112
|
-
images + caption PNGs it OOMs ("Cannot allocate memory"). Render each scene
|
|
113
|
-
to an intermediate, then concat (stream-copy), then mux music:
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
W=1080; H=1920; FPS=30
|
|
117
|
-
SCALE="scale=$W:$H:force_original_aspect_ratio=increase,crop=$W:$H,setsar=1,fps=$FPS"
|
|
118
|
-
|
|
119
|
-
# Per scene: a still (loop to DUR) or a clip (trim to DUR) + a transparent
|
|
120
|
-
# caption PNG overlaid. Produce identical-codec segNN.mp4 (no audio).
|
|
121
|
-
ffmpeg -y -loop 1 -t $DUR -i still.png -loop 1 -i capNN.png \
|
|
122
|
-
-filter_complex "[0:v]$SCALE[bg];[bg][1:v]overlay=0:0:shortest=1[v]" \
|
|
123
|
-
-map "[v]" -an -t $DUR -c:v libx264 -pix_fmt yuv420p -r $FPS \
|
|
124
|
-
-video_track_timescale 15360 segNN.mp4
|
|
125
|
-
# (for a clip scene: replace "-loop 1 -t $DUR -i still.png" with "-i clip.mp4")
|
|
126
|
-
|
|
127
|
-
# Concat (all segments share codec/params) + mix music under, with a fade-out.
|
|
128
|
-
printf "file 'seg00.mp4'\nfile 'seg01.mp4'\n..." > segs.txt
|
|
129
|
-
ffmpeg -y -f concat -safe 0 -i segs.txt -c copy video_silent.mp4
|
|
130
|
-
ffmpeg -y -i video_silent.mp4 -i music.mp3 \
|
|
131
|
-
-filter_complex "[1:a]volume=-3dB,afade=t=out:st=$(($TOTAL-1)):d=1[a]" \
|
|
132
|
-
-map 0:v -map "[a]" -c:v copy -c:a aac -shortest one-api-key.mp4
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
Captions: render each as a **transparent PNG** (Pillow) and overlay — portable
|
|
136
|
-
across all ffmpeg builds (avoids the libfreetype `drawtext` dependency). Use a
|
|
137
|
-
real bold sans (`C:/Windows/Fonts/arialbd.ttf`, `DejaVuSans-Bold.ttf`, etc.),
|
|
138
|
-
3-7 words/line, white + black stroke; push to the **upper third during UI demos**
|
|
139
|
-
so the product stays visible.
|
|
140
|
-
|
|
141
|
-
> Reference implementation (Scene-JSON contract, caption-burn, render driver,
|
|
142
|
-
> material-library convention): **AceDataCloud/PlatformStudio** — `app/contract.py`,
|
|
143
|
-
> `app/pipeline/`, `scripts/render_veo_rough_cut.py`, `scripts/build_material_catalog.py`,
|
|
144
|
-
> and the curated material index `materials/catalog.json` + `materials/curated.json`.
|
|
145
|
-
|
|
146
|
-
## Recipe — upload to CDN + distribute
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
curl -sS -X POST https://platform.acedata.cloud/api/v1/files/ \
|
|
150
|
-
-H "Authorization: Bearer $ACEDATACLOUD_PLATFORM_TOKEN" \
|
|
151
|
-
-F "file=@one-api-key.mp4" # -> {"file_url":"https://cdn.acedata.cloud/....mp4"}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
Distribute with a short link (`short-url` skill) + per-platform metadata. Author
|
|
155
|
-
once at 1080×1920 inside a centered 900×1400 safe box, then atomize to 16:9 / 1:1.
|
|
156
|
-
|
|
157
|
-
## Creative cheat-sheet
|
|
158
|
-
|
|
159
|
-
- **Length:** TikTok 15-34s · Shorts/Reels 30-60s · X <60s · LinkedIn 30-90s.
|
|
160
|
-
- **Captions:** always on, karaoke word-highlight, avoid bottom ~20-25% & right edge.
|
|
161
|
-
- **Audio:** final mix ≈ **−14 LUFS**, music **15-20 dB under** voice; sidechain-duck
|
|
162
|
-
(`sidechaincompress`) the music off the narration; `loudnorm=I=-14:TP=-1:LRA=11`.
|
|
163
|
-
- **CTA:** one clear visual CTA in the last ~5s (assume muted).
|
|
164
|
-
|
|
165
|
-
## Gotchas
|
|
166
|
-
|
|
167
|
-
- **Generation is async** — every model call returns a `task_id`; poll the
|
|
168
|
-
service's `/tasks` endpoint. Don't treat the first response as the result.
|
|
169
|
-
- **Aspect:** pin 9:16 explicitly. `seedream` `size` is an enum (1K/2K/3K/4K) and
|
|
170
|
-
skews 16:9 → use **Flux** (`size:"9:16"`) or **NanoBanana** (`aspect_ratio`) for
|
|
171
|
-
true vertical heroes.
|
|
172
|
-
- **`watermark:false`** on marketing assets (Seedance/Seedream default to true).
|
|
173
|
-
- **Single mega-filtergraph OOMs** on multi-input hi-res jobs → render per-scene
|
|
174
|
-
then `concat -c copy` (above).
|
|
175
|
-
- **Screenshots:** use a **9:16 viewport** (not a desktop one center-cropped);
|
|
176
|
-
logged-in pages need a saved Playwright `storage_state`.
|
|
177
|
-
- **CDN download SSL:** some hosts (e.g. `cdn1.suno.ai`) fail Python `urllib`
|
|
178
|
-
cert verification → fetch with `curl -L` instead.
|
|
179
|
-
- **Music licensing:** Suno free tier is **non-commercial**; paid plans give no
|
|
180
|
-
indemnification → for **paid ads** use a fully-licensed library; keep Suno for
|
|
181
|
-
organic. Master to −14 LUFS regardless.
|
|
182
|
-
- **Don't hard-couple the video model** — keep it swappable (Veo/Seedance/Luma);
|
|
183
|
-
abstract the provider so a deprecation (e.g. a Sora API sunset) is a 1-line change.
|
|
184
|
-
- **Cross-posting:** strip watermarks before re-uploading; rewrite title/hashtags
|
|
185
|
-
per platform; keep Instagram reposts <10 / 30 days; use a humane cadence (bursts
|
|
186
|
-
read as spam).
|