Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Search video dialogue and create reaction GIFs with timed subtitles. Perfect for creating meme-worthy clips from movies and TV shows.
.claude/skills/sundial-org-gifhorse/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-19 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 90% | 0% |
Create reaction GIFs from your video library by searching dialogue and adding timed subtitles.
bashcd ~/gifhorse && source venv/bin/activate gifhorse transcribe ~/Movies
The gifhorse command must be run from within its virtual environment. You can activate it with:
bashcd ~/gifhorse && source venv/bin/activate
Or use the activation helper:
bashsource ~/gifhorse/activate.sh
Extract dialogue from your videos (one-time per video):
bash# 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
Download .srt files without storing in the database:
bashgifhorse fetch-subtitles /path/to/videos gifhorse fetch-subtitles /path/to/videos --skip-existing
Find quotes across your entire library:
bash# Basic search gifhorse search "memorable quote" # Search with surrounding context gifhorse search "memorable quote" --context 2
See exactly what will be captured:
bashgifhorse preview "memorable quote" 1 gifhorse preview "quote" 1 --include-before 1 --include-after 1
Generate the GIF with subtitles:
bash# Basic GIF gifhorse create "memorable quote" 1 --output 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
bash# See transcription stats gifhorse stats # List all transcribed videos gifhorse list
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 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)--no-subtitles - Create GIF without subtitle overlayNote: All GIFs automatically include a subtle "gifhorse" watermark in the bottom-right corner.
bashgifhorse search "perfect" gifhorse create "perfect" 1 --padding-after 2.0 --output perfect.gif
bashgifhorse 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
bashgifhorse create "quote" 1 --width 720 --fps 24 --quality high --output tweet.gif
bashgifhorse create "memorable line" 1 --padding-after 3.0
preview to verify timing before creatinggifhorse transcribe and subtitles are fetched automatically--padding-after not --include-after--context 2 to see surrounding dialogueActivate the virtual environment:
bashcd ~/gifhorse && source venv/bin/activate
Make sure FFmpeg-full is installed:
bashbrew install ffmpeg-full
The database stores absolute paths. If you moved videos after transcription, re-transcribe in the new location.
GifHorse works with network-mounted videos:
bash# Mount network share (macOS) open "smb://server-ip/share-name" # Transcribe from network gifhorse transcribe "/Volumes/server-ip/Movies"
Invoke gifhorse when the user wants to:
MIT
Other measured skills in the registry, with their headline benchmark lift.