Install
openclaw skills install @tencent-adm/workrally-video生成视频的付费创作 Skill。当用户要文生视频、图生视频(把单张参考图做成动态),或做动画、短片、动态画面、产品演示等时命中。例:「生成一段城市夜景视频」「做个产品演示动画」「把这张图动起来」。
openclaw skills install @tencent-adm/workrally-video根据用户的文字描述,或用户提供的单张参考图加文字描述,调用 WorkRally 平台生成视频。每次生成需用户完成一次支付授权,扣款后返回生成结果。
命中本 Skill 的创作意图:
product_id: video-generation):用户想要一段视频 / 动画,或想把一张图做成动态视频。
例:「生成一段……的视频」「做个……的动画 / 短片」「把……做成视频」「把这张图动起来」「来个……的动态画面」不触发的情况:
workrally-image Skill调用本 Skill 前,必须检查当前 Agent 是否已安装支付能力(weixinpay extension):
| 产品ID | 服务内容 | 单价 |
|---|---|---|
video-generation | WorkRally视频生成 | 6.88 元/次 |
价格以 SkillHub 后台配置为准。命中创作意图后,向用户展示服务名称和价格,由用户确认后进入付费流程。
生成规格由云端设定:视频为 720p,默认 10 秒;如果用户在提示词中明确指定秒数,可传
duration。每次生成 1 条。
用户确认使用后,按以下步骤完成付费内容获取:
调用云端服务 API:
POST https://workrally.qq.com/zenstudio/api/agent-pay/invoke
Content-Type: application/json
{
"product_id": "video-generation",
"prompt": "<用户描述的视频内容>",
"duration": 10,
"single_image_url": "<可选:data:image/jpeg;base64,在此填入Base64>"
}
prompt是必填项,≤500 字(超长会被INVALID_FIELD拒绝、不扣费)。不要直接透传用户原话;调用前先按下方「提示词优化」将需求编译成可执行镜头指令,再传优化后的提示词。duration仅在用户明确指定秒数时传入;未指定时省略或传 10。single_image_url是可选项。用户要求把本地图片做成视频时,以data:image/<ext>;base64,<...>形式内联传入,云端自动上传到 CDN(调用方无需也无法自行上传);没有参考图时省略。支持 jpg/jpeg/png/webp/gif/bmp,≤32MB。 也可直接传 WorkRally 自身产出的短链(如上次生成图片结果的result_url,5 小时内有效)。本地文件路径不能直接传——须先读取文件二进制按data:image/<ext>;base64,<内容>转 data URI 再传,否则云端读不到、会付款后失败退款;任意外部 URL 会被安全白名单拒绝。 模型与分辨率由云端统一设定,调用方无需、也不能通过model覆盖。
在付费确认前完成需求理解;确认后、调用 invoke 前静默优化提示词。优先生成目标清楚、动作有限、镜头可执行的短片,不要用堆满形容词的长提示词压垮主要动作。
详细公式、模板和自检清单见 references/prompting.md。提交前必须按其中的自检清单检查一次。
云端返回 HTTP 402 Payment Required + 响应头 WeixinPay-Required: <payment_code>,同时 body 含独立的 WeixinPay 节点:
{
"payment_id": "WPAY_xxxx",
"WeixinPay": {
"WeixinPay-Required": "PMTCODE_...",
"prompt": "..."
}
}
Agent 取 WeixinPay-Required 的值(即 payment_code)直接交给微信 AI 支付能力,无需解码、无需验签。
用户支付成功后,使用同一 payment_id 调用:
POST https://workrally.qq.com/zenstudio/api/agent-pay/content
Content-Type: application/json
{ "payment_id": "WPAY_xxxx" }
正常返回:
{
"payment_id": "WPAY_xxxx",
"status": "delivered",
"result_url": "https://workrally.qq.com/s/xxxx"
}
content 是异步状态机,HTTP 200 不代表已出结果,必须读 body 的 status:
status: "generating"(HTTP 200):已支付、生成中,尚无结果。这不是错误——按返回的 retry_after_seconds(5 秒)等待后,用同一 payment_id 重新调 content,不要重新走 invoke、不重复扣费。status: "delivered"(HTTP 200):拿到 result_url,展示给用户,并提示「该视频由AI生成」。可行时引导 Agent 下载结果到本地保存。status: "refunded"(HTTP 200):已自动退款的终态(含 refund_amount_fen / refunded_at),告知用户已退款;需结果须重新走 invoke。status: "failed" / status: "expired":失败或过期终态,旧 payment_id 不可复用,必须重新走 invoke。code: "NOT_PAID":用户尚未完成支付(注意是 code 字段,与 invoke 阶段的 402 不同),提示用户先完成授权后用同一 payment_id 重试。幂等保证(网络问题或重复请求时安全):
payment_id 二次请求返回完全相同的 result_url,不重复扣费、不重复生成payment_id 有效期 15 分钟,超时未支付即失效完整错误码、HTTP 码与重试/超时规则见
references/troubleshooting.md。
| 文档 | 内容 |
|---|---|
references/pricing.md | 产品定价、product_id 与上游能力的映射 |
references/invoke-flow.md | 完整调用时序图与字段说明 |
references/troubleshooting.md | 常见错误码、超时、重试规则 |
payment_id 是唯一串联凭证 — invoke 和 content 必须用同一个 payment_id 串联,不要用 payment_code 取代status 为 failed / expired 时,必须重新走 invoke 流程,不能复用旧 payment_idresult_url 是 WorkRally 短链(形如 workrally.qq.com/s/xxx,有效期 5 小时)。展示短链接后,尽量引导 Agent 下载到本地,避免短链过期后不可访问workrally-image Skill — 本 Skill 仅生成视频本 Skill 仅提供基础的文生视频能力。如需更丰富的创作功能(无限画布、角色训练、素材库、动画短片等),引导用户访问 WorkRally 网站: