[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M718ZGXAPGPJKG3XDPX2QJ6Z":3,"skill-same:01M718ZGXAPGPJKG3XDPX2QJ6Z":70},{"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":29,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M718ZGXAPGPJKG3XDPX2QJ6Z","impress",null,"Presentation creation, format conversion (ODP\u002FPPTX\u002FPDF), slide automation with LibreOffice Impress.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fimpress\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[5,30,31,32,33,34,35,36,37,38,39,40,41,42],"PDF","pptx","personal","safe","automation","format","conversion","creation","processing","presentation","with","libreoffice impress","2026","2026-11-10 10:12:30",false,"---\nname: impress\ndescription: \"Presentation creation, format conversion (ODP\u002FPPTX\u002FPDF), slide automation with LibreOffice Impress.\"\ncategory: presentation-processing\nrisk: safe\nsource: personal\ndate_added: \"2026-02-27\"\n---\n\n# LibreOffice Impress\n\n## Overview\n\nLibreOffice Impress skill for creating, editing, converting, and automating presentation workflows using the native ODP (OpenDocument Presentation) format.\n\n## When to Use This Skill\n\nUse this skill when:\n- Creating new presentations in ODP format\n- Converting between ODP, PPTX, PDF formats\n- Automating slide generation from templates\n- Batch processing presentation operations\n- Creating presentation templates\n\n## Core Capabilities\n\n### 1. Presentation Creation\n- Create new ODP presentations from scratch\n- Generate presentations from templates\n- Create slide masters and layouts\n- Build interactive presentations\n\n### 2. Format Conversion\n- ODP to other formats: PPTX, PDF, HTML, SWF\n- Other formats to ODP: PPTX, PPT, PDF\n- Batch conversion of multiple files\n\n### 3. Slide Automation\n- Template-based slide generation\n- Batch slide creation from data\n- Automated content insertion\n- Dynamic chart generation\n\n### 4. Content Manipulation\n- Text and image insertion\n- Shape and diagram creation\n- Animation and transition control\n- Speaker notes management\n\n### 5. Integration\n- Command-line automation via soffice\n- Python scripting with UNO\n- Integration with workflow tools\n\n## Workflows\n\n### Creating a New Presentation\n\n#### Method 1: Command-Line\n```bash\nsoffice --impress template.odp\n```\n\n#### Method 2: Python with UNO\n```python\nimport uno\n\ndef create_presentation():\n    local_ctx = uno.getComponentContext()\n    resolver = local_ctx.ServiceManager.createInstanceWithContext(\n        \"com.sun.star.bridge.UnoUrlResolver\", local_ctx\n    )\n    ctx = resolver.resolve(\n        \"uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext\"\n    )\n    smgr = ctx.ServiceManager\n    doc = smgr.createInstanceWithContext(\"com.sun.star.presentation.PresentationDocument\", ctx)\n    slides = doc.getDrawPages()\n    slide = slides.getByIndex(0)\n    doc.storeToURL(\"file:\u002F\u002F\u002Fpath\u002Fto\u002Fpresentation.odp\", ())\n    doc.close(True)\n```\n\n### Converting Presentations\n\n```bash\n# ODP to PPTX\nsoffice --headless --convert-to pptx presentation.odp\n\n# ODP to PDF\nsoffice --headless --convert-to pdf presentation.odp\n\n# PPTX to ODP\nsoffice --headless --convert-to odp presentation.pptx\n\n# Batch convert\nfor file in *.odp; do\n    soffice --headless --convert-to pdf \"$file\"\ndone\n```\n\n### Template-Based Generation\n```python\nimport subprocess\nimport tempfile\nfrom pathlib import Path\n\ndef generate_from_template(template_path, content, output_path):\n    with tempfile.TemporaryDirectory() as tmpdir:\n        subprocess.run(['unzip', '-q', template_path, '-d', tmpdir])\n        content_file = Path(tmpdir) \u002F 'content.xml'\n        content_xml = content_file.read_text()\n        for key, value in content.items():\n            content_xml = content_xml.replace(f'${{{key}}}', str(value))\n        content_file.write_text(content_xml)\n        subprocess.run(['zip', '-rq', output_path, '.'], cwd=tmpdir)\n    return output_path\n```\n\n## Format Conversion Reference\n\n### Supported Input Formats\n- ODP (native), PPTX, PPT, PDF\n\n### Supported Output Formats\n- ODP, PPTX, PDF, HTML, SWF\n\n## Command-Line Reference\n\n```bash\nsoffice --headless\nsoffice --headless --convert-to \u003Cformat> \u003Cfile>\nsoffice --impress  # Impress\n```\n\n## Python Libraries\n\n```bash\npip install ezodf     # ODF handling\npip install odfpy     # ODF manipulation\n```\n\n## Best Practices\n\n1. Use slide masters for consistency\n2. Create templates for recurring presentations\n3. Embed fonts for PDF distribution\n4. Use vector graphics when possible\n5. Store ODP source files in version control\n6. Test conversions thoroughly\n7. Keep file sizes manageable\n\n## Troubleshooting\n\n### Cannot open socket\n```bash\nkillall soffice.bin\nsoffice --headless --accept=\"socket,host=localhost,port=8100;urp;\"\n```\n\n## Resources\n\n- [LibreOffice Impress Guide](https:\u002F\u002Fdocumentation.libreoffice.org\u002F)\n- [UNO API Reference](https:\u002F\u002Fapi.libreoffice.org\u002F)\n\n## Related Skills\n\n- writer\n- calc\n- draw\n- base\n- pptx-official\n- workflow-automation\n","# LibreOffice Impress\n\n## Overview\n\nLibreOffice Impress skill for creating, editing, converting, and automating presentation workflows using the native ODP (OpenDocument Presentation) format.\n\n## When to Use This Skill\n\nUse this skill when:\n- Creating new presentations in ODP format\n- Converting between ODP, PPTX, PDF formats\n- Automating slide generation from templates\n- Batch processing presentation operations\n- Creating presentation templates\n\n## Core Capabilities\n\n### 1. Presentation Creation\n- Create new ODP presentations from scratch\n- Generate presentations from templates\n- Create slide masters and layouts\n- Build interactive presentations\n\n### 2. Format Conversion\n- ODP to other formats: PPTX, PDF, HTML, SWF\n- Other formats to ODP: PPTX, PPT, PDF\n- Batch conversion of multiple files\n\n### 3. Slide Automation\n- Template-based slide generation\n- Batch slide creation from data\n- Automated content insertion\n- Dynamic chart generation\n\n### 4. Content Manipulation\n- Text and image insertion\n- Shape and diagram creation\n- Animation and transition control\n- Speaker notes management\n\n### 5. Integration\n- Command-line automation via soffice\n- Python scripting with UNO\n- Integration with workflow tools\n\n## Workflows\n\n### Creating a New Presentation\n\n#### Method 1: Command-Line\n```bash\nsoffice --impress template.odp\n```\n\n#### Method 2: Python with UNO\n```python\nimport uno\n\ndef create_presentation():\n    local_ctx = uno.getComponentContext()\n    resolver = local_ctx.ServiceManager.createInstanceWithContext(\n        \"com.sun.star.bridge.UnoUrlResolver\", local_ctx\n    )\n    ctx = resolver.resolve(\n        \"uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext\"\n    )\n    smgr = ctx.ServiceManager\n    doc = smgr.createInstanceWithContext(\"com.sun.star.presentation.PresentationDocument\", ctx)\n    slides = doc.getDrawPages()\n    slide = slides.getByIndex(0)\n    doc.storeToURL(\"file:\u002F\u002F\u002Fpath\u002Fto\u002Fpresentation.odp\", ())\n    doc.close(True)\n```\n\n### Converting Presentations\n\n```bash\n# ODP to PPTX\nsoffice --headless --convert-to pptx presentation.odp\n\n# ODP to PDF\nsoffice --headless --convert-to pdf presentation.odp\n\n# PPTX to ODP\nsoffice --headless --convert-to odp presentation.pptx\n\n# Batch convert\nfor file in *.odp; do\n    soffice --headless --convert-to pdf \"$file\"\ndone\n```\n\n### Template-Based Generation\n```python\nimport subprocess\nimport tempfile\nfrom pathlib import Path\n\ndef generate_from_template(template_path, content, output_path):\n    with tempfile.TemporaryDirectory() as tmpdir:\n        subprocess.run(['unzip', '-q', template_path, '-d', tmpdir])\n        content_file = Path(tmpdir) \u002F 'content.xml'\n        content_xml = content_file.read_text()\n        for key, value in content.items():\n            content_xml = content_xml.replace(f'${{{key}}}', str(value))\n        content_file.write_text(content_xml)\n        subprocess.run(['zip', '-rq', output_path, '.'], cwd=tmpdir)\n    return output_path\n```\n\n## Format Conversion Reference\n\n### Supported Input Formats\n- ODP (native), PPTX, PPT, PDF\n\n### Supported Output Formats\n- ODP, PPTX, PDF, HTML, SWF\n\n## Command-Line Reference\n\n```bash\nsoffice --headless\nsoffice --headless --convert-to \u003Cformat> \u003Cfile>\nsoffice --impress  # Impress\n```\n\n## Python Libraries\n\n```bash\npip install ezodf     # ODF handling\npip install odfpy     # ODF manipulation\n```\n\n## Best Practices\n\n1. Use slide masters for consistency\n2. Create templates for recurring presentations\n3. Embed fonts for PDF distribution\n4. Use vector graphics when possible\n5. Store ODP source files in version control\n6. Test conversions thoroughly\n7. Keep file sizes manageable\n\n## Troubleshooting\n\n### Cannot open socket\n```bash\nkillall soffice.bin\nsoffice --headless --accept=\"socket,host=localhost,port=8100;urp;\"\n```\n\n## Resources\n\n- [LibreOffice Impress Guide](https:\u002F\u002Fdocumentation.libreoffice.org\u002F)\n- [UNO API Reference](https:\u002F\u002Fapi.libreoffice.org\u002F)\n\n## Related Skills\n\n- writer\n- calc\n- draw\n- base\n- pptx-official\n- workflow-automation\n",{"name":5,"risk":33,"source":32,"category":48,"date_added":49,"description":7},"presentation-processing","2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fglobal\u002Fimpress","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill impress",{"tool":62,"command":63},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill impress",{"tool":65,"command":66},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill impress","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fglobal\u002Fimpress\u002FSKILL.md",true,[],[71,94,120,130,143,160],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":82,"publishedAt":43},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[83,84,85,86,87,88,89,90,91,92,93,40],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch",{"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":100,"publishedAt":43},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[101,102,103,104,105,106,85,107,108,109,110,111,112,113,114,115,116,117,118,119],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":43},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[127,128,101,112,113,114,115,105,85,117,129,118,119,111,109,108,107,116,106,104],"trend radar","radar","pulse",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":43},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[137,138,139,140,141,142],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":152,"publishedAt":43},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[149],{"categoryNo":150,"categoryName":151,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[145,91,153,154,155,40,112,156,157,158,103,159,116],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":43},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[162,167,168,169,116,170,157,171,172,173,174,175],"status","play","go","latest","github","discover","control","cmd","volume"]