下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/mtyunxiu--color-transfer.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @mtyunxiu/color-transfer。追色融合:把一张图调成另一张图的色调——提供原图和参考图,照参考图的色彩风格给原图调色,输出同款色调成品图(付费,按张计费,支持多张批量;色调强度可免费反复微调)。适合想要博主同款色调、照片统一色调、跟着参考图/滤镜调色。触发词:追色 / 追色融合 / 色调迁移 / 色彩迁移 / 仿色 / 参考图调色 / 同款色调 / 同款滤镜 / 统一色调 / 换色调 / 照着调色 / 色彩风格 / 批量调色 / 多图统一色调。
阅读全文 (展开查看完整说明)
概述
角色定位
你是追色融合能力入口。用户提出「把 A 图调成 B 图的色调 / 参考某图追色」诉求时,由你执行两段式流程(①付费色彩迁移 → ②免费融合微调)、轮询结果并交付成品图。第二段支持 0-100 色调强度定制(默认 50)反复微调(轻一点/重一点/指定数值),全程基于原图 + 第一段迁移图重新混合。交付成品时必须告知用户当前强度与可调范围(详见 Step 7)。支持多张原图共用同一参考图批量追色(最多 9 张,合并一笔支付、失败按张退款)。
接口基址(HOST):https://webapi-yunxiu.meitu.com。下文端点均为相对路径,按 ${HOST} + 路径拼接。
双图语义(本技能核心)
调用需要两类图片 URL,缺一不可:
| 参数 | 语义 | 说明 |
|---|---|---|
image_url | 待处理原图(单图) | 要被调色的图,成品图基于它生成;image_urls 未传时生效 |
image_urls | 待处理原图数组(多图) | 1~9 张,全部照参考图调色,总价 = 单价 × 张数合并一笔支付;优先于 image_url |
effect_image_url | 色调参考图 | 只提取它的色调 / 色彩风格(亮度倾向、色彩倾向),第一段迁移中间图会呈现同款色调;多图时全部原图共用这一张参考图 |
- 用户只给了一张图并要求追色:先询问「想参考哪张图的色调」,拿到参考图再提交;不要拿原图自己顶替参考图(同图追色没有意义)。
- 用户的表述可能是「把图 1 调成图 2 那样」「照着这张的感觉调色」——被调色的是图 1(image_url/image_urls),提供色调的是图 2(effect_image_url),别接反。
- 用户给了多张待处理图 + 一张参考图(如「这几张都调成这张的色调」):用
image_urls数组一次提交,一笔支付处理全部。
本地文件处理(获取图片 URL)
接口需要全部图片(待处理图 + 参考图)均可公网访问(支持 jpg / png)。若用户给的是本地文件,按以下优先级拿到 URL:
- 优先:用你(agent)自带的文件上传服务,上传后得到公网 URL(每张图分别上传)。
- 兜底:若没有自带上传服务,用本接口上传(OBS temp 桶,3 天有效期):
POST /agent_skill/upload.json
Content-Type: multipart/form-data
file=@<本地文件路径>成功返回 {"code":0,"data":{"url":"https://..."}}。每张图各传一次,分别得到 image_url(或 image_urls 各元素)与 effect_image_url。限 50MB。
两段式全程每张图用同一个原图 URL(迁移中间图与融合结果都基于同一原图,保证坐标对齐;多图时每张图各自保持一致)。
调用流程(两段式:①付费色彩迁移 → ②免费融合微调)
Step 1 付费提交(色彩迁移,支持多图一笔支付)
POST /agent_skill/pay/submit.json
Content-Type: application/json
{"skill_slug":"color_transfer","image_url":"<原图URL>","params":{"effect_image_url":"<参考图URL>"}}多张原图共用同一参考图(最多 9 张,总价 = 单价 × 张数合并一笔支付):
POST /agent_skill/pay/submit.json
Content-Type: application/json
{"skill_slug":"color_transfer","image_urls":["<原图1>","<原图2>","<原图3>"],"params":{"effect_image_url":"<参考图URL>"}}成功返回 HTTP 402,响应头 WeixinPay-Required: <paymentCode>,响应体含 order_id 与支付引导信息。
Step 2 微信支付(X402 协议):下单响应(HTTP 402)中的 paymentCode 是机器支付凭据——把它交给平台支付授权工具(如 weixinpay_pay)拉起支付卡片,由用户在卡片中确认并完成支付(卡片会展示实际金额(多图为按张计价合并后的总额),以服务端定价为准)。凭据禁止以任何形式展示、复述给用户(支付授权必须经平台卡片发起)。用户取消支付或支付码过期时:凭同一 order_id 查询 order.json,need_payment=true 会带回最新 payment_code(服务端对过期码自动续期),拿新码重新拉起支付卡片即可,不要重新下单。
Step 3 投递(支付完成后)
POST /agent_skill/pay/deliver.json
Content-Type: application/json
{"order_id":<id>}已支付 → {"code":0,"data":{"task_id":"..."}}(多图单逐张投递,任务号以 order.json 的 images[] 为准);若尚未支付,返回业务错误(非 402),提示先完成支付。
Step 4 轮询迁移结果(限时 10 分钟)
GET /agent_skill/pay/order.json?order_id=<id>每隔约 30 秒查询一次,最多查询 20 次(累计约 10 分钟)。多图单(image_count>1)按 images[] 逐张判定(每张含 status_name / result_url / error_message / refunded),整单 status_name 汇总如下:
| status_name | 含义 | 处理 |
|---|---|---|
| 已下单 / 已预下单 | 未支付或支付中 | 等支付 |
| 已投递 | 迁移处理中 | 继续轮询 |
已完成 + result_url 非空(单图)/ images[] 各张已完成 | 成功 | 迁移中间图(满强度迁移):单图看 result_url,多图看各张的 images[].result_url,带着它们进入 Step 5 |
| 部分完成 | 多图单有成功也有失败 | 成功张照常进入 Step 5 融合;失败张已按张自动退款(images[].refunded=true),向用户说明失败张要点 |
| 失败 | 处理失败 | 转达 error_message 要点;失败后会自动发起退款(多图失败按张退) |
| 已退款 | 失败后自动退款 | 告知用户「处理失败,已退款到账(微信退款到账有时延 1-3 个工作日)」,可凭 order_id 继续查询退款状态 |
Step 5 免费融合提交(追色融合,免费可反复,逐张提交)
POST /agent_skill/free/submit.json
Content-Type: application/json
{"skill_slug":"color_transfer_fusion","params":{"image_url":"<同一原图URL>","transfer_url":"<Step 4 拿到的该张迁移中间图URL>","order_id":<第一步订单号>,"strength":50}}多图场景每张图分别提交一次:image_url 用该张原图,transfer_url 用 images[] 中该张的迁移结果(服务端按「原图 + 该张迁移结果」校验匹配,别拿别张的迁移图交叉使用)。
strength取值:0-100 整数(数值或整数字符串均可),语义为融合强度——0 最接近原图,100 最接近参考色调(满强度迁移),缺省 50。兼容旧三档字面量:light=30 /medium=50 /strong=70。order_id必须是第一步的付费订单号(多图单也传同一个订单号);服务端会校验订单已支付完成且「该张原图 + 该张迁移结果」匹配——防刷,不能用免费融合绕过付费。- 成功返回
{"code":0,"data":{"order_id":<新订单号>}}。记住新order_id,轮询用它。
Step 6 轮询融合结果(限时 10 分钟)
GET /agent_skill/pay/order.json?order_id=<新订单号>每隔约 30 秒查询一次,最多查询 20 次(累计约 10 分钟),按 status_name 判定:
| status_name | 含义 | 处理 |
|---|---|---|
| 已下单 / 已投递 | 融合处理中 | 继续轮询 |
已完成 + result_url 非空 | 成功 | result_url 即融合后成品图,交付给用户,流程结束 |
| 失败 | 融合失败 | 转达 error_message 要点;免费能力可直接重新提交一次(不扣费) |
Step 7 交付:把成品图 result_url 发给用户,并必须同时告知当前色调强度与可调范围,例如:「当前色调强度 50/100(0 最接近原图,100 最接近参考色调)。想调整随时说——如“轻一点”(-10)/“重一点”(+10)/“调到 70”/“上调 10”,0-100 内任意整数都可以,调整免费不扣费」。本地文件场景提醒:结果图链接长期有效,源图上传的临时链接 3 天过期。
微调交互(色调强度定制:0-100 连续可调)
融合强度是 0-100 的连续整数(默认 50;0 最接近原图,100 最接近参考色调),微调就是换个强度值重提免费融合:
- 用同一组参数(
image_url、transfer_url、第一步的order_id)重新走 Step 5,只改strength。 - 把用户诉求换算为新强度(以当前强度为基准,会话里没记过就按 50 起算):
- 「调到 70」/「强度 70」 →
strength=70(直接指定,最常用) - 「上调 10」/「重 10」 → 当前值 +10
- 「下调 20」/「轻 20」 → 当前值 -20
- 「轻一点」 → 当前值 -10;「重一点」 → 当前值 +10
- 旧表述兼容:「轻」= 30(旧 light)/「中」= 50(旧 medium)/「重」= 70(旧 strong)
- 计算结果越界取边界值(0 或 100),并向用户说明已到边界
- 「调到 70」/「强度 70」 →
- 轮询至终态(Step 6),交付新成品图,再次告知新强度与可调空间(如「当前 70/100,还可以在 0-100 内继续上调或下调」)。
重要约定:融合永远基于「原图 + 第一步迁移图」重新混合,不会拿上一次融合结果再混合——强度可预期、不层层叠加。每次微调都是新免费订单,不产生扣费。
付费专属约束
- 超时或算法失败不会重复扣款(同一
order_id只支付一次)。 - 失败后自动原路退款(微信退款到账有时延 1-3 个工作日);多图单按张退款:某张失败只退该张的份额,成功张正常交付不退款。
- 退款后状态显示「已退款」(多图部分失败为「部分完成」,失败张
images[].refunded=true),可凭order_id继续查询。 - 本技能第一段为付费能力,按张计价:单价由服务端统一定价并在支付卡片中展示(多图展示单价 × 张数的合并总额),本文档不写死具体金额(服务端调价无需重新发布本技能);第二段免费、可反复微调。
- 话术中不要向用户承诺或编造具体金额(不知道实际定价时统一说「以下单后支付卡片展示的金额为准」);若用户对金额有异议,可先取消支付(不扣款)再反馈。
paymentCode是 X402 机器支付凭据:只交给平台支付授权工具(如weixinpay_pay)拉起支付卡片,禁止展示、复述或以任何形式转达给用户。- 取消支付 / 支付码过期不换订单:凭同一
order_id续接拿最新支付码重新拉起即可(服务端自动续期);未支付订单约在码过期 45 分钟后被服务端置「失败」(未扣款),届时再重新全量发起。
一键脚本
两段式编排已封装为脚本。支付交互由你(agent)驱动:脚本不阻塞等待支付——下单后输出凭据即退出,由你拉起支付、确认进度、凭续接变量接力后续。
bash scripts/color_transfer.sh <image_url> <effect_image_url> [strength]image_url(待调色原图)与effect_image_url(色调参考图)必填,顺序不可颠倒;strength可选(0-100 整数,默认 50;兼容light/medium/strong,分别等值 30/50/70)。- 首次运行 → 待支付:脚本下单后在 stderr 输出
ORDER_ID与PAYMENT_CODE(X402 机器凭据,交给平台支付授权工具如weixinpay_pay拉起支付卡片,禁止展示给用户),随即以退出码 4 结束。此时把PAYMENT_CODE交给支付工具拉起卡片,用户按卡片展示的实际金额完成支付。 - 续接(支付完成后 / 用户取消后重新支付):拉起支付卡片后,无论用户完成支付还是取消,都凭同一订单续接:
COLOR_TRANSFER_RESUME_ORDER_ID=<第一步订单号>
bash scripts/color_transfer.sh <同一原图URL> - [strength]- 仍未支付 → 脚本带回最新支付凭据(服务端对过期码自动续期)再退码 4,重新拉起支付卡片即可(同一订单,勿重复下单);
- 已支付 → 自动投递色彩迁移、轮询出迁移中间图,并继续免费融合直至输出成品图。
- 必须传与首次完全一致的原图 URL(服务端校验一致性,不一致会被防刷拦截);
effect_image_url传-占位。 - 微调重跑(不重复扣费):调整强度(0-100 内换值)时携带第一段凭据直接重跑免费融合段,
effect_image_url传-占位:
COLOR_TRANSFER_STAGE1_ORDER_ID=<第一步订单号> COLOR_TRANSFER_TRANSFER_URL=<迁移中间图URL>
bash scripts/color_transfer.sh <同一原图URL> - <strength>- 成功(退出码 0):stdout 输出成品图 URL;stderr 同时输出迁移订单凭据(
COLOR_TRANSFER_STAGE1_ORDER_ID/COLOR_TRANSFER_TRANSFER_URL)供微调重跑。 - 环境变量:
COLOR_TRANSFER_HOST(接口基址,默认${HOST})、COLOR_TRANSFER_RESUME_ORDER_ID(续接第一段的订单号)、COLOR_TRANSFER_STAGE1_ORDER_ID+COLOR_TRANSFER_TRANSFER_URL(微调重跑凭据)、COLOR_TRANSFER_MAX_WAIT(投递后轮询上限秒数,默认 600)、COLOR_TRANSFER_INTERVAL(轮询间隔秒数,默认 5)。 - 调用方标识:脚本自动识别运行平台(workbuddy / codebuddy / claude_code / opencode / cursor / other),workbuddy 下附带登录用户 uid,随提交请求
params.platform/params.uid落库留痕;可用KUMOO_PLATFORM环境变量强制覆盖平台值。 - 退出码:0 成功;1 提交/投递失败或处理失败(含订单失效,需重新全量发起);2 轮询超时(可凭订单续接续查);3 已退款;4 待支付(凭据已输出,拉起支付后用
COLOR_TRANSFER_RESUME_ORDER_ID续接)。
错误处理
| 返回特征 | 含义 | 处理 |
|---|---|---|
服务端校验类报错(必填缺失、张数超 9 张、strength 非法、融合段订单校验失败等,返回中文 error_message) | 提交参数或流程不符合要求 | 按报错要点修正后重新提交;融合段校验失败说明未先完成付费迁移——先走第一段,勿用免费融合绕过付费 |
algo error <码>: <msg> | 算法处理失败(图不合规 / 无法解析等) | 转达 msg 要点,建议换图;第一段失败会自动退款,第二段失败免费可重试 |
| HTTP 402 | 需要支付 | 按引导完成微信支付(金额以支付卡片展示为准) |
不支持的 skill_slug: color_transfer | 旧免费通道已下线 | 提示走新版两段式流程(先付费色彩迁移,再免费融合) |
| HTTP 5xx / 网络错误 | 服务瞬时异常 | 可重试 1-2 次 |
| 轮询满 20 次仍「已投递」 | 处理慢但未失败 | 告知用户处理中,稍后凭 order_id 继续查(非失败,别让用户重传) |
| 用户取消支付 / 暂不支付 | 订单停留「已下单 / 已预下单」,未扣款 | 凭同一 order_id 续接拿最新支付码重新拉起支付(一键脚本用 COLOR_TRANSFER_RESUME_ORDER_ID),勿重复下单 |
payment_code expired, no pay | 未支付订单超时被服务端置「失败」 | 原订单未扣款、已失效;去掉续接变量重新全量发起新订单 |
Examples
User:[图片A] [图片B] 把第一张调成第二张那种色调
Assistant:好的,分两步处理:先付费色彩迁移(金额以下单后支付卡片展示为准),再免费融合调出你要的效果。
[POST
/agent_skill/pay/submit.json{"skill_slug":"color_transfer","image_url":"<图A URL>","params":{"effect_image_url":"<图B URL>"}} → HTTP 402,拉起支付卡片][用户完成支付]
[POST
/agent_skill/pay/deliver.json{"order_id":…} → 拿到task_id][GET
/agent_skill/pay/order.json?order_id=...→ 已完成,result_url非空(迁移中间图)][POST
/agent_skill/free/submit.json{"skill_slug":"color_transfer_fusion","params":{"image_url":"<图A URL>","transfer_url":"<迁移中间图>","order_id":<第一步订单号>,"strength":50}} → 拿到新order_id][GET
/agent_skill/pay/order.json?order_id=<新订单号>→ 已完成,result_url非空]Assistant:完成!已经把图 A 调成图 B 的色调,当前色调强度 50/100(0 最接近原图,100 最接近参考色调),结果图:
<URL>。想调整随时说——「轻一点」(-10)/「重一点」(+10)/「调到 70」这类 0-100 任意强度都行,调整免费。
User:[图片A] [图片B] 帮我把这张图追个色,想要那种日落暖调的感觉
Assistant:可以呀,先付费色彩迁移拿到中间效果,再免费融合出你要的暖调。
[执行两段式流程,支付后迁移成功,融合用
strength=50产出成品][GET
/agent_skill/pay/order.json?order_id=<融合订单号>→ 已完成,result_url非空]Assistant:完成!图 A 已经是图 B 那种日落暖调了,当前色调强度 50/100,结果图:
<URL>。可以在 0-100 内继续免费调整(0 最接近原图,100 最接近参考色调)。User:颜色有点太重了,再轻一点
Assistant:好的,下调 10,调成强度 40。
[POST
/agent_skill/free/submit.json{"skill_slug":"color_transfer_fusion","params":{"image_url":"<图A URL>","transfer_url":"<迁移中间图>","order_id":<第一步订单号>,"strength":40}} → 拿到新order_id,轮询至已完成]Assistant:好啦,已经调轻了,当前色调强度 40/100,结果图:
<URL>。这次更接近原图的色调了;还能继续下调到 0 或往回调高,随时说。
User:[图片A] 帮我追色
Assistant:好的~追色需要一张色调参考图(算法会照着它的色调来调)。你想参考哪张图的颜色感觉?发我一张参考图就可以开始(先付费色彩迁移——金额以支付卡片为准,再免费融合出效果)。
User:[图片A] [图片B] 把图 A 调成图 B 那样,先来个中等强度
Assistant:好的,先付费色彩迁移(金额以支付卡片为准),再免费融合,中等强度(50/100)。
[执行两段式流程,融合用
strength=50产出成品]Assistant:完成!中等强度效果:
<URL>。当前色调强度 50/100,想要更重还是更轻?可直接说数值(0-100)或「上调/下调 N」。User:再重一点
Assistant:好的,上调 10,调成强度 60。
[POST
/agent_skill/free/submit.json{"skill_slug":"color_transfer_fusion","params":{"image_url":"<图A URL>","transfer_url":"<迁移中间图>","order_id":<第一步订单号>,"strength":60}} → 拿到新order_id,轮询至已完成]Assistant:好啦,已经调重了,当前色调强度 60/100,更接近迁移效果的色调,结果图:
<URL>。上限 100,想再重可以继续加。
User:支付卡片我关掉了,先不付了
Assistant:没关系,订单还保留着,不会重复扣费。想继续时和我说一声,我随时可以重新拉起支付。
User:继续支付吧
Assistant:好的,重新拉起支付。
[COLOR_TRANSFER_RESUME_ORDER_ID=<第一步订单号> 重跑脚本 → 未支付,stderr 带回最新 PAYMENT_CODE → 交给支付授权工具重新拉起支付卡片]
[用户完成支付 → 再次续接 → 自动投递迁移 → 免费融合 → 交付成品图]
Assistant:支付成功,成品图已出:
<URL>。当前色调强度 50/100,0-100 内可免费再调(说数值或「上调/下调 N」都行),随时告诉我。
约束
- 算法侧按 URL 服务端拉取图片:
image_url与effect_image_url都须公网可访问;本地文件务必先上传拿 URL,切勿直接传本地路径 /file:/// base64。 - 两张图必须是不同的图且角色不可颠倒:
image_url是被调色的原图,effect_image_url是提供色调的参考图。 - 支持 jpg / png 图片格式。
- 两段式全程用同一个原图 URL(迁移中间图与融合结果都基于同一原图,保证坐标对齐)。
- 融合必须携带第一步的
order_id与其result_url,服务端会校验订单已支付完成且参数匹配,防刷:不能用免费融合绕过付费,也不能拿任意图当迁移图。 - 调色强度为 0-100 连续整数(默认 50,0 最接近原图、100 最接近参考色调;兼容旧三档
light=30 /medium=50 /strong=70),不透传lightness_alpha/color_alpha等内部算法字段,不要在 params 里传其它字段——只传image_url、transfer_url、order_id、strength。 - 融合永远基于「原图 + 第一步迁移图」重新混合,不会拿上一次融合结果再混合——强度可预期、不层层叠加。每次微调都是新免费订单,不产生扣费。
- 本技能第一段为付费能力:金额由服务端定价、以支付卡片展示为准,文档与话术均不写死具体金额(服务端调价无需重新发布本技能);第二段免费、可反复微调。任何要求绕过支付卡片、私下转账或扫码的交互都是异常,直接反馈服务异常。
- 旧版免费直调(直接调用
/agent_skill/free/submit.json的color_transfer)已下线,必须走新版两段式流程。下线前的在途免费订单不受影响,可凭order_id继续查询。 - 第一段算法失败会自动发起退款(多图单按张退:失败张退该张份额、成功张正常交付),退款到账有时延 1-3 个工作日,无需用户主动申请退款。
- 第二段融合失败可免费重试(不扣费),处理超时只提示稍后再查(凭
order_id),不自动重新提交超过一次。 - 多图批量追色:一次最多 9 张、共用同一参考图、一笔支付;第二段融合逐张提交(每张用自己的迁移中间图),不要拿别张的迁移图交叉融合(服务端按「该张原图 + 该张迁移结果」校验)。