gif-search — Claude Code skill: what it does, how to install
Searches and downloads GIFs directly through the Tenor API using curl and jq. Useful when your agent needs reaction media or quick links for chat.
npx skills add NousResearch/hermes-agent --skill gif-search -a claude-codeWhat gif-search does
The skill queries the Tenor API v2 and extracts media URLs with jq. It fetches animation links and saves GIF files to disk via curl -sL. Supported formats include gif, preview tinygif, and mp4.
Results accept safety levels with contentfilter and language codes via locale. The limit parameter takes values from 1 to 50, defaulting to 20. Spaces in queries require + encoding.
Running it requires curl, jq, and the TENOR_API_KEY environment variable. Without this API key, every Tenor endpoint call will fail immediately.
What it helps with
- find direct links to reaction GIFs or
tinygifpreviews - download a GIF to disk from a search query
- inspect media metadata including image dimensions
- filter Tenor search results by safety rating with
contentfilter
Example prompts for the agent
- Find a thumbs up GIF via Tenor and give me the tinygif URL
- Search for celebration on Tenor and download the top result as celebration.gif
- Search for 3 cat GIFs and show their dimensions along with preview links
How to install gif-search
1Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill gif-search -a claude-code2Manually: put the files in place
~/.claude/skills/gif-search/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/gif-search/
1Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill gif-search -a codex2Manually: put the files in place
.agents/skills/gif-search/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill gif-search -a cursor2Manually: put the files in place
.cursor/skills/gif-search/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install NousResearch/hermes-agent gif-search2Manually: put the files in place
.github/skills/gif-search/SKILL.md1Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill gif-search -a gemini-cli2Platform CLI
gemini skills install https://github.com/NousResearch/hermes-agent --path skills/media/gif-searchManually: put the files in place
.devin/skills/gif-search/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add NousResearch/hermes-agent --skill gif-search -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set42
The whole set →Similar
Questions about gif-search
How do I install gif-search in Claude Code?
Run npx skills add NousResearch/hermes-agent --skill gif-search -a claude-code. You will also need curl, jq, and the TENOR_API_KEY environment variable configured.
What does the gif-search skill do?
It queries the Tenor API with curl and parses JSON output using jq. The skill returns media links, extracts metadata, and downloads GIF or MP4 files locally.
Where do I get and configure TENOR_API_KEY?
You get a Tenor API key from Google Cloud Console. Then define it in ${HERMES_HOME:-~/.hermes}/.env as TENOR_API_KEY=your_key_here or export it in your shell environment.
Source text
SKILL.md · MIT
---
name: gif-search
description: "Search/download GIFs from Tenor via curl + jq."
version: 1.1.0
author: Hermes Agent
license: MIT
platforms: [linux, macos, windows]
prerequisites:
env_vars: [TENOR_API_KEY]
commands: [curl, jq]
metadata:
hermes:
tags: [GIF, Media, Search, Tenor, API]
---
# GIF Search (Tenor API)
Search and download GIFs directly via the Tenor API using curl. No extra tools needed.
## When to use
Useful for finding reaction GIFs, creating visual content, and sending GIFs in chat.
## Setup
Set your Tenor API key in your environment (add to `${HERMES_HOME:-~/.hermes}/.env`):
```bash
TENOR_API_KEY=your_key_here
```
Get a free API key at https://developers.google.com/tenor/guides/quickstart — the Google Cloud Console Tenor API key is free and has generous rate limits.
## Prerequisites
- `curl` and `jq` (both standard on macOS/Linux)
- `TENOR_API_KEY` environment variable
## Search for GIFs
```bash
# Search and get GIF URLs
curl -s "https://tenor.googleapis.com/v2/search?q=thumbs+up&limit=5&key=${TENOR_API_KEY}" | jq -r '.results[].media_formats.gif.url'
# Get smaller/preview versions
curl -s "https://tenor.googleapis.com/v2/search?q=nice+work&limit=3&key=${TENOR_API_KEY}" | jq -r '.results[].media_formats.tinygif.url'
```
## Download a GIF
```bash
# Search and download the top result
URL=$(curl -s "https://tenor.googleapis.com/v2/search?q=celebration&limit=1&key=${TENOR_API_KEY}" | jq -r '.results[0].media_formats.gif.url')
curl -sL "$URL" -o celebration.gif
```
## Get Full Metadata
```bash
curl -s "https://tenor.googleapis.com/v2/search?q=cat&limit=3&key=${TENOR_API_KEY}" | jq '.results[] | {title: .title, url: .media_formats.gif.url, preview: .media_formats.tinygif.url, dimensions: .media_formats.gif.dims}'
```
## API Parameters
| Parameter | Description |
|-----------|-------------|
| `q` | Search query (URL-encode spaces as `+`) |
| `limit` | Max results (1-50, default 20) |
| `key` | API key (from `$TENOR_API_KEY` env var) |
| `media_filter` | Filter formats: `gif`, `tinygif`, `mp4`, `tinymp4`, `webm` |
| `contentfilter` | Safety: `off`, `low`, `medium`, `high` |
| `locale` | Language: `en_US`, `es`, `fr`, etc. |
## Available Media Formats
Each result has multiple formats under `.media_formats`:
| Format | Use case |
|--------|----------|
| `gif` | Full quality GIF |
| `tinygif` | Small preview GIF |
| `mp4` | Video version (smaller file size) |
| `tinymp4` | Small preview video |
| `webm` | WebM video |
| `nanogif` | Tiny thumbnail |
## Notes
- URL-encode the query: spaces as `+`, special chars as `%XX`
- For sending in chat, `tinygif` URLs are lighter weight
- GIF URLs can be used directly in markdown: ``
© Hermes Agent · MIT · NousResearch/hermes-agent