mcpField
S
scenario-chatgpt-pet-create

scenario-chatgpt-pet-create

github.com/scenario-labs创意与媒体1.2k151 次安装1 天前更新
代码仓库

关于 scenario-chatgpt-pet-create

scenario-chatgpt-pet-create 是为 ChatGPT 或 Codex 制作动画宠物精灵表及相关文件的 Skill。它通过 Scenario MCP 服务生成各动画行,再用本地脚本组装、验证、预览并打包交付物。

主要功能

  1. 01创建 v1 和 v2 精灵表
  2. 02依据参考图生成动画行
  3. 03生成动画 GIF 预览
  4. 04验证精灵表布局和帧
  5. 05打包供 ChatGPT 或 Codex 使用

适用场景

  1. 01根据描述创建宠物
  2. 02将给定照片制作成宠物
  3. 03为 Codex 准备精灵包
  4. 04制作 ChatGPT 网页版所需 v1 文件

MCP 相关

所有图像均通过 Scenario MCP 服务生成。本地 Python 脚本负责切帧、组装和验证精灵表、制作 GIF 及打包;没有 MCP 工具负责组装精灵表。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-chatgpt-pet-create

安装后在 Claude Code 中输入/scenario-chatgpt-pet-create确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
sheet-contract.md
scripts/
pet_build.py
pet_check.py
pet_common.py
pet_frames.py
pet_package.py
pet_prepare.py
pet_preview.py

详细介绍

场景 ChatGPT 宠物:创建

概述

ChatGPT 宠物是一张透明精灵图:单元格为 192x208,共 8 列、9 行动画(v1, 1536x1872),外加两行共 16 个朝向(v2,1536x2288)。行、帧数、每种状态必须呈现的内容、 朝向、评估文件和打包布局详见: references/sheet-contract.md。首次生成前请先阅读。

此技能会在运行目录中生成 v2 精灵图(除非用户只需要 v1)、一份用于上传到 ChatGPT 网页版的 v1 副本、柔和背景上的 pet.gif 和 pet-transparent.gif,以及 Codex pet.json 包;只有用户同意后才会安装。所有图像都通过 Scenario MCP 服务生成;帧裁切、精灵图组装、 验证、GIF 制作和打包都由随附脚本在本地完成,因为交付物是供 ChatGPT 或 Codex 使用的文件, 而且没有 MCP 工具能组装宠物精灵图。图像模型不会绘制整张精灵图:它一次只绘制一行,再由脚本 放置每一帧。

连接、范围和核心循环:scenario 技能。修改已有精灵图的宠物: scenario-chatgpt-pet-update。如果你的可用技能中缺少此处提到的同类技能,请让用户安装 (npx skills add scenario-labs/skills --skill <name>);若在无人值守模式下运行,请根据工具 架构继续操作,并标记这一缺失。

脚本由 Agent 使用 Python 3、Pillow 和 NumPy 运行(pip install pillow numpy;如果系统 Python 不允许安装,请在运行目录之外的虚拟环境中安装),并从用户工作目录通过本技能 scripts/ 文件夹中的路径调用(下方命令简写了该路径)。每个脚本都会输出 JSON,或输出 error: ... 并以退出代码 1 结束;--help 会列出所有选项:

  • pet_prepare.py:运行目录、背景键、每个任务的一条提示词和请求尺寸 (init)、额外提示词句子(note)、像素网格和调色板(pixel)。
  • pet_frames.py:将生成的条带裁切为帧并报告问题 (extract);读取现有精灵图(split,由更新技能使用)。
  • pet_build.py:组装精灵图,为每一行设置统一的宠物高度、地面线和落地锚点。
  • pet_check.py:验证要交付的确切文件。
  • pet_preview.py:联系表、带标签的朝向图、GIF。
  • pet_package.py:打包和可选的 Codex 安装。
  • pet_common.py:共享布局信息,由其他脚本导入。

快速参考

步骤操作
简要说明文本、参考图像或两者兼有;最多进行一轮提问,提问不超过四个
设置pet_prepare.py init;对任务在 references 中列出的每个文件调用 upload_asset
模型,按此顺序model_openai-gpt-image-2-5-sunburst,然后是 model_google-gemini-nano-banana-2-1;仅当两者都受阻时才使用 recommend
每次生成每个模型调用一次 model_schema_get,再调用 dry_run,使用任务的 prompt 和 sizes 调用 model_run,调用 jobs_wait,再以 format: "png" 调用 asset_download,保存到任务的 output
像素级精准基础图获批后、生成任何行之前:先对基础图调用一次 Pixel Snapper(model_pixel-snapper),然后运行 pet_prepare.py pixel
每条条带pet_frames.py extract RUN --job <id>;读取 JSON;查看 frames/<id>/preview.png
第 0-8 行完成pet_build.py RUN --version 1 --out RUN/qa/checkpoint,然后运行 pet_preview.py contact 和 gif
完成pet_build.py RUN、pet_preview.py looks、判定结果、pet_check.py、pet_preview.py gif、pet_package.py make

模型 ID 是特意这样命名的:两者都能在参考图像的八个姿势行中保持同一个角色,这正是此任务所需的;无法运行两者的团队则根据需求和模型系列(GPT Image、Nano Banana)改用 recommend。Pixel Snapper 是 Scenario 提供的工具,可将生成的像素艺术对齐到整洁的网格和调色板。请阅读每个架构定义,不要只相信下文列出的尺寸:编写本文时,Sunburst 接受 referenceImages(数组,最多 10 张)、width 和 height(16 至 3840,步长为 16)、background(此处为 opaque)和 quality(本文记录的每次运行均使用默认值),并会自行拉宽极端形状(请求 3584x512 时,它返回了 3584x1200),因此 init 要求高度至少为宽度的三分之一;Nano Banana 接受最多 14 张 referenceImages 和 aspectRatio 预设(4:1、8:1)。预算应依据 dry_run 报价制定,这才是每项任务的计费金额:jobs_wait 报告的 cuCost 可能不包括项目 Quality Gate 等附加费用,因此仅跟踪该数值会低估支出。编写本文时,基础图报价为 13.75 CU,每条条带为 13.75 至 17.75 CU(较宽的条带费用更高),Snapper 调用为 6.75 CU,因此像素级精准的 v2 宠物(12 次生成,其中 running-left 采用镜像,另加 Snapper)在任何修复前约需 198 CU;若必须生成 running-left,则约需 216 CU:预算应留出修复两到三行的空间。无人值守时,切勿启动一个任务,使已花费报价与尚需报价之和超过预算:如果只剩外观行,就不包含这些行,交付 v1;否则停止并报告。

示例:根据照片制作一只穿黄色雨衣的柯基 Biscuit

  1. 简述。 用户发送一张照片和一句话。只询问一次,只问会影响美术效果的内容:名称和一句话描述(默认:推断)、风格(auto、pixel、plush、clay、sticker、flat-vector、3d-toy、painterly、brand-inspired)、是否要求像素级精确,以及使用带外观方向的 v2(默认)还是仅用 v1。品牌名称没有视觉线索时,询问颜色、形状和风格气质;绝不复制徽标或可读文字。无人值守时,推断并记录答案,根据简述自行完成下文的所有审核(并记录原因),绝不安装。确定团队和项目,然后为宠物创建一个集合(调用 collection_create,再对每个保留的输出调用 collection_add_assets,遵循 scenario 技能)。
  2. 设置。 python3 scripts/pet_prepare.py init --name Biscuit --notes "corgi in a yellow raincoat, red collar" --reference photo.jpg --out pets/biscuit (像素级精确时添加 --pixel:它会在每条提示词中设置像素风格;添加 --version 1 则跳过外观方向行。)它会挑选与参考图形成对比的背景键(或根据备注选择:粉色宠物配绿色,绝不配洋红色),并写入 jobs.json:每个任务包含 id、frames、prompt、retry_prompt、references(相对于运行目录的文件)、每个模型对应的 sizes、depends_on 和 output。任务即将运行时,对它在 references/ 下列出的每个本地文件调用一次 upload_asset(记录其 id);generated/ 中的文件已经是资源,因此应传入该任务返回的 id,而不是上传下载文件。
  3. 基础图。 运行 base 任务,将 referenceImages 设为已上传照片的 id(仅文本描述的宠物则不传),原样使用其 prompt 以及 Sunburst 的 width/height,并设置 background: "opaque"。下载到 generated/base.png,运行 pet_frames.py extract RUN --job base,生成干净的身份参考图 references/base.png,并用 asset_display 展示基础图。用户批准前不得开始其他任务;如果警告称宠物与键色接近,则使用另一个键运行 init --force --chroma-key,并重新生成基础图。
  4. 像素级精确变体。 对获批的基础图资源运行 model_pixel-snapper,保留生成图的背景及其他所有内容(使用 image;colors 设为 24,除非用户希望更少;可设置固定的 seed),下载后运行 pet_prepare.py pixel RUN --snapped snapped.png --colors <same>。它会选用每个美术像素对应 8、4、2 或 1 个屏幕像素的网格,保留调色板,并将放大的像素版本写回 references/base.png(上传这个新文件),这样每一行都基于干净的像素绘制,构建时也会将每一帧对齐到同一网格和调色板。只对基础图进行像素对齐:逐帧处理会导致各帧使用不同网格,而且每帧都要调用一次模型。
  5. 动画行。 基础图完成后,除等待 running-right 的 running-left 外,所有标准行彼此独立。先启动 idle 和 running-right,检查身份和步态,再根据团队并发限制分批启动其余任务(使用 wait: false,每批调用一次 jobs_wait;根据 scenario 技能,若 429 错误中提到 parallel-custom-jobs,则该值就是并发上限)。每一行:referenceImages = 已上传的 references/base.png 加上用户照片,另加任务的 prompt 和 sizes。每次下载后都运行 extract、读取 JSON 并查看预览:若有错误(数量不对、姿势碰到图像边缘)或姿势不对,立即重新生成该行,使用 retry_prompt,或通过 pet_prepare.py note RUN --jobs <id> --text "..." 添加一句说明。若宠物镜像翻转后看起来完全相同(没有左右手之分、文字或倾斜方向,因此不适用于带单侧斑块的柯基或叶片倾斜的机器人),则跳过生成 running-left,改为在每次调用 pet_build.py 时传入 --mirror-left。
  6. 检查点。 运行 pet_build.py RUN --version 1 --out RUN/qa/checkpoint,然后运行 pet_preview.py contact RUN/qa/checkpoint.png --out RUN/qa/contact.png 和 pet_preview.py gif RUN/qa/checkpoint.png --out-dir RUN/qa/checkpoint-previews;pet_check.py RUN/qa/checkpoint.png --run RUN --json-out RUN/qa/checkpoint-check.json 会在支付外观方向行的费用前检查高度和跳跃错误。展示 GIF(打开本地文件,或上传后分享 asset_display 返回的 app_url);反馈应针对受影响的行进行修改,绝不要写入表格。
  7. 外观方向行(v2)。 确定宠物四处活动时的表现(哪些部位保持不动、哪个部位带头动作、眼睛和耳朵如何移动),然后通过 note --jobs look-cardinals,look-9,look-10 添加说明,再运行 look-cardinals(四个姿势:上、右、下、左)。提取后,先目视审核全部四个姿势:如果某个方位在宠物尺寸下看不出来,立即重新生成。然后运行 look-9,提取后运行 pet_build.py RUN --out RUN/qa/checkpoint(它会警告 look-10 仍为空),再运行 pet_preview.py looks RUN/qa/checkpoint.png --out RUN/qa/looks.png 查看效果;之后运行 look-10,其参考图包含 generated/look-9.png,以便延续动作序列。
  8. 完成。 pet_build.py RUN 会执行一次边缘清理,并写入 final/spritesheet.png 和 final/spritesheet.webp。运行 pet_preview.py looks RUN/final/spritesheet.webp --out RUN/qa/looks.png,查看效果,并按约定格式写入 qa/direction-semantics.json。 pet_check.py RUN/final/spritesheet.webp --run RUN --require-v2(仅 v1 的宠物不传 --require-v2)必须打印 ok: true;按提示修复问题并重新构建。 然后运行 pet_preview.py gif RUN/final/spritesheet.webp --out-dir RUN/previews,再对精灵图和两个 GIF 调用 upload_asset(kind: "image" 接受 WebP 和 GIF,且 GIF 会保留动画),用 collection_add_assets 将它们归档,然后展示本地的 pet.gif(内嵌的 asset_display 可能只显示单帧;它返回的 app_url 可以播放动画)。
  9. 打包。 pet_package.py make RUN 会生成 package/biscuit/(包含 pet.json、spritesheet.webp)、package/spritesheet-v1.png 和 GIF。告知用户:ChatGPT 网页版可在 Settings > Personalization > Pet > Select pet > Upload pet 中上传 v1 文件;名称在此处设置,外观方向不会显示(仅 v2 文件包含外观方向);Codex 桌面版则使用打包文件夹。运行 pet_package.py install RUN 前先征得用户同意:它会将文件复制到 ${CODEX_HOME:-~/.codex}/pets/biscuit/,若已有宠物则不会在没有 --force 的情况下替换,并会先将其备份到本次运行目录。

常见错误

  • 在一张图里生成整张图集,或将长条图切分成大小相同的格子:模型无法精确绘制像素网格,因此 extract 会根据形状找到每个姿势,再由 pet_build.py 放置它们。
  • 生成失败时用代码绘制帧:应停止并报告。脚本只会移动、缩放、镜像和清理生成的像素。
  • 未阅读警告就接受某一行:被图像边缘切断的姿势、多出的姿势,或宠物内部的键色像素,在构建后都会变成损坏的帧。
  • 通过重新生成所有内容来修复图集:保留所有通过检查的行,只重新生成未通过的最小范围行;如果同一问题重复出现两次,就改用其他方法(简化姿势、添加一句 note、减少道具),而不是重复运行相同的提示词。
  • 将重新生成的某个朝向拼接到已批准的行中:朝向错误时要重新生成整行,这样十六个姿势才能保持为同一系列。
  • 批准一个只有加上标签才能看懂的基本方向:000 表示朝上,不是中立方向;右表示观察者的右侧。
  • 在运行 pet_check.py 后重新编码或编辑图集:打包步骤会比较 SHA-256,并拒绝其他字节;请重新构建并再次检查。
  • 只把 v2 文件发给要在 ChatGPT 网页端上传的人:OpenAI 为该上传方式记录的尺寸是 1536x1872,也就是 spritesheet-v1.png。
  • 未经询问就覆盖现有的 Codex 宠物进行安装:这种情况下 install 需要 --force,并且要获得用户同意。

评论

支持 Markdown