算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
maestro-video【设计与创意】Produce complete AI videos with Maestro via AceDataCloud API. Use when: Maestro, article-to-video, prompt-to-video, turn a brief or reference media into a finished captioned video, generate scripts/visuals/voiceover/music/editing in one workflow, create a video in a selected language, or remix/edit/extend a previous Maestro video. Covers task creatio…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use Maestro when the user wants a finished video, not only a generated clip. A headless AI director turns one natural-language brief into a script, visual assets, voiceover, music, edit, captions, quality checks, and one rendered video in one language.
Setup: See authentication for token setup.
Use a model-specific video API such as Seedance, Kling, or Veo when the user only needs a short generated shot and wants direct model controls. Maestro may use multiple media services internally and is optimized for the finished production.
curl -X POST https://api.acedata.cloud/maestro/videos \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Create a 30-second beginner-friendly video explaining vector databases. End with one memorable takeaway.",
"aspect": "16:9",
"duration": 30,
"scenario": "narrated",
"langs": ["en"]
}'
The successful creation response is HTTP 201 and contains a task_id. Maestro is asynchronous, so query the task until it reaches succeeded or failed:
curl -X POST https://api.acedata.cloud/maestro/tasks \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"id": "<task_id>", "action": "retrieve"}'
Do not invent output URLs or report completion while the task is still running.
POST /maestro/videos and preserve the returned task_id and trace_id.POST /maestro/tasks at a reasonable interval.succeeded or failed.response.data.variants, including its language and actual output_url. Do not treat an empty result as a delivered video.action, ref_task_id, and a change-focused prompt.Polling and history queries are free; the video task is settled after production based on delivered output. Avoid submitting duplicate creation requests while an existing task is still running.
| Parameter | Type | Default | Description |
|---|---|---|---|
prompt | string | required | Natural-language production brief: topic, audience, content, tone, and desired result |
action | string | generate | generate, remix, edit, or extend |
ref_task_id | string | - | Required for remix, edit, and extend |
file_urls | string[] | - | Public image, video, or audio references, up to the limits enforced by the API |
langs | string[] | ["zh-cn"] | Exactly one output language code, e.g. ["en"]; empty or multi-language arrays are invalid |
aspect | string | 9:16 | 9:16, 16:9, or 1:1 |
duration | integer | 30 | Target duration from 5 to 300 seconds |
scenario | string | auto | auto, narrated, captions, avatar, or drama |
style | string | auto | Preset or freeform visual direction |
voice | string | auto | Cross-lingual voice preset or a 32-hex-character Fish reference ID |
callback_url | string | - | Optional webhook called on success or failure |
Every request uses the complete production capability: all actions and scenarios, 5–300 seconds, exactly one language, and 1080p/30fps output. There are no quality tiers. Successful tasks cost 0.7 Credits per actual billed second, with no scenario multiplier or language surcharge. Billing counts integer seconds, never exceeds the requested duration, and falls back to the requested duration if delivered duration cannot be read. A 30-second billed video costs 21 Credits. Failed tasks and polling are free; submission has no separate fee. Check current service pricing before creating a task.
auto: let the director choose from the brief.narrated: multi-scene explainer, documentary, brand, history, or product video with voiceover.captions: add kinetic captions to a source video supplied in file_urls.avatar: talking-head or digital-human video; provide a portrait in file_urls.drama: acted short drama with characters and dialogue.Named presets include cinematic, glass, luxury, swiss, modern, editorial, warm, vibrant, neon, mono, pastel, bold, industrial, futuristic, and retro. The API also accepts a freeform style hint.
Available presets include:
warm-female, bright-female, anchor-female, clean-femalecalm-male, deep-male, documentary-male, energetic-male, storyteller-maleautoVoice controls timbre rather than language. The same preset speaks the language selected in langs.
Pass public URLs in file_urls:
{
"prompt": "Create a product launch video that clearly shows the camera body and logo. Use the supplied audio as the tone reference.",
"file_urls": [
"https://example.com/product.jpg",
"https://example.com/logo.png",
"https://example.com/reference.mp3"
],
"scenario": "narrated",
"style": "editorial",
"aspect": "16:9"
}
Reference URLs must be reachable by the service. Do not pass local file paths. Upload local assets first, then use their public URLs.
Keep langs as an array containing exactly one language code:
{
"prompt": "A concise English product walkthrough for first-time customers",
"langs": ["en"],
"voice": "warm-female",
"duration": 45
}
Omitting langs defaults to ["zh-cn"]. Multiple languages return HTTP 400. For German or Japanese versions, confirm the additional tasks with the user, then submit separate requests with ["de"] or ["ja"] and a language-specific brief. Track each task ID independently; do not promise shared visuals across tasks. Each successful task delivers one video in response.data.variants at the same per-second rate.
All iteration actions require ref_task_id.
Use remix for a new creative interpretation that keeps the previous task as context:
{
"action": "remix",
"ref_task_id": "previous-task-id",
"prompt": "Rework this as a faster social cut with a stronger opening hook and neon styling.",
"aspect": "9:16"
}
Use edit for targeted revisions:
{
"action": "edit",
"ref_task_id": "previous-task-id",
"prompt": "Keep the structure and visuals. Replace the final call to action and use a calmer narrator."
}
Use extend to continue or lengthen the production:
{
"action": "extend",
"ref_task_id": "previous-task-id",
"prompt": "Add a 15-second customer example before the conclusion.",
"duration": 60
}
Iteration creates a new task. Continue polling the new task_id; do not overwrite or confuse it with the source task.
Use top-level status to determine completion, not progress.stage or a progress percentage. Display progress.percent, progress.stage, and progress.message when present; a successful task can still show its last production stage.
On succeeded, inspect response.success and response.data.variants. The array contains one video in the selected language, with fields such as lang, aspect, title, and output_url. Return the real delivered URL. response.data.project may include tarball_url and outputs; return a project download only when its URL is present. On failed, report the actual error rather than a fabricated video.
Return only fields actually present; never fabricate missing captions, covers, durations, or QC scores.
Retrieve a task by its required id; the only documented action is retrieve:
curl -X POST https://api.acedata.cloud/maestro/tasks \
-H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"id": "TASK_ID", "action": "retrieve"}'
A useful brief answers:
Prefer a concrete production brief over a list of low-level model instructions. Maestro is responsible for choosing and orchestrating media tools.
task_id.succeeded and failed; other status names may evolve as the production pipeline changes.remix, edit, and extend fail without ref_task_id.file_urls must be public URLs, not local paths.avatar usually needs a usable portrait reference.langs must contain exactly one language; empty or multi-language arrays are invalid. Different languages require separately confirmed tasks.MCP:
pip install mcp-maestro| Hosted:https://maestro.mcp.acedata.cloud/mcp| See all MCP servers