Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to...
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install openclaw-slides或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install openclaw-slides⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/openclaw-slides/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: openclaw-slides description: Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to build a pitch deck, presentation, slideshow, or slide deck — or convert an existing PPT to a web presentation. Generates zero-dependency single HTML files with keyboard/touch navigation and scroll-triggered animations. Style options include Neon Cyber, Bold Signal, Swiss Modern, Paper & Ink, and 8 more curated presets. openclaw: requires: bins: [] install: - id: python-pptx kind: shell label: "Install Python dependencies for PPT conversion (optional — only needed for Mode B)" command: "pip install python-pptx Pillow" optional: true ---
> MyClaw.ai — Your AI personal assistant with full server control. Every MyClaw instance runs on a dedicated server with complete code access, networking, and tool capabilities. This skill is part of the MyClaw open skills ecosystem.
Create zero-dependency, animation-rich HTML presentations that run entirely in the browser. Single self-contained HTML files — no npm, no build tools, no frameworks. Works offline, renders in 10 years.
Style presets: Bold Signal, Electric Studio, Creative Voltage, Dark Botanical, Notebook Tabs, Pastel Geometry, Split Pastel, Vintage Editorial, Neon Cyber, Terminal Green, Swiss Modern, Paper & Ink
For full style details and CSS specs: read references/STYLE_PRESETS.md when needed.
---
Determine the user's intent:
.ppt/.pptx file → go to Phase 4---
Every slide MUST fit exactly within the viewport. No scrolling within slides, ever.
| Slide Type | Maximum Content | |------------|-----------------| | Title slide | 1 heading + 1 subtitle + optional tagline | | Content slide | 1 heading + 4–6 bullet points OR 1 heading + 2 paragraphs | | Feature grid | 1 heading + 6 cards max (2×3 or 3×2) | | Code slide | 1 heading + 8–10 lines of code | | Quote slide | 1 quote (max 3 lines) + attribution | | Image slide | 1 heading + 1 image (max 60vh height) |
Content exceeds limits → Split into multiple slides.
html, body { height: 100%; overflow-x: hidden; }
html { scroll-snap-type: y mandatory; scroll-behavior: smooth; }
.slide {
width: 100vw;
height: 100vh;
height: 100dvh;
overflow: hidden;
scroll-snap-align: start;
display: flex;
flex-direction: column;
position: relative;
}
.slide-content {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
max-height: 100%;
overflow: hidden;
padding: var(--slide-padding);
}
:root {
--title-size: clamp(1.5rem, 5vw, 4rem);
--h2-size: clamp(1.25rem, 3.5vw, 2.5rem);
--body-size: clamp(0.75rem, 1.5vw, 1.125rem);
--slide-padding: clamp(1rem, 4vw, 4rem);
--content-gap: clamp(0.5rem, 2vw, 2rem);
}
img, .image-container { max-width: 100%; max-height: min(50vh, 400px); object-fit: contain; }
.card, .container { max-width: min(90vw, 1000px); max-height: min(80vh, 700px); }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: clamp(0.5rem, 1.5vw, 1rem); }
@media (max-height: 700px) { :root { --slide-padding: clamp(0.75rem, 3vw, 2rem); --title-size: clamp(1.25rem, 4.5vw, 2.5rem); } }
@media (max-height: 600px) { :root { --title-size: clamp(1.1rem, 4vw, 2rem); --body-size: clamp(0.7rem, 1.2vw, 0.95rem); } .nav-dots, .keyboard-hint { display: none; } }
@media (max-height: 500px) { :root { --title-size: clamp(1rem, 3.5vw, 1.5rem); --slide-padding: clamp(0.4rem, 2vw, 1rem); } }
@media (max-width: 600px) { .grid { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.2s !important; } }
⚠️ Never negate CSS functions directly. Use calc(-1 * clamp(...)) not -clamp(...).
---
Ask the user (via normal conversation — ask all at once):
./assets or ~/Desktop/screenshots)If they have content, ask them to share it.
All image processing is done locally on the user's machine — images are never sent to external services.
ls the folder — find all .png/.jpg/.jpeg/.gif/.svg/.webpread toolUSABLE or NOT USABLE (reason: blurry, irrelevant, etc.)If user says no images → skip image pipeline, use CSS-generated visuals (gradients, shapes, patterns) throughout.
---
Pick from presets:
| Preset | Vibe | |--------|------| | Bold Signal | Confident, high-impact, dark | | Electric Studio | Clean, professional, split panel | | Creative Voltage | Energetic, retro-modern | | Dark Botanical | Elegant, sophisticated | | Notebook Tabs | Editorial, organized | | Pastel Geometry | Friendly, approachable | | Split Pastel | Playful, modern | | Vintage Editorial | Witty, personality-driven | | Neon Cyber | Futuristic, techy | | Terminal Green | Developer-focused, hacker | | Swiss Modern | Minimal, precise | | Paper & Ink | Literary, thoughtful |
Skip to Phase 3.
Ask: What feeling should the audience have?
Generate 3 mini style preview HTML files in .tmp-slide-previews/ — each is a single title slide showing typography, colors, and animation. Tell the user the file paths and ask which they prefer.
Never use: purple gradients on white, Inter/Roboto/system fonts, generic blue primary colors.
Use instead: distinctive font pairings (Clash Display, Satoshi, Cormorant, DM Sans), cohesive personality-driven palettes, atmospheric backgrounds.
For full preset specs (colors, fonts, signature elements): read references/STYLE_PRESETS.md.
---
If user provided images, process with Python Pillow before generating HTML:
from PIL import Image, ImageDraw
# Circular crop (for logos)
def crop_circle(input_path, output_path):
img = Image.open(input_path).convert('RGBA')
w, h = img.size
size = min(w, h)
img = img.crop(((w-size)//2, (h-size)//2, (w+size)//2, (h+size)//2))
mask = Image.new('L', (size, size), 0)
ImageDraw.Draw(mask).ellipse([0, 0, size, size], fill=255)
img.putalpha(mask)
img.save(output_path, 'PNG')
...安装 openclaw-slides 后,可以对 AI 说这些话来触发它
Help me get started with openclaw-slides
Explains what openclaw-slides does, walks through the setup, and runs a quick demo based on your current project
Use openclaw-slides to create stunning, animation-rich HTML presentations from scratch or ...
Invokes openclaw-slides with the right parameters and returns the result directly in the conversation
What can I do with openclaw-slides in my documents & notes workflow?
Lists the top use cases for openclaw-slides, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/openclaw-slides/ 目录(个人级,所有项目可用),或 .claude/skills/openclaw-slides/(项目级)。重启 AI 客户端后,用 /openclaw-slides 主动调用,或让 AI 根据上下文自动发现并使用。
openclaw-slides 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
openclaw-slides 可免费安装使用。请查阅仓库了解许可证信息。
Create stunning, animation-rich HTML presentations from scratch or convert PowerPoint files (.ppt/.pptx) to beautiful web slides. Use when the user wants to...
openclaw-slides 属于「Documents & Notes」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my documents & notes tasks using openclaw-slides
Identifies repetitive steps in your workflow and sets up openclaw-slides to handle them automatically