From sundial-org-awesome-openclaw-skills-4
Search dialogue across video libraries, transcribe with subtitles or Whisper, preview clips, and create reaction GIFs with timed subtitles using FFmpeg.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4This skill uses the workspace's default tool permissions.
Create reaction GIFs from your video library by searching dialogue and adding timed subtitles.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Create reaction GIFs from your video library by searching dialogue and adding timed subtitles.
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
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
Download .srt files without storing in the database:
gifhorse fetch-subtitles /path/to/videos
gifhorse fetch-subtitles /path/to/videos --skip-existing
Find quotes across your entire library:
# Basic search
gifhorse search "memorable quote"
# Search with surrounding context
gifhorse search "memorable quote" --context 2
See exactly what will be captured:
gifhorse preview "memorable quote" 1
gifhorse preview "quote" 1 --include-before 1 --include-after 1
Generate the GIF with subtitles:
# 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
# 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.
gifhorse search "perfect"
gifhorse create "perfect" 1 --padding-after 2.0 --output perfect.gif
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
gifhorse create "quote" 1 --width 720 --fps 24 --quality high --output tweet.gif
gifhorse 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:
cd ~/gifhorse && source venv/bin/activate
Make sure FFmpeg-full is installed:
brew 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:
# 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