Meme Generation
使用 Pillow 选取模板并叠加文字,生成真实的表情包图片。输出实际的 .png 表情包文件。
Skill 元数据
| 来源 | 可选 — 通过 aigenlabs skills install official/creative/meme-generation 安装 |
| 路径 | optional-skills/creative/meme-generation |
| 版本 | 2.0.0 |
| 作者 | adanaleycio |
| 许可证 | MIT |
| 平台 | linux, macos, windows |
| 标签 | creative, memes, humor, images |
| 相关 skill | ascii-art, generative-widgets |
参考:完整 SKILL.md
信息
以下是 AigenLabs 在触发此 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时所看到的指令内容。
Meme Generation
根据主题生成实际的表情包图片。选取模板、编写说明文字,并渲染带有文字叠加的真实 .png 文件。
使用时机
- 用户要求制作或生成表情包
- 用户想要关于某个话题、情境或吐槽的表情包
- 用户说"把这个做成表情包"或类似表达
可用模板
该脚本支持按名称或 ID 使用 imgflip 上约 100 个热门模板,另外还有 10 个经过精心调整文字位置的精选模板。
精选模板(自定义文字位置)
| ID | 名称 | 字段 | 最适合 |
|---|---|---|---|
this-is-fine | This is Fine | top, bottom | 混乱、否认 |
drake | Drake Hotline Bling | reject, approve | 拒绝/偏好 |
distracted-boyfriend | Distracted Boyfriend | distraction, current, person | 诱惑、转移注意力 |
two-buttons | Two Buttons | left, right, person | 两难抉择 |
expanding-brain | Expanding Brain | 4 个层级 | 层层递进的讽刺 |
change-my-mind | Change My Mind | statement | 热门观点 |
woman-yelling-at-cat | Woman Yelling at Cat | woman, cat | 争论 |
one-does-not-simply | One Does Not Simply | top, bottom | 出乎意料的难事 |
grus-plan | Gru's Plan | step1-3, realization | 计划反噬 |
batman-slapping-robin | Batman Slapping Robin | robin, batman | 驳斥烂主意 |
动态模板(来自 imgflip API)
不在精选列表中的任何模板均可通过名称或 imgflip ID 使用。这些模板会自动应用智能默认文字位置(2 个字段时为上/下,3 个及以上时均匀分布)。搜索方式:
python "$SKILL_DIR/scripts/generate_meme.py" --search "disaster"
操作流程
模式 1:经典模板(默认)
- 读取用户的主题,识别核心动态(混乱、两难、偏好、讽刺等)。
- 选取最匹配的模板。参考"最适合"列,或使用
--search搜索。 - 为每个字段编写简短说明文字(每个字段最多 8-12 个词,越短越好)。
- 找到 skill 的脚本目录:
SKILL_DIR=$(dirname "$(find ~/.aigenlabs/skills -path '*/meme-generation/SKILL.md' 2>/dev/null | head -1)") - 运行生成器:
python "$SKILL_DIR/scripts/generate_meme.py" <template_id> /tmp/meme.png "caption 1" "caption 2" ... - 使用
MEDIA:/tmp/meme.png返回图片。
模式 2:自定义 AI 图片(当 image_generate 可用时)
当没有合适的经典模板,或用户想要原创内容时使用此模式。
- 先编写说明文字。
- 使用
image_generate创建符合表情包概念的场景。图片 prompt(提示词)中不要包含任何文字 — 文字将由脚本添加。仅描述视觉场景。 - 从 image_generate 结果 URL 中找到生成图片的路径。如有需要,将其下载到本地路径。
- 使用
--image运行脚本叠加文字,选择一种模式:- Overlay(文字直接叠加在图片上,白色带黑色描边):
python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png /tmp/meme.png "top text" "bottom text" - Bars(图片上下方添加黑色条带显示白色文字 — 更整洁,始终可读):
python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png --bars /tmp/meme.png "top text" "bottom text"
--bars。 - Overlay(文字直接叠加在图片上,白色带黑色描边):
- 使用视觉验证(如果
vision_analyze可用):检查结果是否美观:如果视觉模型发现问题(文字难以辨认、位置不佳等),尝试切换另一种模式(在 overlay 和 bars 之间切换)或重新生成场景。vision_analyze(image_url="/tmp/meme.png", question="Is the text legible and well-positioned? Does the meme work visually?") - 使用
MEDIA:/tmp/meme.png返回图片。
示例
"凌晨 2 点调试生产环境":
python generate_meme.py this-is-fine /tmp/meme.png "SERVERS ARE ON FIRE" "This is fine"
"在睡觉和再看一集之间做选择":
python generate_meme.py drake /tmp/meme.png "Getting 8 hours of sleep" "One more episode at 3 AM"
"周一早晨的各个阶段":
python generate_meme.py expanding-brain /tmp/meme.png "Setting an alarm" "Setting 5 alarms" "Sleeping through all alarms" "Working from bed"
列出模板
查看所有可用模板:
python generate_meme.py --list
注意事项
- 说明文字要简短。文字过长的表情包效果很差。
- 文字参数数量须与模板的字段数量匹配。
- 根据笑点结构选择模板,而不仅仅是根据话题。
- 不得生成仇恨、辱骂或针对特定个人的内容。
- 脚本会在首次下载后将模板图片缓存至
scripts/.cache/。
验证
以下情况说明输出正确:
- 在输出路径创建了 .png 文件
- 文字在模板上清晰可读(白色带黑色描边)
- 笑点成立 — 说明文字与模板的预期结构相符
- 文件可通过 MEDIA: 路径传递