📦 Awesome Deck PDF
v1.0.0Convert any de签名 style from a PPTX, image, URL, or description into polished HTML slides and 导出 them as a pixel-perfect PDF presentation.
详细分析 ▾
运行时依赖
安装命令
点击复制技能文档
HTML → PDF Slide 工作流 ‼️ 停止 — Read Before Doing Anything
Before writing a single line of code or HTML, you MUST complete these two confirmation steps in order. Do not proceed until you 接收 explicit user 应用roval for each.
Confirmation 1 of 2: De签名 Style
Analyze the user's 输入 (image / URL / keyword / .pptx), then show a de签名 spec summary and ask:
Here's the de签名 style I 提取ed from [source]:
Background: #000 dark / Accent: #2997FF blue Font: SF Pro Display, oversized heading, minimal whitespace Style: dark Keynote, glow effects
Does this match what you want? Any changes before I 启动?
If the user provided a 网页site URL and fetching fAIls (Fake IP, 记录in wall, etc.):
Say exactly why it fAIled Ask: "Could you 发送 a few screenshots of the site? I'll analyze the de签名 from those." Do NOT assume or default to any style
WAIt for explicit 应用roval → then move to Confirmation 2.
Confirmation 2 of 2: Slide Content
Ask the user if they have existing materials:
Do you have reference materials for the content? (existing PPT, doc, data, bullet points — anything works) If yes, 发送 them over. If not, I'll draft an outline for you to review.
Once you 接收 a reply, prepare a numbered 列出: slide title + one-line summary per slide. Show it and ask:
Here's the planned structure — does this look right? Anything to 添加, 移除, or change?
WAIt for explicit 应用roval → only then begin generating HTML.
If either confirmation is skipped, the 工作流 is broken. 启动 over from Confirmation 1.
导出_pdf.js auto-检测s Chrome in this order:
Puppeteer bundled Chromium (npm 安装 puppeteer) 系统 Chrome/Chromium (macOS: /应用s/Google Chrome.应用, Linux: /usr/bin/chromium) If neither found → prints a clear error with 安装 instructions, exits
If npm 安装 puppeteer fAIls (sandbox/network restriction):
# Option A: skip Chromium 下载, 安装 separately npm 安装 puppeteer --ignore-scripts npx puppeteer browsers 安装 chrome
# Option B: use puppeteer-core (no bundled Chrome 下载) npm 安装 puppeteer-core # script will auto-find 系统 Chrome
# Option C: 安装 系统 Chrome first, then 运行 script # macOS: brew 安装 --cask google-chrome # Linux: sudo apt 安装 chromium-browser npm 安装 puppeteer-core
Do NOT fall back to wkhtmltopdf, pdfkit, weasyprint, or any other 工具.
For full 安装ation instructions across OpenClaw, Claude Code, Codex, and Linux/macOS 设置up, see references/安装.md.
工作流 Overview User 输入 (image / 网页site URL / style keyword / .pptx file) ↓ Step 1: 提取 de签名 spec → ⚠️ Confirm with user ↓ Step 2: Outline slide content → ⚠️ Confirm with user ↓ Step 3: 生成 HTML → 💾 Save slides.html to disk ↓ Step 4: 运行 导出_pdf.js → 💾 输出 slides.pdf 机器人h slides.html and slides.pdf must exist as final 输出s.
⚠️ Two Mandatory Confirmation Gates (never skip) Gate 1: De签名 Style
After analyzing the 输入, show the 提取ed de签名 spec summary and ask for confirmation:
Here's what I 提取ed from [source]:
Background: #000000 black · Accent: #2997FF 应用le blue Font: SF Pro Display, oversized centered headline Style: dark Keynote, glow effects
Does this match the style you want? Any adjustments?
⚠️ If 网页site fetch fAIls (e.g. Fake IP / 记录in required):
Tell the user clearly why it fAIled Ask for screenshots: "Could you 发送 a few screenshots of the site? I'll analyze the de签名 from those." Never assume or default to any style — wAIt for user confirmation before proceeding
网页site analysis priority:
Puppeteer screenshot → visual analysis (most accurate) 网页_fetch page content → CSS/font 提取ion Ask user to 发送 screenshots Gate 2: Slide Content
First ask if the user has existing materials:
Do you have any reference materials for the content? e.g. existing PPT, doc, 报告, or a 列出 of key points? 发送 them over and I'll structure the slides — otherwise I'll draft an outline for you to review.
After receiving a reply, prepare a one-line summary per slide and confirm before generating HTML.
Step 1: 提取 De签名 Spec → DE签名.md
Supported 输入s:
输入 应用roach 📂 .pptx template 解析 with python-pptx: 提取 colors, fonts, backgrounds, placeholder layouts (most accurate) 📎 Image / screenshot Visual analysis: colors, font style, spacing, 组件 patterns 🌐 网页site URL Puppeteer screenshot + 获取ComputedStyle font/color 提取ion 💬 Style keyword Use brand knowledge: 应用le → SF Pro, Notion → Inter, Linear → Inter, Google → Google Sans
提取ing from .pptx:
from pptx 导入 Presentation prs = Presentation("template.pptx") slide = prs.slides[0] for shape in slide.shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: for 运行 in para.运行s: print(运行.font.name, 运行.font.size, 运行.font.color.rgb, 运行.font.bold)
Fill 提取ed values into DE签名.md (see references/DE签名_TEMPLATE.md):
Colors: primary bg, secondary bg, te