Agent Skills: GIF Search (Tenor API)

Search/download GIFs from Tenor via curl + jq.

UncategorizedID: PoorRican/dotfiles/gif-search

Install this agent skill to your local

pnpm dlx add-skill https://github.com/PoorRican/dotfiles/tree/HEAD/configs/agent-skills/default/skills/media/gif-search

Skill Files

Browse the full folder contents for gif-search.

Download Skill

Loading file tree…

configs/agent-skills/default/skills/media/gif-search/SKILL.md

Skill Metadata

Name
gif-search
Description
"Search/download GIFs from Tenor via curl + jq."

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):

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

# 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

# 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

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: ![alt](url)