gifhorse
Search video dialogue and create reaction GIFs with timed subtitles. Perfect for creating meme-worthy clips from movies and TV shows.
Install
mkdir -p .claude/skills/gifhorse && curl -L -o skill.zip "https://mcp.directory/api/skills/download/5721" && unzip -o skill.zip -d .claude/skills/gifhorse && rm skill.zipInstalls to .claude/skills/gifhorse
About this skill
GifHorse - Dialogue Search & GIF Creator
Create reaction GIFs from your video library by searching dialogue and adding timed subtitles.
What GifHorse Does
- Transcribe videos - Extract dialogue with timestamps by downloading subtitles, using local .srt files, or Whisper AI
- Search dialogue - Find quotes across your entire video library instantly
- Preview clips - See exactly what will be captured before creating the GIF
- Create GIFs - Generate GIFs with perfectly timed subtitles and optional watermarks
Setup
First Time Setup
- Install gifhorse (via install button above)
- Install FFmpeg-full for subtitle rendering (via install button above)
- Transcribe your video library (downloads subtitles automatically):
cd ~/gifhorse && source venv/bin/activate
gifhorse transcribe ~/Movies
The gifhorse command must be run from within its virtual environment. You can activate it with:
cd ~/gifhorse && source venv/bin/activate
Or use the activation helper:
source ~/gifhorse/activate.sh
Available Commands
Transcribe Videos
Extract dialogue from your videos (one-time per video):
# Default: downloads subtitles from online providers (fast, recommended)
gifhorse transcribe /path/to/videos
# Use only local .srt files (no downloading, no Whisper)
gifhorse transcribe /path/to/videos --use-subtitles
# Use Whisper AI (slow but works for any video)
gifhorse transcribe /path/to/video.mp4 --use-whisper
# Re-transcribe videos already in database
gifhorse transcribe /path/to/videos --force
Download Subtitles Only
Download .srt files without storing in the database:
gifhorse fetch-subtitles /path/to/videos
gifhorse fetch-subtitles /path/to/videos --skip-existing
Search Dialogue
Find quotes across your entire library:
# Basic search
gifhorse search "memorable quote"
# Search with surrounding context
gifhorse search "memorable quote" --context 2
# Show all results (no limit)
gifhorse search "memorable quote" --all
# Custom result limit (default: 100)
gifhorse search "memorable quote" --limit 50
Preview Before Creating
See exactly what will be captured:
gifhorse preview "memorable quote" 1
gifhorse preview "quote" 1 --include-before 1 --include-after 1
Create GIF
Generate the GIF with subtitles:
# Basic GIF (auto-named from dialogue, saved to exports/)
gifhorse create "memorable quote" 1
# Explicit output path
gifhorse create "memorable quote" 1 -o reaction.gif
# High quality for social media
gifhorse create "quote" 1 --width 720 --fps 24 --quality high
# Include conversation context
gifhorse create "quote" 1 --include-before 2 --include-after 1
# Substitute words in subtitles (repeatable, target segments by number from preview)
gifhorse create "the age of men" 1 --include-after 1 \
-s 1 "men" "standardized software" \
-s 2 "orc" "custom applications"
# Clean replace (no strikethrough)
gifhorse create "quote" 1 -r 1 "old word" "new word"
# Create and send via iMessage
gifhorse create "quote" 1 --send
gifhorse create "quote" 1 --send-to "+15551234567"
Manage Database
# Remove videos by path pattern (SQL LIKE wildcards)
gifhorse remove "%Adventure Time%"
gifhorse remove "%S01%" --yes
# Check subtitle status for a directory
gifhorse subtitle-status ~/Videos
gifhorse subtitle-status ~/Videos --missing-only
Check Status
# See transcription stats
gifhorse stats
# List all transcribed videos
gifhorse list
Configuration
# Set phone number for iMessage sending
gifhorse config --set-phone "+15551234567"
# Show current configuration
gifhorse config --show
Timing Options
Control exactly what gets captured:
--include-before N- Include N dialogue segments before the match--include-after N- Include N dialogue segments after the match--padding-before SECS- Add buffer seconds before dialogue starts (default: 1.0)--padding-after SECS- Add buffer seconds after dialogue ends (default: 1.0)--start-offset SECS- Manual adjustment to start time (can be negative)--end-offset SECS- Manual adjustment to end time (can be negative)
Important: For reactions after dialogue, use --padding-after instead of --include-after. The include-after option captures ALL time until the next dialogue segment (could be 30+ seconds!).
Quality Options
--quality low|medium|high- Color palette quality (affects file size)--fps N- Frames per second (default: 15, use 24 for smooth)--width N- Width in pixels (default: 480, use 720 for HD)
Subtitle Options
-s, --sub NUM OLD NEW- Substitute words in a segment (repeatable). Replaced words render struck through in red, replacements in red. Segment numbers shown bypreview.-r, --replace NUM OLD NEW- Replace words cleanly (no strikethrough). Repeatable.--no-subtitles- Create GIF without subtitle overlay
Output
- Default output filename is auto-derived from dialogue text (e.g.,
i_dont_think_so.gif) and saved toexports/ - Use
-o PATHto override. Collision handling appends_2,_3, etc.
iMessage
--send- Send created GIF to configured phone number via iMessage (macOS only)--send-to NUMBER- Send to a specific phone number (overrides config)
Note: All GIFs automatically include a subtle "gifhorse" watermark in the bottom-right corner.
Common Workflows
Quick Reaction GIF
gifhorse search "perfect"
gifhorse create "perfect" 1 --padding-after 2.0
Full Conversation Exchange
gifhorse search "key phrase"
gifhorse preview "key phrase" 1 --include-before 2 --include-after 1
gifhorse create "key phrase" 1 --include-before 2 --include-after 1
Meme with Word Substitution
gifhorse preview "the age of men" 1 --include-after 1
gifhorse create "the age of men" 1 --include-after 1 \
-s 1 "men" "standardized software" \
-s 2 "orc" "custom applications"
High Quality for Twitter/X
gifhorse create "quote" 1 --width 720 --fps 24 --quality high -o tweet.gif
Scene with Reaction After Dialogue
gifhorse create "memorable line" 1 --padding-after 3.0
Create and Send via iMessage
gifhorse config --set-phone "+15551234567"
gifhorse create "quote" 1 --send
Tips & Tricks
- Always preview first - Use
previewto verify timing before creating - Default downloads subtitles - Just run
gifhorse transcribeand subtitles are fetched automatically - Watch file sizes - High quality + long duration = large files (20s can be 20+ MB)
- Padding vs Include - For reactions, use
--padding-afternot--include-after - Search with context - Add
--context 2to see surrounding dialogue - Re-transcribe with --force - Use
--forceto update transcriptions after getting better subtitles - Check subtitle coverage - Use
subtitle-statusto see which videos need subtitles
File Size Guide
- Low quality, 10s, 360p: ~1-2 MB
- Medium quality, 10s, 480p: ~3-5 MB
- High quality, 20s, 720p: ~20+ MB
Troubleshooting
"command not found: gifhorse"
Activate the virtual environment:
cd ~/gifhorse && source venv/bin/activate
Subtitle rendering errors
Make sure FFmpeg-full is installed:
brew install ffmpeg-full
Video file not found
The database stores absolute paths. If you moved videos after transcription, re-transcribe in the new location.
Network Share Support
GifHorse works with network-mounted videos:
# Mount network share (macOS)
open "smb://server-ip/share-name"
# Transcribe from network
gifhorse transcribe "/Volumes/server-ip/Movies"
When to Use This Skill
Invoke gifhorse when the user wants to:
- Search for dialogue or quotes in their video library
- Create a reaction GIF from a movie or TV show
- Make a meme GIF with substituted words
- Add subtitles to a video clip
- Transcribe videos for searchable dialogue
- Preview what a GIF will look like before creating it
- Send a GIF via iMessage
- Remove videos from the database
- Check subtitle status for their video collection
Learn More
- GitHub: https://github.com/Coyote-git/gifhorse
- Usage Guide: https://github.com/Coyote-git/gifhorse/blob/main/USAGE_GUIDE.md
- Roadmap: https://github.com/Coyote-git/gifhorse/blob/main/ROADMAP.md
License
MIT
More by openclaw
View all skills by openclaw →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversBrave Search enables private web, local, image, video, and news searches with content safety, leveraging Brave's Search
Extract and analyze YouTube transcripts in multiple languages. Use our YouTube transcriptor to easily transcribe for You
Supercharge AI tools with Kagi MCP: fast google web search API, powerful ai summarizer, and seamless ai summary tool int
AI-powered video editor that integrates Video Jungle for natural-language YouTube video search, automated clip generatio
Fetch is a web scraping tool that extracts web content and YouTube transcripts, converting HTML to Markdown with accurat
Connect to the Brave Search API for fast web, image, and video results. Experience the power of the Brave search engine
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.