跳到主要内容

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
相关 skillascii-art, generative-widgets

参考:完整 SKILL.md

信息

以下是 AigenLabs 在触发此 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时所看到的指令内容。

Meme Generation

根据主题生成实际的表情包图片。选取模板、编写说明文字,并渲染带有文字叠加的真实 .png 文件。

使用时机

  • 用户要求制作或生成表情包
  • 用户想要关于某个话题、情境或吐槽的表情包
  • 用户说"把这个做成表情包"或类似表达

可用模板

该脚本支持按名称或 ID 使用 imgflip 上约 100 个热门模板,另外还有 10 个经过精心调整文字位置的精选模板。

精选模板(自定义文字位置)

ID名称字段最适合
this-is-fineThis is Finetop, bottom混乱、否认
drakeDrake Hotline Blingreject, approve拒绝/偏好
distracted-boyfriendDistracted Boyfrienddistraction, current, person诱惑、转移注意力
two-buttonsTwo Buttonsleft, right, person两难抉择
expanding-brainExpanding Brain4 个层级层层递进的讽刺
change-my-mindChange My Mindstatement热门观点
woman-yelling-at-catWoman Yelling at Catwoman, cat争论
one-does-not-simplyOne Does Not Simplytop, bottom出乎意料的难事
grus-planGru's Planstep1-3, realization计划反噬
batman-slapping-robinBatman Slapping Robinrobin, batman驳斥烂主意

动态模板(来自 imgflip API)

不在精选列表中的任何模板均可通过名称或 imgflip ID 使用。这些模板会自动应用智能默认文字位置(2 个字段时为上/下,3 个及以上时均匀分布)。搜索方式:

python "$SKILL_DIR/scripts/generate_meme.py" --search "disaster"

操作流程

模式 1:经典模板(默认)

  1. 读取用户的主题,识别核心动态(混乱、两难、偏好、讽刺等)。
  2. 选取最匹配的模板。参考"最适合"列,或使用 --search 搜索。
  3. 为每个字段编写简短说明文字(每个字段最多 8-12 个词,越短越好)。
  4. 找到 skill 的脚本目录:
    SKILL_DIR=$(dirname "$(find ~/.aigenlabs/skills -path '*/meme-generation/SKILL.md' 2>/dev/null | head -1)")
  5. 运行生成器:
    python "$SKILL_DIR/scripts/generate_meme.py" <template_id> /tmp/meme.png "caption 1" "caption 2" ...
  6. 使用 MEDIA:/tmp/meme.png 返回图片。

模式 2:自定义 AI 图片(当 image_generate 可用时)

当没有合适的经典模板,或用户想要原创内容时使用此模式。

  1. 先编写说明文字。
  2. 使用 image_generate 创建符合表情包概念的场景。图片 prompt(提示词)中不要包含任何文字 — 文字将由脚本添加。仅描述视觉场景。
  3. 从 image_generate 结果 URL 中找到生成图片的路径。如有需要,将其下载到本地路径。
  4. 使用 --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
  5. 使用视觉验证(如果 vision_analyze 可用):检查结果是否美观:
    vision_analyze(image_url="/tmp/meme.png", question="Is the text legible and well-positioned? Does the meme work visually?")
    如果视觉模型发现问题(文字难以辨认、位置不佳等),尝试切换另一种模式(在 overlay 和 bars 之间切换)或重新生成场景。
  6. 使用 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: 路径传递