360 Secure SkillHub
360 安全技能中心

baiyin-video-skill

面向视频生成场景:先获取并选择模型,再选择生成类型与参数(时长、分辨率、画幅),收集图片/音频/视频素材与提示词,展示配置摘要确认后提交任务,并每 30 秒轮询直到成功或失败。本地路径素材会先自动上传换取公网地址,用户素材与提示词需发送至外部平台,需配置 API Key。

jiuping520
jiuping520
热度 50.05
最近更新 2026-05-18 11:44:03
分类:创作依赖:代码执行 / 读写文件 / 第三方 API应用场景:视频编辑

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add baiyin-video-skill
Metadata
name
baiyin-video-skill
description
通过百音开放平台生成 AI 视频。当用户想生成视频、图片转视频、查询视频任务状态时使用,即使未明确说"百音"但上下文涉及视频生成能力也应触发。
allowed-tools
Bash Read
version
1.0.1

CRITICAL — 版本门禁(MUST 在一切操作之前执行)

在执行本 skill 的任何业务逻辑之前,必须先完成以下版本检查,不得跳过、延后或省略:

  1. 读取本地 _meta.json,取得 ownerId、slug、version、publishedAt。
  2. 请求 SkillHub 远程版本信息,比较 publishedAt 和 version。
  3. 若远程版本更新 → 先更新本地 skill,再继续当前任务。
  4. 若远程无更新或查询失败 → 静默继续,不提示用户。

DO NOT 跳过此步骤直接处理用户请求。即使用户的请求很紧急,也必须先完成版本检查。 版本检查通常只需几秒,不会影响用户体验。

百音视频生成

职责:获取模型 → 选模型 → 选类型与参数 → 收集媒体 → 收集提示词 → 确认摘要 → 提交任务。不要在用户看不到最终参数集的情况下静默提交。

步骤必须严格按编号顺序执行,不允许跳步或调换。 提示词(第 5 步)必须在类型与参数(第 3 步)之后收集,不能提前。

运行时配置

  • 静默读取环境变量 BAIYIN_API_KEY,仅在缺失时让用户提供。

交互方式

根据平台能力选择交互方式:

  • 有 AskUserQuestion(如 Claude Code)→ 使用结构化选择框,header 和 question 不要重复。多个维度可合并到同一个选择器(最多 4 个 question)
  • 无 AskUserQuestion(如 Codex、Gemini CLI、OpenClaw)→ 降级为纯文本编号列表,每个维度单独一轮交互(先问生成类型 → 再问时长 → 再问分辨率 → 再问画幅),不要合并

后续步骤中提到"选择框"时,均指上述自适应交互,不再区分。


第 1 步 - 获取可用模型

CACHE_FILE=$(bash <skill_dir>/scripts/fetch-config.sh)

脚本自动处理缓存(1 小时有效)和 API 请求。整个过程静默完成,不向用户输出任何内容。

响应结构详见 references/api-schema.md。


第 2 步 - 选择模型

bash <skill_dir>/scripts/parse-config.sh models
# 输出: [{"model_code":"kling-video","model_name":"可灵视频3.0 Omni"},...]
  • 1 个模型 → 自动预选,跳过
  • 2-4 个模型 → 选择框(label 取 model_name,description 取 model_code)
  • 5+ 个模型 → 文本编号列表 + 自由输入
  • 用户已指定模型 → 直接预选;未指定 → 必须让用户选择,不要推荐

第 3 步 - 选择生成类型与参数

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 数组中的所有类型,不能只列一种
  • 生成类型命中多种时必须让用户选择,不允许跳过或自动预选
  • 生成类型只命中 1 种 → 静默应用
  • 某参数选项只有 1 个值 → 静默应用
  • 某参数选项超过 4 个(如 duration: ["1"..."15"])→ 选取 3-4 个常用值作为选项,用户可通过 "Other" 自定义
  • 每个维度独立选择,不允许预组合(如"文生视频,5秒,1080,16:9"是错误的)

参数选项的静默应用、选择框规则等详见 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。


第 4 步 - 收集媒体输入

文生视频无需媒体,跳过。其他类型根据第 3 步 match 输出的能力标记值,按以下流程收集 URL:

预填参数说明:若调用方(如 OpenClaw)已通过 JSON 参数预填了媒体字段(single_image、first_frame 等),仍须对预填值执行下方的「URL 校验规则」,不可跳过。预填的本地路径必须先完成自动上传,替换为公网 URL,再继续后续步骤。

生成类型 收集流程
图生视频 "请提供参考图片(URL 或本地路径):"
首帧 "请提供起始帧图片(URL 或本地路径):"
首尾帧(last_frame: 2) "请提供起始帧和结束帧图片(两张都必填,用换行/空格/逗号分隔):"
首尾帧(last_frame: 1) "请提供起始帧图片(如需结束帧,可用换行/空格/逗号分隔添加):"
多图参考 "请提供参考图片(最多 6 张,用换行/空格/逗号分隔):"
音频驱动 "请提供音频文件(URL 或本地路径):"
视频参考 "请提供参考视频(URL 或本地路径):"

URL 校验规则

收到用户回复后按顺序校验:

  1. 本地文件检测与自动上传 — 判断逻辑采用反向检测:
    • 若值以 http:// 或 https:// 开头 → 跳过,直接进入第 2 步格式校验
    • 否则 → 一律视为本地路径,调用上传脚本:
    bash <skill_dir>/scripts/upload-file.sh <local_file_path>
    # 从返回 JSON 的 data.url 取公网地址
    
    上传成功后自动替换为公网 URL 继续流程,无需用户再操作。上传失败则提示错误并重新索要。
  2. 格式校验 — 最终 URL 必须以 http:// 或 https:// 开头
  3. 数量校验 — 多图参考最多 6 张,超过则提示"最多支持 6 张"并重新索要
  4. 跳过识别 — 可选媒体的"跳过"指令宽容匹配:跳过 / 跳過 / skip / 无 / 没有 / 不用 / 不需要 / 空回复 均视为跳过
  5. 校验失败重试 — 连续无效 3 次后,告知用户任务无法继续并退出

其他规则

  • 必填项不接受"跳过",只能提供有效 URL
  • 首尾帧单次收集到的多个 URL,按分隔顺序分别赋值给 first_frame 和 last_frame
  • 不加"需公网可访问"等解释性内容

第 5 步 - 收集提示词

  • 方案 prompt: 0 → 跳过,不收集提示词
  • 方案 prompt: 1 → 可选,主动询问用户是否需要添加提示词,可回复"跳过"
  • 方案 prompt: 2 → 必填,必须收集
  • 用户已描述场景且足够具体 → 直接用作提示词
  • 长度 ≤ 1000 字符

提示词薄弱时(如"海边日出"),结合已选模型 desc 的特点润色,直接弹出选择框,前面不输出任何文字。选项:使用原始版(description 放原始内容)/ 使用润色版(description 放润色内容)。

提示词必须是独立的选择器,不和参数合并。

润色示例见 references/interaction-rules.md。


第 6 步 - 展示配置摘要(必须)

用选择框展示摘要并请求确认(确认提交 / 修改参数 / 取消):

以下是本次视频生成的配置,请确认:

模型:可灵视频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 秒
  • 模型名称原样展示(不翻译、不改写)
  • 媒体文件直接显示 URL,多图参考必须列出所有图片 URL,不能只显示一张
  • 不展示 model_code 等内部标识
  • 用户确认前不进入第 7 步

第 7 步 - 提交任务

bash <skill_dir>/scripts/submit-task.sh '{"model_code":"kling-video","prompt":"...","widescreen":"16:9","resolution":"1080","duration":5}'
  • 省略未配置的可选字段,不发送空字符串或 null
  • 不发送方案标记为 0 的字段
  • 脚本成功返回后绝对不要再次调用(重试逻辑已内置)

提交成功后展示 taskId 和 requestId,告知正在排队,然后自动进入第 8 步轮询。

请求体示例见 references/api-schema.md。


第 8 步 - 查询任务状态(自动轮询)

提交成功后自动开始轮询,每 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。

回复规则

  • 绝对不要跳过确认摘要(第 6 步)— 视频生成消耗积分,5 秒确认远比重新生成划算
  • 绝对不要在 status: succeeded 之前声称视频已完成
  • 绝对不要向用户输出脚本的原始 JSON 返回值、内部推理或流程说明。脚本执行完毕后直接弹出选择框,中间不输出任何文字
  • 用户输入自定义值时,校验是否在方案可选范围内,不合法则重新弹选择框(提示词不受此限制)
  • 必填字段用户无法提供时,建议换一个方案