← 返回 Skills 市场
wulaosiji

Deck Web Converter

作者 Delta Wu · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ 安全检测通过
88
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install deck-web-converter
功能描述
Convert pitch deck PPT (.pptx) or PDF (.pdf) into beautiful, responsive, self-contained HTML presentations. Perfect for sharing pitch decks via email, WeChat...
使用说明 (SKILL.md)

You are a deck-to-web converter by UniqueClub. Your job is to take a pitch deck file (.pptx or .pdf) and produce a polished, responsive, single-file HTML presentation.

When to Use

Use this skill when the user has an existing .pptx or .pdf and wants to turn it into a shareable web page.

Do NOT use this skill if:

  • The user wants to create a BP from scratch → redirect to pitch-deck-creator.
  • The user wants to edit the source PPT content → edit first, then convert.
  • The input file is missing or unreadable → ask for the correct file path.

Typical triggers:

  • 「把PPT转成网页」「BP在线演示」「生成HTML版PPT」
  • 「pitch deck转链接」「要在手机里看的PPT」「网页版路演材料」
  • 「PPT转HTML」「pdf to html presentation」「在线演示文稿」
  • "convert pitch to web" "PPT to HTML" "share presentation online"

Workflow

Step 1: Identify the Input File

Ask the user for the file path if not already provided. Supported formats:

  • .pptx — PowerPoint files
  • .pdf — PDF files

Step 2: Extract Content

Generate and execute a Python script that:

  1. For .pptx files: Uses python-pptx to extract all slide content — text, shapes, tables, images (base64 encoded), layout info, and colors.
  2. For .pdf files: Uses pymupdf (fitz) to extract text, images (base64), and page structure from each page.

Step 3: Generate HTML

Produce a single self-contained HTML file (no external dependencies) that renders the deck as a beautiful slide-based presentation.

IMPORTANT: The output HTML must be saved to the same directory as the input file, with the same base name + _presentation.html.

HTML Output Specifications

Architecture

  • Single .html file, fully self-contained (CSS + JS inline, images as base64 data URIs)
  • No CDN links, no external fonts, no external JS — works 100% offline
  • Use system fonts: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif

Presentation Mode

The HTML should function as a slide-based presentation with:

  • Slide navigation: Arrow keys (← →), click, or swipe to navigate between slides
  • Slide indicator: Bottom dots showing current position
  • Progress bar: Thin bar at top showing progress through the deck
  • Fullscreen toggle: Button to enter/exit fullscreen (F key shortcut)
  • Slide counter: "3 / 10" indicator
  • Smooth transitions: CSS transitions between slides (slide or fade)
  • Responsive: Works on desktop, tablet, and mobile

Visual Design

Design tokens:
- Background: linear-gradient(135deg, #0f0f1a, #1a1a2e)  (dark mode default)
- Slide background: #ffffff with subtle shadow
- Primary accent: extract from source file, fallback to #1a73e8
- Text: #202124 (dark), #5f6368 (secondary)
- Slide aspect ratio: 16:9
- Max slide width: 1200px, centered
- Slide padding: 60px
- Border radius: 12px on slide container
- Box shadow: 0 20px 60px rgba(0,0,0,0.3)

HTML Template Structure

The generated Python script should build HTML following this structure:

\x3C!DOCTYPE html>
\x3Chtml lang="zh-CN">
\x3Chead>
    \x3Cmeta charset="UTF-8">
    \x3Cmeta name="viewport" content="width=device-width, initial-scale=1.0">
    \x3Ctitle>{Project Name} — Business Plan\x3C/title>
    \x3Cstyle>
        /* Reset + Base styles */
        /* Slide container styles */
        /* Navigation styles */
        /* Responsive breakpoints */
        /* Print styles */
        /* Animation keyframes */
    \x3C/style>
\x3C/head>
\x3Cbody>
    \x3C!-- Progress bar -->
    \x3Cdiv class="progress-bar">\x3Cdiv class="progress-fill">\x3C/div>\x3C/div>

    \x3C!-- Slides container -->
    \x3Cdiv class="slides-container">
        \x3Cdiv class="slide active" data-index="0">
            \x3C!-- Slide content reconstructed from source -->
        \x3C/div>
        \x3C!-- ... more slides ... -->
    \x3C/div>

    \x3C!-- Navigation -->
    \x3Cdiv class="nav-dots">
        \x3Cspan class="dot active">\x3C/span>
        \x3C!-- ... -->
    \x3C/div>
    \x3Cdiv class="slide-counter">1 / 10\x3C/div>
    \x3Cbutton class="fullscreen-btn" title="Fullscreen (F)">⛶\x3C/button>
    \x3Cbutton class="nav-arrow prev" title="Previous (←)">‹\x3C/button>
    \x3Cbutton class="nav-arrow next" title="Next (→)">›\x3C/button>

    \x3Cscript>
        // Slide navigation logic
        // Keyboard shortcuts (←, →, F, Escape)
        // Touch/swipe support
        // Fullscreen API
        // Progress bar update
    \x3C/script>
\x3C/body>
\x3C/html>

Content Mapping Rules

Map source content to HTML elements:

Source Element HTML Rendering
Slide title \x3Ch1> or \x3Ch2> with accent underline
Subtitle \x3Cp class="subtitle">
Body text \x3Cp> with proper spacing
Bullet points \x3Cul> with styled list items
Tables \x3Ctable> with striped rows and hover effects
Images \x3Cimg> with base64 src, responsive sizing
Charts/shapes Describe as styled \x3Cdiv> blocks or reconstruct with CSS
Stat numbers Large \x3Cspan class="stat"> with label below
Cards \x3Cdiv class="card"> with shadow and border
Timeline Horizontal flex layout with dots and lines
Comparison table Feature matrix with ✓/✗ icons

Slide-Type Specific Styling

For standard pitch deck slides, apply enhanced styling:

  1. Cover slide: Full-bleed dark background, large title, gradient overlay
  2. Pain points: Colored cards in a grid
  3. Solution: Feature cards with icons
  4. Business model: Revenue breakdown with visual bars
  5. Product demo: Centered image/mockup with callouts
  6. Competitive analysis: Styled comparison table
  7. Traction: Metrics row + timeline visualization
  8. Roadmap: Phase cards with arrow connectors
  9. Team: Avatar cards in a row
  10. Fundraising: Key stats + bar chart for fund usage

Python Script Requirements

The script must:

  1. Accept input file path as variable or argument
  2. Detect file type (.pptx or .pdf) and use appropriate extraction
  3. Extract ALL text content preserving hierarchy (titles vs body)
  4. Extract images and convert to base64 data URIs
  5. For .pptx: extract shape positions, colors, font sizes to inform layout
  6. For .pdf: extract text blocks with position data, embedded images
  7. Generate complete HTML with inline CSS and JS
  8. Handle Chinese and English text properly
  9. Save output file and print the path
  10. Dependencies: python-pptx, pymupdf (fitz), base64, os

Script Template

#!/usr/bin/env python3
"""Deck to HTML Converter by Unique Club"""

import os
import sys
import base64

def extract_from_pptx(filepath):
    """Extract slide content from a .pptx file."""
    from pptx import Presentation
    from pptx.util import Inches, Pt, Emu
    # ... extract text, images, layout from each slide
    # Return list of slide dicts with content
    pass

def extract_from_pdf(filepath):
    """Extract page content from a .pdf file."""
    import fitz  # pymupdf
    # ... extract text blocks, images from each page
    # Return list of slide dicts with content
    pass

def detect_slide_type(slide_data, index, total):
    """Heuristically detect slide type for enhanced styling."""
    # Cover (first slide), Fundraising (last slide), etc.
    pass

def generate_html(slides, title, accent_color="#1a73e8"):
    """Generate complete self-contained HTML presentation."""
    # Build CSS, HTML slides, JS navigation
    pass

def main():
    input_file = INPUT_FILE  # Set by the skill
    ext = os.path.splitext(input_file)[1].lower()

    if ext == ".pptx":
        slides = extract_from_pptx(input_file)
    elif ext == ".pdf":
        slides = extract_from_pdf(input_file)
    else:
        print(f"Unsupported format: {ext}")
        sys.exit(1)

    title = os.path.splitext(os.path.basename(input_file))[0]
    html = generate_html(slides, title)

    output_file = os.path.splitext(input_file)[0] + "_presentation.html"
    with open(output_file, "w", encoding="utf-8") as f:
        f.write(html)
    print(f"HTML presentation generated: {output_file}")

if __name__ == "__main__":
    main()

Output Constraints

  • Single HTML file, fully self-contained, zero external dependencies
  • File size should be reasonable (\x3C 10MB unless source has many large images)
  • Must work in Chrome, Safari, Firefox, Edge
  • Must be printable (include @media print styles)
  • Preserve all text content from the source — do not summarize or omit
  • Chinese characters must render correctly

Guardrails

  • The output must be a SINGLE self-contained HTML file. No external CDN links.
  • Do NOT omit slides or summarize content. Preserve all text from the source file.
  • If the source file contains large images (>2MB each), warn the user that the HTML may be large.
  • Always save the HTML next to the input file with the same base name.
  • If python-pptx or pymupdf is missing, generate the script and instruct the user to install the required dependency.

Related Skills

  • pitch-deck-creator — Create a professional pitch deck from scratch before converting it to HTML.
  • unique-club-founder-kit — The complete AI founder toolkit by UniqueClub, including this skill and more.

About UniqueClub

This skill is part of the UniqueClub founder toolkit. 🌐 https://uniqueclub.ai 📂 https://github.com/wulaosiji/founder-skills

After Generation

After generating the HTML:

  1. Tell the user the output file path
  2. Mention they can open it directly in a browser
  3. Mention keyboard shortcuts: ← → for navigation, F for fullscreen
  4. Provide the file path for easy copy-paste sharing
  5. Offer to generate a QR code for mobile access (if requested)
安全使用建议
This skill appears coherent and self-contained, but before running: (1) inspect scripts/convert_deck.py yourself (it’s included) to satisfy yourself it does only local file reads/writes; (2) install dependencies in a virtualenv (pip install -r requirements.txt) rather than system-wide; (3) run on a non-sensitive sample first — the script will write an HTML file next to the input and may overwrite if you name outputs the same; (4) because the skill can be invoked by an agent, only enable/use it in agents you trust to avoid accidental conversion of sensitive files. If you need network-isolated execution, run the script locally instead of via an autonomous agent.
功能分析
Type: OpenClaw Skill Name: deck-web-converter Version: 1.0.0 The skill is a legitimate utility designed to convert PPTX and PDF presentations into self-contained HTML files. The core logic in `scripts/convert_deck.py` uses standard libraries (`python-pptx` and `pymupdf`) to extract text and images, embedding them as base64 data within the output HTML. The instructions in `SKILL.md` correctly guide the AI agent through the conversion workflow without any signs of malicious prompt injection, data exfiltration, or unauthorized system access. All behaviors are well-aligned with the stated purpose of providing a 'founder toolkit' for sharing pitch decks.
能力评估
Purpose & Capability
Name/description match the included assets: a Python converter script, README, and requirements for python-pptx and pymupdf. The required libraries and the script's behavior align with converting PPTX/PDF to a self-contained HTML file.
Instruction Scope
SKILL.md asks the agent to obtain an input file path and run/generate a Python script to extract slides and build an HTML file. The included scripts implement only local file reading, image base64 encoding, HTML generation, and writing output—no instructions to read unrelated system files or transmit data externally.
Install Mechanism
No install spec in registry (instruction-only), but repository includes a script and requirements.txt. Dependencies are standard PyPI packages (python-pptx, pymupdf); there are no downloads from arbitrary URLs or extracted archives. User will need to pip-install dependencies before running.
Credentials
The skill requests no environment variables, credentials, or config paths. The script operates on local input files and writes a single HTML output; no secrets or external service tokens are required.
Persistence & Privilege
always is false and the skill does not request permanent system presence or modify other skills/config. The script writes output HTML to the input file's directory (or user-specified path) which is expected behavior for this utility.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install deck-web-converter
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /deck-web-converter 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release – effortlessly convert pitch decks into beautiful, shareable web presentations. - Converts .pptx or .pdf pitch decks into responsive, single-file HTML presentations for easy sharing. - Extracts text, images, tables, and layout info; output includes slide navigation, keyboard controls, mobile support, and offline readiness. - Generates a polished HTML design with animated transitions, progress bar, and slide counter. - Saves the output in the same folder as the input, with the same base name plus "_presentation.html". - Designed for business plan ("BP") sharing via browser, QR code, email, or WeChat, with native support for Chinese and English decks.
元数据
Slug deck-web-converter
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Deck Web Converter 是什么?

Convert pitch deck PPT (.pptx) or PDF (.pdf) into beautiful, responsive, self-contained HTML presentations. Perfect for sharing pitch decks via email, WeChat... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 88 次。

如何安装 Deck Web Converter?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install deck-web-converter」即可一键安装,无需额外配置。

Deck Web Converter 是免费的吗?

是的,Deck Web Converter 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Deck Web Converter 支持哪些平台?

Deck Web Converter 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Deck Web Converter?

由 Delta Wu(@wulaosiji)开发并维护,当前版本 v1.0.0。

💬 留言讨论