内容
# presentation-skill-pack
**将粗糙的笔记转化为精致的幻灯片 — 在任何 AI 代理中。 然后导出到 PowerPoint、Keynote 或 Google Slides。**
[](https://www.npmjs.com/package/@presentation-skill-pack/core)
[](https://pypi.org/project/presentation-skill-pack-render/)
[](https://github.com/isatimur/presentation-skill-pack/actions/workflows/ci.yml)
[](https://presentation-skill-pack.vercel.app/#gallery)
[](LICENSE)
<p align="center">
<img src="docs/hero-demo.gif" alt="Six decks the pack rendered — pitch, brand, pricing, keynote — cycling to show the range" width="820" />
<br/>
<em>渲染的六个真实幻灯片 — 相同的结构化规范,可互换的主题。没有截图,没有锁定。</em>
</p>
🌐 **[presentation-skill-pack.vercel.app](https://presentation-skill-pack.vercel.app)** — 25 个展示幻灯片的实时画廊 · **[工作室](https://presentation-skill-pack.vercel.app/studio)** — 在浏览器中编辑幻灯片
> ⭐ 如果这将您的笔记转化为一个您实际上会展示的幻灯片,请给仓库点赞。
---
## 快速开始
```bash
npx @presentation-skill-pack/install claude-code
```
该命令安装技能文件并为您的代理注册 MCP 服务器。重启您的代理并要求它“创建关于……的演示文稿” — 它生成一个有效的 deck JSON 并渲染一个自包含的 HTML 文件,您可以在任何浏览器中打开它,或导出到原生、可编辑的 **PowerPoint**(在 **Keynote** 中打开并导入到 **Google Slides**)。
---
## 为什么选择此工具而非 Gamma / Slidev / Marp
- **结构化 JSON 让您的代理编辑,而不是不透明的幻灯片。** 每个幻灯片都是一个模式验证的 Deck JSON 规范 — 代理读取它,差异化它,并在请求时重写一个幻灯片,而不是重新生成一个黑盒布局。
- **原生、可编辑的 PPTX / Keynote / Google Slides 导出。** 由于幻灯片是结构化数据,每个幻灯片都映射到真实的原生形状 — 一个导出器生成一个 `.pptx` 文件,可以在 PowerPoint 中打开,在 Keynote 中打开,并导入到 Google Slides 中。没有截图,没有锁定。
- **适用于任何代理,不适用于一个应用。** Claude Code、Cursor、Codex、Gemini CLI、Copilot 或纯 CLI — 一个 `npx` 安装程序将技能和 MCP 服务器连接到您已经使用的任何工具。
- **25 个幻灯片的证明画廊,实时展示。** 在安装之前查看输出:[25 个展示幻灯片](https://presentation-skill-pack.vercel.app/#gallery) 由软件包渲染,在浏览器中可编辑的 [工作室](https://presentation-skill-pack.vercel.app/studio)。
---
## 它是什么
presentation-skill-pack 是一个通用的技能层,为 AI 编码代理(Claude Code、Cursor、Codex、Gemini CLI、Copilot 和纯 CLI)提供了一种结构化、模式验证的方式来编写幻灯片。代理编写一个 Deck JSON 规范;渲染器将其转换为一个自包含的 HTML 文件 — 无需构建工具,无需幻灯片托管。相同的幻灯片导出到原生、可编辑的 **PowerPoint**(在 **Keynote** 中打开并导入到 **Google Slides**),浏览器 **工作室** 让您可以打开创建的幻灯片并编辑它,实时预览。主题是可互换的、可发布的 npm 包,MCP 服务器通过类型化的工具公开整个工作流程。
---
## 软件包
| 软件包 | 描述 |
|---|---|
| [`@presentation-skill-pack/core`](packages/core) | Deck + 主题模式、主题加载器、验证器和捆绑的默认技术主题 |
| [`@presentation-skill-pack/render`](packages/renderer-node) | Node.js 渲染器 — CLI (`presentation-skill-pack-render`) + 编程 API |
| [`@presentation-skill-pack/export`](packages/export) 🚧 _即将推出(尚未发布)_ | Deck → 原生、可编辑的 PowerPoint(`.pptx`) — 在 PowerPoint 和 Keynote 中打开,导入到 Google Slides |
| [`@presentation-skill-pack/studio`](packages/studio) 🚧 _即将推出(尚未发布)_ | 浏览器编辑器工作室:编辑、实时预览和导出幻灯片(Vite SPA) |
| [`@presentation-skill-pack/mcp-server`](packages/mcp-server) | MCP 服务器将所有工具暴露给任何与 MCP 兼容的代理(`presentation-skill-pack-mcp`) |
| [`@presentation-skill-pack/install`](packages/install) | 一键安装程序,将技能和 MCP 服务器连接到您的代理(`presentation-skill-pack-install`) |
| [`@presentation-skill-pack/create-theme`](packages/create-theme) | 脚手架一个新的可发布的主题包(`create-presentation-theme`) |
| [`@presentation-skill-pack/theme-corporate`](packages/themes/corporate) | 正式的企业主题 |
| [`@presentation-skill-pack/theme-playful`](packages/themes/playful) | 活泼的创意代理主题 |
| [`@presentation-skill-pack/theme-luxury-minimalist`](packages/themes/luxury-minimalist) | 豪华极简主义主题 |
| [`@presentation-skill-pack/theme-retro-arcade`](packages/themes/retro-arcade) | 复古 80 年代街机主题 |
| [`presentation-skill-pack-render`](packages/renderer-python) _(PyPI)_ | 用于 Node.js 外的代理和管道的 Python 渲染器 |
---
## 主题
| 主题 | 气氛 |
|---|---|
| `default-tech` | 黑色背景,电蓝色强调,单色代码感觉 — 核心中捆绑 |
| `corporate` | 清晰的白色画布,黑色文字,克制的蓝色强调 — 适合董事会 |
| `playful` | 暖白色,珊瑚色 + 青柠色强调,圆角,超大字体 — 创意代理能量 |
| `luxury-minimalist` | 浅白色画布,炭灰色文字,细线边框,无渐变 — 安静的自信 |
| `retro-arcade` | 深紫色黑色背景,洋红色 + 青色霓虹灯,像素字体 — 8 位复古怀旧 |
---
## 适配器
| 适配器 | 描述 | 安装 |
|---|---|---|
| `claude-code` | 将技能复制到 `~/.claude/skills/` + 在 `~/.claude/mcp.json` 中注册 MCP 服务器 | `npx @presentation-skill-pack/install claude-code` |
| `cursor` | 将 `.mdc` 规则添加到 `~/.cursor/rules/` + MCP 服务器条目 | `npx @presentation-skill-pack/install cursor` |
| `copilot` | 写入 `.github/copilot-instructions.md` + `.vscode/mcp.json`(从项目根目录运行) | `npx @presentation-skill-pack/install copilot` |
| `codex` | 将技能添加到 `~/.codex/instructions.md` + MCP 服务器 | `npx @presentation-skill-pack/install codex` |
| `gemini-cli` | 将 GEMINI.md 技能写入 `~/.gemini/instructions/` + MCP 服务器 | `npx @presentation-skill-pack/install gemini-cli` |
| `cli` | 独立 — 通过 `presentation-skill-pack-render` CLI 渲染幻灯片,无 MCP | `npx @presentation-skill-pack/install cli` |
---
## Deck JSON 示例
```json
{
"type": "deck",
"meta": {
"title": "Q3 产品回顾",
"company": "Acme Inc.",
"theme": "corporate"
},
"slides": [
{
"layout": "title",
"heading": "Q3 产品回顾",
"subheading": "2026 年 7 月 – 9 月"
},
{
"layout": "stat-row",
"heading": "数据一览",
"stats": [
{ "label": "MRR", "value": "$420k", "delta": "+18%" },
{ "label": "活跃用户", "value": "12,400", "delta": "+31%" },
{ "label": "NPS", "value": "67", "delta": "+9 pts" }
]
},
{
"layout": "two-column",
"heading": "我们发布的版本",
"left": "**即时回放** — 用户可以一键重播任何会话片段。\n\n**智能摘要** — 每天向 Slack 交付 AI 摘要。",
"right": "**API v2** — 与旧 SOAP 接口具有完全的 REST + 网络钩子对等性。\n\n**iOS 18 小部件** — 锁屏上的可一览统计信息。"
},
{
"layout": "feature-grid",
"heading": "Q4 即将推出",
"columns": 2,
"cards": [
{ "title": "实时协同编辑", "body": "多个代理同时注释同一个幻灯片。" },
{ "title": "主题市场", "body": "从 CLI 直接浏览和安装社区主题。" },
{ "title": "PDF 导出", "body": "通过 Playwright 进行的一键式无头导出。" },
{ "title": "企业 SSO", "body": "用于大型组织部署的 SAML 2.0 + SCIM 配置文件。"
}
]
},
{
"layout": "quote",
"quote": "最好的演讲是真正做出来的。",
"attribution": "— 每位错过截止日期的工程师"
},
{
"layout": "timeline",
"heading": "Q4 里程碑",
"events": [
{ "date": "10 月 15 日", "label": "协同编辑测试版" },
{ "date": "11 月 1 日", "label": "主题市场启动" },
{ "date": "11 月 20 日", "label": "PDF 导出 GA" },
{ "date": "12 月 10 日", "label": "企业 SSO GA" }
]
},
{
"layout": "data-table",
"heading": "区域分解",
"headers": ["区域", "MRR", "增长"],
"rows": [
["北美", "$210k", "+22%"],
["欧洲", "$140k", "+15%"],
["亚太", "$70k", "+41%"]
]
},
{
"layout": "closing",
"heading": "问题?",
"subheading": "github.com/isatimur/presentation-skill-pack 上的幻灯片源代码"
}
]
}
```
---
## 导出到 PowerPoint、Keynote 和 Google Slides
由于幻灯片是**结构化**的数据(不是自由形式的 HTML),每个幻灯片都清晰地映射到原生幻灯片形状。一个导出器涵盖了所有三个应用程序:
```bash
# CLI
presentation-skill-pack-render deck.json --format pptx -o deck.pptx
```
```ts
// 编程(Node)
import { renderDeckPptx } from "@presentation-skill-pack/render";
await writeFile("deck.pptx", await renderDeckPptx(deckJson));
```
结果是一个**原生、可编辑**的 `.pptx` 文件:
- **PowerPoint** — 直接打开。
- **Keynote** — 文件 → 打开(Keynote 没有可移植的原生格式;`.pptx` 是桥梁)。
- **Google Slides** — 文件 → 导入幻灯片 / 上传到 Drive → 作为可编辑的 Slides 幻灯片打开。
代理可以调用 `export_deck` MCP 工具。保真度说明(字体、颜色、图像)位于
[`packages/export/references/pptx-fidelity.md`](packages/export/references/pptx-fidelity.md)。
## 工作室
[`@presentation-skill-pack/studio`](packages/studio) 是一个浏览器编辑器:通过模式驱动的表单编辑幻灯片,查看实时预览,并下载 HTML 或 `.pptx`。它是一个完全静态的 Vite SPA(客户端渲染 + 导出,无后端)。
```bash
pnpm --filter @presentation-skill-pack/studio dev # 本地编辑器
pnpm --filter @presentation-skill-pack/studio build # 静态构建 → dist/(部署到 Vercel)
```
## MCP 工具
| 工具 | 目的 |
|---|---|
| `render_deck` | 将 Deck JSON 字符串渲染为自包含的 HTML 文件 |
| `export_deck` | 将 Deck JSON 导出为原生、可编辑的 PowerPoint(`.pptx`)— 或 html |
| `list_themes` | 列出所有可用主题(捆绑 + 已安装的 npm 包)及其名称、版本和氛围 |
| `get_theme` | 返回给定主题名称的完整主题 JSON |
| `validate_deck` | 验证 Deck JSON 是否符合模式并返回具有严重性的结构化问题 |
| `create_deck` | 从文本提示或结构化简介创建新的 Deck JSON 规范 |
---
## 贡献
参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
---
## 许可证
MIT — 参见 [LICENSE](LICENSE)。