liustack/pptwise 预览 preview

liustack/pptwise

A real PowerPoint, not a picture or HTML. Tell your AI what to cover and pptwise builds an editable deck on your own machine. Agent skill + DSH plugin, no account and no API key to render. | 真正的 PPT,不是图片也不是 HTML。跟 AI 说要讲什么,pptwise 在你自己电脑上做出一份能改的 PPT。Agent skill + DSH 插件,不用注册,渲染不用 API key。

项目介绍Project Overview

pptwise 是面向 DSH 等智能体的演示文稿生成插件,用 JSON 描述幻灯片,本地校验、渲染并预览可编辑的真实 PPTX,自动处理版式、配色、字号与间距,支持主题、审计和实时刷新。适合让 AI 根据内容生成、修改汇报或商业演示。注意需 Node 22.19+ 或 Bun;图表和表格数字改动通常需重建该页。

pptwise is a deck-generation plugin for DSH and other agents. It turns a JSON deck description into a real, editable PPTX locally, handling layout, color, typography, themes, validation, audit, and live preview. Use it when an AI should create or revise presentations from content without rendering services. It requires Node 22.19+ or Bun; chart and table figures generally need the page rebuilt to change numbers.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add github:liustack/pptwise

liustack/pptwise 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

pptwise: A real PowerPoint, not a picture or HTML.

pptwise

A real PowerPoint, not a picture or HTML.

🥇 The FIRST deck-generation plugin for DeepSeek Harness (dsh) 🥇

pptwise.com · 简体中文 · Install (hand it to your AI) · Commands · IR · Themes · Agent skill · ModLens (vision)

Follow @liustack on X npm Node.js License Not backed by Y Combinator No API key to render

Talk to us

Issues are welcome any time. Open one, or follow @liustack on X. Share what you made with pptwise, which harness you use, and what the next release should solve. New releases land there first.

Highlights

⚡ Tell your AI what to cover, get the deck. You bring the content, the engine handles layout, color, type size, and spacing. The same content renders the same deck every time, so there is nothing to redo and no luck involved.

✏️ Open it in PowerPoint and keep working. Every heading, bullet, and chart bar opens in PowerPoint for you to retype and restyle. Chart and table figures are the exception: to change the numbers, have your AI rebuild that page. 24 ready-made styles, and you can pull the colors and fonts out of a deck your company already uses.

🔌 Installs into the agent you already use. One command puts pptwise into DeepSeek Harness, Claude Code, or any agent that reads a skill folder (Codex and friends), and it knows how to build a deck the moment it lands.

🔁 Revisions without describing everything again. One command opens a live preview in your browser. Tell your AI what to change in plain words — the page refreshes itself as each revision lands.

🔒 No account, no API key to render, no network at render time. Install it and it works. Node 22.19+ or Bun is all you need on the machine. Optional stock-photo search uses the user's own Pexels key.

Install

Step 1, hand it to your AI. Send it this line:

Install pptwise following https://raw.githubusercontent.com/liustack/pptwise/main/INSTALL.md, then run the health check and tell me the result.

On DeepSeek Harness, send this instead. There pptwise is a native plugin rather than a skill folder, so it has its own guide. You pick the line, not your agent: an agent cannot reliably tell which harness it is running in.

Install pptwise following https://raw.githubusercontent.com/liustack/pptwise/main/INSTALL-dsh.md, then run the health check and tell me the result.

There is no step 2. Your AI puts the skill folder where your harness reads it, and the skill brings its own version-pinned launcher, so there is no CLI to install by hand. pptwise renders a PPTX entirely locally: no API key, no account, nothing to configure for render. Optional stock-photo search needs the user's own Pexels key. The only prerequisite is Node 22.19+ (or Bun).

Quick start

An IR is one JSON file describing the whole deck. Write a minimal one, then run the validate → render → preview loop:

cat > deck.json <<'EOF'
{
  "filename": "hello.pptx",
  "theme": { "id": "consulting" },
  "slides": [
    { "type": "cover", "heading": "Hello pptwise", "subheading": "A first deck in ten minutes" },
    { "type": "content", "heading": "Why it works", "components": [
      { "type": "bullets", "items": ["Semantic IR in", "Native DrawingML out", "Every shape stays editable"] } ] },
    { "type": "ending", "heading": "Thanks" }
  ]
}
EOF
pptwise validate deck.json                              # → OK — 3 slides, theme "consulting"
pptwise render deck.json -o out/hello.pptx              # → wrote out/hello.pptx (3 slides, ~24 KB)
pptwise render deck.json -o out/tech.pptx --theme tech  # same deck, different theme
pptwise preview deck.json -o out/svgs                   # SVG per slide, for a visual self-check

One shape rule: cover/chapter/ending slides are heading + subheading only, components live on content slides. validate says exactly this if you mix them up.

No install at all also works: npx -y @liustack/pptwise validate deck.json. In a source checkout, node dist/cli.js replaces pptwise, and examples/ has ready-made IR files to try.

The commands you will reach for most:

Command Does
validate <target> Check the IR, with page numbers on every error
render <target> [-o <https://github.com/liustack/pptwise/blob/HEAD/out.pptx>] [--theme <id>] Render a .pptx. Omit -o to write .pptwise/<deck>/<deck>.pptx
preview <target> [-o <dir>] [--html] One SVG per slide, plus a self-contained review page. Omit -o to write .pptwise/<deck>/
serve <target> Live preview that reloads on every change
audit <target> Geometry review: overflow, out-of-bounds, low contrast, overlap
themes List the built-in themes
doctor Check the install: runtime, skill copies, optional capabilities, self-test render

Full reference: docs/cli.md.

Documentation

Doc Read it when
Install guide Handing installation to an agent or checking prerequisites
Agent skill Learning the workflow pptwise teaches an agent
CLI manual Looking up commands, flags, audits, previews, and health checks
IR reference Writing a deck, slide, component, or narrative in JSON
Themes Picking a built-in theme or extracting your own brand
Core concepts Understanding themes, layouts, components, narratives, and capacity
Architecture Working on the render chain or adding a theme, layout, or component
Deck projects Building a multi-file deck with locked specs, assets, and live review
Layout selection and seed Explaining why a layout was picked or keeping revisions stable
Contrast system Debugging text color, painted backgrounds, or contrast findings
Designing themes Drawing a theme redesign that can actually compile to PPTX
Testing Running the right gate, inspecting snapshots, or changing exported XML
Internal API Understanding why the JavaScript internals carry no semver promise
Release guide Preparing and publishing an npm release
CHANGELOG Finding what changed in a version

Credits

Icon primitives are extracted from lucide (ISC License). pptwise itself was extracted from a production AI-deck-generation system and CJK-typography-tuned (full-width punctuation width, Chinese line breaking, a Chinese-first font stack, explicit east-asian font-slot declarations) from day one.

License

MIT

上一个 Prev dsh-tui 下一个 Next upstream-radar