@acedatacloud/skills 2026.614.2 → 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/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,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).
|