[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BK2VM7VDRFA3K58SWBPFS0":3,"skill-same:01M7BK2VM7VDRFA3K58SWBPFS0":64},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":13,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M7BK2VM7VDRFA3K58SWBPFS0","gif-search",null,"Search\u002Fdownload GIFs from Tenor via curl + jq.","darkmatter\u002Fhermes","darkmatter","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F17834193?v=4","01M7BHSAW99WRAMTSSHNHX73V0","01M7BHSAXDR4PY4NA2DY5PN6W8",0,"MIT","https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes\u002Fblob\u002Fmain\u002Fprofiles\u002Fdevbox\u002Fskills\u002Fmedia\u002Fgif-search\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: gif-search\ndescription: \"Search\u002Fdownload GIFs from Tenor via curl + jq.\"\nversion: 1.1.0\nauthor: Hermes Agent\nlicense: MIT\nplatforms: [linux, macos, windows]\nprerequisites:\n  env_vars: [TENOR_API_KEY]\n  commands: [curl, jq]\nmetadata:\n  hermes:\n    tags: [GIF, Media, Search, Tenor, API]\n---\n\n# GIF Search (Tenor API)\n\nSearch and download GIFs directly via the Tenor API using curl. No extra tools needed.\n\n## When to use\n\nUseful for finding reaction GIFs, creating visual content, and sending GIFs in chat.\n\n## Setup\n\nSet your Tenor API key in your environment (add to `${HERMES_HOME:-~\u002F.hermes}\u002F.env`):\n\n```bash\nTENOR_API_KEY=\u003CREDACTED>\n```\n\nGet a free API key at https:\u002F\u002Fdevelopers.google.com\u002Ftenor\u002Fguides\u002Fquickstart — the Google Cloud Console Tenor API key is free and has generous rate limits.\n\n## Prerequisites\n\n- `curl` and `jq` (both standard on macOS\u002FLinux)\n- `TENOR_API_KEY` environment variable\n\n## Search for GIFs\n\n```bash\n# Search and get GIF URLs\ncurl -s \"https:\u002F\u002Ftenor.googleapis.com\u002Fv2\u002Fsearch?q=thumbs+up&limit=5&key=${TENOR_API_KEY}\" | jq -r '.results[].media_formats.gif.url'\n\n# Get smaller\u002Fpreview versions\ncurl -s \"https:\u002F\u002Ftenor.googleapis.com\u002Fv2\u002Fsearch?q=nice+work&limit=3&key=${TENOR_API_KEY}\" | jq -r '.results[].media_formats.tinygif.url'\n```\n\n## Download a GIF\n\n```bash\n# Search and download the top result\nURL=$(curl -s \"https:\u002F\u002Ftenor.googleapis.com\u002Fv2\u002Fsearch?q=celebration&limit=1&key=${TENOR_API_KEY}\" | jq -r '.results[0].media_formats.gif.url')\ncurl -sL \"$URL\" -o celebration.gif\n```\n\n## Get Full Metadata\n\n```bash\ncurl -s \"https:\u002F\u002Ftenor.googleapis.com\u002Fv2\u002Fsearch?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}'\n```\n\n## API Parameters\n\n| Parameter | Description |\n|-----------|-------------|\n| `q` | Search query (URL-encode spaces as `+`) |\n| `limit` | Max results (1-50, default 20) |\n| `key` | API key (from `$TENOR_API_KEY` env var) |\n| `media_filter` | Filter formats: `gif`, `tinygif`, `mp4`, `tinymp4`, `webm` |\n| `contentfilter` | Safety: `off`, `low`, `medium`, `high` |\n| `locale` | Language: `en_US`, `es`, `fr`, etc. |\n\n## Available Media Formats\n\nEach result has multiple formats under `.media_formats`:\n\n| Format | Use case |\n|--------|----------|\n| `gif` | Full quality GIF |\n| `tinygif` | Small preview GIF |\n| `mp4` | Video version (smaller file size) |\n| `tinymp4` | Small preview video |\n| `webm` | WebM video |\n| `nanogif` | Tiny thumbnail |\n\n## Notes\n\n- URL-encode the query: spaces as `+`, special chars as `%XX`\n- For sending in chat, `tinygif` URLs are lighter weight\n- GIF URLs can be used directly in markdown: `![alt](url)`\n","# GIF Search (Tenor API)\n\nSearch and download GIFs directly via the Tenor API using curl. No extra tools needed.\n\n## When to use\n\nUseful for finding reaction GIFs, creating visual content, and sending GIFs in chat.\n\n## Setup\n\nSet your Tenor API key in your environment (add to `${HERMES_HOME:-~\u002F.hermes}\u002F.env`):\n\n```bash\nTENOR_API_KEY=\u003CREDACTED>\n```\n\nGet a free API key at https:\u002F\u002Fdevelopers.google.com\u002Ftenor\u002Fguides\u002Fquickstart — the Google Cloud Console Tenor API key is free and has generous rate limits.\n\n## Prerequisites\n\n- `curl` and `jq` (both standard on macOS\u002FLinux)\n- `TENOR_API_KEY` environment variable\n\n## Search for GIFs\n\n```bash\n# Search and get GIF URLs\ncurl -s \"https:\u002F\u002Ftenor.googleapis.com\u002Fv2\u002Fsearch?q=thumbs+up&limit=5&key=${TENOR_API_KEY}\" | jq -r '.results[].media_formats.gif.url'\n\n# Get smaller\u002Fpreview versions\ncurl -s \"https:\u002F\u002Ftenor.googleapis.com\u002Fv2\u002Fsearch?q=nice+work&limit=3&key=${TENOR_API_KEY}\" | jq -r '.results[].media_formats.tinygif.url'\n```\n\n## Download a GIF\n\n```bash\n# Search and download the top result\nURL=$(curl -s \"https:\u002F\u002Ftenor.googleapis.com\u002Fv2\u002Fsearch?q=celebration&limit=1&key=${TENOR_API_KEY}\" | jq -r '.results[0].media_formats.gif.url')\ncurl -sL \"$URL\" -o celebration.gif\n```\n\n## Get Full Metadata\n\n```bash\ncurl -s \"https:\u002F\u002Ftenor.googleapis.com\u002Fv2\u002Fsearch?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}'\n```\n\n## API Parameters\n\n| Parameter | Description |\n|-----------|-------------|\n| `q` | Search query (URL-encode spaces as `+`) |\n| `limit` | Max results (1-50, default 20) |\n| `key` | API key (from `$TENOR_API_KEY` env var) |\n| `media_filter` | Filter formats: `gif`, `tinygif`, `mp4`, `tinymp4`, `webm` |\n| `contentfilter` | Safety: `off`, `low`, `medium`, `high` |\n| `locale` | Language: `en_US`, `es`, `fr`, etc. |\n\n## Available Media Formats\n\nEach result has multiple formats under `.media_formats`:\n\n| Format | Use case |\n|--------|----------|\n| `gif` | Full quality GIF |\n| `tinygif` | Small preview GIF |\n| `mp4` | Video version (smaller file size) |\n| `tinymp4` | Small preview video |\n| `webm` | WebM video |\n| `nanogif` | Tiny thumbnail |\n\n## Notes\n\n- URL-encode the query: spaces as `+`, special chars as `%XX`\n- For sending in chat, `tinygif` URLs are lighter weight\n- GIF URLs can be used directly in markdown: `![alt](url)`\n",{"name":5,"author":23,"license":14,"version":24,"metadata":25,"platforms":33,"description":7,"prerequisites":37},"Hermes Agent","1.1.0",{"hermes":26},{"tags":27},[28,29,30,31,32],"GIF","Media","Search","Tenor","API",[34,35,36],"linux","macos","windows",{"commands":38,"env_vars":41},[39,40],"curl","jq",[42],"TENOR_API_KEY","main","81189f70e1089f9b3a944ffc480e6887efd831b9","profiles\u002Fdevbox\u002Fskills\u002Fmedia\u002Fgif-search","https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes","https:\u002F\u002Fgithub.com\u002Fdarkmatter","dm.sh","2026-09-14 08:11:52",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add darkmatter\u002Fhermes --skill gif-search",{"tool":56,"command":57},"bunx","bunx skills add darkmatter\u002Fhermes --skill gif-search",{"tool":59,"command":60},"pnpm","pnpm dlx skills add darkmatter\u002Fhermes --skill gif-search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes\u002Fblob\u002Fmain\u002Fprofiles\u002Fdevbox\u002Fskills\u002Fmedia\u002Fgif-search\u002FSKILL.md",true,[],[65,72,79,86,93,100],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":18},"01M7BMC2PYBVXM6FQEZMBQZB4G","plan","Write a markdown plan to .hermes\u002Fplans\u002F; no execution.","https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Fplan\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":18},"01M7BMBSEKDVQ09Z666RCWT7BR","monorepo-fleet-sync","Sync docs and configs when a Flue monorepo fleet changes.","https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Fmonorepo-fleet-sync\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":18},"01M7BMBNWFJT2TJZ2AKA64GEV9","inspecting-hermes-desktop-dom","Read the live Hermes desktop DOM\u002FCSS over CDP.","https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Finspecting-hermes-desktop-dom\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":18},"01M7BMAZM4VJ97K7JD0FDN58M8","grounded-citations","Ground answers and documents in cited, verifiable sources.","https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Fgrounded-citations\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":18},"01M7BMATPEDZ4BPP67Y4ZS0BMM","competitor-news-monitor","Watch named companies for material news; cited digests.","https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Fcompetitor-news-monitor\u002FSKILL.md",[],[],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":18},"01M7BMAQZV7YFA2SFPT7HCVCTX","blocked-page-recovery","Recover blocked\u002Fpaywalled\u002FWAF'd pages via fallbacks.","https:\u002F\u002Fgithub.com\u002Fdarkmatter\u002Fhermes\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002Fblocked-page-recovery\u002FSKILL.md",[],[]]