PluginBench
Skill
Review
Audit score 70

gifgrep

steipete/clawdis

Search and download GIFs from Tenor/Giphy, extract stills and contact sheets via CLI/TUI.

What is gifgrep?

gifgrep is a command-line tool for searching GIF providers (Tenor and Giphy), browsing results in an interactive TUI, downloading GIFs, and extracting individual frames or contact sheets. Use it when you need to quickly find, preview, and prepare GIFs for sharing or documentation.

  • Search multiple GIF providers (Tenor, Giphy) from the command line
  • Browse and preview results in an interactive TUI with keyboard navigation
  • Download GIFs to ~/Downloads with optional Finder reveal
  • Extract individual still frames at specific timestamps
  • Generate contact sheets (PNG grids) of sampled frames with customizable layout
  • Output results as JSON or pipe-friendly formats for scripting

How to install gifgrep

npx skills add https://github.com/steipete/clawdis --skill gifgrep
Prerequisites
  • Install gifgrep via brew (steipete/tap/gifgrep) or Go (github.com/steipete/gifgrep/cmd/gifgrep@latest)
  • Optional: GIPHY_API_KEY environment variable for Giphy searches (Tenor works with optional key)
  • Kitty or Ghostty terminal for inline still previews (--thumbs flag)
Claude Code
Cursor
Windsurf
Cline

How to use gifgrep

  1. 1.Run `gifgrep <query>` to search and display results (e.g., `gifgrep cats --max 5`)
  2. 2.Use `gifgrep tui "<query>"` to browse results interactively in the TUI
  3. 3.Add `--download` to save matching GIFs to ~/Downloads
  4. 4.Use `gifgrep still <file.gif> --at <timestamp> -o <output.png>` to extract a single frame
  5. 5.Use `gifgrep sheet <file.gif> --frames 9 --cols 3 -o <output.png>` to create a contact sheet
  6. 6.Pipe results with `--format url` or `--json` for scripting and further processing

Use cases

Good for
  • Finding and downloading GIFs for documentation, PRs, or chat messages
  • Creating contact sheets of GIF frames for quick review without playing video
  • Extracting a single frame from a GIF at a specific timestamp for thumbnails or stills
  • Batch searching and downloading multiple GIFs with CLI flags
  • Integrating GIF search into scripts or workflows via JSON output
Who it's for
  • Developers documenting code with animated examples
  • Content creators and designers needing quick GIF access
  • DevOps/SRE teams creating runbooks with visual examples
  • Anyone automating GIF workflows in shell scripts

gifgrep FAQ

Which GIF providers does gifgrep support?

Tenor and Giphy. Use `--source auto|tenor|giphy` to specify. Tenor works with an optional API key; Giphy requires GIPHY_API_KEY environment variable.

Can I preview GIFs before downloading?

Yes. Use `gifgrep tui "query"` for interactive preview and selection, or `--thumbs` flag in CLI for still frame previews (Kitty/Ghostty terminals only).

How do I create a contact sheet of GIF frames?

Use `gifgrep sheet <file.gif> --frames 9 --cols 3 -o sheet.png`. Customize frame count, grid width, and padding as needed.

Can I extract a single frame from a GIF?

Yes, use `gifgrep still <file.gif> --at <timestamp> -o still.png` to extract a frame at a specific time (e.g., `--at 1.5s`).

How do I use gifgrep in scripts?

Use `--json` to output structured results or `--format url` to get pipe-friendly output. Example: `gifgrep search --json cats | jq '.[0].url'`

Full instructions (SKILL.md)

Source of truth, from steipete/clawdis.


name: gifgrep description: "Search GIF providers with CLI/TUI, download results, and extract stills/sheets." homepage: https://gifgrep.com metadata: { "openclaw": { "emoji": "🧲", "requires": { "bins": ["gifgrep"] }, "install": [ { "id": "brew", "kind": "brew", "formula": "steipete/tap/gifgrep", "bins": ["gifgrep"], "label": "Install gifgrep (brew)", }, { "id": "go", "kind": "go", "module": "github.com/steipete/gifgrep/cmd/gifgrep@latest", "bins": ["gifgrep"], "label": "Install gifgrep (go)", }, ], }, }

gifgrep

Use gifgrep to search GIF providers (Tenor/Giphy), browse in a TUI, download results, and extract stills or sheets.

GIF-Grab (gifgrep workflow)

  • Search -> preview -> download -> extract (still/sheet) for fast review and sharing.

Quick start

  • gifgrep cats --max 5
  • gifgrep cats --format url | head -n 5
  • gifgrep search --json cats | jq '.[0].url'
  • gifgrep tui "office handshake"
  • gifgrep cats --download --max 1 --format url

TUI + previews

  • TUI: gifgrep tui "query"
  • CLI still previews: --thumbs (Kitty/Ghostty only; still frame)

Download + reveal

  • --download saves to ~/Downloads
  • --reveal shows the last download in Finder

Stills + sheets

  • gifgrep still ./clip.gif --at 1.5s -o still.png
  • gifgrep sheet ./clip.gif --frames 9 --cols 3 -o sheet.png
  • Sheets = single PNG grid of sampled frames (great for quick review, docs, PRs, chat).
  • Tune: --frames (count), --cols (grid width), --padding (spacing).

Providers

  • --source auto|tenor|giphy
  • GIPHY_API_KEY required for --source giphy
  • TENOR_API_KEY optional (Tenor demo key used if unset)

Output

  • --json prints an array of results (id, title, url, preview_url, tags, width, height)
  • --format for pipe-friendly fields (e.g., url)

GIF asset hygiene

  • Before recommending or using an animated GIF URL, verify it resolves successfully, has Content-Type: image/gif, and is actually animated (multiple frames or loop metadata; e.g. inspect with file, identify, or a small script).
  • Record attribution/license/source URL alongside the asset.
  • Do not hotlink when a local asset is needed: download/copy it into the project and reference the local file.

Environment tweaks

  • GIFGREP_SOFTWARE_ANIM=1 to force software animation
  • GIFGREP_CELL_ASPECT=0.5 to tweak preview geometry