前言¶
在 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