Communitygithub.com

ALEXYIMING/wechat-sticker-transparent-240-grid

中英双文的微信表情九宫格技能:3×3 食物贴纸 PNG 拆分,以及已有 MP4→透明 GIF。 / Bilingual Codex skill for 3×3 WeChat food sticker grids, PNG splitting, and supplied MP4-to-transparent-GIF conversion.

wechat-sticker-transparent-240-grid 是什么?

wechat-sticker-transparent-240-grid is a Codex agent skill that 中英双文的微信表情九宫格技能:3×3 食物贴纸 PNG 拆分,以及已有 MP4→透明 GIF。 / Bilingual Codex skill for 3×3 WeChat food sticker grids, PNG splitting, and supplied MP4-to-transparent-GIF conversion.

兼容平台~Claude CodeCodex CLI~Cursor
npx skills add ALEXYIMING/wechat-sticker-transparent-240-grid

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

微信表情透明 240 九宫格版

本技能是 wechat-sticker-transparent-240 的独立九宫格派生版。它保留原技能的透明 PNG、深浅色检查、动画提示词和视频/GIF 付费闸门,但把静态生图流程改成:

一张食物参考图
        ↓
一次生成一张 3×3 九宫格母图
        ↓
恢复真实透明 / 保证安全间隔
        ↓
等分拆成 9 张键控源图
        ↓
技能脚本输出 9 张 240×240 与 9 张 500×500 透明 PNG

当用户只要求逐张生成表情时,使用原技能;只有用户明确要求“九宫格”“3×3 母图后拆分”时才使用本技能。

不修改原技能

本技能必须保持 /Users/alex.feng/微信表情包/.codex/skills/wechat-sticker-transparent-240/ 原样不变。新技能使用自己的 scripts/references/ 副本;不要把九宫格逻辑写回原技能。

English documentation is maintained alongside this Chinese operational skill in README.md and SKILL.en.md. The English companion must describe the same scope, gates, file formats, and MP4-to-GIF behavior; update both language versions when changing the workflow.

输入类型分流:图片、已有 MP4、AI 生视频

先判断用户交付的媒介,不要把三条路线混在一起:

  • 图片输入:按本技能的九宫格母图、透明恢复、等分拆分和 240/500 PNG 流程执行。
  • 用户已经提供 MP4,并要求裁切成微信表情:把 MP4 当作已有动画源,直接进入“MP4→微信透明 GIF”路线;禁止调用 image_gen、视频生成平台或任何付费视频 API。保留原始 MP4,不覆盖、不重新生成动画。
  • 用户只说“检查 MP4”或只提供文件而未要求转换:保持只读,不抽帧、不裁切、不生成 GIF。
  • 用户要求从静态图生成动画:才进入 AI 生视频付费闸门;生成完成后再按单独规则处理 GIF。

已有 MP4 的 GIF 路线仍然复用本技能自己的 scripts/prepare_transparent_gifs.pyreferences/animation-video-workflow.md:逐帧移除边缘连通的平坦背景,保持白色奶油、眼睛、高光和浅色装饰,按微信规格输出 240×240、无限循环、全帧有透明像素、严格小于 500000 字节的 GIF。若 MP4 是一张 3×3 动画母片,必须先对每一帧按同一九宫格边界和 24px 安全边距拆成 9 条独立帧序列,再分别编码为 9 个 GIF;不能把整张九宫格缩成一个 GIF,也不能只裁第一帧。

阶段一:先对齐,再生图

开始生图前先确认:

  • 参考图和主体食物名称;
  • 是否完全无文字、无字母、无数字、无 Logo、无水印;
  • 九个格子的表情/动作范围;
  • Emoji 是作为视觉元素还是直接显示 Unicode;默认改成墨镜、吐舌、爱心、火箭、派对帽等视觉元素,不把 Emoji 当文字渲染;
  • 交付只做静态,还是还要后续视频/GIF。
  • 如果交付媒介是已有 MP4,确认是“直接转微信透明 GIF”而不是重新生成视频;用户明确要求转换时,不追加 AI 视频授权问题。

用户已经明确的九宫格要求不重复询问。用户的九宫格流程优先于原技能“每个主题单独生图”的通用规则。

固定英文风格底稿与随机反应库

下面这段英文是本技能的固定风格底稿,必须逐字保留并放入每次最终提交给生图工具的英文提示词中:

Create a Meme sticker pack based on the images attached, remixing with 😎😛💕🚀🥳. Use exaggerated internet-reaction expressions, including crying, confusion, shock, smugness, side-eye, and deadpan disbelief, with awkward poses, low-fi cutout textures, and absurd humor.
Create a single square(1:1) transparent sticker sheet with nine distinct stickers arranged in a 3×3 grid, each showing a different expression, pose, or reaction. Separate the stickers with wide, fully transparent gaps. No background, shadows, or overlapping elements.

这段固定底稿锁定整体风格,不锁定每一轮的具体九个格子。每次使用时,在它后面追加本轮随机抽中的 9 个英文反应描述,以及主体参考图、无文字、Emoji 视觉元素、边界安全间隔等动态约束。动态九格清单优先决定本轮具体内容。

反应库固定保存为以下 24 个候选。中文用于和用户对齐,英文短句用于拼接最终生图提示词:

分类中文反应English prompt cue
哭泣奶酪眼泪大哭huge crying reaction with stretchy melted-cheese tears
哭泣泪崩缩成一团collapsed sobbing reaction, curled into an awkward ball
哭泣委屈啜泣hurt pout and tiny sobbing reaction
哭泣崩溃嚎叫overwhelmed meltdown with a wide wailing mouth
哭泣边哭边擦眼泪crying while clumsily wiping away tears
哭泣感动到失控overwhelmed by emotion, joyful tears and trembling hands
困惑/震惊困惑歪头confused tilted-head reaction with mismatched uncertain eyes
困惑/震惊脑袋宕机brain-frozen reaction with blank unfocused eyes
困惑/震惊瞳孔地震extreme shock with trembling oversized pupils
困惑/震惊惊恐后退startled recoil with awkward backward steps
困惑/震惊灵魂出窍stunned spirit-leaving-the-body reaction, absurd and harmless
困惑/震惊被吓到僵住frozen in place after a harmless surprise
态度/怀疑得意墨镜smug reaction with oversized dark sunglasses, inspired by 😎
态度/怀疑挑眉自信cocky raised-eyebrow reaction with an awkward confident pose
态度/怀疑尴尬侧目awkward side-eye while leaning away
态度/怀疑死鱼眼怀疑deadpan disbelief with a flat unimpressed stare
态度/怀疑无语摊手speechless shrug with helpless open hands
态度/怀疑扶额不敢相信forehead-covering disbelief, quietly horrified but harmless
搞怪/荒诞吐舌搞怪goofy tongue-out reaction, inspired by 😛
搞怪/荒诞社恐躲避shy social-avoidance pose hiding awkwardly behind itself
搞怪/荒诞尴尬石化embarrassed petrified reaction with stiff tiny limbs
搞怪/荒诞偷偷观察sneaky peek from the side with nervous curious eyes
搞怪/荒诞摆烂躺平completely defeated lying-flat reaction, absurdly relaxed
搞怪/荒诞假装没看见pretending not to notice with a deliberately blank face

随机规则:

  • 每轮默认从 24 个候选中随机抽取 9 个,同一轮不得重复;
  • 为保持九宫格情绪分布,四个分类至少各抽中 1 个,再从剩余候选中随机补足 5 个;
  • 用户明确指定某些反应时,用户指定内容优先,剩余格子再随机补足;
  • 每轮把实际抽中的中文名称、英文 cue 和随机结果记录到 生图提示词.md,方便复现和检查;
  • 这 9 个随机反应不是视频授权,也不跳过后续英文提示词确认。

英文提示词确认闸门:随机抽取完成后,先向用户展示本轮 9 个中文反应,再展示完整英文最终提示词。未收到用户明确的“确认执行”或同等清晰指令前,禁止调用 image_gen。确认后才生成一张九宫格母图。

生成九宫格母图

使用内置 image_gen,除非用户明确选择 CLI/API。参考图先用 view_image 检查;本地参考图作为参考主体,不把它误当成九张独立输入。

只提交一次九宫格母图生图任务,不用同一提示词生成九张独立图。最终英文提示词必须先逐字包含上面的固定英文底稿,再追加本轮随机的 9 个 English prompt cue 和以下约束:

  • 输出一张 1:1 正方形母图,严格 3×3 等大单元格;
  • 九个格子各自只有一个独立主体,内容不越过第三分隔线;
  • 所有眼睛、手脚、眼泪、爱心、配料、彩屑、帽子、火箭和奶酪丝都离各自格子边界至少约 28px;
  • 格子之间是宽且完全透明的间隔,不要网格线、边框、白底、阴影、光晕、地面、反光或重叠;
  • 主题食物保持可识别的原始比例、色板、配料和手绘/剪纸质感;
  • 九个表情真正不同,覆盖用户指定的哭泣、困惑、震惊、得意、侧目、死板怀疑等反应;
  • Emoji 只转译为视觉元素,不出现 Unicode 字符;
  • 画面中绝不出现任何中文、英文、字母、数字、标点、字幕、气泡、Logo、签名或水印。

生图后立即检查文件:不要把查看器显示的棋盘格误判成真实 Alpha。若文件是 RGB 且棋盘格已经烘焙进图像,使用 scripts/extract_grid_sheet.py 恢复透明;若文件已有真实 Alpha,脚本会保留它。

若母图不是正方形、不能被 3 整除、格子不均等或表情已在边界被裁切,先停止并重新生成或修复母图,不要盲目拆分。

恢复透明、收缩安全边距并拆分

extract_grid_sheet.py 会:

  1. 从外边界识别并移除烘焙的浅色棋盘格;
  2. 保留前景中的白色奶酪、眼睛和浅色高光;
  3. 将每格整体等比例缩小并居中,默认保留 24px 透明安全边距;
  4. 保持完整单格画布,不自动裁切 Alpha 包围盒;
  5. 输出透明母图、9 张完整单格透明源图和 9 张洋红键控源图。

该脚本需要当前环境可导入 Pillownumpycv2;依赖缺失时先报告并补齐依赖,不要改用广泛颜色删除来替代棋盘格恢复。

前景含青椒、罗勒等绿色食材时,默认使用 #ff00ff 洋红键控底;不要用绿色键控,以免删除天然食材。示例:

python3 scripts/extract_grid_sheet.py \
  母图/主题-九宫格-生图.png \
  --transparent-sheet 母图/主题-九宫格-透明.png \
  --transparent-crops 母图/拆分透明源 \
  --keyed-crops chroma-sources \
  --base-name 主题 \
  --labels 哭泣 困惑 震惊 得意墨镜 吐舌搞怪 尴尬侧目 死鱼眼怀疑 爱心恋爱脑 火箭庆祝 \
  --key-color '#ff00ff' \
  --safe-margin 24

文件名以中文食物名为主体,并用表情后缀区分九格,例如 01-芝加哥厚底披萨-哭泣.png。主题食物名必须同步出现在源图、240、500、动画提示词标题、首帧文件名和 文案.txt 中。

透明 240/500 输出

chroma-sources/ 中的 9 张洋红键控源图分别输出两种尺寸。必须使用本技能自己的脚本副本:

python3 scripts/prepare_transparent_stickers.py \
  chroma-sources/*.png \
  --out-dir transparent-240 \
  --sizes 240

python3 scripts/prepare_transparent_stickers.py \
  chroma-sources/*.png \
  --out-dir transparent-500 \
  --sizes 500

如果验收发现明显键控残边,只允许对整批各重跑一次 --edge-contract 1。不要按白色、亮度、饱和度或“看起来像绿色”的范围抠图;白色奶酪、眼睛、浅色高光和天然绿色配料都必须保留。

若仍发现极少量精确的低透明 #ff00ff 残点,只运行一次手术清理:

python3 scripts/clean_exact_key_residue.py \
  transparent-240 transparent-500 \
  --key-color '#ff00ff' \
  --alpha-max 2

这个脚本只删除同时满足“精确等于键色”和“Alpha 不高于阈值”的像素;禁止把它改成广泛颜色删除。

静态验收与预览

使用内置验收脚本检查:

python3 scripts/validate_grid_pack.py \
  --source-dir chroma-sources \
  --dir-240 transparent-240 \
  --dir-500 transparent-500 \
  --master 母图/主题-九宫格-透明.png \
  --key-color '#ff00ff' \
  --safe-margin 24

验收必须同时证明:

  • chroma-sources/ 恰好 9 张;
  • transparent-240/ 恰好 9 张,全部严格 240×240、RGBA;
  • transparent-500/ 恰好 9 张,全部严格 500×500、RGBA;
  • 每张四角 Alpha 为 0、主体 Alpha 非空;
  • 最终透明图没有可见精确键色残留;
  • 母图是正方形 RGBA,3×3 分界线附近的安全带完全透明;
  • 九个内容、文件名、编号和动画提示词一一对应。

生成浅色与深色预览:

python3 scripts/make_grid_previews.py \
  --master 母图/主题-九宫格-透明.png \
  --dir-500 transparent-500 \
  --out-dir previews

必须目视查看浅色和深色预览,确认没有白色方底、棋盘格、洋红残边、被切掉的爱心/火箭/配料,且白色奶酪在深色底上可见。

提示词、文案和静态交付

保存本次真正提交给生图工具的最终提示词:

  • 项目交付目录放 生图提示词.md
  • 默认生图输出目录 /Users/alex.feng/.codex/generated_images/<任务目录>/ 再放一份;
  • 生图重做后只保留最终采用提示词,避免把失败版本当成最终规范。

为 9 张成品各写一条独立的 4 秒动画提示词并保存为 动画提示词.md。每条必须声明对应 500 图为首帧、镜头固定、保持构图和角色不变、1—3 个小动作、首尾自然循环、禁止新增文字/人物/背景/镜头运动。画面无文字时,动画提示词也不得添加文字。

推荐交付结构:

主题-九宫格版/
├── 母图/
│   ├── 主题-九宫格-生图.png
│   └── 主题-九宫格-透明.png
├── chroma-sources/             # 9 张洋红键控源图
├── transparent-240/            # 9 张 240×240 RGBA
├── transparent-500/            # 9 张 500×500 RGBA
├── previews/
├── 视频/                        # 已有 MP4,扁平保存,不覆盖原文件
│   └── 编号-主题.mp4
├── 透明GIF/                     # MP4 路线的 240×240 透明 GIF
│   └── 透明帧/                  # 抽帧检查目录
├── 生图提示词.md
├── 动画提示词.md
└── 文案.txt

付费闸门

静态 PNG、预览、验收和动画提示词完成后必须停止。即使用户最初提到动画,也不能自动:

  • 上传图片到视频平台;
  • 提交试跑或正式视频任务;
  • 调用可能扣积分的 API;
  • 把 GIF 转换当作静态流程的一部分。

只有下一步是 AI 生视频时,才等待用户当次明确回复“确认执行”“开始生成视频”或同等清晰指令,然后读取 animation-video-workflow.md 并进入付费视频阶段。视频全部下载后再次停止,等待用户明确确认 GIF 转换。

如果用户已经提供 MP4 并明确要求转 GIF,不进入付费视频闸门;读取同一参考文件中的“已有 MP4→透明 GIF”路线,直接进行逐帧裁切、透明化、压缩和验收。只要 MP4 是用户交付的已有文件,转换本身不等于生成视频,也不需要调用视频生成 API。无论来源如何,原始 MP4 都必须保留,GIF 仍需满足 240×240、约 4 秒、无限循环、全帧透明、严格小于 500000 字节。

相关技能