meme-factory
TraeWork 内置 skill —— 用 memegen.link API 制作梗图。支持 100+ 流行模板,自定义文字,零 API Key、零速率限制。
一、定位
| 字段 | 值 |
|---|
| 所属 | TraeWork 内置 skill(创意工具类) |
| 触发条件 | 用户要求做梗图、加幽默元素、社交媒体配图 |
| 核心方法 | URL 模板 = 模板名 + 上文字 + 下文字 + 扩展名 |
| 底层 | memegen.link 免费 API |
二、3 种触发方式
| 触发 | 场景 |
|---|
/meme-factory | 手动触发 |
/meme-factory {模板} {上} {下} | 直接生成 |
meme-factory: create a meme about X | 自然语言请求 |
三、URL 模板
3.1 基本结构
https://api.memegen.link/images/{template}/{top}/{bottom}.{extension}
示例:
https://api.memegen.link/images/buzz/memes/memes_everywhere.png
→ Buzz Lightyear 梗图,上「memes」下「memes everywhere」
3.2 URL 参数
| 参数 | 用法 |
|---|
?width=1200&height=630 | 自定义尺寸 |
?style=https://example.com/bg.jpg | 自定义背景 |
?layout=top / bottom / default | 文字位置 |
?font=impact | 自定义字体 |
四、文字编码
| 字符 | 编码 |
|---|
| 空格 | _ 或 - |
| 换行 | ~n |
| 问号 | ~q |
| 百分号 | ~p |
| 斜杠 | ~s |
| 井号 | ~h |
| 单引号 | '' |
| 双引号 | "" |
示例:
fine/memory_usage_at_99~/this_is_fine.png
→ 「memory usage at 99%」/「this is fine」
五、8 个流行模板速查
| 模板 | 用途 | 例子 |
|---|
buzz | X, X everywhere | bugs/bugs_everywhere |
drake | 对比 | manual_testing/automated_testing |
success | 庆祝 | deployed/no_errors |
fine | 一切都好(讽刺) | server_on_fire/this_is_fine |
fry | 不确定 | not_sure_if_bug/or_feature |
changemind | 改变看法 | tabs_are_better_than_spaces |
distracted | 优先级 | my_code/new_framework/current_project |
mordor | 简单做 | one_does_not_simply/deploy_on_friday |
模板选择指南
| 场景 | 用什么模板 |
|---|
| 对比两个选项 | drake(拒绝 vs 接受) |
| 庆祝胜利 | success(正面) |
| 问题被忽视 | fine(讽刺) |
| 不确定 | fry(不确定格式) |
| 有争议的观点 | changemind(陈述+挑战) |
| 无处不在 | buzz(X, X everywhere) |
| 馊主意 | mordor(One does not simply…) |
六、平台尺寸
| 平台 | 推荐尺寸 |
|---|
| 社交媒体(Open Graph) | 1200×630 |
| Slack / Discord | 800×600 |
| GitHub | 默认 |
| 微博 / Twitter | 1200×675 |
七、6 个常见反模式
| 错误 | 后果 | 正确做法 |
|---|
| 空格不编码 | URL 断裂 | 用 _ 或 - |
| 文字太长 | 看不清 | 每行 2-6 个字 |
| 选错模板 | 主题不匹配 | 按场景选模板 |
| 缺扩展名 | URL 无效 | 必须加 .png 等 |
| 特殊字符不编码 | URL 断裂 | 用 ~q、~s、~p 等 |
| 假设模板存在 | 404 错误 | 先查模板列表 |
八、上下文场景示例
8.1 代码审查
Template: fry
URL: /fry/not_sure_if_feature/or_bug.png
8.2 部署相关
Template: interesting
URL: /interesting/i_dont_always_test/but_when_i_do_i_do_it_in_production.png
8.3 文档
Template: yodawg
URL: /yodawg/yo_dawg_i_heard_you_like_docs/so_i_documented_the_documentation.png
8.4 性能问题
Template: fine
URL: /fine/memory_usage_at_99~/this_is_fine.png
8.5 成功部署
Template: success
URL: /success/deployed_to_production/zero_downtime.png
九、API 特点
- 免费开源
- 无需 API Key
- 无速率限制(正常使用)
- 无状态(所有信息在 URL 里)
- 按需生成图片
API 端点
| 端点 | 用途 |
|---|
/templates/ | 列出所有模板 |
/templates/{id} | 模板详情 |
/fonts/ | 可用字体 |
/images/{template}/{top}/{bottom}.{ext} | 生成梗图 |
错误处理
- 查 https://api.memegen.link/templates/ 确认模板存在
- 检查文字格式(下划线代替空格)
- 检查特殊字符编码
- 确认扩展名有效
- 在浏览器测 URL
十、Python 辅助
仓库自带 scripts/meme_generator.py:
from meme_generator import MemeGenerator
meme = MemeGenerator()
url = meme.generate("buzz", "features", "features everywhere")
print(url)
或自己写动态生成:
def generate_status_meme(status: str, message: str):
template_map = {
"success": "success",
"failure": "fine",
"review": "fry",
"deploy": "interesting"
}
template = template_map.get(status, "buzz")
words = message.split()
top = "_".join(words[0:3])
bottom = "_".join(words[3:6])
return f"https://api.memegen.link/images/{template}/{top}/{bottom}.png"
十一、引用来源
- TraeWork 实际 skill 路径 —— 本文内容完全来自此文件
- memegen.link 官方文档 —— API 完整规范
- 仓库的
references/markdown-memes-guide.md 和 references/examples.md —— 文本梗格式 + 实例
十二、一句话总结
meme-factory 是「用 memegen.link URL 模板做梗图」的技能——零 API Key、零速率限制、100+ 模板可选。黄金法则:文字要精简、模板要匹配场景。URL 里的所有信息都是状态,所以完全无状态。