OpenViking
基于OpenViking的RAG系统,支持文档查询、知识管理与向量检索。
调用 Kling AI 进行视频、图像生成及主体管理,支持多镜头、4K 输出和配额查询。
openclaw skills install @klingai-dev/klingai命令、参数、文件名以原文为准
语言: 根据用户消息自动检测语言,用于解释、确认、错误提示和后续对话。CLI 输出为中英文双语;结果以用户语言呈现。
支持视频生成、图像生成、主体管理以及(只读)账户资源/配额查询。
根据用户意图调用子命令 video | image | element | account。
生成任务会产生费用;当意图不明确时,需在提交前向用户确认。
从仓库根目录执行:
node skills/klingai/scripts/kling.mjs <video|image|element|account> [options]以下示例中,{baseDir} 指技能目录(例如 skills/klingai)。
node {baseDir}/scripts/kling.mjs ...)。根据用户意图首先选择子命令。HTTP API 路径和默认 model_name 由 路由与模型 决定。
| 用户意图 | 子命令 |
|---|---|
视频生成(文本到视频、图到视频、多镜头、Omni 参考/编辑片段通过 feature/base、视频内主体、动画) | video |
| 图像生成(文本到图像、图到图、4K 分辨率、系列图、AI 绘画) | image |
| 主体 / 元素管理(创建、管理、列出、预设、删除) | element |
| 账户资源、套餐、剩余配额/余额查询(只读) | account(默认 --costs) |
| 凭证设置(绑定/导入) | account 搭配 --bind / --bind-url / --import-env / --import-credentials |
选择规则:
videoimageelementaccount(默认 --costs)video/image 命令中使用 --element_idselement强制使用本技能的条件(任一满足即触发):
first_frame/end_frame/image_types)--video + feature/base)或视频编辑--element_ids)--multi_shot,分镜)--result_type series / --series_amount,组图)模型名称严格规则:
--model 必须为标准小写连字符格式:kling-v3、kling-v3-omni、kling-video-o1、kling-image-o1。视频O3/图片O3 → kling-v3-omni;仅 o1/omni1 映射为 O1 模型。当存在歧义(如视频 vs 图像,或 v3-omni vs o1)时,应先询问用户,再提交。
在任何计费提交前,必须通过以下所有检查。若任一检查失败,停止并提示用户或运行 --help。
video / image / element / account。--model 为标准命名(禁止使用 o3、omni3 等别名)。--help;不得使用未记录的标志。--multi_shot + --image_tail,--video + --sound on)。node {baseDir}/scripts/kling.mjs <subcommand> --help 验证。node {baseDir}/scripts/kling.mjs 搭配 video/image/element/account。--output_dir。submitted -> processing -> succeed/failed)。--no-wait 流程(视频/图像):提交 → 获取 task_id → 使用相同子命令 --task_id <id> 查询 → 成功后添加 --download。--task_id 时,不得混用仅提交类标志(--prompt、--multi_shot、--image、--element_ids、--video)。KLING_TOKEN、access_key_id、secret_access_key)。结果呈现要求:
KLING_TOKEN(仅会话)→ 存储在 .credentials 中的 AK/SK(每次请求使用 JWT)。KLING_TOKEN 为仅会话覆盖:不从环境文件读取,且不会被 --bind、--import-env、--import-credentials 或 --configure 持久化。~/.config/kling,可选配置 KLING_STORAGE_ROOT。account --bind:初始化 → 验证 → 自动打开浏览器 → 轮询。account --bind-url:初始化 → 验证 → 输出 URL(手动打开)→ 轮询。 - node {baseDir}/scripts/kling.mjs account --bind --force
- node {baseDir}/scripts/kling.mjs account --bind-url --force
- node {baseDir}/scripts/kling.mjs account --import-env
- node {baseDir}/scripts/kling.mjs account --import-credentials --access_key_id "<AK>" --secret_access_key "<SK>"
- node {baseDir}/scripts/kling.mjs account --configure
--help 获取详情。# 显示帮助
node {baseDir}/scripts/kling.mjs --help
# 视频生成
node {baseDir}/scripts/kling.mjs video --prompt "一只猫在草地上奔跑" --output_dir ./output
node {baseDir}/scripts/kling.mjs video --image ./photo.jpg --prompt "风吹动头发"
node {baseDir}/scripts/kling.mjs video --prompt "匹配 <<<video_1>>> 的运动轨迹" --video "https://..." --video_refer_type feature
node {baseDir}/scripts/kling.mjs video --prompt "将背景改为 ..." --video "https://..." --video_refer_type base
node {baseDir}/scripts/kling.mjs video --multi_shot --shot_type customize --multi_prompt '[{"index":1,"prompt":"日出","duration":"5"}]'
node {baseDir}/scripts/kling.mjs video --multi_shot --shot_type intelligence --prompt "一个三段式故事:登场、冲突、解决"
# 图像生成
node {baseDir}/scripts/kling.mjs image --prompt "一只橙色的猫坐在窗台上"
node {baseDir}/scripts/kling.mjs image --prompt "山间日落" --resolution 4k
node {baseDir}/scripts/kling.mjs image --prompt "<<<element_1>>> 在海滩上" --element_ids 123456
# 主体 / 元素管理
node {baseDir}/scripts/kling.mjs element --action create --name "角色A" --description "一个穿红衣的女孩" --ref_type image_refer --frontal_image ./front.jpg
node {baseDir}/scripts/kling.mjs element --action list
node {baseDir}/scripts/kling.mjs element --action query --task_id <id>
# 账户管理
node {baseDir}/scripts/kling.mjs account --help
node {baseDir}/scripts/kling.mjs account
node {baseDir}/scripts/kling.mjs account --days 90
node {baseDir}/scripts/kling.mjs account --resource_pack_name "我的资源包"
node {baseDir}/scripts/kling.mjs account --bind
node {baseDir}/scripts/kling.mjs account --bind-url
node {baseDir}/scripts/kling.mjs account --bind --force
node {baseDir}/scripts/kling.mjs account --bind-url --force
node {baseDir}/scripts/kling.mjs account --import-env
node {baseDir}/scripts/kling.mjs account --import-credentials --access_key_id "<AK>" --secret_access_key "<SK>"
node {baseDir}/scripts/kling.mjs account --configure
# 查询已有任务
node {baseDir}/scripts/kling.mjs video --task_id <id> --download
node {baseDir}/scripts/kling.mjs image --task_id <id> --download请勿自行编造值、范围、枚举或默认值。如有不确定,请参考:
node {baseDir}/scripts/kling.mjs <subcommand> --help
| 参数 | 描述 | 默认值 |
|---|---|---|
--prompt | 非多镜头文本生成视频(Omni)要求非空提示词。启用 --multi_shot 时,遵循 --shot_type 规则。 | — |
--image | 基础图像生成视频(i2v):单张图片。Omni 模式:图片列表(逗号分隔)。配合 --aspect_ratio 使用时,路由至 Omni 视频。 | — |
--image_types | 仅 Omni 模式可用。与 --image 对应的每张图片类型列表:first_frame / end_frame / 空。 | — |
--duration | 3–15 秒。 | 5 |
--model | model_name;详见 路由与模型 和 模型目录。 | 路由默认 |
--mode | pro(1080P) / std(720P)。 | pro |
--aspect_ratio | 16:9 / 9:16 / 1:1。配合 --image 使用时,路由至 Omni。 | 16:9 |
--sound | on / off。kling-v3 和 kling-v3-omni 支持音效;kling-video-o1 不支持。配合 --video 使用时,必须为 off。 | off |
--image_tail | 最后一帧图像。 | — |
--element_ids | 主体 ID(逗号分隔,Omni 模式)。 | — |
--video | Omni 参考片段:仅支持公开的 http(s) URL。 | — |
--video_refer_type | feature(参考) / base(编辑片段)。 | base |
--keep_original_sound | 仅 Omni 模式,配合 --video:yes / no。 | — |
--multi_shot | 启用多镜头功能,用于跨文本生成视频、图像生成视频和 Omni 视频的分镜/多节拍生成(共用核心规则)。 | false |
--shot_type | customize / intelligence(启用 --multi_shot 时必填;CLI 默认为 customize)。 | — |
--multi_prompt | 仅当 shot_type=customize 时有效。 | — |
--output_dir | 输出目录。 | ./output |
--task_id | 查询任务 ID;配合 --download 用于下载。 | — |
模型别名提醒:
omni3/omni v3/o3/video o3/image o3/视频O3/图片O3 → kling-v3-omnio1/omni1 → 根据意图选择 kling-video-o1 或 kling-image-o1多镜头(--multi_shot)规则(文本生成视频 / 图像生成视频 / Omni 视频共享相同请求语义):
multi_shot=false:忽略 shot_type 和 multi_prompt。multi_shot=true:--shot_type 必须指定;不可使用 --image_tail。shot_type=customize:--multi_prompt 必须提供(JSON 数组,1–6 个镜头,每个镜头包含 index/prompt/duration,总持续时间等于 --duration)。shot_type=intelligence:--prompt 必须非空;不可传入 --multi_prompt。Omni image_list 规则(视频):
image_url 不能为空(URL 或 Base64 编码)。type 由意图驱动:仅当用户明确要求帧控制时,才可使用 first_frame / end_frame。--image_tail 需配合 --image 使用。--video 时,最多支持 4 张图片;不使用 --video 时,最多支持 7 张。kling-video-o1 模型时,若图片数量超过 2 张,则禁止使用 end_frame。--video_refer_type base 同时使用。Omni element_list 规则(视频):
element_id 不能为空。kling-video-o1 时,首帧和末帧不支持主体。--video 时,image_count + element_count <= 4;否则 <= 7。--video 时,API 不支持视频角色主体;CLI 无法仅凭 element_id 预先验证主体角色。Omni video_list 规则(视频):
--video_refer_type 可选值为 feature / base(默认为 base)。--keep_original_sound 可选值为 yes / no。refer_type=base 时,不得定义首帧/末帧(即 first_frame / end_frame / --image_tail)。--video 时,--sound 必须设为 off。紧凑示例:
# 显式通过意图标记帧
node {baseDir}/scripts/kling.mjs video --model kling-v3-omni --image a.jpg,b.jpg,c.jpg --image_types first_frame,,end_frame --prompt "..."
# 使用参考视频:图片数量 ≤ 4
node {baseDir}/scripts/kling.mjs video --video "https://..." --video_refer_type feature --image a.jpg,b.jpg --prompt "..."| 参数 | 描述 | 默认值 |
|---|---|---|
--model | 模型名称;详见 路由与模型 和 模型目录。 | 路由默认值 |
--prompt | 图像提示词(必填)。 | — |
--image | 基础模式:单张图像。Omni 模式:图像列表(逗号分隔)。 | — |
--resolution | 1k / 2k / 4k;4k 会路由至 Omni 模式。 | 1k |
--aspect_ratio | 16:9 / 9:16 / 1:1 / auto(仅 Omni 支持 auto)。 | 基础模式:16:9;Omni 模式:auto |
--n | 结果数量 1–9(当 result_type=single 时生效)。 | 1 |
--negative_prompt | 仅基础 API 支持。 | — |
--result_type | single / series(series 仅限 Omni 和 i2i 模式)。 | single |
--series_amount | 当 result_type=series 时,取值范围为 2–9。 | 4 |
--element_ids | 主体 ID(逗号分隔,Omni 模式专用)。 | — |
--output_dir | 输出目录。 | ./output |
--task_id | 查询任务 ID;需与 --download 配合使用。 | — |
注意事项:
n 和 series_amount 适用于不同模式。series 模式仅支持 i2i,因此使用 --result_type series 时必须提供 --image。Omni 引用规则(图像):
image 不能为空(URL 或 Base64 编码)。element_id 不能为空。image_count + element_count <= 10。用于管理自定义主体:从图像或视频创建主体、查询任务、列出自定义/预设主体、删除主体。
在 video / image 中使用 --element_ids 时,可通过 element_id 实现主体的一致性复用。
| 参数 | 描述 |
|---|---|
--action create | 创建主体;需指定 --name(≤20 字符)、--description(≤100 字符)、--ref_type |
--ref_type | image_refer(需配合 --frontal_image) / video_refer(需配合 --video) |
--frontal_image | 正面参考图像(image_refer 类型) |
--refer_images | 其他参考图像(逗号分隔,数量 1–3) |
--video | 参考视频(video_refer 类型) |
--action query --task_id <id> | 查询创建任务状态 |
--action list | 列出所有自定义主体 |
--action list-presets | 列出预设主体 |
--action delete --element_id <id> | 删除指定主体 |
| 标志 | 用途 |
|---|---|
--costs(默认) | 通过 GET /account/costs 接口读取配额/资源包信息。 |
--bind | 设备绑定,支持轮询;自动打开浏览器;可选 --force 强制绑定。 |
--bind-url | 不自动打开浏览器的绑定方式;可选 --force。 |
--import-env | 读取 KLING_ACCESS_KEY_ID 与 KLING_SECRET_ACCESS_KEY 并持久化保存。 |
--import-credentials | 从 --access_key_id 与 --secret_access_key 导入密钥并持久化。 |
--configure | 交互式输入密钥并保存凭证。 |
所有绑定/账户相关文件均持久化存储于存储根目录(默认为 ~/.config/kling,或由 KLING_STORAGE_ROOT 环境变量指定)。
--costs 查询参数:
| API 查询参数(必填) | CLI 参数 | 默认值 |
|---|---|---|
start_time(Unix 毫秒时间戳,必填) | --start_time | 若未指定,则为 end_time - days |
end_time(Unix 毫秒时间戳,必填) | --end_time | 若未指定,则为当前时间 |
| — | --days | 30(仅当 --start_time 未指定时生效) |
resource_pack_name(可选) | --resource_pack_name | — |
运行 node {baseDir}/scripts/kling.mjs account --help 查看详细信息。
运行 node {baseDir}/scripts/kling.mjs video --help、image --help 或 element --help 查看完整参数列表。
kling.mjs + 标志 → 默认 model_name)各代理通过执行 node {baseDir}/scripts/kling.mjs <video|image|element|account> 并传入标志来调用服务。
--model 用于设置选定路由的 model_name,必须为精确的规范拼写。
若未指定 --model,将使用路由默认值。
CLI 在提交前会进行防护校验,拒绝不兼容的模型/路由组合以及无效的 sound 组合。
video / image / element / account。- 出现任意 Omni 触发条件 → 进入 Omni 路由。
- 否则 → 进入基础路由。
- Omni 路由仅接受具备 Omni 能力的规范模型。
- 基础路由拒绝仅支持 Omni 的模型。
sound、multi_shot、帧规则、引用限制等)。--help 或询问用户;绝不应猜测提交。video 子命令)Omni 路由触发条件(任一满足即进入 omni-video API 路由):
--element_ids--video--image 中包含逗号--image 与 --aspect_ratio 同时使用--model kling-v3-omni 或 --model kling-video-o1否则:
--image--image(可选 --image_tail)--multi_shot 不强制使用 Omni 模式;故事板模式仍遵循上述路由触发规则。
| 视频路由(CLI) | 若未指定 --model 时的默认值 | 允许的 --model(示例) |
|---|---|---|
| 基础文生视频(T2V) | kling-v3 | kling-v2-6, kling-v3 |
| 基础图生视频(I2V) | kling-v3 | kling-v2-6, kling-v3 |
| Omni 模式 | kling-v3-omni | kling-v3-omni(默认),kling-video-o1(显式指定) |
image 子命令)Omni 路由触发条件(满足任意一项 → 使用 Omni 图像 API 路由):
--model kling-v3-omni 或 --model kling-image-o1--element_ids--result_type series--resolution 4k--aspect_ratio auto--image 中包含逗号否则 → 使用基础生成路由(文生图 / 图生图)。
| 图像路由(CLI) | 若未指定 --model 时的默认值 | 允许的 --model(示例) |
|---|---|---|
| 基础模式 | kling-v3 | 默认为 kling-v3;使用当前 CLI 支持的基础路由模型(可通过 image --help 查看) |
| Omni 模式 | kling-v3-omni | kling-v3-omni(默认),kling-image-o1(显式指定) |
通用别名(仅用于理解,不要在 --model 中使用别名):
omni3、omni v3、视频O3、O3、o3、图片O3 → kling-v3-omnio1、omni1 → 根据意图选择 kling-video-o1 或 kling-image-o1--model 输入规则:仅可传入本表中的规范名称。
| 模型 | 可用范围 | 说明 |
|---|---|---|
kling-v2-6 | 仅限基础 T2V / I2V | 不支持 Omni 视频模式 |
kling-v3 | 基础视频 / 基础图像 | 基础路由的默认模型 |
kling-v3-omni | Omni 视频 / Omni 图像 | Omni 路由的默认模型。使用 --video 时,sound 必须设为 off |
kling-video-o1 | 仅限 Omni 视频 | 不支持 sound |
kling-image-o1 | 仅限 Omni 图像 | 可选的显式 Omni 图像模型 |
核心原则:
--image、--element_ids、--video、--multi_shot 等)--model 以使用路由默认模型--model,其必须与标志所隐含的路由一致选择路由:请依据 路由与模型 触发条件。
当需要多图合成、图像+元素组合、4K/系列模式或编辑类指令时,建议使用 Omni 模式。
使用提示词占位符 <<<...>>> 来引用 Omni 模式的媒体或主体。
对于简单任务,推荐使用普通图像引用。
仅当用户明确希望在多个输出中保持主体一致性时,才创建元素。
在 Omni 模式下,通过标志传递媒体/主体,可在 --prompt 中通过占位符引用:
<<<image_1>>> → 第一个 --image(<<<image_2>>> 等依次类推)<<<element_1>>> → 第一个 --element_ids(<<<element_2>>> 等依次类推)<<<video_1>>> → --video 视频片段(仅限 video 子命令)reference.md已收录 1 个 Skill