梗优先
每个表情都要有明确聊天场景:催进度、假装听懂、组会渡劫、生产别碰、早八索命。
风格化本人
保留发型、脸型、气质和标志特征,但避免高仿真人换脸,更适合公开发布。
微信打包
同时输出人类可读 GIF 名和微信上传所需的数字文件、缩略图、封面、图标、横幅。
主动生图
支持 text_concept 直接起角色,自动写无文字 2x2 keypose 提示词,再统一导演动作和加中文梗。
交互选择
新手可以用 plan-wizard 选择参考图片或文字概念、场景人设、画面风格、数量、质量模式和生图 provider。
模板导演
把收到离线、加载中、先装懂、文献山等高频动作产品化,本地按模板渲染 16 帧。
QC 门禁
投稿模式默认跑 strict QC 和连续性 QC:假透明、边缘出格、跳帧、首尾不闭合和单图 bounce 都会被拒绝。
AI Mascot Sample
当前推荐链路会先用 text_concept 生成原创 AI 吉祥物的 2x2 keypose 提示词, 再用 Codex image_gen 交互生成,或用 openai_images_api 批量生成纯 #FF00FF / 真 alpha 的 4 个关键姿势。本地脚本会先跑 qc-sheet, 再统一尺度、按 motion template 渲染 16 帧、添加本地非文字特效、跑 continuity QC、加中文梗、压成微信规格 GIF。
这里的 demo 是原创暖色 AI 助手,不使用官方 logo 或品牌标识。完整测试包为 24 张, 默认展示为 keypose-first 路线;旧的 2x4 / 4x4 motion sheet 仍可作为 expert 模式,并在 manifest 记录来源和最终 GIF 帧数。
如果你在 Codex 里看到四格 keypose 原图,那只是中间素材,不是最终表情包。最终交付看 preview.html、named-gifs 里的中文命名 GIF,以及 wechat-submit/main 里的微信上传文件。
Quick Start
python3 -m venv .venv
. .venv/bin/activate
pip install -e '.[dev]'
python skills/generate-meme-gif-pack/scripts/meme_pack.py plan-wizard
# Or build the plan directly:
python skills/generate-meme-gif-pack/scripts/meme_pack.py plan-pack \
--subject "warm geometric AI assistant mascot with cream body and coral accents, original character, no official logo" \
--persona 科研打工人 \
--style clean-sticker \
--pack-size 24 \
--mode wechat \
--source-mode keyposes \
--keypose-layout 2x2 \
--render-frame-count 16 \
--quality-mode submission \
--image-provider openai_images_api \
--output output/ai-research-plan.json
# Automated provider path:
python skills/generate-meme-gif-pack/scripts/meme_pack.py generate-raw-batch \
--plan output/ai-research-plan.json \
--provider openai_images_api \
--concurrency 3
# Codex built-in image_gen is a terminal action; external_files / ai_studio_hermes
# may continue with accept/QC in the same workflow after local files exist.
python skills/generate-meme-gif-pack/scripts/meme_pack.py qc-sheet \
--input raw-frames/01-收到离线-2x2.png \
--source-mode keyposes \
--source-layout 2x2 \
--quality-mode submission \
--output output/qc/01-qc.json
# Static 4x6 contact sheets are preview-only. If image_gen returns one:
python skills/generate-meme-gif-pack/scripts/meme_pack.py split-sheet \
--input output/raw-sheets/ai-research-sheet.png \
--output-dir raw-frames \
--rows 6 \
--cols 4
# First build a real preview from the first 3 accepted sheets:
python skills/generate-meme-gif-pack/scripts/meme_pack.py build-preview \
--source-dir raw-frames \
--output-dir output/preview-first-3 \
--preview-count 3 \
--source-mode keyposes \
--keypose-layout 2x2 \
--source-layout auto \
--quality-mode submission \
--strict-qc \
--strict-continuity-qc
# The first 3 are only a QC checkpoint, not the final pack.
# Full build requires one accepted source image per sticker.
python skills/generate-meme-gif-pack/scripts/meme_pack.py build-pack \
--source-dir raw-frames \
--output-dir output/my-pack \
--persona 科研打工人 \
--style clean-sticker \
--pack-size 24 \
--mode wechat \
--source-mode keyposes \
--keypose-layout 2x2 \
--source-layout auto \
--render-frame-count 16 \
--quality-mode submission \
--strict-qc \
--strict-continuity-qc