Slack Gif Creator
Overview
Create custom animated GIFs for Slack workspaces, including celebration GIFs, reaction GIFs, and custom emoji animations. These add personality and fun to team communications.
When to Use
- Celebrating team wins and milestones
- Creating custom emoji reactions
- Building "Ship it!" or "LGTM" animations
- Designing status indicators
- Adding personality to team channels
- Inside jokes and team culture building
Quick Start
- Choose GIF type (celebration, reaction, status)
- Select method (PIL/Pillow for simple, moviepy for video)
- Create frames with animation loop
- Optimize for Slack (128x128px emoji, <200KB)
- Upload to workspace
from PIL import Image, ImageDraw, ImageFont
def create_shipped_gif(output_path):
frames = []
size = (128, 128)
for i in range(10):
img = Image.new('RGBA', size, (255, 255, 255, 0))
draw = ImageDraw.Draw(img)
# Pulsing effect
scale = 0.8 + 0.2 * abs(i - 5) / 5
font_size = int(20 * scale)
draw.text((20, 50), "SHIPPED!", fill=(255, 100, 100))
frames.append(img)
frames[0].save(output_path, save_all=True, append_images=frames[1:],
duration=100, loop=0, transparency=0, disposal=2)
create_shipped_gif("shipped.gif")
GIF Types
1. Celebration GIFs
- Team wins
- Project completions
- Work anniversaries
- Promotions
- Goal achievements
2. Reaction GIFs
- Approval/thumbs up variations
- "Ship it!"
- "LGTM" (Looks Good To Me)
- "Deploying..."
- Custom team expressions
3. Status GIFs
- "In a meeting"
- "Deep work mode"
- "Coffee break"
- "Reviewing PR"
Creation Methods
Method 1: Python with Pillow (Simple Animations)
from PIL import Image, ImageDraw, ImageFont
import os
def create_text_gif(text, output_path, frames=10, size=(128, 128)):
"""
Create simple animated text GIF.
Args:
text: Text to animate
*See sub-skills for full details.*
### Method 2: Python with moviepy (Video-to-GIF)
```python
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
import moviepy.video.fx.all as vfx
def video_to_slack_gif(video_path, output_path, start=0, duration=3, text=None):
"""
Convert video clip to Slack-optimized GIF.
Args:
video_path: Source video file
*See sub-skills for full details.*
### Method 3: Frame-by-Frame Animation
```python
from PIL import Image, ImageDraw
import math
def create_spinner_gif(output_path, size=64, frames=12):
"""Create loading spinner GIF."""
images = []
for frame in range(frames):
img = Image.new('RGBA', (size, size), (255, 255, 255, 0))
*See sub-skills for full details.*
## Slack-Specific Optimization
### Size Requirements
| Use Case | Max Size | Recommended |
|----------|----------|-------------|
| Custom emoji | 128x128 px | 64x64 px |
| Message GIF | 500 KB | Under 200 KB |
| Profile image | 512x512 px | 256x256 px |
### Optimization Script
```python
from PIL import Image
import subprocess
def optimize_for_slack(input_path, output_path, max_size_kb=200):
"""
Optimize GIF for Slack file size limits.
Args:
input_path: Source GIF
*See sub-skills for full details.*
## Related Skills
- [internal-comms](../internal-comms/SKILL.md) - Team communications
- [canvas-design](../../content-design/canvas-design/SKILL.md) - Static visual art
- [algorithmic-art](../../content-design/algorithmic-art/SKILL.md) - Generative animations
---
## Version History
- **2.0.0** (2026-01-02): Upgraded to v2 template - added Quick Start, When to Use, Execution Checklist, Error Handling, Metrics sections
- **1.0.0** (2024-10-15): Initial release with PIL/Pillow, moviepy methods, Slack optimization, celebration GIF templates
## Sub-Skills
- [Design Guidelines (+2)](design-guidelines/SKILL.md)
## Sub-Skills
- [Execution Checklist](execution-checklist/SKILL.md)
- [Error Handling](error-handling/SKILL.md)
- [Metrics](metrics/SKILL.md)
- [Dependencies](dependencies/SKILL.md)