[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MZNPCAPR4E255F84117ATZ":3,"skill-same:01M6MZNPCAPR4E255F84117ATZ":87},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":31,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":74},"01M6MZNPCAPR4E255F84117ATZ","hn-extract",null,"Extract a HackerNews post (article + comments) into single clean Markdown for quick reading or LLM input.","Kernel8901\u002Fai-agent-skills-classification","Kernel8901","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F72647553?v=4","01M6KV388J2H5PNC8D8P940BJD","01M6KV38CS5B3AY63RKZB410YM",7,"MIT","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fhn-extract\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"hn extract","extract","hn","article","darwin","for","true","hackernews","comments","quick","scraper","post","python","main","clean","uv","markdown","win32","linux","github","2026-11-10 10:12:30",false,"---\nname: hn-extract\ndescription: Extract a HackerNews post (article + comments) into single clean Markdown for quick reading or LLM input.\nmetadata:  {\"openclaw\":{\"always\":true,\"emoji\":\"?\",\"homepage\":\"https:\u002F\u002Fgithub.com\u002Fguoqiao\u002Fskills\u002Fblob\u002Fmain\u002Fhn-extract\u002Fhn-extract\u002FSKILL.md\",\"os\":[\"darwin\",\"linux\",\"win32\"],\"tags\":[\"hn\",\"hackernews\",\"comments\",\"extract\",\"markdown\",\"python\",\"uv\",\"scraper\",\"rss\",\"reader\",\"summarize\"],\"requires\":{\"bins\":[\"uv\"]}}}\n---\n\n# HackerNews Extract\n\nExtract a HackerNews post (article + comments) into single clean Markdown for quick reading or LLM input.\n\nsee [Examples](https:\u002F\u002Fgithub.com\u002Fguoqiao\u002Fskills\u002Fblob\u002Fmain\u002Fhn-extract\u002Fexamples)\n\n## What it does\n- Accepts an HackerNews id, url, or a saved Algolia JSON file.\n- Scrapes the linked article content with `trafilatura`, cleans HTML, and formats it.\n- Fetches the story metadata and comment tree from `https:\u002F\u002Fhn.algolia.com\u002Fapi\u002Fv1\u002Fitems\u002F\u003Cid>`.\n- Outputs a readable combined markdown file with original article, threaded comments, and key metadata.\n\n## Requirements\n\n- `uv` installed and in PATH.\n\n## Install\n\nNo install beyond having `uv`.\nDependencies will be installed automatically by `uv` into to a dedicated venv when run this script.\n\n## Usage Workflow (Mandatory for Agents)\n\nWhen an agent is asked to extract a HackerNews post:\n1.  **Run the script** with an output path: `uv run --script ${baseDir}\u002Fhn-extract.py \u003Cinput> -o \u002Ftmp\u002Fhn-\u003Cid>.md`.\n2.  **Send ONE combined message:** Upload the file and ask the question in the *same* tool call. Use the `message` tool (`action=send`, `filePath=\"\u002Ftmp\u002Fhn-\u003Cid>.md\"`, `message=\"Extraction complete. Do you want me to summarize it?\"`).\n3.  **Do not** output the full text or a summary directly in the chat unless specifically requested.\n\n## Usage\n\n```bash\n# run as uv script\nuv run --script ${baseDir}\u002Fhn-extract.py \u003Chn-id|hn-url|path\u002Fto\u002Fitem.json> [-o path\u002Fto\u002Foutput.md]\n\n# Examples\nuv run --script ${baseDir}\u002Fhn-extract.py 46861313 -o \u002Ftmp\u002Foutput.md\nuv run --script ${baseDir}\u002Fhn-extract.py \"https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=46861313\"\nuv run --script ${baseDir}\u002Fhn-extract.py data\u002Fitem.json\n```\n\n- Omit `-o` to print to stdout.\n- Directories for `-o` are created automatically.\n\n## Notes\n- Retries are enabled for HTTP fetches.\n- Comments are indented by thread depth.\n- Article fetch uses `trafilatura.fetch_url` with liberal SSL handling to make it more usable.\n- Sites requires authentication or blocks scraping may still fail.\n","# HackerNews Extract\n\nExtract a HackerNews post (article + comments) into single clean Markdown for quick reading or LLM input.\n\nsee [Examples](https:\u002F\u002Fgithub.com\u002Fguoqiao\u002Fskills\u002Fblob\u002Fmain\u002Fhn-extract\u002Fexamples)\n\n## What it does\n- Accepts an HackerNews id, url, or a saved Algolia JSON file.\n- Scrapes the linked article content with `trafilatura`, cleans HTML, and formats it.\n- Fetches the story metadata and comment tree from `https:\u002F\u002Fhn.algolia.com\u002Fapi\u002Fv1\u002Fitems\u002F\u003Cid>`.\n- Outputs a readable combined markdown file with original article, threaded comments, and key metadata.\n\n## Requirements\n\n- `uv` installed and in PATH.\n\n## Install\n\nNo install beyond having `uv`.\nDependencies will be installed automatically by `uv` into to a dedicated venv when run this script.\n\n## Usage Workflow (Mandatory for Agents)\n\nWhen an agent is asked to extract a HackerNews post:\n1.  **Run the script** with an output path: `uv run --script ${baseDir}\u002Fhn-extract.py \u003Cinput> -o \u002Ftmp\u002Fhn-\u003Cid>.md`.\n2.  **Send ONE combined message:** Upload the file and ask the question in the *same* tool call. Use the `message` tool (`action=send`, `filePath=\"\u002Ftmp\u002Fhn-\u003Cid>.md\"`, `message=\"Extraction complete. Do you want me to summarize it?\"`).\n3.  **Do not** output the full text or a summary directly in the chat unless specifically requested.\n\n## Usage\n\n```bash\n# run as uv script\nuv run --script ${baseDir}\u002Fhn-extract.py \u003Chn-id|hn-url|path\u002Fto\u002Fitem.json> [-o path\u002Fto\u002Foutput.md]\n\n# Examples\nuv run --script ${baseDir}\u002Fhn-extract.py 46861313 -o \u002Ftmp\u002Foutput.md\nuv run --script ${baseDir}\u002Fhn-extract.py \"https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=46861313\"\nuv run --script ${baseDir}\u002Fhn-extract.py data\u002Fitem.json\n```\n\n- Omit `-o` to print to stdout.\n- Directories for `-o` are created automatically.\n\n## Notes\n- Retries are enabled for HTTP fetches.\n- Comments are indented by thread depth.\n- Article fetch uses `trafilatura.fetch_url` with liberal SSL handling to make it more usable.\n- Sites requires authentication or blocks scraping may still fail.\n",{"name":5,"metadata":43,"description":7},{"openclaw":44},{"os":45,"tags":46,"emoji":50,"always":51,"homepage":52,"requires":53},[22,36,35],[20,25,26,19,34,30,33,28,47,48,49],"rss","reader","summarize","?",true,"https:\u002F\u002Fgithub.com\u002Fguoqiao\u002Fskills\u002Fblob\u002Fmain\u002Fhn-extract\u002Fhn-extract\u002FSKILL.md",{"bins":54},[33],"f4cb2d49f7667e79ef7804f50396d5aaffdf1f56","人工智能与大型语言模型\u002Fhn-extract",1,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification","https:\u002F\u002Fgithub.com\u002FKernel8901","a little little little dobe in life but science geek","2026-04-05 16:43:56",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":51},[64,67,70],{"tool":65,"command":66},"npx","npx skills add Kernel8901\u002Fai-agent-skills-classification --skill hn-extract",{"tool":68,"command":69},"bunx","bunx skills add Kernel8901\u002Fai-agent-skills-classification --skill hn-extract",{"tool":71,"command":72},"pnpm","pnpm dlx skills add Kernel8901\u002Fai-agent-skills-classification --skill hn-extract","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fhn-extract\u002FSKILL.md",[75,81],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"_meta.json","REFERENCE","参考文档",635,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fhn-extract\u002F_meta.json",{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"hn-extract.py","SCRIPT","脚本",7860,"https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F人工智能与大型语言模型\u002Fhn-extract\u002Fhn-extract.py",[88,112,148,159,169,197],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":38},"01M6Q5R6WZ06RRB9RQTW54B34B","zyfai","Earn yield on any Ethereum wallet on Base, Arbitrum, and Plasma. Use when a user wants passive DeFi yield on their funds. Deploys a non-custodial subaccount (Safe) linked to their EOA, enables automated yield optimization, and lets them deposit\u002Fwithdraw anytime.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzyfai-sdk\u002FSKILL.md",[],[90,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],"safe","ethereum","defi","Optimization","user","use","Wallet","base","deposit","withdraw","yield","arbitrum","non-custodial","passive","defi yield","earn","yield optimization",{"skillNo":113,"name":114,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":130,"publishedAt":38},"01M6Q5R337B5JSNER4P4YS03TN","zerion-api","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api\u002FSKILL.md",[117,122,125],{"categoryNo":118,"categoryName":119,"taxonomyType":120,"taxonomyTypeDesc":121},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":123,"categoryName":124,"taxonomyType":120,"taxonomyTypeDesc":121},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":126,"categoryName":127,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[131,132,133,134,135,136,137,97,138,101,139,140,141,142,143,144,145,146,147],"api","zerion api","zerion","MCP","mcp server","server","blockchain","transactions","crypto wallet","crypto","evm","solana","query","across","positions","token","prices",{"skillNo":149,"name":150,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":156,"publishedAt":38},"01M6Q5QZFYTDAZMZ27BN5VZXAR","zerion-api-skill","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-skill\u002FSKILL.md",[153,154,155],{"categoryNo":118,"categoryName":119,"taxonomyType":120,"taxonomyTypeDesc":121},{"categoryNo":123,"categoryName":124,"taxonomyType":120,"taxonomyTypeDesc":121},{"categoryNo":126,"categoryName":127,"taxonomyType":128,"taxonomyTypeDesc":129},[131,157,158,132,133,134,135,136,137,97,138,101,140,141,142,143,144,145,146,147],"api skill","zerion api skill",{"skillNo":160,"name":161,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":167,"publishedAt":38},"01M6Q5QW17QW98RA3FE45E4RD8","zerion-api-mcp","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fzerion-api-mcp\u002FSKILL.md",[164,165,166],{"categoryNo":118,"categoryName":119,"taxonomyType":120,"taxonomyTypeDesc":121},{"categoryNo":123,"categoryName":124,"taxonomyType":120,"taxonomyTypeDesc":121},{"categoryNo":126,"categoryName":127,"taxonomyType":128,"taxonomyTypeDesc":129},[134,131,168,132,133,135,136,97,138,101,139,140,141,142,143,144,145,146,147],"zerion api mcp",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":178,"publishedAt":38},"01M6Q5QQYZB7A501BDEQWKGSJT","yahoo-finance-forex","Fetches real-time FOREX news and market data from Yahoo Finance for major currency pairs (EUR\u002FUSD, GBP\u002FUSD, USD\u002FJPY, etc.). Analyzes sentiment and provides trading context.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-forex\u002FSKILL.md",[175],{"categoryNo":176,"categoryName":177,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000040","财务",[179,180,181,182,183,37,184,185,186,187,188,189,190,191,192,193,194,195,196,23],"finance","yahoo finance","forex","yahoo","yahoo finance forex","https","sentiment","real-time","python3","install","Market","usd","news","time","currency","gbp","pip","market data",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":204,"publishedAt":38},"01M6Q5QM6VS84WZVM7BKXXPF32","yahoo-finance","This skill should be used when the user asks to \"get stock prices\", \"check stock quotes\", \"look up earnings\", \"get financial data\", \"find trending stocks\", or needs stock market data from Yahoo Finance.","https:\u002F\u002Fgithub.com\u002FKernel8901\u002Fai-agent-skills-classification\u002Fblob\u002Fmain\u002F金融\u002Fyahoo-finance-cli\u002FSKILL.md",[203],{"categoryNo":176,"categoryName":177,"taxonomyType":128,"taxonomyTypeDesc":129},[179,180,182,205,206,207,208,209,210,189,211,212,213,214,215,216,217,218,147,196],"cli","homebrew","find","check","brew","up","local","get","stock","link","trending","sf","quotes","ln"]