Communitygithub.com

runapi-ai/vidu

通过 RunAPI 根据首帧图像、参考图像和可选的参考音频生成 Vidu Q4 视频。使用 RunAPI CLI 进行一次性生成,并使用 SDK 进行应用集成。

vidu 是什么?

该技能是 RunAPI 平台上 Vidu Q4 视频生成服务的完整操作指南。它支持两种使用路径:一是通过 `runapi` CLI 命令生成一次性视频;二是通过 RunAPI SDK 将功能集成到生产代码中。技能详细描述了如何认证、发现操作契约、构建请求、执行任务以及验证结果。它强调契约优先:所有请求必须严格遵循 API 参考文档中的字段规则、嵌套关系和条件约束,当 CLI 帮助与 API 参考不一致时必须停止并报告。在验证环节,技能要求下载响应中所有媒体文件,并检查每个文件的 MIME 类型(视频家族)和非空性,确保交付完整性。该技能适用于 macOS/Linux 的命令行环境,并提供如 `vidu-q4-image-to-video` 和 `vidu-q4-reference-to-video` 等变体,对应不同的模型能力。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/runapi-ai/vidu/tree/HEAD/skills/vidu

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

RunAPI 上的 Vidu

选择路径

  • 对于一次性产物或结果,请使用 runapi CLI 中注册的 vidu 服务。如果已安装的命令目录中没有列出该服务,请停止并报告服务缺失,而不是发明命令。
  • 对于应用程序、后端、工作器、库、Webhook 流水线或生产代码库,请直接转到 使用 SDK 集成。绝不要在生成运行时通过子进程调用 CLI。

发现契约

进行身份验证,然后检查已安装的命令目录以及所选操作的当前契约:

runapi auth status > auth.json
jq -e '.authenticated == true' auth.json
runapi vidu --help
runapi vidu <operation> --help
curl --fail --location https://runapi.ai/docs/api/vidu/<operation>.md --output contract.md

如果身份验证为 false,请在提交前停止。要求用户提供有效的 RUNAPI_API_KEY,或通过 runapi auth import-token --token - 从标准输入导入用户提供的密钥;仅当用户明确请求时才使用交互式浏览器登录。仅从服务帮助中选择 <operation>。将命令帮助视为已安装操作、模型和顶级字段列表的权威来源。将 API 参考视为完整请求模式、嵌套字段、条件规则、任务行为和响应变体的权威来源。如果两个表面不一致,请停止并报告契约不匹配,而不是猜测。

构建请求

创建 request.json 作为有效的 JSON,仅使用已发现的操作契约接受的字段。对于选定的模型和值,将每个适用的条件规则作为一个集合进行评估:满足每个必填字段,省略每个禁止字段,并在未解决的矛盾处停止。

在执行前遍历嵌套对象和数组。闭合已发现契约声明的所有关系,包括唯一性约束和嵌套值之间的交叉引用。

对于发现的本地媒体输入,包括文件类型字段和顶级媒体 URL 字段,请在 request.json 中直接放置一个智能体可读的本地文件路径。CLI 按声明消费文件字段,并在顶级媒体 URL 字段中上传本地路径。仅当用户需要可重用的 URL、提供 Base64 数据或已发现的契约明确要求单独上传时,才使用 runapi files create。

语义不变性:

  • 远程媒体格式、大小和音频持续时间由生成提供者异步检查。

在发送前验证文件:

jq empty request.json

执行

准确提交一次并在等待前持久化任务响应:

runapi vidu <operation> --async --input-file request.json > task.json
task_id="$(jq -er '.id' task.json)"

对于一次性结果,立即等待同一任务并保存完整的 JSON 响应。此阻塞等待是默认行为:

runapi wait "$task_id" --service vidu --action <operation> > result.json

仅当用户明确要求后台执行、轮询或 Webhook 集成时,才可在验证 task.json 后停止。报告任务 ID,并且不要声称交付物已完成。

验证

成功状态不是交付物。根据已发现的结果契约读取并验证完整响应。以请求的确切格式保留完整的非媒体结果,包括 JSON、文本、SRT 或 VTT。

对于响应中任何位置列出的每个请求的媒体交付物,请下载所有交付物,而不仅仅是返回第一个 URL。在下载前,从响应元数据(如果存在)中推导其预期的 MIME 类型或家族,然后是选定的输出格式,最后是 API 参考中明确的字段如 videos、images 或 audios。该技能的目录声明的回退家族为 video/*。仅当无法从这些来源建立任何单一预期类型或家族时才停止。

对于每个下载的文件,要求文件非空且符合预期的 MIME 类型或家族:

curl --fail --location <deliverable-url> --output <downloaded-file>
for file in <downloaded-files>; do
  expected_mime=<expected-MIME-or-family-pattern-for-this-file>
  test -s "$file"
  [[ "$(file --brief --mime-type "$file")" == $expected_mime ]]
done

当任何请求的交付物缺失、为空或具有意外的 MIME 类型时,不要报告完成。分别记录“技能符合性”和“任务结果”,以便服务失败不会掩盖是否遵循了本方案。

恢复或停止

  • 最多修正一次请求形状,并且仅在已发现的契约或返回的验证错误标识了修正方向时进行。
  • 最多重试一次瞬时传输失败,并且仅在证据确认未创建任何任务、未产生任何计费且重试安全时进行。
  • 如果在 task.json 存在后等待超时或失去传输,请保留错误并最多对同一任务重新运行 runapi wait 一次。绝不要提交替代任务。
  • 遇到终止性的 RunAPI 或服务失败时,保留任务/错误证据并停止。保持所选模型和能力,未经用户授权不要提交另一个付费请求。
  • 如果契约缺少构建或验证请求所必需的事实,请停止并报告契约缺口。不要将产品缺陷转化为永久的技能变通方案。

使用 SDK 集成

仅将此路径用于应用程序或生产代码集成。打开下面的当前 RunAPI SDK 参考,选择目标语言和 Vidu 的包,并在编码前确认其安装命令、客户端方法、请求类型、响应类型和错误类。从相同已发现的产品契约构建请求,并应用相同的交付物验证和停止规则。不要从生产代码中将 runapi 作为子进程调用。

参考

变体

相关技能