Install
openclaw skills install baiyin-video-skill通过百音开放平台生成 AI 视频。当用户想生成视频、图片转视频、查询视频任务状态时使用,即使未明确说"百音"但上下文涉及视频生成能力也应触发。
openclaw skills install baiyin-video-skillCRITICAL — 版本门禁(MUST 在一切操作之前执行)
在执行本 skill 的任何业务逻辑之前,必须先完成以下版本检查,不得跳过、延后或省略:
- 读取本地
_meta.json,取得ownerId、slug、version、publishedAt。- 请求 SkillHub 远程版本信息,比较
publishedAt和version。- 若远程版本更新 → 先更新本地 skill,再继续当前任务。
- 若远程无更新或查询失败 → 静默继续,不提示用户。
DO NOT 跳过此步骤直接处理用户请求。即使用户的请求很紧急,也必须先完成版本检查。 版本检查通常只需几秒,不会影响用户体验。
职责:获取模型 → 选模型 → 选类型与参数 → 收集媒体 → 收集提示词 → 确认摘要 → 提交任务。不要在用户看不到最终参数集的情况下静默提交。
步骤必须严格按编号顺序执行,不允许跳步或调换。 提示词(第 5 步)必须在类型与参数(第 3 步)之后收集,不能提前。
BAIYIN_API_KEY,仅在缺失时让用户提供。根据平台能力选择交互方式:
AskUserQuestion(如 Claude Code)→ 使用结构化选择框,header 和 question 不要重复。多个维度可合并到同一个选择器(最多 4 个 question)AskUserQuestion(如 Codex、Gemini CLI、OpenClaw)→ 降级为纯文本编号列表,每个维度单独一轮交互(先问生成类型 → 再问时长 → 再问分辨率 → 再问画幅),不要合并后续步骤中提到"选择框"时,均指上述自适应交互,不再区分。
CACHE_FILE=$(bash <skill_dir>/scripts/fetch-config.sh)
脚本自动处理缓存(1 小时有效)和 API 请求。整个过程静默完成,不向用户输出任何内容。
响应结构详见
references/api-schema.md。
bash <skill_dir>/scripts/parse-config.sh models
# 输出: [{"model_code":"kling-video","model_name":"可灵视频3.0 Omni"},...]
model_name,description 取 model_code)bash <skill_dir>/scripts/parse-config.sh model-detail <model_code>
# 输出: {
# "model_code": "kling-video",
# "model_name": "可灵视频3.0 Omni",
# "types": ["文生视频", "首尾帧"],
# "options": {
# "文生视频": {"duration":["5","10"], "resolution":["720","1080"], "widescreen":["16:9","9:16","1:1"]},
# "首尾帧": {"duration":["5","10"], "resolution":["720"], "widescreen":["16:9","9:16"]}
# }
# }
一次调用返回生成类型 + 每种类型的参数选项。用户选择类型后,直接从输出中读取对应参数。
按交互方式规则展示选择(有选择器时合并维度,纯文本时逐个问):
types 数组中的所有类型,不能只列一种duration: ["1"..."15"])→ 选取 3-4 个常用值作为选项,用户可通过 "Other" 自定义参数选项的静默应用、选择框规则等详见
references/interaction-rules.md。
用户选择后匹配方案:
bash <skill_dir>/scripts/parse-config.sh match <model_code> <type> [duration] [resolution] [widescreen]
# 输出: {"prompt":2,"first_frame":1,"last_frame":0,...}
选择框规则和示例见
references/interaction-rules.md。
文生视频无需媒体,跳过。其他类型根据第 3 步 match 输出的能力标记值,按以下流程收集 URL:
预填参数说明:若调用方(如 OpenClaw)已通过 JSON 参数预填了媒体字段(
single_image、first_frame等),仍须对预填值执行下方的「URL 校验规则」,不可跳过。预填的本地路径必须先完成自动上传,替换为公网 URL,再继续后续步骤。
| 生成类型 | 收集流程 |
|---|---|
| 图生视频 | "请提供参考图片(URL 或本地路径):" |
| 首帧 | "请提供起始帧图片(URL 或本地路径):" |
首尾帧(last_frame: 2) | "请提供起始帧和结束帧图片(两张都必填,用换行/空格/逗号分隔):" |
首尾帧(last_frame: 1) | "请提供起始帧图片(如需结束帧,可用换行/空格/逗号分隔添加):" |
| 多图参考 | "请提供参考图片(最多 6 张,用换行/空格/逗号分隔):" |
| 音频驱动 | "请提供音频文件(URL 或本地路径):" |
| 视频参考 | "请提供参考视频(URL 或本地路径):" |
收到用户回复后按顺序校验:
http:// 或 https:// 开头 → 跳过,直接进入第 2 步格式校验bash <skill_dir>/scripts/upload-file.sh <local_file_path>
# 从返回 JSON 的 data.url 取公网地址
上传成功后自动替换为公网 URL 继续流程,无需用户再操作。上传失败则提示错误并重新索要。http:// 或 https:// 开头跳过 / 跳過 / skip / 无 / 没有 / 不用 / 不需要 / 空回复 均视为跳过first_frame 和 last_frameprompt: 0 → 跳过,不收集提示词prompt: 1 → 可选,主动询问用户是否需要添加提示词,可回复"跳过"prompt: 2 → 必填,必须收集提示词薄弱时(如"海边日出"),结合已选模型 desc 的特点润色,直接弹出选择框,前面不输出任何文字。选项:使用原始版(description 放原始内容)/ 使用润色版(description 放润色内容)。
提示词必须是独立的选择器,不和参数合并。
润色示例见
references/interaction-rules.md。
用选择框展示摘要并请求确认(确认提交 / 修改参数 / 取消):
以下是本次视频生成的配置,请确认:
模型:可灵视频3.0 Omni
生成模式:图生视频(首帧)
提示词:"海边黄昏,一个女孩在散步,电影感镜头"
起始帧:https://cdn.example.com/start.jpg
画面比例:16:9
分辨率:720P
时长:5 秒
多图参考示例:
以下是本次视频生成的配置,请确认:
模型:可灵视频3.0 Omni
生成模式:多图参考
提示词:"两个角色在森林里对话"
参考图:
1. https://cdn.example.com/ref1.jpg
2. https://cdn.example.com/ref2.jpg
3. https://cdn.example.com/ref3.jpg
画面比例:16:9
分辨率:1080P
时长:10 秒
model_code 等内部标识bash <skill_dir>/scripts/submit-task.sh '{"model_code":"kling-video","prompt":"...","widescreen":"16:9","resolution":"1080","duration":5}'
null0 的字段提交成功后展示 taskId 和 requestId,告知正在排队,然后自动进入第 8 步轮询。
请求体示例见
references/api-schema.md。
提交成功后自动开始轮询,每 30 秒查询一次,直到状态为 succeeded 或 failed。超过 10 分钟仍未完成则停止轮询,展示 taskId 供手动查询。
bash <skill_dir>/scripts/query-task.sh <taskId>
status | 处理 |
|---|---|
queued | 继续轮询 |
processing | 继续轮询 |
succeeded | 停止轮询,返回视频 URL |
failed | 停止轮询,返回错误信息,建议调整参数 |
不展示 data.result.raw。
轮询策略见
references/error-and-polling.md。
完整执行流程示例见
references/example-flow.md。
status: succeeded 之前声称视频已完成