Awesome-omni-skill remotion-thumbnail
Generate professional YouTube thumbnails with AI-powered expression cutouts and Remotion rendering. Perfect for content creators who want consistent, high-quality thumbnails at scale.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/remotion-thumbnail-coltonbatts" ~/.claude/skills/diegosouzapw-awesome-omni-skill-remotion-thumbnail-426891 && rm -rf "$T"
skills/data-ai/remotion-thumbnail-coltonbatts/SKILL.mdRemotion Thumbnail Generator
Generate professional YouTube thumbnails using your own expression cutouts and Remotion's powerful rendering engine.
What This Skill Does
This skill helps you create consistent, high-quality YouTube thumbnails by:
- Capturing your expressions - Guide you through 25 preset expressions
- Creating cutouts - Automatically remove backgrounds using AI
- Generating thumbnails - Render professional thumbnails with custom text, backgrounds, and styles
Quick Start
Prerequisites
- Node.js 18 or higher
- Replicate API key (for background removal) - Get one at https://replicate.com
- A webcam or camera for capturing expressions
Installation
The skill files should be in your agent's skills directory. The renderer is a self-contained Remotion project.
# Install renderer dependencies cd <skill-dir>/renderer npm install
Set Up Your Environment
# Set your Replicate API key export REPLICATE_API_TOKEN="your-api-key-here"
Workflow
Phase 1: Capture Expressions
Run the interactive capture script to photograph yourself in 25 different expressions:
node <skill-dir>/scripts/capture.js
What it does:
- Shows you each expression to capture (e.g., "Happy/Smiling", "Shocked", "Pointing Up")
- Tells you where to save each photo
- Tracks which expressions you've captured
- Saves metadata to
storage/expressions_db.json
Tips:
- Use good lighting (natural light from a window works great)
- Keep the same framing/distance for all shots
- Wear solid colors (avoid busy patterns)
- Plain background makes cutout processing easier
Phase 2: Generate Cutouts
Process all your raw photos to create transparent-background cutouts:
node <skill-dir>/scripts/process_cutouts.js
What it does:
- Reads all captured expressions from the database
- Sends each photo to Replicate's background removal AI
- Downloads and saves the cutout PNGs
- Updates the database with cutout URLs
Time: ~30-60 seconds per expression
Phase 3: Generate Thumbnails
Once you have cutouts, generate thumbnails on demand:
npx remotion still Thumbnail <skill-dir>/renderer/out/thumbnail.png \ --props='{ "headline": "This Changed Everything", "emotionId": 5, "stylePreset": "bold", "cutoutUrl": "<skill-dir>/storage/cutouts/5_cutout.png", "bgUrl": "https://example.com/background.jpg" }'
Parameters:
(string): The main text to displayheadline
(number): Which expression to use (1-25)emotionId
(string): Visual style - "bold", "dramatic", or "clean"stylePreset
(string): Path to your expression cutoutcutoutUrl
(string): URL or path to background imagebgUrl
Output: High-res PNG thumbnail ready for YouTube
Expression Reference
See EXPRESSIONS.md for the full list of 25 expressions and usage tips.
Style Presets
"bold"
- Vibrant colors
- Strong contrast
- Dynamic composition
- Best for: Entertainment, gaming, reaction content
"dramatic"
- Moody lighting
- Cinematic feel
- Subdued colors
- Best for: Documentaries, serious topics, storytelling
"clean"
- Minimal design
- Soft colors
- Professional look
- Best for: Educational, business, tutorials
Advanced Usage
Custom Backgrounds
You can use:
- Image URLs: Direct link to any image
- Local files: File path to an image on disk
- AI-generated: Use DALL-E, Midjourney, etc. and pass the URL
- Solid colors: Pass a color code (implementation detail in renderer)
Batch Generation
Generate multiple thumbnails programmatically:
# See references/BATCH_GENERATION.md for examples
Customizing the Renderer
The Remotion renderer is a standard React/Remotion project. You can:
- Modify styles in
renderer/src/Thumbnail.tsx - Add new style presets
- Adjust layout/composition
- Add animations (for video thumbnails)
See Remotion docs for details.
Troubleshooting
"Expression not found"
- Make sure you've run Phase 1 (capture) and Phase 2 (cutouts)
- Check
to see which expressions are readystorage/expressions_db.json
"Replicate API error"
- Verify your
is set correctlyREPLICATE_API_TOKEN - Check your Replicate account has credits
- See TROUBLESHOOTING.md for more
"Renderer not found"
- Ensure you've run
in the renderer directorynpm install - Check that Node.js 18+ is installed
For more issues, see references/TROUBLESHOOTING.md
File Structure
remotion-thumbnail/ ├── SKILL.md # This file ├── scripts/ │ ├── capture.js # Interactive expression capture │ └── process_cutouts.js # Background removal pipeline ├── references/ │ ├── SETUP.md # Detailed setup guide │ ├── EXPRESSIONS.md # Expression reference │ ├── BATCH_GENERATION.md # Batch processing examples │ └── TROUBLESHOOTING.md # Common issues & solutions ├── assets/ │ └── expressions.json # Expression definitions ├── renderer/ # Remotion project │ ├── src/ │ │ └── Thumbnail.tsx # Main thumbnail component │ └── package.json └── storage/ # Generated at runtime ├── raw/ # Your captured photos ├── cutouts/ # AI-processed cutouts └── expressions_db.json # Expression metadata
Performance Tips
- First run: Cutout generation takes time (~30-60s per expression)
- Subsequent thumbnails: Instant once cutouts are ready
- Caching: Cutouts are reusable forever - generate once, use unlimited times
License
MIT - See LICENSE file for details.
Credits
Created by Alternative Design
Powered by Remotion and Replicate
Support
- Issues: https://github.com/alternative-design/remotion-thumbnail/issues
- Discussions: https://github.com/alternative-design/remotion-thumbnail/discussions
- Twitter: @alternativedesign
Pro tip: Once you have your expression library set up, you can generate unlimited thumbnail variations in seconds. Perfect for A/B testing or maintaining consistent branding across your channel!