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- 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)
How to use gifgrep
- 1.Run `gifgrep <query>` to search and display results (e.g., `gifgrep cats --max 5`)
- 2.Use `gifgrep tui "<query>"` to browse results interactively in the TUI
- 3.Add `--download` to save matching GIFs to ~/Downloads
- 4.Use `gifgrep still <file.gif> --at <timestamp> -o <output.png>` to extract a single frame
- 5.Use `gifgrep sheet <file.gif> --frames 9 --cols 3 -o <output.png>` to create a contact sheet
- 6.Pipe results with `--format url` or `--json` for scripting and further processing
Use cases
- 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
- 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
Tenor and Giphy. Use `--source auto|tenor|giphy` to specify. Tenor works with an optional API key; Giphy requires GIPHY_API_KEY environment variable.
Yes. Use `gifgrep tui "query"` for interactive preview and selection, or `--thumbs` flag in CLI for still frame previews (Kitty/Ghostty terminals only).
Use `gifgrep sheet <file.gif> --frames 9 --cols 3 -o sheet.png`. Customize frame count, grid width, and padding as needed.
Yes, use `gifgrep still <file.gif> --at <timestamp> -o still.png` to extract a frame at a specific time (e.g., `--at 1.5s`).
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 5gifgrep cats --format url | head -n 5gifgrep 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
--downloadsaves to~/Downloads--revealshows the last download in Finder
Stills + sheets
gifgrep still ./clip.gif --at 1.5s -o still.pnggifgrep 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|giphyGIPHY_API_KEYrequired for--source giphyTENOR_API_KEYoptional (Tenor demo key used if unset)
Output
--jsonprints an array of results (id,title,url,preview_url,tags,width,height)--formatfor 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 withfile,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=1to force software animationGIFGREP_CELL_ASPECT=0.5to tweak preview geometry
Related skills
More from steipete/clawdis and the wider catalog.

github
GitHub CLI for managing issues, PRs, CI logs, comments, reviews, and API queries.

gog
CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs via Google Workspace API.

goplaces
Query Google Places API for text search, details, reviews, and location resolution with human-friendly or JSON output.

healthcheck
Audit and harden OpenClaw hosts: SSH, firewall, updates, encryption, backups, and gateway security.

himalaya
IMAP/SMTP email CLI for listing, reading, searching, composing, and organizing messages from the shell.

imsg
iMessage/SMS CLI for listing chats, history, and sending messages via Messages.app