Slack Gif Creator

作者 anthropics34040c9c5685Complete terms in LICENSE.txt178K 個星標收錄於 2026年9月24日更新於 2026年9月24日儲存庫4 天前更新

Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like "make me a GIF of X doing Y for Slack."

精選包含腳本Design & Creative
AI 產生的概覽

為 Slack 製作尺寸與檔案大小經過最佳化的動畫 GIF,並提供 PIL 繪圖輔助、緩動函式與驗證工具。

功能
提供 Slack 對 GIF 的限制知識(表情符號 128x128、訊息 480x480,10-30 FPS,48-128 色),以及用來組合畫格、套用緩動並驗證輸出的 Python 工具。使用者以 PIL 圖元繪製動畫畫格,GIFBuilder 負責儲存最佳化後的 GIF,可選用表情符號模式。內容也涵蓋彈跳、脈動、旋轉、粒子爆發等動畫概念,以及縮小檔案大小的策略。
適用情境
當使用者要求製作供 Slack 使用的動畫 GIF 時使用,例如把上傳的圖片做成動畫,或從零開始繪製新動畫。也適合在既有 GIF 需要驗證或壓縮,以符合 Slack 尺寸與檔案大小限制時使用。
執行需求
需要安裝 pillow、imageio 與 numpy 的 Python 環境(pip install pillow imageio numpy)。隨附 core/ 下的可執行腳本(gif_builder、validators、easing、frame_composer)。不需要憑證或網路存取。

Slack GIF Creator

A toolkit providing utilities and knowledge for creating animated GIFs optimized for Slack.

Slack Requirements

Dimensions:

  • Emoji GIFs: 128x128 (recommended)
  • Message GIFs: 480x480

Parameters:

  • FPS: 10-30 (lower is smaller file size)
  • Colors: 48-128 (fewer = smaller file size)
  • Duration: Keep under 3 seconds for emoji GIFs

Core Workflow

python
from core.gif_builder import GIFBuilderfrom PIL import Image, ImageDraw
# 1. Create builderbuilder = GIFBuilder(width=128, height=128, fps=10)
# 2. Generate framesfor i in range(12):    frame = Image.new('RGB', (128, 128), (240, 248, 255))    draw = ImageDraw.Draw(frame)
    # Draw your animation using PIL primitives    # (circles, polygons, lines, etc.)
    builder.add_frame(frame)
# 3. Save with optimizationbuilder.save('output.gif', num_colors=48, optimize_for_emoji=True)

Drawing Graphics

Working with User-Uploaded Images

If a user uploads an image, consider whether they want to:

  • Use it directly (e.g., "animate this", "split this into frames")
  • Use it as inspiration (e.g., "make something like this")

Load and work with images using PIL:

python
from PIL import Image
uploaded = Image.open('file.png')# Use directly, or just as reference for colors/style

Drawing from Scratch

When drawing graphics from scratch, use PIL ImageDraw primitives:

python
from PIL import ImageDraw
draw = ImageDraw.Draw(frame)
# Circles/ovalsdraw.ellipse([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
# Stars, triangles, any polygonpoints = [(x1, y1), (x2, y2), (x3, y3), ...]draw.polygon(points, fill=(r, g, b), outline=(r, g, b), width=3)
# Linesdraw.line([(x1, y1), (x2, y2)], fill=(r, g, b), width=5)
# Rectanglesdraw.rectangle([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)

Don't use: Emoji fonts (unreliable across platforms) or assume pre-packaged graphics exist in this skill.

Making Graphics Look Good

Graphics should look polished and creative, not basic. Here's how:

Use thicker lines - Always set width=2 or higher for outlines and lines. Thin lines (width=1) look choppy and amateurish.

Add visual depth:

  • Use gradients for backgrounds (create_gradient_background)
  • Layer multiple shapes for complexity (e.g., a star with a smaller star inside)

Make shapes more interesting:

  • Don't just draw a plain circle - add highlights, rings, or patterns
  • Stars can have glows (draw larger, semi-transparent versions behind)
  • Combine multiple shapes (stars + sparkles, circles + rings)

Pay attention to colors:

  • Use vibrant, complementary colors
  • Add contrast (dark outlines on light shapes, light outlines on dark shapes)
  • Consider the overall composition

For complex shapes (hearts, snowflakes, etc.):

  • Use combinations of polygons and ellipses
  • Calculate points carefully for symmetry
  • Add details (a heart can have a highlight curve, snowflakes have intricate branches)

Be creative and detailed! A good Slack GIF should look polished, not like placeholder graphics.

Available Utilities

GIFBuilder (core.gif_builder)

Assembles frames and optimizes for Slack:

python
builder = GIFBuilder(width=128, height=128, fps=10)builder.add_frame(frame)  # Add PIL Imagebuilder.add_frames(frames)  # Add list of framesbuilder.save('out.gif', num_colors=48, optimize_for_emoji=True, remove_duplicates=True)

Validators (core.validators)

Check if GIF meets Slack requirements:

python
from core.validators import validate_gif, is_slack_ready
# Detailed validationpasses, info = validate_gif('my.gif', is_emoji=True, verbose=True)
# Quick checkif is_slack_ready('my.gif'):    print("Ready!")

Easing Functions (core.easing)

Smooth motion instead of linear:

python
from core.easing import interpolate
# Progress from 0.0 to 1.0t = i / (num_frames - 1)
# Apply easingy = interpolate(start=0, end=400, t=t, easing='ease_out')
# Available: linear, ease_in, ease_out, ease_in_out,#           bounce_out, elastic_out, back_out

Frame Helpers (core.frame_composer)

Convenience functions for common needs:

python
from core.frame_composer import (    create_blank_frame,         # Solid color background    create_gradient_background,  # Vertical gradient    draw_circle,                # Helper for circles    draw_text,                  # Simple text rendering    draw_star                   # 5-pointed star)

Animation Concepts

Shake/Vibrate

Offset object position with oscillation:

  • Use math.sin() or math.cos() with frame index
  • Add small random variations for natural feel
  • Apply to x and/or y position

Pulse/Heartbeat

Scale object size rhythmically:

  • Use math.sin(t * frequency * 2 * math.pi) for smooth pulse
  • For heartbeat: two quick pulses then pause (adjust sine wave)
  • Scale between 0.8 and 1.2 of base size

Bounce

Object falls and bounces:

  • Use interpolate() with easing='bounce_out' for landing
  • Use easing='ease_in' for falling (accelerating)
  • Apply gravity by increasing y velocity each frame

Spin/Rotate

Rotate object around center:

  • PIL: image.rotate(angle, resample=Image.BICUBIC)
  • For wobble: use sine wave for angle instead of linear

Fade In/Out

Gradually appear or disappear:

  • Create RGBA image, adjust alpha channel
  • Or use Image.blend(image1, image2, alpha)
  • Fade in: alpha from 0 to 1
  • Fade out: alpha from 1 to 0

Slide

Move object from off-screen to position:

  • Start position: outside frame bounds
  • End position: target location
  • Use interpolate() with easing='ease_out' for smooth stop
  • For overshoot: use easing='back_out'

Zoom

Scale and position for zoom effect:

  • Zoom in: scale from 0.1 to 2.0, crop center
  • Zoom out: scale from 2.0 to 1.0
  • Can add motion blur for drama (PIL filter)

Explode/Particle Burst

Create particles radiating outward:

  • Generate particles with random angles and velocities
  • Update each particle: x += vx, y += vy
  • Add gravity: vy += gravity_constant
  • Fade out particles over time (reduce alpha)

Optimization Strategies

Only when asked to make the file size smaller, implement a few of the following methods:

  1. Fewer frames - Lower FPS (10 instead of 20) or shorter duration
  2. Fewer colors - num_colors=48 instead of 128
  3. Smaller dimensions - 128x128 instead of 480x480
  4. Remove duplicates - remove_duplicates=True in save()
  5. Emoji mode - optimize_for_emoji=True auto-optimizes
python
# Maximum optimization for emojibuilder.save(    'emoji.gif',    num_colors=48,    optimize_for_emoji=True,    remove_duplicates=True)

Philosophy

This skill provides:

  • Knowledge: Slack's requirements and animation concepts
  • Utilities: GIFBuilder, validators, easing functions
  • Flexibility: Create the animation logic using PIL primitives

It does NOT provide:

  • Rigid animation templates or pre-made functions
  • Emoji font rendering (unreliable across platforms)
  • A library of pre-packaged graphics built into the skill

Note on user uploads: This skill doesn't include pre-built graphics, but if a user uploads an image, use PIL to load and work with it - interpret based on their request whether they want it used directly or just as inspiration.

Be creative! Combine concepts (bouncing + rotating, pulsing + sliding, etc.) and use PIL's full capabilities.

Dependencies

bash
pip install pillow imageio numpy

來源與署名

來源:anthropics/skills位於skills/slack-gif-creator提交34040c9

授權條款: Complete terms in LICENSE.txt

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架

更多來自 anthropics/skills 的技能

Theme Factory

anthropics

精選

提供 10 套預設配色與字型主題,並可即時產生新主題,為簡報、文件、報告與 HTML 頁面統一風格。

Design & Creative178K4 天前更新

Internal Comms

anthropics

精選

依公司慣用格式撰寫內部溝通文件,例如 3P 更新、公司電子報、FAQ、狀態報告與事故報告。

Communication178K4 天前更新

Frontend Design

anthropics

精選

在建立或改造使用者介面時,提供打造獨特、有意識視覺設計的指引。

Design & Creative178K4 天前更新

Doc Coauthoring

anthropics

精選

引導使用者透過三階段工作流程協作撰寫文件、提案、技術規格與決策文件。

Writing & Content178K4 天前更新

Discernment Nudge

anthropics

精選

After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.

待分類178K4 天前更新

Canvas Design

anthropics

精選

依照寫好的設計理念創作原創視覺藝術,輸出 PNG 或 PDF,適合海報、藝術作品等靜態成品。

Design & Creative178K4 天前更新