[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CAYZ41JRWM2G8D73H8BQWB":3,"skill-same:01M6CAYZ41JRWM2G8D73H8BQWB":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6CAYZ41JRWM2G8D73H8BQWB","gif-search",null,"Search\u002Fdownload GIFs from Tenor via curl + jq.","adnichols\u002Fai-configs","adnichols","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F493746?v=4","01M6C33VRY9WF6XWYPT1AFA7JJ","Aaron Nichols","01M6C33VWTNKGRM92E9G643V4W",5,"MIT","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fmedia\u002Fgif-search\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35],"search","gif search","macos","linux","windows","api","Media","download","hermes","hermes agent","curl","jq","2026-11-10 10:12:30",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=your_key_here\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=your_key_here\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":41,"license":15,"version":42,"metadata":43,"platforms":50,"description":7,"prerequisites":51},"Hermes Agent","1.1.0",{"hermes":44},{"tags":45},[46,30,47,48,49],"GIF","Search","Tenor","API",[27,26,28],{"commands":52,"env_vars":53},[34,35],[54],"TENOR_API_KEY","main","64e2fc9afa7bb3da1138eb73399144d0e7e73e9d","_hermes\u002Fdefault\u002Fskills\u002Fmedia\u002Fgif-search",4,"https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs","https:\u002F\u002Fgithub.com\u002Fadnichols","2026-11-06 00:28:38",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add adnichols\u002Fai-configs --skill gif-search",{"tool":68,"command":69},"bunx","bunx skills add adnichols\u002Fai-configs --skill gif-search",{"tool":71,"command":72},"pnpm","pnpm dlx skills add adnichols\u002Fai-configs --skill gif-search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fmedia\u002Fgif-search\u002FSKILL.md",true,[],[77,94,126,151,162,178],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":36},"01M6CB7RN791P5RRRCJWWC7DAR","blocked-page-recovery","Use when a fetch fails: 403\u002F429, paywall, WAF, bot wall.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fweb\u002Fblocked-page-recovery\u002FSKILL.md",[],[84,85,86,87,88,89,90,33,32,91,92,28,93,27,26],"recovery","page","blocked page recovery","bot","fallback","use","fetch","Citations","waf","research",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":111,"publishedAt":36},"01M6CB7NQY2VVYCQJ1QBXACQF4","writing-plans","Use when creating or updating executable software plans. Keep plans as local files unless the user explicitly asks to register them in Doct.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[100,103,106],{"categoryNo":101,"categoryName":102,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":104,"categoryName":105,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[112,113,114,115,116,117,118,119,120,121,122,123,89,124,33,32,125],"writing","writing plans","documentation","test","workflow","design","user","development","planning","files","implementation","html","ops","plan",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":141,"publishedAt":36},"01M6CB7JME246KZQHP73Z2STDF","test-driven-development","TDD: enforce RED-GREEN-REFACTOR, tests before code.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Ftest-driven-development\u002FSKILL.md",[132,135,138],{"categoryNo":133,"categoryName":134,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":136,"categoryName":137,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":139,"categoryName":140,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000037","律师与法务",[115,119,142,143,144,33,32,145,125,146,147,148,26,149,27,150,28],"test driven development","red-green-refactor","superpowers","quality","refactor","code","debugging","tdd","testing",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":158,"publishedAt":36},"01M6CB7FQ407KQTD4Z9VAWKY54","systematic-debugging","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[157],{"categoryNo":136,"categoryName":137,"taxonomyType":21,"taxonomyTypeDesc":22},[148,159,119,144,33,32,160,125,161,28,115,27,26],"systematic debugging","troubleshooting","investigation",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":171,"publishedAt":36},"01M6CB7D57MK88HE5YPZHKH68Q","spike","Throwaway experiments to validate an idea before build.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fspike\u002FSKILL.md",[168],{"categoryNo":169,"categoryName":170,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[164,28,172,173,93,174,27,26,175,176,177,33,32,125,120],"validate","experiments","prototype","feasibility","sketch","experiment",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":188,"publishedAt":36},"01M6CB7APAQ37YE5YE1MAAFT42","simplify-code","Parallel 3-agent cleanup of recent code changes.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fsimplify-code\u002FSKILL.md",[184,185],{"categoryNo":104,"categoryName":105,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":186,"categoryName":187,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000030","开发工程师",[189,190,147,191,33,32,192,125,146,193,194,195,119,28,115,27,196,26],"simplify code","simplify","subagent","parallel","code-review","delegation","cleanup","review"]