[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698X0JK95DG1BFSJXF61J75":3,"skill-same:01M698X0JK95DG1BFSJXF61J75":79},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":61,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M698X0JK95DG1BFSJXF61J75","gifgrep",null,"Search GIF providers with CLI\u002FTUI, download results, and extract stills\u002Fsheets.","openclaw\u002Fopenclaw","openclaw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252820863?v=4","01M698P3FSAZ6B4R928ZF19KPT","01M698PDMDRVH56MV30D253NFP",394352,"MIT","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fgifgrep\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"brew","latest","sheets","gif","with","tap","install","extract","results","tui","cli","cmd","download","Providers","https","search","github","go","2026-11-10 10:12:30",false,"---\nname: gifgrep\ndescription: \"Search GIF providers with CLI\u002FTUI, download results, and extract stills\u002Fsheets.\"\nhomepage: https:\u002F\u002Fgifgrep.com\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"?\",\n        \"requires\": { \"bins\": [\"gifgrep\"] },\n        \"install\":\n          [\n            {\n              \"id\": \"brew\",\n              \"kind\": \"brew\",\n              \"formula\": \"steipete\u002Ftap\u002Fgifgrep\",\n              \"bins\": [\"gifgrep\"],\n              \"label\": \"Install gifgrep (brew)\",\n            },\n            {\n              \"id\": \"go\",\n              \"kind\": \"go\",\n              \"module\": \"github.com\u002Fsteipete\u002Fgifgrep\u002Fcmd\u002Fgifgrep@latest\",\n              \"bins\": [\"gifgrep\"],\n              \"label\": \"Install gifgrep (go)\",\n            },\n          ],\n      },\n  }\n---\n\n# gifgrep\n\nUse `gifgrep` to search GIF providers (Tenor\u002FGiphy), browse in a TUI, download results, and extract stills or sheets.\n\nGIF-Grab (gifgrep workflow)\n\n- Search -> preview -> download -> extract (still\u002Fsheet) for fast review and sharing.\n\nQuick start\n\n- `gifgrep cats --max 5`\n- `gifgrep cats --format url | head -n 5`\n- `gifgrep search --json cats | jq '.[0].url'`\n- `gifgrep tui \"office handshake\"`\n- `gifgrep cats --download --max 1 --format url`\n\nTUI + previews\n\n- TUI: `gifgrep tui \"query\"`\n- CLI still previews: `--thumbs` (Kitty\u002FGhostty only; still frame)\n\nDownload + reveal\n\n- `--download` saves to `~\u002FDownloads`\n- `--reveal` shows the last download in Finder\n\nStills + sheets\n\n- `gifgrep still .\u002Fclip.gif --at 1.5s -o still.png`\n- `gifgrep sheet .\u002Fclip.gif --frames 9 --cols 3 -o sheet.png`\n- Sheets = single PNG grid of sampled frames (great for quick review, docs, PRs, chat).\n- Tune: `--frames` (count), `--cols` (grid width), `--padding` (spacing).\n\nProviders\n\n- `--source auto|tenor|giphy`\n- `GIPHY_API_KEY` required for `--source giphy`\n- `TENOR_API_KEY` optional (Tenor demo key used if unset)\n\nOutput\n\n- `--json` prints an array of results (`id`, `title`, `url`, `preview_url`, `tags`, `width`, `height`)\n- `--format` for pipe-friendly fields (e.g., `url`)\n\nGIF asset hygiene\n\n- Before recommending or using an animated GIF URL, verify it resolves successfully, has `Content-Type: image\u002Fgif`, and is actually animated (multiple frames or loop metadata; e.g. inspect with `file`, `identify`, or a small script).\n- Record attribution\u002Flicense\u002Fsource URL alongside the asset.\n- Do not hotlink when a local asset is needed: download\u002Fcopy it into the project and reference the local file.\n\nEnvironment tweaks\n\n- `GIFGREP_SOFTWARE_ANIM=1` to force software animation\n- `GIFGREP_CELL_ASPECT=0.5` to tweak preview geometry\n","# gifgrep\n\nUse `gifgrep` to search GIF providers (Tenor\u002FGiphy), browse in a TUI, download results, and extract stills or sheets.\n\nGIF-Grab (gifgrep workflow)\n\n- Search -> preview -> download -> extract (still\u002Fsheet) for fast review and sharing.\n\nQuick start\n\n- `gifgrep cats --max 5`\n- `gifgrep cats --format url | head -n 5`\n- `gifgrep search --json cats | jq '.[0].url'`\n- `gifgrep tui \"office handshake\"`\n- `gifgrep cats --download --max 1 --format url`\n\nTUI + previews\n\n- TUI: `gifgrep tui \"query\"`\n- CLI still previews: `--thumbs` (Kitty\u002FGhostty only; still frame)\n\nDownload + reveal\n\n- `--download` saves to `~\u002FDownloads`\n- `--reveal` shows the last download in Finder\n\nStills + sheets\n\n- `gifgrep still .\u002Fclip.gif --at 1.5s -o still.png`\n- `gifgrep sheet .\u002Fclip.gif --frames 9 --cols 3 -o sheet.png`\n- Sheets = single PNG grid of sampled frames (great for quick review, docs, PRs, chat).\n- Tune: `--frames` (count), `--cols` (grid width), `--padding` (spacing).\n\nProviders\n\n- `--source auto|tenor|giphy`\n- `GIPHY_API_KEY` required for `--source giphy`\n- `TENOR_API_KEY` optional (Tenor demo key used if unset)\n\nOutput\n\n- `--json` prints an array of results (`id`, `title`, `url`, `preview_url`, `tags`, `width`, `height`)\n- `--format` for pipe-friendly fields (e.g., `url`)\n\nGIF asset hygiene\n\n- Before recommending or using an animated GIF URL, verify it resolves successfully, has `Content-Type: image\u002Fgif`, and is actually animated (multiple frames or loop metadata; e.g. inspect with `file`, `identify`, or a small script).\n- Record attribution\u002Flicense\u002Fsource URL alongside the asset.\n- Do not hotlink when a local asset is needed: download\u002Fcopy it into the project and reference the local file.\n\nEnvironment tweaks\n\n- `GIFGREP_SOFTWARE_ANIM=1` to force software animation\n- `GIFGREP_CELL_ASPECT=0.5` to tweak preview geometry\n",{"name":5,"homepage":41,"metadata":42,"description":7},"https:\u002F\u002Fgifgrep.com",{"openclaw":43},{"emoji":44,"install":45,"requires":54},"?",[46,50],{"id":18,"bins":47,"kind":18,"label":48,"formula":49},[5],"Install gifgrep (brew)","steipete\u002Ftap\u002Fgifgrep",{"id":35,"bins":51,"kind":35,"label":52,"module":53},[5],"Install gifgrep (go)","github.com\u002Fsteipete\u002Fgifgrep\u002Fcmd\u002Fgifgrep@latest",{"bins":55},[5],"main","f1c93577085244aa96aa87b53a2df9b59d293bd7","skills\u002Fgifgrep",82861,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw","https:\u002F\u002Fopenclaw.ai","https:\u002F\u002Fgithub.com\u002Fopenclaw","Your personal, open source AI assistant.","2026-11-12 03:01:25",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add openclaw\u002Fopenclaw --skill gifgrep",{"tool":71,"command":72},"bunx","bunx skills add openclaw\u002Fopenclaw --skill gifgrep",{"tool":74,"command":75},"pnpm","pnpm dlx skills add openclaw\u002Fopenclaw --skill gifgrep","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fgifgrep\u002FSKILL.md",true,[],[80,86,104,120,142,166],{"skillNo":81,"name":82,"nameZh":6,"description":6,"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":36},"01M698VP84FNM6G9MR1HPX7MF7","lobster","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Flobster\u002FSKILL.md",[],[82],{"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":36},"01M698YY8QGQ7S8TJNKJG6VTPH","xurl","xurl CLI for authenticated X posts, replies, reads\u002Fsearch, DMs, media upload, followers, auth status, or raw v2 API calls.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[],[88,93,94,95,96,97,98,23,24,18,99,100,33,101,102,103,28],"for","api","calls","replies","posts","upload","node","Media","npm","status","auth",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":36},"01M698YWT1CJ0WK88WB909R9RT","weather","Current weather and forecasts with web_fetch, falling back to wttr.in curl for locations, rain, temperature, travel planning.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[106,111,112,24,113,18,114,32,115,116,117,118,93,119,22],"travel planning","travel","fetch","curl","help","planning","web","back","temperature",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":131,"publishedAt":36},"01M698YV2Q0R0JJKAWGFS21K0N","visualize","Create inline visuals for code and explanations, or author persistent OpenClaw dashboard widgets with show_widget.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fvisualize\u002FSKILL.md",[126],{"categoryNo":127,"categoryName":128,"taxonomyType":129,"taxonomyTypeDesc":130},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[122,132,133,134,135,93,22,136,137,138,139,140,9,141],"widgets","openclaw dashboard","author","inline","show","code","create","visuals","dashboard","widget",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":156,"publishedAt":36},"01M698YS2TRJH9ENG28HD9CD87","trello","Manage Trello boards, lists, and cards via the Trello REST API.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Ftrello\u002FSKILL.md",[148,153],{"categoryNo":149,"categoryName":150,"taxonomyType":151,"taxonomyTypeDesc":152},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":154,"categoryName":155,"taxonomyType":129,"taxonomyTypeDesc":130},"01JBSEEDCAT000000000000030","开发工程师",[144,32,157,158,159,160,161,162,24,18,163,114,94,164,165],"cloud","manage","via","rest api","token","atlassian","jq","REST","developer",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":36},"01M698YQ9Q3M4W78EWV2KSCSVW","tmux","Control tmux sessions\u002Fpanes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Ftmux\u002FSKILL.md",[],[168,24,173,174,93,175,176,177,178,179,180,181,18,182,183,184,185,186,187],"send","darwin","keys","paste","output","control","prompts","interactive","list","capture","panes","text","monitor","sessions","linux"]