Vidau Video Generator
Version: 1.0.8
When to use
- - User asks to "generate a video", "create a short video with Veo3/Sora", "generate video from this prompt/image", "make a clip from this script", etc.
- User asks "how many credits do I have", "check my Vidau balance", "query Vidau credits", etc.
- User asks to "check my video task status", "has my Vidau task finished", "query task by UUID", etc.
When NOT to use
- - User only wants to edit or process existing local video files (e.g. trim, merge, transcode) without calling any cloud API.
- User asks for a different video API (e.g. Runway, Pika) by name; use that provider’s skill if available.
- User has not mentioned Vidau/Veo/Sora/Seedance or "generate video" / "create video" and is only discussing concepts or other tools.
Reply language
When returning results (video link, credits, or error message) to the user, use the same language as the user’s question (e.g. Simplified Chinese if they asked in Chinese, English if they asked in English).
Output format (task success)
When a video task succeeds, return:
- - Video URL (verbatim, from
[VIDAU_VIDEO_URL] … [/VIDAU_VIDEO_URL]) - Thumbnail URL (verbatim, from
[VIDAU_THUMB_PATH] … [/VIDAU_THUMB_PATH])
Always present both URLs in a code block so they are preserved verbatim and less likely to be altered by downstream processing. Example:
CODEBLOCK0
Do not rewrite, truncate, or wrap the URLs in other markup; copy them exactly from the script output.
Prerequisites
Environment variable VIDAU_API_KEY must be set (injected by OpenClaw from skills.entries.vidau.apiKey or env). If the user has no API key, they must register at https://www.superaiglobal.com/ to get one. Do not trigger this skill if it is not configured.
Environment check
Before running any script, ensure Python 3 is available:
- 1. Run
python3 --version or python --version. If either succeeds, use that command when invoking the scripts below. - If both fail, try to install Python for the current platform:
-
macOS:
brew install python3 (requires Homebrew).
-
Linux (Debian/Ubuntu):
sudo apt-get update && sudo apt-get install -y python3.
-
Windows:
winget install Python.Python.3.12 if available; otherwise tell the user to download and run the installer from
python.org.
- 3. If install fails (e.g. no permission or unsupported OS), reply with a short message that Python 3 is required and link to python.org/downloads, then stop. Do not run the Vidau scripts until Python is available.
The scripts use only the standard library; no pip packages are required.
Available scripts
- -
scripts/query_credit.py — Query current available credits; no args; outputs JSON with data.availableCredit, data.userId. scripts/query_models.py — Query model list and capability config; no args (optional --no-cache to force refresh); outputs JSON with data array. Each item has model, scaleList, durationList, resolutionList, generateAudio. Cached 10 minutes (env VIDAU_MODELS_CACHE or ~/.vidau_models_cache.json). Use before createtask to validate user parameters. After new models or capability changes, use --no-cache to force refresh so the agent does not validate against a stale list.scripts/upload_asset.py — Upload a local file (image or video) to Vidau; outputs JSON with data.url and data.assetId. Use data.url as --image-url / --last-image-url / --ref-image-urls in createtask when the user only has a local file. Caches by file content hash (default ~/.vidau_asset_cache.json, override with env VIDAU_ASSET_CACHE) so the same file is not re-uploaded.scripts/create_task.py — Create video task; required --prompt, optional --model, etc.; outputs JSON with data.taskUUID.scripts/wait_task.py — Poll until task succeeds or fails (or timeout); required --task-uuid; optional --interval (default 10s), --timeout (default 600s = 10 min). On success outputs same JSON as querytask and the same [VIDAU_VIDEO_URL] / [VIDAU_THUMB_PATH] blocks. Exit code 0 = succeeded, 1 = failed, 2 = timeout. Always use waittask by default; when using waittask you do not need to handle DELETESCHEDULEDTASK.scripts/query_task.py — Query task status and result once; required --task-uuid; outputs JSON with taskStatus, and on success also prints [VIDAU_VIDEO_URL] / [/VIDAU_VIDEO_URL] and [VIDAU_THUMB_PATH] / [/VIDAU_THUMB_PATH] blocks. Use querytask only when the platform requires scheduled polling. When the task reaches succeeded or failed, the script prints [OPENCLAW] DELETE_SCHEDULED_TASK task_uuid=<uuid> to stderr so the platform can remove the scheduled polling task.
Task polling (waittask vs querytask): By default always use wait_task; use query_task only when the platform requires scheduled task polling. When using wait_task, there is no need to handle DELETE_SCHEDULED_TASK.
Workflow (generate video)
- 1. Optional: Call
scripts/query_credit.py to check availableCredit before creating a task to avoid failures due to insufficient credits. - If the user only has a local image/video (no URL yet): Call
scripts/upload_asset.py <path> to upload the file; read data.url from stdout and use it as --image-url, --last-image-url, or in --ref-image-urls when calling createtask. - Validate parameters against model capabilities: Call
scripts/query_models.py to get the model list (cached 10 min). Find the entry in data where model equals the chosen --model. Validate user inputs (resolution, ratio, duration, generateaudio) against that entry:
-
resolution: must be in the model’s
resolutionList. If not, do not create the task; tell the user the resolution is not supported and list the allowed values (e.g.
resolutionList).
-
ratio (if user specified one): must be in the model’s
scaleList. If not, do not create the task; tell the user the ratio is not supported and list the allowed values (e.g.
scaleList).
-
duration (if user specified one): for the chosen resolution, allowed durations are in
durationList[resolution] (e.g.
durationList["1080p"] =
[5, 10]). If the user’s duration is not in that list, do not create the task; tell the user the duration is not supported for this resolution and list the allowed durations (e.g. for 1080p: 5, 10 seconds).
-
generate_audio (if user requested true): the model entry’s
generateAudio must be true. If it is false, do not create the task; tell the user this model does not support audio generation.
If any check fails, reply with what does not meet requirements and the allowed values;
do not change the user’s parameters automatically and
do not call create
task. If the chosen model is not in the list, skip validation and proceed to createtask.
- 4. Call
scripts/create_task.py with --prompt (required), --resolution (required), --model (default veo@3:normal), and optional args (see parameter table below). - Read
data.taskUUID from the script’s stdout JSON. - Always use waittask by default: run
scripts/wait_task.py --task-uuid <taskUUID> to poll until done (default 10s interval, 10 min timeout). When using waittask you do not need to handle DELETESCHEDULEDTASK. Only when the platform requires scheduled polling use scripts/query_task.py --task-uuid <taskUUID> and, when the task reaches a terminal state, remove the scheduled task using the [OPENCLAW] DELETE_SCHEDULED_TASK task_uuid=<uuid> line on stderr. - Success: Return the video and thumbnail links to the user per Output format (task success) above: copy URLs verbatim from the script output blocks and present them in a code block. Failure: Explain using the API
message or error code (e.g. insufficient credits, policy violation).
Workflow (query credits)
When the user asks for balance, call scripts/query_credit.py (no args), read data.availableCredit from stdout JSON and reply; optionally include data.userId.
Parameters (create_task.py)
| Parameter | Required | Description |
|---|
| INLINECODE91 | Yes | Text description, up to 2000 characters |
| INLINECODE92 |
No | Default
veo@3:normal; see model list below |
|
--negative-prompt | No | Negative prompt, up to 2000 characters |
|
--image-url | No | First-frame image URL |
|
--last-image-url | No | Last-frame image URL |
|
--duration | No | Video duration in seconds |
|
--generate-audio | No | Whether to generate audio; true/false |
|
--seed | No | Random seed |
|
--resolution | Yes | Resolution, e.g.
720p,
1080p |
|
--ratio | No | Aspect ratio, e.g.
16:9,
9:16 |
Defaults when unspecified: 720p / 8s / 16:9 (see references/parameters.md). Note: create_task currently requires passing --resolution explicitly; the agent must always include this parameter for consistent behavior.
Valid values: resolution and ratio are constrained by the model’s capability (see workflow step 3 and references/capabilities.md). See references/parameters.md for more detail. Run python scripts/create_task.py --help for full parameters.
Model list
Common model IDs (aligned with API):
- - Veo 3: INLINECODE111
- Veo 3.1:
veo@3.1:normal, INLINECODE113 - Sora 2:
sora@2:normal, INLINECODE115 - Seedance:
seedance@1:pro, INLINECODE117 - Wan 2.5: INLINECODE118
- Vidu Q2:
vidu@q2:turbo, INLINECODE120
See references/models.md for more models and use cases.
Error handling
- - If
VIDAU_API_KEY is not set, scripts exit with an error; tell the user to register at https://www.superaiglobal.com/ to get an API key, then configure it in OpenClaw. - When API or script returns an error, relay the API
message first, then use the one-sentence user message below. Reply in the user’s language.
| Code / Case | One-sentence user message |
|---|
| INLINECODE123 | Insufficient credits; please top up in the Vidau console and try again. |
| INLINECODE124 |
The prompt may violate content policy; please revise and retry. |
|
ImageDownloadFailure | Image URL could not be downloaded; ensure the link is publicly accessible. |
|
VIDAU_API_KEY not set | Please register at superaiglobal.com to get an API Key and configure it in OpenClaw. |
| HTTP 401 | API Key is invalid or expired; please check in the Vidau console. |
| HTTP 429 | Too many requests; please try again later. |
| Other 4xx/5xx | The API returned an error; please retry later or contact support. |
See references/errors.md for details.
Example usage
- - Generate video: User says e.g. "Generate an 8s video with Veo3 from this script" or "Generate a 10s sunset beach clip with Sora2". Agent: (optional)
query_credit.py → query_models.py → validate resolution/ratio/duration/audio against model capabilities (step 3); if invalid, tell user and stop; else create_task.py --prompt "..." --resolution 720p --duration 8 --model veo@3:normal → read taskUUID → wait_task.py --task-uuid <uuid> → return video URL from output blocks or explain failure. - Local image as first frame: User has only a local image file. Agent:
upload_asset.py /path/to/image.png → read data.url from stdout → create_task.py --prompt "..." --resolution 720p --image-url "<data.url>" → then waittask as above. - Query credits: User says e.g. "How many Vidau credits do I have?" or "Check my Vidau balance". Agent:
query_credit.py → reply with data.availableCredit (and optionally data.userId). - Check task: User says e.g. "Is my video task done? UUID is xxx". Agent: use
wait_task.py --task-uuid xxx by default → return status or video link (no need to handle DELETESCHEDULEDTASK). Use query_task.py only when the platform requires scheduled polling, and remove the scheduled task on terminal state via DELETESCHEDULED_TASK on stderr.
Vidau 视频生成器
版本: 1.0.8
使用时机
- - 用户要求生成视频、使用Veo3/Sora创建短视频、根据提示词/图片生成视频、根据脚本制作片段等。
- 用户询问我还有多少积分、查询我的Vidau余额、查询Vidau积分等。
- 用户要求查看我的视频任务状态、我的Vidau任务完成了吗、通过UUID查询任务等。
不使用时机
- - 用户仅想编辑或处理现有的本地视频文件(如裁剪、合并、转码),无需调用任何云API。
- 用户明确要求使用其他视频API(如Runway、Pika);如有该提供商的技能则使用之。
- 用户未提及Vidau/Veo/Sora/Seedance或生成视频/创建视频,仅讨论概念或其他工具。
回复语言
向用户返回结果(视频链接、积分或错误信息)时,使用与用户提问相同的语言(例如,用户用中文提问则使用简体中文,用英文提问则使用英文)。
输出格式(任务成功)
当视频任务成功时,返回:
- - 视频URL(逐字复制,来自[VIDAUVIDEOURL] … [/VIDAUVIDEOURL])
- 缩略图URL(逐字复制,来自[VIDAUTHUMBPATH] … [/VIDAUTHUMBPATH])
始终将两个URL放在代码块中,以确保它们被逐字保留,减少被下游处理修改的可能性。示例:
视频URL:<粘贴脚本输出的确切URL>
缩略图URL:<粘贴脚本输出的确切URL>
不要重写、截断URL或将其包裹在其他标记中;从脚本输出中精确复制。
前置条件
必须设置环境变量VIDAUAPIKEY(由OpenClaw从skills.entries.vidau.apiKey或env注入)。如果用户没有API密钥,必须前往https://www.superaiglobal.com/注册获取。如果未配置,请勿触发此技能。
环境检查
在运行任何脚本之前,确保Python 3可用:
- 1. 运行python3 --version或python --version。如果任一成功,则在调用以下脚本时使用该命令。
- 如果两者都失败,尝试为当前平台安装Python:
-
macOS:brew install python3(需要Homebrew)。
-
Linux(Debian/Ubuntu):sudo apt-get update && sudo apt-get install -y python3。
-
Windows:如果可用,运行winget install Python.Python.3.12;否则告知用户从
python.org下载并运行安装程序。
- 3. 如果安装失败(例如无权限或操作系统不支持),回复简短消息说明需要Python 3并链接到python.org/downloads,然后停止。在Python可用之前,不要运行Vidau脚本。
脚本仅使用标准库;无需pip包。
可用脚本
- - scripts/querycredit.py — 查询当前可用积分;无参数;输出JSON,包含data.availableCredit、data.userId。
- scripts/querymodels.py — 查询模型列表和能力配置;无参数(可选--no-cache强制刷新);输出JSON,包含data数组。每个项目包含model、scaleList、durationList、resolutionList、generateAudio。缓存10分钟(环境变量VIDAUMODELSCACHE或~/.vidaumodelscache.json)。在createtask之前使用以验证用户参数。新模型或能力变更后,使用--no-cache强制刷新,以便代理不会根据过时列表进行验证。
- scripts/uploadasset.py — 将本地文件(图片或视频)上传到Vidau;输出JSON,包含data.url和data.assetId。当用户只有本地文件时,使用data.url作为createtask中的--image-url/--last-image-url/--ref-image-urls。按文件内容哈希缓存(默认~/.vidauassetcache.json,可通过环境变量VIDAUASSETCACHE覆盖),避免重复上传相同文件。
- scripts/createtask.py — 创建视频任务;必需--prompt,可选--model等;输出JSON,包含data.taskUUID。
- scripts/waittask.py — 轮询直到任务成功或失败(或超时);必需--task-uuid;可选--interval(默认10秒)、--timeout(默认600秒=10分钟)。成功时输出与querytask相同的JSON以及相同的[VIDAUVIDEOURL]/[VIDAUTHUMBPATH]块。退出码0=成功,1=失败,2=超时。默认始终使用waittask;使用waittask时无需处理DELETESCHEDULEDTASK。
- scripts/querytask.py — 一次性查询任务状态和结果;必需--task-uuid;输出JSON,包含taskStatus,成功时还会打印[VIDAUVIDEOURL]/[/VIDAUVIDEOURL]和[VIDAUTHUMBPATH]/[/VIDAUTHUMBPATH]块。仅在平台需要定时轮询时使用querytask。当任务达到succeeded或failed状态时,脚本向stderr打印[OPENCLAW] DELETESCHEDULEDTASK task_uuid=,以便平台可以移除定时轮询任务。
任务轮询(waittask vs querytask): 默认始终使用waittask;仅在平台需要定时任务轮询时使用querytask。使用waittask时,无需处理DELETESCHEDULED_TASK。
工作流程(生成视频)
- 1. 可选:在创建任务前调用scripts/querycredit.py检查availableCredit,避免因积分不足导致失败。
- 如果用户只有本地图片/视频(尚无URL):调用scripts/uploadasset.py <路径>上传文件;从stdout读取data.url,并在调用createtask时用作--image-url、--last-image-url或--ref-image-urls。
- 根据模型能力验证参数:调用scripts/querymodels.py获取模型列表(缓存10分钟)。在data中找到model等于所选--model的条目。根据该条目验证用户输入(分辨率、比例、时长、生成音频):
-
分辨率:必须在模型的resolutionList中。如果不在,不要创建任务;告知用户该分辨率不受支持,并列出允许的值(例如resolutionList)。
-
比例(如果用户指定了):必须在模型的scaleList中。如果不在,不要创建任务;告知用户该比例不受支持,并列出允许的值(例如scaleList)。
-
时长(如果用户指定了):对于所选分辨率,允许的时长在durationList[分辨率]中(例如durationList[1080p] = [5, 10])。如果用户的时长不在该列表中,不要创建任务;告知用户该分辨率不支持该时长,并列出允许的时长(例如对于1080p:5、10秒)。
-
生成音频(如果用户要求为true):模型条目的generateAudio必须为true。如果为false,不要创建任务;告知用户该模型不支持音频生成。
如果任何检查失败,回复不符合要求的内容和允许的值;
不要自动更改用户的参数,
不要调用create
task。如果所选模型不在列表中,跳过验证并继续执行createtask。
- 4. 调用scripts/createtask.py,使用--prompt(必需)、--resolution(必需)、--model(默认veo@3:normal)和可选参数(见下方参数表)。
- 从脚本的stdout JSON中读取data.taskUUID。
- 默认始终使用waittask:运行scripts/waittask.py --task-uuid 轮询直到完成(默认间隔10秒,超时10分钟)。使用waittask时无需处理DELETESCHEDULEDTASK。仅在平台需要定时轮询时使用scripts/querytask.py --task-uuid ,当任务达到终态时,使用stderr上的[OPENCLAW] DELETESCHEDULEDTASK taskuuid=行移除定时任务。
- 成功:按照上述输出格式(任务成功)向用户返回视频和缩略图链接:从脚本输出块中逐字复制URL,并在代码