返回插件市场

pptpress

多模态与创作

liustack/pptpress

为 AI agent 提供稳定、可编辑的 PPTX 生成,基于语义 IR 和原生 DrawingML 输出。包含 DSH 插件、Claude Code 插件和 CLI。

  • agent-skill
  • agent-skills
  • ai-agent
  • claude-code
  • claude-skills
  • codex
  • cordis
  • deck-generation
  • deepseek
  • drawingml
  • dsh
  • dsh-plugin
  • harness
  • powerpoint
  • pptx
  • presentation
  • slides
GitHub Stars
19GitHub
浏览量
13DSH Plugin Hub
Forks
2GitHub
开放问题
0GitHub Issues
Manifest 版本
0.21.0@liustack/pptpress
最近推送
2026年10月9日GitHub
许可证
MITTypeScript
插件类型
Host + Client同时运行于 Host 与 Web Client

验证与兼容性

这里展示目录实际采集到的证据;未声明的信息会明确标为未知。

静态检查通过
01精确来源: npm · @liustack/pptpress@0.21.002验证时间: 2026年8月23日03验证版本: 0.1.0-rc.7
当前版本兼容性
已在当前目录版本验证
声明的 Harness 范围
未声明
声明的平台
未声明
适用 Profile
web
构建授权
未知
权限声明
未声明
外部服务
未声明
遥测声明
未知
未发现已知风险标记

这不是安全背书;安装前仍应查看源码、权限和配置。

查看证据与判定范围

验证仅覆盖标出的来源、版本和 Harness 环境,不代表未来版本仍然兼容。

  • @liustack/pptpress@0.21.0
  • 插件通过清单与静态结构检查,尚未完成运行时加载检查。

README

查看源文件

What it makes

Pages from the decks in examples/, rendered by the engine. In the exported file every bar, label, and card is a native PowerPoint shape with editable text. Three of the decks come ready to open: product pitch · charts · quarterly review, in Chinese.

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 intent, the engine turns semantic page kinds and typed components into a coherent theme-bound deck. The same bound input renders the same output every time.

✏️ 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: every bar and cell is an editable shape with editable text, not a native PowerPoint chart or table object carrying data, so to change the numbers, have your AI rebuild that page. Start from 22 factory themes, copy one into your workspace, or extract colors and fonts from 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, and 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

IR v5 is one JSON file describing a complete bound deck. Every content page names its semantic kind. The theme menu turns that kind into a visual face.

{
  "version": "5",
  "filename": "hello.pptx",
  "theme": { "id": "brief" },
  "slides": [
    {
      "type": "cover",
      "heading": "Hello pptwise",
      "subheading": "A first native deck"
    },
    {
      "type": "content",
      "kind": "points",
      "heading": "Why it works",
      "components": [
        {
          "type": "bullets",
          "items": ["Semantic IR in", "Theme-menu lookup", "Native DrawingML out"]
        }
      ]
    },
    { "type": "ending", "heading": "Thanks" }
  ]
}

Save that as deck.json, then run:

pptwise validate deck.json
pptwise render deck.json -o out/hello.pptx
pptwise preview deck.json -o out/review --html

Choose a theme from pptwise themes --json by matching occasions and identity. Compare two to four candidates before binding:

pptwise theme try brief,swiss,memo

Create a complete independent v2 theme by copying a preset, forking a palette, or extracting an Office brand:

pptwise theme new --from brief -o themes/acme.theme.json --id acme
pptwise theme fork acme --primary "#0B5FFF" -o themes/acme-blue.theme.json --id acme-blue
pptwise brand extract corp.pptx -o themes/acme-brand.theme.json --id acme-brand --from brief

A deck project binds one theme in deck.spec.json, then keeps page content in pages/<id>.json. Render has no temporary theme switch. A same-menu color fork can replace the binding. A different menu requires returning to theme selection, then revisiting the spec and affected page fills.

No install also works: npx -y @liustack/pptwise validate deck.json. In a source checkout, use node dist/cli.js in place of pptwise. Ready-made v5 files live under examples/.

The commands you will reach for most:

commandpurpose
spec validate <spec.json>Validate page order, kinds, headings, narrative, and theme-menu fit.
assemble <dir>Combine a deck project into derived IR v5 without storing rendering choices.
validate <target>Check IR, binding, menu, components, assets, and content quality.
render <target> [-o <out.pptx>]Render native editable PPTX.
audit <target>Check geometry, contrast, truncation, dropped content, and monotony.
preview <target> [--html]Write SVG pages and an optional self-contained review file.
serve <target>Start a live review that reloads on source changes.
themes [--json]List factory themes with occasion and identity metadata.
theme try <id,id,...>Compare the fixed sample across two to four themes.
theme new, theme forkCopy a complete theme or create a full-palette fork.
doctorCheck runtime, skill copies, optional capabilities, and a self-test render.

Full reference: docs/cli.md.

Documentation

DocRead it when
Install guideHanding installation to an agent or checking prerequisites
Agent skillLearning the workflow pptwise teaches an agent
CLI manualLooking up commands, flags, audits, previews, and health checks
IR referenceWriting IR v5 pages, kinds, components, assets, and narrative in JSON
ThemesCopying, comparing, forking, binding, or authoring a complete v2 theme
Core conceptsUnderstanding theme, spec, component, kind, menus, and capacity
ArchitectureWorking on the menu route, render chain, or export boundary
Deck projectsBuilding a multi-file deck with a bound theme, locked spec, assets, and live review
Menu lookupTracing how a page kind reaches one theme face across validation and render
Contrast systemDebugging text color, painted backgrounds, or contrast findings
Designing themesDrawing a theme redesign that can actually compile to PPTX
Design briefThe rules a design tool gets before it draws a face or component
Reusable partsStarting a theme from the compositions, fields and fixes earlier theme samples settled
TestingRunning the right gate, inspecting snapshots, or changing exported XML
Internal APIUnderstanding why the JavaScript internals carry no semver promise
Release guidePreparing and publishing an npm release
CHANGELOGFinding what changed in a version

Credits

pptwise is an open-source project by liustack.

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

评论

0
最新优先