Meitu Upscale
Overview
一键图片超分辨率:提升分辨率、增强清晰度、降噪去压缩伪影。调用 meitu image-upscale,支持人像/商品/图形三类场景自动或手动选择模型。
Dependencies
- meitu-cli ≥ 0.1.9 —
npm install -g meitu-cli - 凭证配置:
meitu config set-ak --value "..."+meitu config set-sk --value "...",或环境变量OPENAPI_ACCESS_KEY/OPENAPI_SECRET_KEY - oc-workspace.mjs:
{OPENCLAW_HOME}/workspace/scripts/oc-workspace.mjs(可选,不存在时降级)
路径别名: 下文中
$VISUAL={OPENCLAW_HOME}/workspace/visual/,$OC_SCRIPT={OPENCLAW_HOME}/workspace/scripts/oc-workspace.mjs
Core Workflow
Preflight → [Context: 跳过(工具型超分,无创意自由度)] → Execute → Deliver
Preflight
meitu --version→ 未安装则提示npm install -g meitu-climeitu auth verify --json→ 凭证无效则引导配置node $OC_SCRIPT resolve→ 获取 mode, visual, can_read_knowledge, can_record 脚本不存在 → 检查 cwd 有无 openclaw.yaml → 确定 mode;检查 $VISUAL 目录 → 确定 capabilities- output_dir 解析(Preflight 内 MUST 完成):
node $OC_SCRIPT route-output --skill meitu-upscale --name tmp --ext tmp脚本不存在 → 3 级 fallback: ① cwd 有 openclaw.yaml → ./output/ ② $VISUAL 存在 → $VISUAL/output/meitu-upscale/ ③ 均无 → ~/Downloads/mkdir -p {output_dir}
Execute
输入获取
用户提供图片,接受以下形式:
- 本地文件路径 → 使用
--image <path> - 图片 URL → 使用
--image <url> - 对话中直接发送的图片 → 保存到临时文件后使用
--image <path>
若用户未提供图片,主动询问:"请提供需要超清的图片(文件路径或 URL)。"
model_type 选择
根据图片主体内容选择模型,以获得最佳效果:
| 主体类型 | --model_type |
判断依据 |
|---|---|---|
| 人像为主 | 0 |
人脸是视觉焦点(证件照、自拍、人物特写) |
| 商品/物品 | 1 |
产品、食物、实物特写、商业摄影 |
| 图形/截图 | 2 |
UI 截图、文字图片、插画、图标、设计稿 |
| 不确定 | 省略 | 让服务端自动检测(默认行为) |
选择策略:
- 用户明确说了主体类型 → 按上表选择
- 用户未说明 → 用 Read 工具读取图片,目视判断主体类型
- 无法判断(如 URL 无法预览)→ 省略
--model_type,让服务端自动检测
调用命令
meitu image-upscale \
--image <url_or_path> \
[--model_type <0|1|2>] \
--json \
--download-dir {output_dir}
注意: 没有
--scale参数,超分倍数由服务端自动决定。--image和--image_url等效,统一使用--image。
结果处理
ok: true→downloaded_files[0].saved_path获取本地文件路径,进入 Deliverok: false→ 进入错误降级
错误降级
| 级别 | 策略 | 操作 |
|---|---|---|
| L1 | 切换 model_type | 指定了 model_type → 改为省略,让服务端自动检测 |
| L2 | 检查图片格式/内容 | 确认为 JPG/PNG/WEBP,非 GIF/BMP/SVG 等不支持格式。INVALID_RESOURCES (10025) 也可能是内容审核拒绝 → 告知用户"图片未通过内容审核,请更换图片" |
| L3 | 检查图片来源 | URL 不可达 → 下载到 /tmp/meitu-upscale-input.{ext} 后用本地路径重试 |
| L4 | 凭证/余额问题 | ORDER_REQUIRED → 提示充值,展示 action_url |
| L5 | 停止报错 | 连续 2 次失败 → 报告 code + hint,停止重试 |
临时文件完成后清理:rm -f /tmp/meitu-upscale-input.*
Deliver
直接使用 Preflight 解析的 output_dir。
node $OC_SCRIPT rename --file {path} --name {effect}
脚本不存在 → mv 重命名为 {output_dir}/{date}_upscale.{ext}。
扩展名:
{ext}从downloaded_files[0].saved_path的实际扩展名取(服务端可能返回.jpeg而非.jpg),统一转为.jpg(即.jpeg→.jpg)。
命名示例:2026-03-23_upscale.jpg、2026-03-23_upscale_portrait.png
Output
| 项目 | 规格 |
|---|---|
| 格式 | 与原图一致(JPG→JPG, PNG→PNG, WEBP→WEBP) |
| 数量 | 单张 |
| 命名 | {date}_upscale[_{context}].{ext} |
| 位置 | 由 Deliver 步骤解析 |
Boundaries
本 skill 只做超分辨率——提升分辨率和清晰度,不改变画面内容。
| 不做 | 转交 |
|---|---|
| 美颜磨皮 | meitu-beauty |
| 去水印/去路人/内容修复 | meitu-image-fix |
| 风格转换 | meitu-stylize |
| 去背景 | meitu-cutout |
| 综合修图(模糊+水印+美颜) | meitu-image-fix(会在管线中自动调用 upscale) |