GifHorse

v1.2.0

Search video dialogue and create reaction GIFs with timed subtitles. Perfect for creating meme-worthy clips from movies and TV shows.

1· 2.3k·1 current·3 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for coyote-git/gifhorse.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "GifHorse" (coyote-git/gifhorse) from ClawHub.
Skill page: https://clawhub.ai/coyote-git/gifhorse
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: gifhorse, ffmpeg
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Canonical install target

openclaw skills install coyote-git/gifhorse

ClawHub CLI

Package manager switcher

npx clawhub@latest install gifhorse
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
Name/description match the runtime instructions: it requires a gifhorse CLI and ffmpeg to transcribe, search dialogue, preview, and produce GIFs. The iMessage sending feature explains macOS-specific install steps (brew ffmpeg-full). Required binaries listed (gifhorse, ffmpeg) are proportionate to the stated functionality.
Instruction Scope
SKILL.md instructs the agent/user to clone a repo, create a virtualenv, pip install the package, and run gifhorse to transcribe entire video directories, download subtitles from online providers, and optionally use Whisper. Those actions legitimately belong to a dialogue-search/GIF tool, but they involve reading large numbers of local video files, creating a local transcription DB, network access to subtitle providers, and optional messaging delivery — all of which have privacy implications. The instructions are prescriptive (run these shell commands) rather than vague, which reduces ambiguity but increases the need to audit the remote code.
!
Install Mechanism
Although the registry lists this as an instruction-only skill, SKILL.md includes an install recipe that clones https://github.com/Coyote-git/gifhorse.git and runs pip install -e in a venv. Cloning and pip-installing arbitrary code from GitHub executes unreviewed code on the host. GitHub is a common host (lower risk than an unknown personal server), but this is still a remote-code install that should be audited before running. Also the SKILL.md suggests brew install ffmpeg-full (macOS) which is reasonable but OS-specific.
Credentials
The skill does not request environment variables or external credentials in the manifest. That matches SKILL.md, which does not declare API keys. However, the tool will contact subtitle providers and optionally use 'Whisper AI' (unclear whether local Whisper or an external API) and can send via iMessage after configuring a phone number. You should verify whether any network services require credentials or send data off-host.
Persistence & Privilege
The skill is not always-enabled and does not request elevated platform privileges. The tool stores a transcription database (example: ~/gifhorse/transcriptions.db) and installation writes code and creates a virtualenv under ~/gifhorse — normal for a CLI app, but this is persistent local storage of processed media metadata and transcripts. No evidence it modifies other skills or global agent settings.
What to consider before installing
Before installing: (1) Review the GitHub repository and setup scripts referenced in SKILL.md — pip install -e runs repository code on your machine. (2) Confirm where 'Whisper' runs (local model vs external API) and what subtitle providers are contacted — the tool will access the network and could upload audio/transcripts. (3) Be aware it will read/process your video folders and store a local transcription DB (privacy concern for sensitive videos). (4) If you decide to try it, run installation in an isolated environment (VM or disposable account), inspect the code for any unexpected network calls or credential exfiltration, and avoid enabling the iMessage/--send functionality until you trust the code. If you cannot review the repo, treat the install as higher-risk and consider alternatives packaged by trusted maintainers.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🐴 Clawdis
Binsgifhorse, ffmpeg
latestvk976819vz58fd5ssza9w9e0btn811s05
2.3kdownloads
1stars
4versions
Updated 1mo ago
v1.2.0
MIT-0

GifHorse - Dialogue Search & GIF Creator

Create reaction GIFs from your video library by searching dialogue and adding timed subtitles.

What GifHorse Does

  1. Transcribe videos - Extract dialogue with timestamps by downloading subtitles, using local .srt files, or Whisper AI
  2. Search dialogue - Find quotes across your entire video library instantly
  3. Preview clips - See exactly what will be captured before creating the GIF
  4. Create GIFs - Generate GIFs with perfectly timed subtitles and optional watermarks

Setup

First Time Setup

  1. Install gifhorse (via install button above)
  2. Install FFmpeg-full for subtitle rendering (via install button above)
  3. 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 by preview.
  • -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 to exports/
  • Use -o PATH to 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

  1. Always preview first - Use preview to verify timing before creating
  2. Default downloads subtitles - Just run gifhorse transcribe and subtitles are fetched automatically
  3. Watch file sizes - High quality + long duration = large files (20s can be 20+ MB)
  4. Padding vs Include - For reactions, use --padding-after not --include-after
  5. Search with context - Add --context 2 to see surrounding dialogue
  6. Re-transcribe with --force - Use --force to update transcriptions after getting better subtitles
  7. Check subtitle coverage - Use subtitle-status to 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

License

MIT

Comments

Loading comments...