构建微信表情包 是做什么的?
创建一个端到端的20个表情制作流程,基于参考图片完成生产。保留原始文件,独立生成每个表情,准备微信发布素材,进行验证,并打包。
所需的配套技能和工具
在生成图片之前,请完全阅读并遵循已安装的 imagegen 技能。默认使用其内置的图像生成路径。不要默默切换到 CLI/API 回退方案。
使用:
- 内置
image_gen生成角色锚点图、20个独立的表情画稿、横幅、封面和图标; view_image进行参考图检查和视觉质量检查;scripts/sticker_pack.py执行确定性采集、文字合成、验证、联系方式生成和打包;- 官方微信/腾讯来源以刷新有实效的发布规则。
将 <skill-dir> 解析为包含此 SKILL.md 的目录;不要假设工作区的工作目录就是技能目录。
非协商性约束
- 生成恰好20个最终表情,编号为
01.png到20.png。 - 通过20次独立的
image_gen内置调用生成20个表情画稿。绝不可使用拼贴画、多图面板、联系方式图像、使用n的单次调用或重复的画稿作为替代。 - 首先生成一个独立的、不带文字的角色锚点图。该锚点不计入20个表情。
- 逐字节保留每个提供的参考文件,包括其原始文件名、扩展名、EXIF信息、文件大小和SHA-256哈希值。绝不可覆盖、转码、裁剪或剥离已归档的副本。
- 保留每个被接受的高分辨率原始生成画稿和每个高分辨率最终母版。在有利于审核时,将拒绝的重试输出保留在源目录
versions/下,但绝不可用它们替代已接受的位。 - 联系方式仅保留在预览/审查目录下;绝不可将其放入提审包中。
- 请勿编造所有权、版权、肖像同意书、AI披露或审核状态。
- 仅当所有20个表情、发布素材、元数据、人工审核关口和权利关口均通过时,才将本次制作标记为
ready-to-submit。
输入约束和个人默认值
对于正常的自有版权制作,仅需一张或多张参考图片。从 assets/creator-profile.json 加载此用户的可复用默认值。
如果 copyright_holder 为空,则提出一个引导性问题以获取确切的真实提交者/版权名称,将其保存到配置文件中,然后继续操作。绝不可用仓库维护者的身份替代其他用户。
应用已保存的版权持有者和发布选择。在检查参考图片后明确设置本次制作的权利和肖像布尔值。对于私下提供的自拍参考,仅在没有冲突信息时,将调用视为用户的证明。如果图片是公众人物、第三方作品、下载的画稿、明显的品牌IP或同意情况不明的人,在宣布包为“可提交”之前,先提出一个简洁的权利问题。
如果多张图片明显显示同一主体,则将它们合并为身份参考。如果显示的是不同的主体且意图不明确,则提出一个主体选择问题。
输出目录结构
在 output/wechat-sticker-pack/<slug>-<timestamp>/ 下创建一个新的制作目录:
00-reference-originals/ 未修改的用户输入 + 哈希值
01-plan/ pack.json, 计划CSV, 角色/风格圣经, 提示词
02-source-assets/
character-anchor.png
generated-raw/stickers/ 20个未修改的图像生成输出
generated-raw/assets/ 横幅, 封面, 图标的源文件
generated-masters/ 20个高分辨率文字合成母版
03-submission/
stickers/ 01.png ... 20.png
assets/ 横幅, 透明封面, 透明图标
metadata/ 公开副本, 含义说明, 权利/AI声明
qa/ QA JSON/TXT 和哈希值
04-preview/contact-sheet.png
archives/<slug>-submission.zip
archives/<slug>-full-archive.zip 或 <slug>-draft-full-archive.zip
state.json 仅本地状态;排除在归档包之外
工作流程
1. 刷新平台规则
阅读 references/wechat-publish-spec.md。在有网络时,每次制作前浏览微信表情开放平台和当前官方资源代码。如果支持的规则发生了变化,记录 changed-unsupported,在生成前停止,并在继续之前更新技能和测试;绝不可仅通过修改制作元数据来声称兼容性。
如果无法验证当前规则,则仅作为草稿继续,使用带日期标记的快照,并记录 rules_status: snapshot-unverified 加上实际检查日期。如果检测到规则变更,则记录 rules_change_details;脚本会阻止生成,直到技能更新。
2. 检查参考图片并建立权利
使用 view_image 检查每一张参考图片。明确标记其角色:身份参考、可选服装参考、可选风格参考。
根据可见的、非敏感的特征构建角色圣经。不得从外貌推断职业、健康状况、人际关系、种族或个性。
使用 assets/creator-profile.json 中的个人默认值,除非当前请求覆盖它们。遵循 references/rights-and-ai.md。
3. 规划恰好20个表情
在编写计划之前阅读 references/content-planning.md。创建一个冻结的 pack.json,它必须符合 references/pack-schema.json 并包含:
- 当前专辑名称、简介、版权、平台选择以及权利/AI字段;
- 恰好20个唯一条目,ID为
01–20; - 唯一的意图、准确文本、含义词、表情、姿势/动作、道具、构图、文字区域和绘画提示词;
- 一个角色圣经、风格圣经、共享避免列表、一个锚点提示词和发布素材提示词。
不要自动复用前一个包的固定短语。优先使用用户提供的短语,然后动态填充剩余的沟通角色。
将配置文件模板复制到运行计划中并初始化制作:
python <skill-dir>/scripts/sticker_pack.py init \
--run-dir <run-dir> \
--spec <prepared-pack.json> \
--reference <reference-image> [--reference <image> ...]
4. 生成并注册角色锚点图
使用原始参考图片生成一个中性、不带文字的Q版角色锚点图。保留关键可见身份特征和一套简化的服装。使用纯色的制作背景,无道具、文字、标志、签名、边框或水印。
将确切的冻结锚点提示词保存为 UTF-8 文本,然后注册生成的文件:
python <skill-dir>/scripts/sticker_pack.py import-art \
--run-dir <run-dir> --kind anchor --source <anchor.png> \
--generator builtin-imagegen --prompt-file <anchor-prompt.txt>
5. 生成20个独立的不带文字表情画稿
阅读 references/prompt-templates.md。对于每个冻结的计划项:
- 使用原始参考图片加上相同的角色锚点图,调用内置
image_gen一次。 - 重复共享的身份和风格不变要素。
- 仅更改计划的表达、姿势/动作、道具、构图和预留文字区域。
- 生成一个独立的方形画稿,不包含任何文字或类似文字的标记。
- 检查身份一致性、动作、裁剪、背景、杂散文字、水印和单图合规性。
- 导入已接受的原始图像:
python <skill-dir>/scripts/sticker_pack.py import-art \
--run-dir <run-dir> --kind sticker --slot <01..20> --source <generated.png> \
--generator builtin-imagegen --prompt-file <slot-prompt.txt>
重试策略:
- 对于工具失败,使用相同提示词重试一次;
- 对于身份漂移、错误动作、裁剪、杂散文字或多面板输出,进行一次有针对性的提示词修正;
- 使用参考图片 + 锚点图 + 最佳尝试进行第三次有针对性的尝试;
- 对于一个插槽,在三次尝试失败后停止,完成安全的剩余工作,并将制作标记为草稿/未就绪状态。绝不可用重复项填补空缺。
6. 合成精确文字并发布表情贴图文件
使用确定性渲染器,而不是信任生成的汉字:
python <skill-dir>/scripts/sticker_pack.py render-stickers --run-dir <run-dir>
渲染器会保留原始图像生成文件,创建带有精确计划文字的高分辨率母版,生成240×240的上传PNG文件,去除衍生的EXIF信息,并写入一个包含文字、编码点、字体、源文件哈希值、输出哈希值和布局的收据。
如果渲染器无法以可读的方式容纳确切的文字,请仅修改该计划项的文字或布局后再进行渲染;绝不可静默地截断或将其缩小到最小尺寸以下。
7. 生成发布素材
通过三次独立的内置调用生成三个不同的素材:
- 详情横幅:彩色不透明故事场景,无文字/数字,无白色或透明背景;
- 专辑封面:在完全平坦的色度键背景上的可识别前半身/全身,无文字或白色轮廓线;
- 聊天图标:在相同平坦色度键上的正面头部特写,无手、文字、装饰、白色轮廓线或边框。
选择一个主体中不存在的关键色:默认 #00ff00,当主体/服装包含绿色时使用 #ff00ff。在素材提示词和抠除命令中固定该选择。
使用图像生成技能要求的辅助程序去除封面/图标的色度键。验证Alpha通道结果;仅在还有残留边缘时,使用 --edge-contract 1 重试一次。
在去除色度键之前导入原始的色度输出,然后导入已接受的横幅和已透明的封面/图标:
python <skill-dir>/scripts/sticker_pack.py import-art --run-dir <run-dir> --kind cover-chroma --source <cover-chroma.png> --generator builtin-imagegen --prompt-file <cover-prompt.txt>
python <skill-dir>/scripts/sticker_pack.py import-art --run-dir <run-dir> --kind icon-chroma --source <icon-chroma.png> --generator builtin-imagegen --prompt-file <icon-prompt.txt>
python <skill-dir>/scripts/sticker_pack.py import-art --run-dir <run-dir> --kind banner --source <banner> --generator builtin-imagegen --prompt-file <banner-prompt.txt>
python <skill-dir>/scripts/sticker_pack.py import-art --run-dir <run-dir> --kind cover --source <cover-alpha.png> --generator local-chroma-removal --chroma-key <#RRGGBB> --edge-contract <0..3>
python <skill-dir>/scripts/sticker_pack.py import-art --run-dir <run-dir> --kind icon --source <icon-alpha.png> --generator local-chroma-removal --chroma-key <#RRGGBB> --edge-contract <0..3>
python <skill-dir>/scripts/sticker_pack.py prepare-assets --run-dir <run-dir>
8. 视觉质量检查与人工审核关口
创建内部联系方式:
python <skill-dir>/scripts/sticker_pack.py contact-sheet --run-dir <run-dir>
单独和在联系方式中检查20个最终表情。验证角色一致性、确切的可见文字、独特的动作/剪影、在240×240尺寸下的可读性、无水印/标志/乱码,以及无意外面板。
检查最终尺寸下的横幅、封面和图标。然后将每个适用的 manual_review 字段在 01-plan/pack.json 中设置为 true。不要确认你实际上没有审查过的字段。
9. 验证和打包
python <skill-dir>/scripts/sticker_pack.py validate --run-dir <run-dir> --strict
python <skill-dir>/scripts/sticker_pack.py package --run-dir <run-dir>
仅上传的归档包必须使用脚本固定的允许列表,并排除原始文件、原始画稿、母版、提示词、联系方式、状态文件、额外文件和本地绝对路径。完整归档包必须包含字节相同的原始文件、源文件、计划、冻结的提示词、经过清理的生成账本、提审文件、QA和来源证明,但排除仅本地状态和归档循环。警告:完整归档包可能保留原始EXIF/GPS信息,不应作为公共上传包共享。
如果权利或其他提审关口仍未解决,则仅创建一个明确标记的草稿归档包:
python <skill-dir>/scripts/sticker_pack.py package --run-dir <run-dir> --full-only
这会生成 <slug>-draft-full-archive.zip,并隔离任何过期的提交ZIP文件,使其不会被误认为是当前的就绪包。
完成关口
仅当验证和归档完整性通过时报告成功:
20/20 stickers passedpublication assets passedoriginal references preservedrights profile confirmedAI declaration preparedstatus: ready-to-submit
否则报告 draft/not-ready 并附上确切失败的位置或关口。始终提供两个归档包、提审目录、副本/含义文件以及质量报告的绝对路径。
参考文档路由
- 每次新包制作前阅读
references/content-planning.md。 - 图片生成前阅读
references/prompt-templates.md。 - 平台素材规划或验证前阅读
references/wechat-publish-spec.md。 - 当涉及真实人物、第三方图片、版权、肖像权或AI披露时,阅读
references/rights-and-ai.md。 - 创建或修复
pack.json时使用references/pack-schema.json。