Install
openclaw skills install mxaimxai 创作助手,聚合多种 AI 图片和视频生成模型,以及 MJ(MidJourney)绘画。关键词:AI绘画、图片生成、视频生成、AI创作、mxai、MJ、MidJourney
openclaw skills install mxai通过 HTTP REST API 调用 mxai 服务(不是 MCP 协议)。所有交互都是标准的 HTTP 请求(GET/POST),返回 JSON 响应。
在调用任何 API 之前,请在心中默念:
我有 MX_AI_API_KEY 吗? → 没有:引导用户获取,不要尝试调用 API
用户的要求能用现有 API 实现吗? → 不能:直接说"抱歉,当前不支持此功能",不要编造
我知道每个参数的含义和必填性吗? → 不确定:查阅下方 API 文档,不要猜测
我准备好处理可能的错误了吗? → 没有:先阅读"错误处理"章节
任何一项为"否",都不要继续调用 API。
设置环境变量 MX_AI_API_KEY:
⚠️ 任何能设置环境变量的方式都可以,不依赖特定平台。
OpenClaw 配置:在 Skills 中找到 mxai,填入 MX_AI_API_KEY
对话示例:
用户提供图片的三种方式,后端都支持:
当用户请求需要图片的功能(如图生视频)但未提供图片时,必须主动提示: "这个功能需要一张图片,请发送图片或提供图片链接。" 不要在没有图片的情况下强行调用 generate 接口。
生成图片:generate_image → 循环调用 get_task_status(间隔5秒)→ 展示结果 生成视频:generate_video → 循环调用 get_task_status(间隔10秒)→ 展示结果 查询信息:get_user_info(积分余额)、list_models(可用模型)、get_my_tasks(历史记录)
MJ 是一套独立的绘画工具,与上面的 generate_image/generate_video 并列。当用户明确提到"MJ"、"MidJourney"时使用 MJ 工具。
MJ 工具一览:
| 工具 | 用途 | 最简调用 |
|---|---|---|
| mj_draw | MJ 风格绘画 | 只需 prompt |
| mj_action | 四宫格后续操作(放大/变幻/重绘等) | serial_no + action |
| mj_video | MJ 视频生成 | prompt + image(首帧) |
| mj_describe | 图生文(分析图片生成描述词) | image |
| mj_blend | 混图(多图融合) | images(至少2张) |
MJ 绘画流程:
MJ 积分参考:
MJ 模型:
当用户问"怎么使用MJ"时,回答: MJ(MidJourney)是一款高质量 AI 绘画工具。使用方法很简单:
高级玩法:可以调整比例(16:9横版、9:16竖版)、速度模式、风格化程度等参数。
默认模型:seedream-5.0-pro
| slug | 名称 | 积分 |
|---|---|---|
seedream-3.0 | 即梦3.0 | 2积分(VIP)/ 4积分 |
seedream-4.0 | 即梦4.0 | 4-6积分(VIP) |
seedream-4.5 | 即梦4.5 | 4-6积分(VIP) |
seedream-5.0 | 即梦5.0标准版 | 4积分(VIP)/ 8积分 |
seedream-5.0-pro | 即梦5.0Pro | 6-20积分(VIP) |
nano-1.0 | Nano 1.0 | 3积分(VIP)/ 6积分 |
nano-2.0 | Nano 2.0 | 4-8积分(VIP) |
nano-2.0-pro | Nano 2.0 Pro | 4-12积分(VIP) |
默认模型:seedance-3.5-pro
| slug | 名称 | 积分 |
|---|---|---|
seedance-3.0 | 即梦视频3.0标准版 | 4-12积分 |
seedance-3.0-pro | 即梦视频3.0Pro | 5-40积分 |
seedance-3.5 | 即梦视频3.5标准版 | 10-25积分 |
seedance-3.5-pro | 即梦视频3.5Pro | 10-80积分 |
sora-2 | Sora 2 基础版 | 10-15积分 |
sora-2-emergency | Sora 2 应急版 | 20积分 |
sora-2-economy | Sora 2 特价官转 | 20-60积分 |
sora-2-stable | Sora 2 稳定官转 | 50-150积分 |
sora-2-pro | Sora 2 Pro | 60-65积分 |
kling-1.5 | KLING 1.5 | 40-140积分 |
kling-1.6 | KLING 1.6 | 40-140积分 |
kling-2.1-master | KLING 2.1大师版 | 200-400积分 |
kling-2.1-lite | KLING 2.1精简版 | 40-140积分 |
kling-2.5 | KLING 2.5 | 50-100积分 |
kling-2.6 | KLING 2.6 | 30-200积分 |
Base URL: https://mcp.mxai.cn
认证 Header: Authorization: Bearer ${MX_AI_API_KEY} 或 Query ?key=${MX_AI_API_KEY}
格式: JSON
编码: UTF-8(请求体必须使用 UTF-8 编码,中文直接传入)
网络: 自动使用系统代理(HTTP_PROXY/HTTPS_PROXY)
超时: 默认 30 秒,查询任务状态可延长至 60 秒
⚠️ 重要:这是标准 HTTP REST API,不是 MCP JSON-RPC。直接发 HTTP 请求即可。
用途:用户询问积分、余额、会员状态时调用。
GET /mcp/api/user
返回字段:昵称、会员状态、积分余额、积分参考
用途:用户想了解有哪些模型时调用。
GET /mcp/api/models?type={image|video}
用途:用户想生成图片时调用。
当用户表达 [生成图片] [画一张] [帮我画] 等意图时:
步骤 1:确认需求 IF 用户提供了描述(如"帮我画一只猫"): prompt = 用户的描述 ELSE: 询问用户:"请描述您想要生成的图片内容" → 停止,等待用户回复
IF 用户想用参考图但未提供图片: 询问用户:"请发送参考图片或提供图片链接" → 停止,等待用户回复
步骤 2:构建请求 POST /mcp/api/generate/image
步骤 3:发送请求并处理响应 IF response 成功: serialNo = response.serial_no 说:"✅ 提交成功!正在生成中,请稍候..." 转到 "API 5:查询任务状态" 流程 ELSE: 转到 "错误处理" 流程
| 参数 | 必填 | 说明 |
|---|---|---|
| prompt | 是 | 图片描述 |
| model | 否 | 模型 slug(默认 seedream-5.0-pro),只能使用上方图片模型表格中的 slug |
| aspect_ratio | 否 | 1:1 / 16:9 / 9:16 / 4:3 / 3:4 / 3:2 / 2:3 / auto |
| resolution | 否 | 1K / 2K(默认)/ 4K |
| input_images | 否 | 参考图片数组(URL / base64 / 已上传的 key) |
| 字段 | 说明 |
|---|---|
| serial_no | 任务编号(用于轮询) |
| model | 使用的模型 |
| message | 提交结果消息 |
提交后必须立即轮询 get_task_status 直到完成。
用途:用户想生成视频时调用。
当用户表达 [生成视频] [做个视频] [图片变视频] 等意图时:
步骤 1:确认需求 IF 用户提供了描述: prompt = 用户的描述 ELSE: 询问用户:"请描述您想要生成的视频内容" → 停止,等待用户回复
IF 用户想做图生视频但未提供图片: 询问用户:"图生视频需要一张参考图片,请发送图片或提供图片链接" → 停止,等待用户回复
步骤 2:构建请求 POST /mcp/api/generate/video
步骤 3:发送请求并处理响应 IF response 成功: serialNo = response.serial_no 说:"✅ 提交成功!视频生成中,请稍候..." 转到 "API 5:查询任务状态" 流程 ELSE: 转到 "错误处理" 流程
| 参数 | 必填 | 说明 |
|---|---|---|
| prompt | 是 | 视频描述 |
| model | 否 | 模型 slug(默认 seedance-3.5-pro),只能使用上方视频模型表格中的 slug |
| aspect_ratio | 否 | 16:9 / 9:16 / 1:1 |
| duration | 否 | 时长秒数(常用 5 / 10) |
| resolution | 否 | 480p / 720p / 1080p |
| reference_image | 否 | 参考图片(提供后自动切换为图生视频) |
| end_frame_image | 否 | 尾帧图片(部分模型支持) |
| 字段 | 说明 |
|---|---|
| serial_no | 任务编号 |
| model | 使用的模型 |
| mode | 文生视频 / 图生视频 |
| message | 提交结果消息 |
提交后必须立即轮询 get_task_status 直到完成。
用途:查询生成进度,或生成后轮询。
步骤 1:确定要查询的任务编号 IF 是刚生成的任务: serialNo = 上一步返回的 serial_no ELSE IF 用户提供了编号: serialNo = 用户提供的编号 ELSE IF 用户说"刚才的图/最近的任务": serialNo = 最近一次提交的任务编号(从上下文记忆) ELSE: 询问用户:"请问要查询哪个任务?请提供任务编号" → 停止,等待用户回复
步骤 2:发送请求 GET /mcp/api/task/{serial_no}
步骤 3:处理响应
IF status == 2(已完成):
图片任务 → 用 内联展示 image_urls 中的每张图
视频任务 → 提供 video_url 可点击链接
ELSE IF status == 0 或 1(排队/生成中):
等待后重试(图片间隔 5 秒,视频间隔 10 秒)
继续轮询直到完成或失败
ELSE IF status == 3(失败):
展示 fail_msg 失败原因,不要重试
| 字段 | 类型 | 说明 |
|---|---|---|
| serial_no | string | 任务编号 |
| status | number | 0=排队中 / 1=生成中 / 2=已完成 / 3=失败 |
| status_text | string | 状态文本描述 |
| prompt | string | 原始提示词 |
| image_urls | array | 图片 URL 数组(仅图片任务 status=2 时有值) |
| video_url | string | 视频 URL(仅视频任务 status=2 时有值) |
| fail_msg | string | 失败原因(仅 status=3 时有值) |
用途:上传图片供后续使用。
POST /mcp/api/upload
| 参数 | 必填 | 说明 |
|---|---|---|
| image | 是 | 图片 URL 或 base64 |
返回字段:key(OSS key,可在 generate 接口的 input_images / reference_image 中复用)
⚠️ generate 接口已支持直接传入图片,一般无需单独调用。
用途:用户查看历史生成记录。
GET /mcp/api/tasks?type={image|video}&status={0|1|2|3}&page=1&limit=10
用途:用户想用 MJ/MidJourney 风格绘画时调用。
当用户表达 [用MJ画] [MidJourney绘画] [MJ风格] 等意图时:
步骤 1:确认需求 IF 用户提供了描述: prompt = 用户的描述 ELSE: 询问用户:"请描述您想要的图片效果" → 停止,等待用户回复
步骤 2:构建请求 POST /mcp/api/mj/draw
步骤 3:发送请求并处理响应 IF response 成功: serialNo = response.serial_no 说:"✅ MJ 绘画任务已提交!正在生成中..." 转到 "API 5:查询任务状态" 流程 ELSE: 转到 "错误处理" 流程
| 参数 | 必填 | 说明 |
|---|---|---|
| prompt | 是 | 描述词,支持中英文混合,建议详细描述以获得更好效果 |
| model | 否 | 模型名称或 ID(默认 V6.1),先调 /mcp/api/models?type=mj 查看可用模型,直接传返回的名称或 ID |
| aspect_ratio | 否 | 1:1(默认)/ 1:2 / 16:9 / 9:16 / 4:3 / 3:4 / 3:2 / 2:3 |
| speed | 否 | normal / fast(默认)/ turbo(仅MJ7.0)/ draft(仅MJ7.0) |
| quality | 否 | 质量化 0~100,默认 100 |
| stylize | 否 | 风格化 0~1000,默认 100(MJ 7.0 不支持) |
| chaos | 否 | 多样化 0~100,默认 0 |
| iw | 否 | 图片权重 0.25~2.0,默认 1.25(仅有参考图时生效) |
| sref | 否 | 风格参考权重 |
| cref | 否 | 角色参考 |
| oref | 否 | 物体参考 |
| input_images | 否 | 参考图片数组(URL / base64) |
| public | 否 | 是否公开作品,默认 false |
用途:对 MJ 四宫格图片执行放大、变幻等操作。
POST /mcp/api/mj/action
| 参数 | 必填 | 说明 |
|---|---|---|
| serial_no | 是 | 原始任务序列号 |
| action | 是 | 操作类型(见下方) |
操作类型:
用途:MJ 视频生成(需要首帧图片)。
POST /mcp/api/mj/video
| 参数 | 必填 | 说明 |
|---|---|---|
| prompt | 是 | 视频描述 |
| image | 是 | 首帧图片(URL / base64) |
| speed | 否 | normal(默认)/ fast |
| count | 否 | 视频数量 1(默认)/ 2 / 4 |
| motion | 否 | 动作幅度 low(默认)/ high |
| loop | 否 | 是否循环,默认 false |
| end_image | 否 | 尾帧图片 |
用途:上传图片获取 MJ 风格描述词。
POST /mcp/api/mj/describe
| 参数 | 必填 | 说明 |
|---|---|---|
| image | 是 | 图片(URL / base64) |
用途:多图混合融合。
POST /mcp/api/mj/blend
| 参数 | 必填 | 说明 |
|---|---|---|
| images | 是 | 图片数组,至少 2 张(URL / base64) |
| HTTP 状态码 | 提示语 |
|---|---|
| 401/403 | "API Key 无效或已过期,请检查 MX_AI_API_KEY 配置" |
| 5xx | "请求服务器异常,请稍后重试" |
| 超时 | "请求超时,请稍后重试" |
| 网络错误 | "网络连接失败,请检查网络或代理设置" |
⚠️ 禁止使用其他表述,禁止添加"可能原因"、"建议检查"等额外内容。
除了展示上述用户友好的提示外,还必须输出详细的技术日志供排查问题。
| 类别 | 信息内容 | 说明 |
|---|---|---|
| 请求信息 | HTTP 方法 | GET/POST |
| URL(不含 query 参数) | 如 https://mcp.mxai.cn/mcp/api/user | |
| Header(隐藏 Authorization) | Authorization 显示为 Bearer nb_******** | |
| 请求体(隐藏 key) | 如有 key 相关字段,用 ******** 替换 | |
| 响应信息 | HTTP 状态码 | 如 401、500 |
| 响应头 | 完整展示 | |
| 响应体 | 完整展示,即使是错误信息 | |
| 错误信息 | 错误类型 | 如 NetworkError、TimeoutError |
| 错误消息 | 完整的错误文本 |
使用代码块包裹详细日志,格式如下:
=== 错误详情 === 请求:POST https://mcp.mxai.cn/mcp/api/generate/image 状态码:503 错误:请求服务器异常
--- 请求头 --- Content-Type: application/json Authorization: Bearer nb_********
--- 响应头 --- Content-Type: application/json
--- 响应体 --- {"error": "Service Unavailable", "message": "Please try again later"}
⚠️ 详细日志仅供技术排查,不要让普通用户误解。先展示用户友好提示,再展示详细日志。
如果 API 响应包含未预期的字段,原样展示,不要报错。
升级提示:如果之前安装过旧版(文件夹名为 mx-ai-studio),请先删除旧文件夹再安装新版,避免两个 skill 共存冲突。
版本检查:GET https://mcp.mxai.cn/mcp/skill/version 如果 latest_version 高于 1.4.3,告知用户有新版本。