ZenStudio CLI (zencli)
AI 内容创作全流程命令行工具,封装 ZenStudio 平台 19+ 核心能力。
安装 & 配置
npm install -g zenstudio-cli@1.3.6
# 配置 API Key(三选一)
zencli auth login # 交互式登录(推荐)
zencli auth login --token <YOUR_API_KEY> # 命令行传入
export ZENSTUDIO_API_KEY=<YOUR_API_KEY> # 环境变量(仅推荐 CI/CD,Agent/子进程可能读不到 shell 配置)
# ↑ auth login 自动将 Token 写入配置文件:
# 若 ZENCLI_CONFIG_DIR 已设置 → $ZENCLI_CONFIG_DIR/config.json
# 否则 → ~/.zencli/config.json
zencli auth status # 验证登录状态
API Key 申请:Claw 配置
命令速查
# === 项目管理 ===
zencli project list [--search "关键词"] # 列出/搜索项目
zencli project create "项目名" # 创建项目
zencli project get <id> # 项目详情
zencli project update <id> --name "新名称" # 更新项目
# === 上传 / 下载 ===
zencli upload ./file.png -o json # 上传文件 (COS SDK 直传)
zencli download <asset_id> [-d ./output/] # 下载素材 (自动处理私有读签名)
# === AI 生图 ===
zencli generate image-models # 查看可用模型(必须先调用!)
zencli generate image --prompt "描述" --model <model_id> [--aspect-ratio 16:9] [--input-images "url"] --poll
# === AI 生视频 (4 种驱动模式) ===
zencli generate video-models # 查看可用模型(必须先调用!)
zencli generate video --prompt "描述" --model <provider_id> --poll # 纯文生视频(默认 Text 模式)
zencli generate video --prompt "描述" --model <provider_id> --single-image-url "url" --poll # 图生视频(Text 模式 + 参考图)
zencli generate video --mode FirstLastFrame --prompt "描述" --model <provider_id> --first-frame-url "url" --poll # 首尾帧
# 其他模式: FrameSequence(--sequence-frames) SubjectToVideo(--reference-assets)
# --mode 默认 Text;通用选项: --duration <秒> --count 1-4 --enable-sound --poll
# === 媒资库 (asset) — 项目级媒体文件池 ===
zencli asset create --url <cdn_url> --project-id <id> -o json # 入库(返回带签名 URL)
zencli asset search --project-id <id> # 搜索
zencli asset get <asset_id> # 详情
zencli asset update <asset_id> --name "新名称" # 更新素材 (目前仅支持改名)
# === 资产库 (material) — 树形管理:人物/道具/场景/网盘 ===
zencli material list role_person # 人物 | role_prop 道具 | role_scene 场景 | root 网盘文件夹
zencli material add ... # 创建素材/文件夹(从媒资库挂载)
zencli material get <material_id> # 素材详情
zencli role get <role_id> # 角色详情(LoRA/提示词/版本)
# === 画布 ===
zencli canvas list # 列出画布
zencli canvas create "名称" # 创建画布
zencli canvas build-draft <canvas_id> --file nodes.json # 增量合并(默认保留已有节点)
zencli canvas build-draft <canvas_id> --nodes '[...]' # 同上,直接传 JSON
zencli canvas build-draft <canvas_id> -d "id1,id2" # 删除指定节点
zencli canvas build-draft <canvas_id> -n '[...]' -d "old1" # 同时增删改
zencli canvas build-draft <canvas_id> -n '[...]' --mode overwrite # 全量覆盖(清空后重建)
# === 任务查询 ===
zencli generate task <task_id> [--poll] # 查询/轮询生成任务状态
# === 通用透传(调用任意 MCP 工具)===
zencli tools list # 列出所有工具
zencli tools describe <tool_name> # 查看参数 schema
zencli tools call <tool_name> --arg key=value [--json-args '{}']
# === URL / 升级 ===
zencli url build "页面名" [--params '{}'] # 构建 ZenStudio 前端链接
zencli url parse <url> # 解析 URL
zencli upgrade [--check] # 升级 / 仅检查
输出格式: -o json(默认, Agent 推荐) | -o table(人类阅读) | -o text(管道/脚本) | zencli config set output_format <fmt>
关键工作流:上传文件
概念:媒资库(asset) = 项目级文件池;资产库(material) = 树形目录(人物/道具/场景/网盘文件夹)。资产库的素材只能从媒资库挂载。
# 步骤 1: 上传 → CDN URL
zencli upload ./character.png -o json
# 步骤 2: 入媒资库(必须!返回 asset_id + 带签名的 asset_details)
zencli asset create --url <cdn_url> --project-id <project_id> -o json
# 步骤 3(按需): 挂载到资产库(必传 asset_id + 完整 asset_details)
zencli material add --material-id <asset_id> --material-detail '<asset_details_json>' \
--parent-id <target_id> --type 2 --project-ids <project_id>
步骤 1→2 强制绑定,上传后必须入媒资库。视频/音频为私有读,只有入库后的 URL 才带签名。
步骤 3 由 Agent 判断:"上传文件" → 两步 | "上传到角色/道具/场景/文件夹" → 三步 | "媒资素材添加到资产库" → 仅步骤 3
⚠️ 重要规则
- 前端链接必须用
zencli url build 生成,严禁自行拼接 URL
- 模型 ID 必须动态获取:
image-models / video-models,严禁猜测或硬编码
canvas ≠ project:画布用 canvas,短番项目用 project,不要混用
build-draft 实时生效:写入后正在查看画布的用户会立即看到变更,无需刷新页面
build-draft 默认增量合并:只需传变更的节点(新增/修改),已有节点自动保留。删除用 -d,全量覆盖用 --mode overwrite
build-draft 支持多人协同:CLI 写入画布时不会覆盖其他用户的并发编辑,可安全地与浏览器用户同时操作同一画布
build-draft 节点数据校验:
type 必须是 image/video/audio/imageGenerator/videoGenerator/artboard/text/freehand 之一
image/video/audio 节点必须包含 data.asset.id(非空字符串),否则被拒绝
text 节点必须包含 data.text.content(文本内容,最大2000字符),可选 fontSize/fontWeight/textAlign/color
freehand 节点必须包含 data.freehand.points(笔触坐标数组)和 data.freehand.initialSize({width,height}),可选 color/size
audio 节点默认尺寸 260×80;artboard 节点缺少尺寸时默认 600×800
- 服务端会自动修正常见问题(如空
style、缺少 measured、text/freehand 默认属性),但关键必填字段缺失无法修正
- 素材命名最佳实践:
- 画布内生成:使用
--name 传入"画布名称_素材特征"作为名字(如"产品设计画布_蓝色运动鞋"),通过 canvas list 获取画布名称
- 非画布生成:使用
--name 传入自定义名称,从 prompt 中提取核心关键词
- 不确定参数时用
--help 或 tools describe 自行探索
环境变量
ZENSTUDIO_API_KEY — API Key (Bearer Token)
ZENSTUDIO_ENDPOINT — API 端点 (默认 https://ai.tvi.v.qq.com/zenstudio/api/mcp)
ZENCLI_CONFIG_DIR — 配置文件目录 (默认 ~/.zencli,非持久化容器建议指向持久卷)
ZENCLI_NO_UPDATE_CHECK=1 — 禁用自动版本检查 (CI/CD 推荐)
工具说明
本技能使用以下工具:
1---
2name: zenstudio
3description: ZenStudio 官方 AI 内容创作 CLI 工具 (zencli)。支持 AI 生图、AI 生视频、项目管理、资产库、媒资管理、无限画布、文件上传下载等。Use when user asks to generate images, generate videos, manage projects, upload files, download assets, manage
4 materials, or interact with ZenStudio platform via command line.
5description_zh: ZenStudio AI 内容创作(生图、生视频、画布、素材管理)
6description_en: 'ZenStudio AI content creation: image/video generation, canvas, assets'
7version: 1.3.6
8homepage: https://ai.tvi.v.qq.com/zenstudio
9allowed-tools: Bash,Read
10metadata: '{"openclaw":{"emoji":"🎬","requires":{"bins":["zencli"],"env":["ZENSTUDIO_API_KEY","ZENSTUDIO_ENDPOINT","ZENCLI_CONFIG_DIR","ZENCLI_NO_UPDATE_CHECK"]},"primaryEnv":"ZENSTUDIO_API_KEY","credentials":{"storage":"~/.zencli/config.json","configDirEnv":"ZENCLI_CONFIG_DIR","description":"zencli
11 auth login 写入的 API Key 持久化文件,JSON 格式,仅存储 api_key 和 endpoint。非持久化容器中可通过 ZENCLI_CONFIG_DIR 环境变量指定配置目录"},"install":[{"id":"npm","kind":"node","package":"zenstudio-cli@1.3.6","bins":["zencli"],"label":"Install
12 ZenStudio CLI (npm)"}],"category":"AIGC","tags":["zenstudio","aigc","cli","video-generation","image-generation","ai-tools"]}}'
13license: MIT-0
14author: ZenStudio Team
15user-invocable: 'true'
16---
17
18# ZenStudio CLI (zencli)
19
20AI 内容创作全流程命令行工具,封装 ZenStudio 平台 19+ 核心能力。
21
22## 安装 & 配置
23
24```bash
25npm install -g zenstudio-cli@1.3.6
26
27# 配置 API Key(三选一)
28zencli auth login # 交互式登录(推荐)
29zencli auth login --token <YOUR_API_KEY> # 命令行传入
30export ZENSTUDIO_API_KEY=<YOUR_API_KEY> # 环境变量(仅推荐 CI/CD,Agent/子进程可能读不到 shell 配置)
31# ↑ auth login 自动将 Token 写入配置文件:
32# 若 ZENCLI_CONFIG_DIR 已设置 → $ZENCLI_CONFIG_DIR/config.json
33# 否则 → ~/.zencli/config.json
34
35zencli auth status # 验证登录状态
36```
37
38API Key 申请:[Claw 配置](https://ai.tvi.v.qq.com/zenstudio/open-api)
39
40## 命令速查
41
42```bash
43# === 项目管理 ===
44zencli project list [--search "关键词"] # 列出/搜索项目
45zencli project create "项目名" # 创建项目
46zencli project get <id> # 项目详情
47zencli project update <id> --name "新名称" # 更新项目
48
49# === 上传 / 下载 ===
50zencli upload ./file.png -o json # 上传文件 (COS SDK 直传)
51zencli download <asset_id> [-d ./output/] # 下载素材 (自动处理私有读签名)
52
53# === AI 生图 ===
54zencli generate image-models # 查看可用模型(必须先调用!)
55zencli generate image --prompt "描述" --model <model_id> [--aspect-ratio 16:9] [--input-images "url"] --poll
56
57# === AI 生视频 (4 种驱动模式) ===
58zencli generate video-models # 查看可用模型(必须先调用!)
59zencli generate video --prompt "描述" --model <provider_id> --poll # 纯文生视频(默认 Text 模式)
60zencli generate video --prompt "描述" --model <provider_id> --single-image-url "url" --poll # 图生视频(Text 模式 + 参考图)
61zencli generate video --mode FirstLastFrame --prompt "描述" --model <provider_id> --first-frame-url "url" --poll # 首尾帧
62# 其他模式: FrameSequence(--sequence-frames) SubjectToVideo(--reference-assets)
63# --mode 默认 Text;通用选项: --duration <秒> --count 1-4 --enable-sound --poll
64
65# === 媒资库 (asset) — 项目级媒体文件池 ===
66zencli asset create --url <cdn_url> --project-id <id> -o json # 入库(返回带签名 URL)
67zencli asset search --project-id <id> # 搜索
68zencli asset get <asset_id> # 详情
69zencli asset update <asset_id> --name "新名称" # 更新素材 (目前仅支持改名)
70
71# === 资产库 (material) — 树形管理:人物/道具/场景/网盘 ===
72zencli material list role_person # 人物 | role_prop 道具 | role_scene 场景 | root 网盘文件夹
73zencli material add ... # 创建素材/文件夹(从媒资库挂载)
74zencli material get <material_id> # 素材详情
75zencli role get <role_id> # 角色详情(LoRA/提示词/版本)
76
77# === 画布 ===
78zencli canvas list # 列出画布
79zencli canvas create "名称" # 创建画布
80zencli canvas build-draft <canvas_id> --file nodes.json # 增量合并(默认保留已有节点)
81zencli canvas build-draft <canvas_id> --nodes '[...]' # 同上,直接传 JSON
82zencli canvas build-draft <canvas_id> -d "id1,id2" # 删除指定节点
83zencli canvas build-draft <canvas_id> -n '[...]' -d "old1" # 同时增删改
84zencli canvas build-draft <canvas_id> -n '[...]' --mode overwrite # 全量覆盖(清空后重建)
85
86# === 任务查询 ===
87zencli generate task <task_id> [--poll] # 查询/轮询生成任务状态
88
89# === 通用透传(调用任意 MCP 工具)===
90zencli tools list # 列出所有工具
91zencli tools describe <tool_name> # 查看参数 schema
92zencli tools call <tool_name> --arg key=value [--json-args '{}']
93
94# === URL / 升级 ===
95zencli url build "页面名" [--params '{}'] # 构建 ZenStudio 前端链接
96zencli url parse <url> # 解析 URL
97zencli upgrade [--check] # 升级 / 仅检查
98```
99
100输出格式: `-o json`(默认, Agent 推荐) | `-o table`(人类阅读) | `-o text`(管道/脚本) | `zencli config set output_format <fmt>`
101
102## 关键工作流:上传文件
103
104**概念**:媒资库(asset) = 项目级文件池;资产库(material) = 树形目录(人物/道具/场景/网盘文件夹)。资产库的素材只能从媒资库挂载。
105
106```bash
107# 步骤 1: 上传 → CDN URL
108zencli upload ./character.png -o json
109# 步骤 2: 入媒资库(必须!返回 asset_id + 带签名的 asset_details)
110zencli asset create --url <cdn_url> --project-id <project_id> -o json
111# 步骤 3(按需): 挂载到资产库(必传 asset_id + 完整 asset_details)
112zencli material add --material-id <asset_id> --material-detail '<asset_details_json>' \
113 --parent-id <target_id> --type 2 --project-ids <project_id>
114```
115
116> **步骤 1→2 强制绑定**,上传后必须入媒资库。视频/音频为私有读,只有入库后的 URL 才带签名。
117>
118> **步骤 3 由 Agent 判断**:"上传文件" → 两步 | "上传到角色/道具/场景/文件夹" → 三步 | "媒资素材添加到资产库" → 仅步骤 3
119
120## ⚠️ 重要规则
121
1221. **前端链接必须用 `zencli url build` 生成**,严禁自行拼接 URL
1232. **模型 ID 必须动态获取**:`image-models` / `video-models`,严禁猜测或硬编码
1243. **`canvas` ≠ `project`**:画布用 `canvas`,短番项目用 `project`,不要混用
1254. **`build-draft` 实时生效**:写入后正在查看画布的用户会**立即**看到变更,无需刷新页面
1265. **`build-draft` 默认增量合并**:只需传变更的节点(新增/修改),已有节点自动保留。删除用 `-d`,全量覆盖用 `--mode overwrite`
1276. **`build-draft` 支持多人协同**:CLI 写入画布时不会覆盖其他用户的并发编辑,可安全地与浏览器用户同时操作同一画布
1287. **`build-draft` 节点数据校验**:
129 - `type` 必须是 `image`/`video`/`audio`/`imageGenerator`/`videoGenerator`/`artboard`/`text`/`freehand` 之一
130 - `image`/`video`/`audio` 节点**必须包含 `data.asset.id`**(非空字符串),否则被拒绝
131 - `text` 节点**必须包含 `data.text.content`**(文本内容,最大2000字符),可选 fontSize/fontWeight/textAlign/color
132 - `freehand` 节点**必须包含 `data.freehand.points`**(笔触坐标数组)和 **`data.freehand.initialSize`**({width,height}),可选 color/size
133 - `audio` 节点默认尺寸 260×80;`artboard` 节点缺少尺寸时默认 600×800
134 - 服务端会自动修正常见问题(如空 `style`、缺少 `measured`、text/freehand 默认属性),但关键必填字段缺失无法修正
1358. **素材命名最佳实践**:
136 - **画布内生成**:使用 `--name` 传入"画布名称_素材特征"作为名字(如"产品设计画布_蓝色运动鞋"),通过 `canvas list` 获取画布名称
137 - **非画布生成**:使用 `--name` 传入自定义名称,从 prompt 中提取核心关键词
1389. **不确定参数时**用 `--help` 或 `tools describe` 自行探索
139
140## 环境变量
141
142- `ZENSTUDIO_API_KEY` — API Key (Bearer Token)
143- `ZENSTUDIO_ENDPOINT` — API 端点 (默认 `https://ai.tvi.v.qq.com/zenstudio/api/mcp`)
144- `ZENCLI_CONFIG_DIR` — 配置文件目录 (默认 `~/.zencli`,非持久化容器建议指向持久卷)
145- `ZENCLI_NO_UPDATE_CHECK=1` — 禁用自动版本检查 (CI/CD 推荐)
146
147
148## 工具说明
149
150本技能使用以下工具:
151
152- **Read**: 读取项目文件和配置