원클릭으로
animated-message-composer
Create animated GIFs for messaging platforms. Generates animated content optimized for sharing in chat applications.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Create animated GIFs for messaging platforms. Generates animated content optimized for sharing in chat applications.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Build autonomous game-playing agents using AI and reinforcement learning. Covers game environments, agent decision-making, strategy development, and performance optimization. Use when creating game-playing bots, testing game AI, strategic decision-making systems, or game theory applications.
Build interactive chat agents for exploring and discussing academic research papers from ArXiv. Covers paper retrieval, content processing, question-answering, and research synthesis. Use when building research assistants, paper summarization tools, academic knowledge bases, or scientific literature chatbots.
Build agents that generate creative content including music, memes, podcasts, and multimedia. Covers generative models, content synthesis, style transfer, and creative control. Use when building creative assistants, automated content creators, multimedia generators, or artistic AI systems.
Build agents specialized in conducting thorough research, gathering information from multiple sources, and synthesizing findings. Covers research planning, source evaluation, and report generation. Use when automating market research, competitive analysis, literature reviews, or intelligence gathering.
Build chat interfaces for querying documents using natural language. Extract information from PDFs, GitHub repositories, emails, and other sources. Use when creating interactive document Q&A systems, knowledge base chatbots, email search interfaces, or document exploration tools.
Create agents for financial analysis, investment research, and portfolio management. Covers financial data processing, risk analysis, and recommendation generation. Use when building investment analysis tools, robo-advisors, portfolio trackers, or financial intelligence systems.
| name | animated-message-composer |
| description | Create animated GIFs for messaging platforms. Generates animated content optimized for sharing in chat applications. |
| license | Proprietary. LICENSE.txt has complete terms |
A toolkit providing utilities and knowledge for creating animated GIFs optimized for Slack.
Emoji GIFs (Slack emoji uploads):
Message GIFs:
from core.gif_builder import GIFBuilder
from PIL import Image, ImageDraw
# 1. Create builder
builder = GIFBuilder(width=128, height=128, fps=10)
# 2. Generate frames
for 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 optimization
builder.save('output.gif', num_colors=48, optimize_for_emoji=True)
Optional shortcut: use animation templates in templates/ to generate frames quickly:
from templates.shake import create_shake_animation
frames = create_shake_animation(
object_type='circle',
object_data={'radius': 30, 'color': (100, 150, 255)},
num_frames=20,
direction='both'
)
builder.add_frames(frames)
If a user uploads an image, consider whether they want to:
Load and work with images using PIL:
from PIL import Image
uploaded = Image.open('file.png')
# Use directly, or just as reference for colors/style
When drawing graphics from scratch, use PIL ImageDraw primitives:
from PIL import ImageDraw
draw = ImageDraw.Draw(frame)
# Circles/ovals
draw.ellipse([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
# Stars, triangles, any polygon
points = [(x1, y1), (x2, y2), (x3, y3), ...]
draw.polygon(points, fill=(r, g, b), outline=(r, g, b), width=3)
# Lines
draw.line([(x1, y1), (x2, y2)], fill=(r, g, b), width=5)
# Rectangles
draw.rectangle([x1, y1, x2, y2], fill=(r, g, b), outline=(r, g, b), width=3)
Avoid relying solely on emoji fonts: they are platform-specific. If you use draw_emoji or draw_emoji_enhanced, expect rendering differences and be ready to adjust with shapes or text.
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:
create_gradient_background)Make shapes more interesting:
Pay attention to colors:
For complex shapes (hearts, snowflakes, etc.):
Be creative and detailed! A good Slack GIF should look polished, not like placeholder graphics.
core.gif_builder)Assembles frames and optimizes for Slack:
builder = GIFBuilder(width=128, height=128, fps=10)
builder.add_frame(frame) # Add PIL Image
builder.add_frames(frames) # Add list of frames
builder.save('out.gif', num_colors=48, optimize_for_emoji=True, remove_duplicates=True)
core.validators)Check if GIF meets Slack requirements:
from core.validators import (
validate_gif,
is_slack_ready,
check_slack_size,
validate_dimensions
)
# Detailed validation
passes, info = validate_gif('my.gif', is_emoji=True, verbose=True)
# Quick check
if is_slack_ready('my.gif'):
print("Ready!")
# Focused checks
passes, info = check_slack_size('my.gif', is_emoji=True)
passes, info = validate_dimensions(128, 128, is_emoji=True)
core.easing)Smooth motion instead of linear:
from core.easing import interpolate
# Progress from 0.0 to 1.0
t = i / (num_frames - 1)
# Apply easing
y = 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
core.frame_composer)Convenience functions for common needs:
from core.frame_composer import (
create_blank_frame, # Solid color background
create_gradient_background, # Vertical gradient
draw_circle, # Helper for circles
draw_rectangle, # Helper for rectangles
draw_line, # Helper for lines
draw_text, # Simple text rendering
draw_emoji, # Emoji rendering (platform-dependent)
draw_star # 5-pointed star
)
Other helpers include draw_emoji_enhanced, draw_circle_with_shadow, draw_rounded_rectangle, and add_vignette.
core.color_palettes)Hand-picked palettes and helpers for readable colors:
from core.color_palettes import get_palette, get_text_color_for_background
palette = get_palette('vibrant')
text_color = get_text_color_for_background(palette['background'])
core.typography)High-quality outlined or shadowed text:
from core.typography import draw_text_with_outline
draw_text_with_outline(frame, "SALE!", position=(240, 240), font_size=48, centered=True)
core.visual_effects)Particles, blur, impacts, and motion effects:
from core.visual_effects import ParticleSystem
particles = ParticleSystem()
particles.emit(240, 240, count=20)
templates/)Ready-made animations (shake, bounce, spin, zoom, slide, fade, flip, explode, etc.).
Use them to generate frames and then pass to GIFBuilder.
Offset object position with oscillation:
math.sin() or math.cos() with frame indexScale object size rhythmically:
math.sin(t * frequency * 2 * math.pi) for smooth pulseObject falls and bounces:
interpolate() with easing='bounce_out' for landingeasing='ease_in' for falling (accelerating)Rotate object around center:
image.rotate(angle, resample=Image.BICUBIC)Gradually appear or disappear:
Image.blend(image1, image2, alpha)Move object from off-screen to position:
interpolate() with easing='ease_out' for smooth stopeasing='back_out'Scale and position for zoom effect:
Create particles radiating outward:
x += vx, y += vyvy += gravity_constantOnly when asked to make the file size smaller, implement a few of the following methods:
num_colors=48 instead of 128remove_duplicates=True in save()optimize_for_emoji=True auto-optimizes# Maximum optimization for emoji
builder.save(
'emoji.gif',
num_colors=48,
optimize_for_emoji=True,
remove_duplicates=True
)
This skill provides:
It does NOT provide:
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.
pip install pillow imageio numpy