# Gifgrep

> Search GIF providers (GIPHY, Tenor), download results, and extract stills or contact sheets.

- Skill: `winsorllc/gifgrep` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add winsorllc/gifgrep`
- Raw SKILL.md: https://api.skillmd.com/api/skills/winsorllc/gifgrep/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: winsorllc (https://skillmd.com/u/winsorllc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/winsorllc/gifgrep

---


# gifgrep

Search for GIFs from GIPHY and Tenor APIs, download them, and extract still frames or contact sheets.

## Setup

Get API keys:

- **GIPHY**: https://developers.giphy.com/dashboard/
- **Tenor**: https://tenor.com/gifapi

Configure environment:

```bash
export GIPHY_API_KEY="your-giphy-key"
export TENOR_API_KEY="your-tenor-key"  # Optional, uses demo key if unset
```

## Usage

### Search GIPHY

Search for GIFs on GIPHY:

```bash
curl "https://api.giphy.com/v1/gifs/search?api_key=${GIPHY_API_KEY}&q=hello&limit=5" | jq '.data[].images.original.url'
```

### Search Tenor

Search for GIFs on Tenor:

```bash
curl "https://tenor.googleapis.com/v2/search?key=${TENOR_API_KEY}&q=hello&limit=5" | jq '.results[].media_formats.gif.url'
```

### Download a GIF

Download a GIF from URL:

```bash
curl -O "https://media.giphy.com/media/xxx/giphy.gif"
```

### Extract Still Frame

Extract a single frame from a GIF:

```bash
ffmpeg -i animation.gif -vf "select=eq(n\,0)" -vsync vfr still.png
```

### Extract Frame at Time

Extract a frame at a specific time:

```bash
ffmpeg -i animation.gif -ss 1.5 -frames:v 1 still.png
```

### Create Contact Sheet

Create a grid showing multiple frames:

```bash
ffmpeg -i animation.gif -vf "fps=5,scale=100:-1,tile=3x3" sheet.png
```

## Tips

- Use `--limit` to control number of results
- Filter by rating: `&rating=g` for general audience
- Use `trending` endpoints for popular content
- Cache downloaded GIFs to avoid repeated API calls

