前言¶
在 Slack 里发一张动图,往往比长篇文字更能表达情绪——庆祝上线、吐槽 Bug、回复「收到」都可以来一张。但真到自己动手做 GIF,问题很快就来了:尺寸该设多少?帧率太高文件会不会太大?上传后会不会被 Slack 压缩得糊成一片?
网上能找到零散的 Slack GIF 规范,却很少有人把它封装成一套可复用的流程。Anthropic 在官方 Skills 仓库里提供了一个名为 slack-gif-creator 的 Agent Skill:它把 Slack 的尺寸与帧率约束、Python 绘图工具链,以及常见动画思路写进 SKILL.md,让 AI 编程助手在你说「帮我做一个 Slack 用的动图」时,能按同一套标准执行,而不是每次从零摸索。
本文基于官方仓库核实后的资料,介绍这个 Skill 是什么、怎么安装、以及典型用法。
这是什么¶
slack-gif-creator 是 Anthropic 维护的 Agent Skill,源码位于 anthropics/skills 仓库的 skills/slack-gif-creator/ 目录。
它的定位很清晰:为 Slack 场景提供创建动画 GIF 的知识与工具,而不是一个「点一下就能出图」的封闭模板库。Skill 里写明了 Slack 对 GIF 的尺寸与参数建议,附带 GIFBuilder 组装帧、validators 校验输出、easing 缓动函数、frame_composer 帧辅助等 Python 模块,并指导 Agent 用 PIL(Pillow)原语逐帧绘制动画。
官方 SKILL.md 的 frontmatter 描述为:「Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts.」——当用户说「make me a GIF of X doing Y for Slack」这类需求时,Agent 应自动匹配并启用此 Skill。
Slack 对 GIF 的关键约束¶
Skill 把 Slack 侧的常见要求整理成可直接参照的参数表,这是它最核心的价值之一:
尺寸:
- 自定义 Emoji GIF:推荐 128×128 像素
- 消息区 GIF:推荐 480×480 像素
参数建议:
- 帧率(FPS):10–30(越低通常文件越小)
- 颜色数:48–128(越少体积越小)
- 时长:Emoji GIF 建议控制在 3 秒以内
仓库里的 core/validators.py 还实现了校验逻辑:Emoji 模式会检查是否为正方形、边长是否在 64–128 之间(128×128 为 optimal);消息 GIF 模式则检查宽高比与边长范围。文件超过约 5 MB 时会给出压缩提示。
核心功能与亮点¶
1. GIFBuilder:按 Slack 规范组装与优化¶
core/gif_builder.py 提供 GIFBuilder 类,负责逐帧收集、全局调色板量化、可选去重,以及最终写出 GIF。典型初始化方式:
from core.gif_builder import GIFBuilder
from PIL import Image, ImageDraw
builder = GIFBuilder(width=128, height=128, fps=10)
for i in range(12):
frame = Image.new('RGB', (128, 128), (240, 248, 255))
draw = ImageDraw.Draw(frame)
# 用 PIL 原语绘制每一帧
builder.add_frame(frame)
builder.save('output.gif', num_colors=48, optimize_for_emoji=True)
save() 支持几个实用开关:
- optimize_for_emoji=True:自动缩放到 128×128、限制颜色数、必要时抽帧
- remove_duplicates=True:去除几乎相同的连续帧以减小体积
- num_colors:控制量化后的颜色数量
2. Validators:导出前自检¶
from core.validators import validate_gif, is_slack_ready
passes, info = validate_gif('my.gif', is_emoji=True, verbose=True)
if is_slack_ready('my.gif'):
print("Ready for Slack!")
校验会输出尺寸、文件大小、帧数、时长与 FPS 等信息,避免上传后才发现不合规。
3. Easing 与 Frame Composer:让动画更自然¶
core/easing.py 提供 interpolate(),支持 linear、ease_in、ease_out、ease_in_out、bounce_out、elastic_out、back_out 等缓动,用于位移、缩放等非线性变化。
core/frame_composer.py 则封装了空白帧、渐变背景、圆形、文字、五角星等常用绘制辅助,减少重复样板代码。
4. 动画概念指南¶
Skill 文档里系统整理了 Shake(抖动)、Pulse(脉冲)、Bounce(弹跳)、Spin(旋转)、Fade(淡入淡出)、Slide(滑入)、Zoom(缩放)、Explode(粒子爆发)等常见动效的实现思路,并强调用较粗线条(width=2 及以上)、渐变背景、层次叠加等方式提升观感。
5. 设计哲学:灵活而非模板化¶
官方明确说明,这个 Skill 不提供:
- 固定的动画模板或预制图形库
- 跨平台不可靠的 Emoji 字体渲染
- 内置素材包
它提供的是知识 + 工具 + PIL 绘制自由度。若用户上传了图片,Agent 应判断是直接用于动画,还是仅作风格参考,再用 PIL 加载处理。
安装与启用¶
slack-gif-creator 遵循通用 Agent Skills 格式(SKILL.md + 资源目录),可在多种 AI 编程工具中使用。以下方式均来自官方文档,按你所用的工具选择其一即可。
依赖安装¶
Skill 目录下有 requirements.txt,主要依赖为:
pip install pillow imageio numpy
# 或进入 skill 目录:
pip install -r requirements.txt
requirements.txt 中还列出了 imageio-ffmpeg>=0.4.9,供 imageio 处理相关媒体格式时使用。
在 Cursor 中使用¶
Cursor 会在项目或用户目录下自动发现 Skills。将官方目录复制到项目中即可:
git clone https://github.com/anthropics/skills.git
cp -r skills/skills/slack-gif-creator .cursor/skills/slack-gif-creator
也可放到 ~/.cursor/skills/ 做全局 Skill。确保目录名与 SKILL.md frontmatter 中的 name: slack-gif-creator 一致。之后在 Agent 对话里描述 Slack GIF 需求,或显式调用 /slack-gif-creator,Agent 会加载对应指令与 core/ 工具代码。
在 Claude Code 中使用¶
Anthropic 官方 README 提供了 Plugin 方式安装示例 Skills 集合:
/plugin marketplace add anthropics/skills
/plugin install example-skills@anthropic-agent-skills
slack-gif-creator 位于 example-skills 插件所涵盖的示例 Skill 集合中。安装后,在 Claude Code 里直接描述需求即可,例如:「Use the slack-gif-creator skill to make a bouncing checkmark GIF for Slack emoji.」
在 Claude.ai 与 Claude API 中¶
根据 anthropics/skills 仓库说明,部分示例 Skill 已对 Claude.ai 付费计划开放;自定义 Skill 的上传与启用方式见 Using skills in Claude。通过 Claude API 使用时,可参考 Skills API Quickstart 上传或引用 Skill。
典型用法示例¶
场景一:用自然语言让 Agent 生成 Emoji 动图¶
启用 Skill 后,可以直接给出类似提示:
帮我做一个 128×128 的 Slack Emoji GIF:一个绿色对勾从上方弹入并轻微抖动,时长约 1.5 秒,导出前用 validators 检查是否符合 Slack 要求。
Agent 会按 Skill 中的约束选择尺寸与 FPS,用 PIL 逐帧绘制,调用 GIFBuilder.save(..., optimize_for_emoji=True),最后用 validate_gif() 输出校验报告。
场景二:基于用户上传的图片做帧动画¶
Skill 指导 Agent 先用 PIL 加载用户图片:
from PIL import Image
uploaded = Image.open('file.png')
# 直接用于动画,或提取配色/风格作参考
再根据用户意图决定是「把这张图拆成帧动画」还是「参考其风格重新绘制」。
场景三:需要压缩体积时的优化策略¶
当用户明确要求减小文件大小时,Skill 建议依次尝试:
- 降低 FPS 或缩短时长
- 减少颜色数(如
num_colors=48) - 缩小尺寸(Emoji 优先 128×128)
- 开启
remove_duplicates=True - Emoji 场景使用
optimize_for_emoji=True
builder.save(
'emoji.gif',
num_colors=48,
optimize_for_emoji=True,
remove_duplicates=True
)
适用场景与注意事项¶
适合谁用:
- 日常在 Slack 沟通、需要快速产出团队 Emoji 或反应 GIF 的开发者
- 希望把「Slack GIF 规范 + Python 绘图流程」固化到 AI 工作流里的团队
- 需要在 CI 或脚本里批量生成、校验 GIF 后再上传 Slack 的场景
需要注意:
- 这是 Skill(指令 + 工具),不是独立的 GUI 应用;实际绘图逻辑仍由 Agent 编写 PIL 代码完成,效果取决于提示词清晰度
- 官方 README 注明仓库中的 Skill 仅供演示与教育,生产环境使用前请自行充分测试
- Skill 不含预制素材,复杂美术效果需要更详细的视觉描述或参考图
- 校验器主要检查尺寸与基本元信息;实际上传 Slack 时仍可能受工作区策略或网络环境影响,建议导出后在目标 Slack 工作区试发一次
小结¶
slack-gif-creator 是一个小众但极其实用的 Agent Skill:它把 Slack GIF 的尺寸、帧率、颜色与时长约束,连同 Python 工具链和动画思路,打包成 AI 助手可重复执行的 playbook。你不必再每次翻文档查「128 还是 480」,也不必手动试错文件体积——让 Agent 按 Skill 生成、校验、优化即可。
官方地址:https://github.com/anthropics/skills/tree/main/skills/slack-gif-creator