{/* 此页面由 website/scripts/generate-skill-docs.py 从技能的 SKILL.md 自动生成。请编辑源文件 SKILL.md,而非此页面。 */}
Meme 生成
选择模板并使用 Pillow 叠加文字生成真实表情包图片。生成实际的 .png 表情包文件。
技能元数据
| 来源 | 可选 —— 使用 hermes skills install official/creative/meme-generation 安装 |
| 路径 | optional-skills/creative/meme-generation |
| 版本 | 2.0.0 |
| 作者 | adanaleycio |
| 许可证 | MIT |
| 平台 | linux, macos, windows |
| 标签 | creative, memes, humor, images |
| 相关技能 | ascii-art, generative-widgets |
参考:完整 SKILL.md
:::info 以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时代理所看到的指令。 :::
Meme 生成
根据主题生成真实的表情包图片。选择模板、编写文字说明,并渲染带有文字叠加的实际 .png 文件。
使用时机
- 用户要求你制作或生成表情包
- 用户想要关于特定主题、情境或槽点的表情包
- 用户说”把这个做成表情包”或类似的话
可用模板
脚本支持 约 100 种流行的 imgflip 模板(按名称或 ID),以及 10 个经过手动调整文字位置的精选模板。
精选模板(自定义文字位置)
| ID | 名称 | 字段 | 最适合 |
|---|---|---|---|
this-is-fine | This is Fine | 顶部, 底部 | 混乱、否认 |
drake | Drake Hotline Bling | 拒绝, 认可 | 拒绝/偏好某事 |
distracted-boyfriend | Distracted Boyfriend | 分心物, 当前物, 人物 | 诱惑、优先级的转移 |
two-buttons | Two Buttons | 左, 右, 人物 | 两难选择 |
expanding-brain | Expanding Brain | 4 级 | 层层升级的讽刺 |
change-my-mind | Change My Mind | 陈述 | 争议观点 |
woman-yelling-at-cat | Woman Yelling at Cat | 女人, 猫 | 争论 |
one-does-not-simply | One Does Not Simply | 顶部, 底部 | 看似简单实则困难的事 |
grus-plan | Gru’s Plan | 步骤1-3, 真相 | 适得其反的计划 |
batman-slapping-robin | Batman Slapping Robin | 罗宾, 蝙蝠侠 | 否决糟糕的想法 |
动态模板(来自 imgflip API)
任何不在精选列表中的模板均可按名称或 imgflip ID 使用。这些模板使用智能默认文字位置(2 字段为顶部/底部,3+ 字段均匀分布)。使用以下命令搜索:
python "$SKILL_DIR/scripts/generate_meme.py" --search "关键词"操作步骤
模式 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" <模板ID> /tmp/meme.png "文字1" "文字2" ... - 使用
MEDIA:/tmp/meme.png返回图片
模式 2:自定义 AI 图片(当 image_generate 可用时)
当没有合适的经典模板或用户想要原创内容时使用。
- 先编写文字说明。
- 使用
image_generate创建符合表情包概念的场景。不要在图片提示中包含任何文字——文字将由脚本添加。仅描述视觉场景。 - 从 image_generate 的结果 URL 中找到生成的图片路径。如有需要下载到本地路径。
- 使用
--image运行脚本叠加文字,选择一种模式:- 覆盖(Overlay)(文字直接显示在图片上,白色带黑色轮廓):
python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png /tmp/meme.png "顶部文字" "底部文字" - 条带(Bars)(上方/下方黑色条带带白色文字 —— 更干净,始终可读):
python "$SKILL_DIR/scripts/generate_meme.py" --image /path/to/scene.png --bars /tmp/meme.png "顶部文字" "底部文字"
--bars。 - 覆盖(Overlay)(文字直接显示在图片上,白色带黑色轮廓):
- 使用视觉功能验证(如果
vision_analyze可用):检查结果是否美观:
如果视觉模型指出问题(文字难以阅读、位置不佳等),尝试另一种模式(在覆盖和条带之间切换)或重新生成场景。vision_analyze(image_url="/tmp/meme.png", question="文字是否清晰可读且位置合理?表情包在视觉上是否有效?") - 使用
MEDIA:/tmp/meme.png返回图片
示例
“凌晨 2 点调试生产环境:”
python generate_meme.py this-is-fine /tmp/meme.png "服务器着火了" "没事的"“在睡觉和再看一集之间做选择:”
python generate_meme.py drake /tmp/meme.png "睡足 8 小时" "凌晨 3 点再看一集"“周一早晨的各个阶段:“
python generate_meme.py expanding-brain /tmp/meme.png "设一个闹钟" "设 5 个闹钟" "睡过所有闹钟" "在床上工作"列出模板
查看所有可用模板:
python generate_meme.py --list注意事项
- 保持文字简短。文字过长的表情包看起来非常糟糕。
- 文字参数数量必须与模板的字段数匹配。
- 选择符合笑话结构而非仅主题的模板。
- 不要生成仇恨、辱骂或针对个人的内容。
- 脚本在首次下载后会将模板图片缓存到
scripts/.cache/目录。
验证
输出正确的标志:
- 在输出路径创建了 .png 文件
- 模板上的文字清晰可读(白色带黑色轮廓)
- 笑点到位 —— 文字说明与模板的预期结构匹配
- 文件可通过 MEDIA: 路径传递