表情包生成
通过选择模板并使用 Pillow 叠加文本来生成真实的表情包图像。生成实际的 .png 表情包文件。
技能元数据
| 来源 | 可选 — 使用 hermes skills install official/creative/meme-generation 安装 |
| 路径 | optional-skills/creative/meme-generation |
| 版本 | 2.0.0 |
| 作者 | adanaleycio |
| 许可证 | MIT |
| 标签 | creative, memes, humor, images |
| 相关技能 | ascii-art, generative-widgets |
参考:完整 SKILL.md
信息
以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时代理看到的指令。
表情包生成
根据主题生成实际的表情包图像。选择模板,编写标题,并渲染带有文字叠加的真实 .png 文件。
何时使用
- 用户要求你制作或生成表情包
- 用户想要关于特定主题、情境或烦恼的表情包
- 用户说“把这个做成表情包”或类似内容
可用模板
该脚本支持通过名称或 ID 使用 任何约 100 种流行的 imgflip 模板,以及 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 levels | 升级的讽刺 |
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_DIR=$(dirname "$(find ~/.hermes/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创建符合表情包概念的场景。不要在图像提示中包含任何文本——文本将由脚本添加。仅描述视觉场景。 - 从 image_generate 结果 URL 中获取生成的图像路径。如果需要,将其下载到本地路径。
- 使用
--image运行脚本以叠加文本,选择一种模式:- 叠加(直接在图像上添加文本,白色字体带黑色轮廓):
python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png /tmp/meme.png "top text" "bottom text" - 条幅(上下添加黑色条幅,白色文本——更干净,始终可读):
python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png --bars /tmp/meme.png "top text" "bottom text"
--bars。 - 叠加(直接在图像上添加文本,白色字体带黑色轮廓):
- 通过视觉验证(如果
vision_analyze可用):检查结果是否良好:如果视觉模型标记出问题(文本难以阅读、位置不佳等),尝试另一种模式(在叠加和条幅之间切换)或重新生成场景。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: 路径交付