内容
# Deckyard
开源的端到端演示平台。
不仅仅是一个幻灯片构建工具:Deckyard 让您可以**创建、演示、发布和协作**演示文稿,只需一个基于Web的工具,该工具在您控制的基础设施上运行。每个演示文稿都属于您,从初稿到现场观众。
**AI 由您掌控**。人们使用 AI 来创建演示文稿;Deckyard 让您掌控 AI。您可以带来自己的 API 密钥,调整提示,或通过 [模型上下文协议](https://modelcontextprotocol.io/)(MCP)使用自己的工具。无需强制使用大型语言模型(LLM),无需锁定。
使用纯 Node.js 和 vanilla ESM 构建。无需框架,无需打包器,无需供应商锁定。
**在 [deckyard.eu](https://deckyard.eu) 上线** — 产品网站、文档和一个沙盒,让您在浏览器中试用。或者,您可以自行托管;以下所有内容都是同一个引擎。

## 为什么选择 Deckyard
**对于演讲者:** 39 种类型的幻灯片、带有演讲者笔记的实时演示、观众跟随投票和问答、双语支持(荷兰语/英语),以及一个真正了解演示设计的 AI 向导。
**对于开发者:** 自主托管、带入自己的 LLM(OpenAI、Claude、Mistral)、完全可主题化、可通过 JS SDK 嵌入、白色标签准备就绪。分叉它、主题化它、通过自定义幻灯片类型扩展它。零云依赖。
**对于 AI 代理:** 27 个 MCP 工具、6 个引导提示和一个类型感知的生成管道,它理解 KPI 仪表板和时间线之间的区别。通过 stdio(Claude Desktop、Cursor)或 SSE(远程代理、 [OpenClaw](https://openclaw.ai) 、Webhooks)连接。您的代理不会生成幻灯片标记;它描述它想要的,Deckyard 处理其余的。
### 有什么不同
| | Gamma / Tome / Beautiful.ai | Google Slides + Gemini | Deckyard |
|---|---|---|---|
| AI 生成 | ✅ | ✅ | ✅ 39 种类型幻灯片 |
| MCP 接口 | ❌ | ❌ | ✅ 27 个工具 + 6 个提示 |
| 自主托管 | ❌ | ❌ | ✅ |
| 带入自己的 LLM | ❌ | ❌ | ✅ |
| 自定义主题 | 有限 | 有限 | ✅ 完全控制 |
| 嵌入 SDK | ❌ | 有限 | ✅ |
| 白色标签 | ❌ | ❌ | ✅ |
| 开源 | ❌ | ❌ | ✅ MIT |
## 快速开始
一条命令 — 自动选择 Docker 或 Node 22+,写入本地 `.env`,启动应用程序,并打开您的浏览器:
```bash
curl -fsSL https://raw.githubusercontent.com/jaapstronks/deckyard/main/scripts/install.sh | bash
```
更喜欢手动操作(或阅读后再操作)?手动路径:
```bash
git clone https://github.com/jaapstronks/deckyard.git
cd deckyard
npm install
npm run setup # 可选:AI 密钥、身份验证、端口(Enter 接受默认值)
npm run start
# 打开 http://localhost:4177
```
安装程序是 [`scripts/install.sh`](scripts/install.sh);它克隆了仓库,写入本地 `.env`,安装依赖项,并启动应用程序 — 没有任何东西离开您的机器。请参阅 [自托管指南](docs/ops/self-hosting.md) 以获取 VPS/HTTPS 路径。
### 或者让您的 AI 代理安装它
Deckyard 是 MCP 原生的,因此具有 shell 功能的编码代理(Claude Code、Cursor 等)可以通过 MCP 在一步中克隆它,使用您的密钥配置它,启动它,并通过 MCP 连接。复制 [`docs/ops/agent-install.md`](docs/ops/agent-install.md) 中的提示并粘贴到您的代理中 — 它遵循相同的文档作为一个稳定的过程。非交互式设置采用标志来执行此操作:`npm run setup -- --yes --ai=claude --ai-key=… --auth=off`.
## MCP 服务器 — AI 代理集成
Deckyard 原生支持 [MCP](https://modelcontextprotocol.io/)。任何 MCP 兼容的客户端都可以通过自然语言创建、修改和管理演示文稿。
### 连接到 Claude Desktop
```json
{
"mcpServers": {
"deckyard": {
"command": "node",
"args": ["server/mcp/index.js"],
"cwd": "/path/to/deckyard",
"env": {
"DECKYARD_MCP_OWNER_EMAIL": "you@example.com"
}
}
}
}
```
### 远程连接(SSE 传输)
对于远程代理、CI/CD 管道或 [OpenClaw](https://openclaw.ai) 等平台:
```bash
# 创建 API 密钥
node scripts/create-api-key.js --email you@example.com --name "Agent" --scopes read,write,ai
# 连接到 SSE 端点
POST https://your-deckyard.com/mcp
Authorization: Bearer dk_live_...
```
一个可安装的 [OpenClaw 技能](skills/openclaw-skill/) 已包含在内 — 将其放入您的代理中,您的代理就可以构建演示文稿。
### 代理可以执行的操作
**27 个工具**,涵盖整个演示生命周期:
- `create_presentation` — 从原始文本、要点或会议笔记生成完整的演示文稿
- `iterate_presentation` — 使用自然语言修改(“使幻灯片 3 更有力”,“拆分 KPI 幻灯片”)
- `append_slides` — 将内容添加到现有的演示文稿中(智能定位在关闭幻灯片之前)
- `convert_slide` — 在 39 种幻灯片类型之间切换,并使用 AI 驱动的内容适配
- `compress_presentation` — 在保留关键信息的同时减少幻灯片数量
- `analyze_presentation` — 获取有关结构和内容的改进建议
- `validate_presentation` — 检查密度问题、重复内容和可读性问题
- `preview_slide` / `preview_presentation` — 用于聊天渲染的自包含 HTML 预览
- 评论:`list_comments` / `list_recent_comments`(带有幻灯片上下文和快照)、`add_comment`、`reply_to_comment`、`set_comment_status` — 代理可以处理和回答审阅者反馈
- 另外:`add_slide`、`update_slide`、`remove_slide`、`reorder_slides`、`duplicate_presentation`、`list_themes`、`get_presentation_url` 等
**6 个引导提示**,适用于 Claude Desktop 的 `/` 菜单:
- `/create-presentation` — 引导演示创建工作流程
- `/improve-presentation` — 分析和改进现有的演示文稿
- `/refine-slide` — 深入研究单个幻灯片
- `/compress-presentation` — 提炼长篇演示文稿
- `/add-content` — 使用新材料扩展演示文稿
- `/deck-overview` — 任何演示文稿的结构概述
### AI 生成管道
Deckyard 不只是将文本转储到幻灯片上。AI 管道:
1. **概述** 演示结构,从 39 种类型幻灯片布局中选择
2. **完善** 每个幻灯片,并使用类型感知的內容(KPI 指标、时间线条目、流程步骤 — 而不仅仅是项目符号)
3. **验证** 结果:密度检查、重复检测、可读性分析
4. 返回 **推理**,用于每个类型选择和 **替代建议**
主题感知:如果您的主题具有特定的品牌颜色或背景图像,AI 会看到它们并进行适配。
完整文档: [`docs/reference/mcp-server.md`](docs/reference/mcp-server.md)
## 自定义
Deckyard 设计用于分叉和品牌化。所有自定义内容都位于专用目录中,不会与上游更新冲突。
### 自定义主题
在 `custom/themes/` 中创建组织特定的主题:
```json
{
"id": "my-org",
"label": "我的组织",
"assets": {
"logo": "/custom/assets/images/my-logo.svg",
"logoAlt": "我的组织"
},
"cssVars": {
"--t-color-accent": "#007bff",
"--t-font-heading": "'Inter', sans-serif"
}
}
```
参见 `themes/deckyard.json` 以获取完整示例。
### 自定义幻灯片类型
在 `custom/slide-types/` 中添加组织特定的幻灯片类型:
```javascript
// custom/slide-types/my-slide-type.js
import { esc } from '../shared/slide-types/helpers.js';
export default {
label: '我的自定义幻灯片',
fields: [
{ key: 'title', label: '标题', type: 'string', required: true },
],
defaults: { title: '新幻灯片' },
renderHtml: (content) => `
<div class="slide slide-custom">
<h1>${esc(content?.title)}</h1>
</div>
`,
};
```
### 自定义资产
```
custom/assets/
├── images/
│ └── my-logo.svg
└── fonts/
└── MyFont.woff2
```
在您的主题中引用它们:`"/custom/assets/images/my-logo.svg"`
### 对于分叉
1. 从 `.gitignore` 中删除自定义目录
2. 提交您的主题、幻灯片类型和资产
3. 设置上游跟踪:
```bash
git remote add upstream https://github.com/jaapstronks/deckyard.git
git fetch upstream
git merge upstream/main
```
## 配置
### 环境变量
复制 `.env.example` 到 `.env` — 它记录了每个选项。基本内容:
```bash
# AI 向导(选择一个或多个)
OPENAI_API=sk-...
CLAUDE_API=sk-ant-...
MISTRAL_API=...
DEEPSEEK_API=sk-...
# 默认主题(可选,默认为“deckyard”)
DEFAULT_THEME=deckyard
# MCP 所有者(用于_stdio 传输)
DECKYARD_MCP_OWNER_EMAIL=you@example.com
```
### 身份验证
身份验证**默认情况下禁用**。通过设置启用它:
- `AUTH_ENABLED=true`
- `AUTH_SECRET` — 用于会话签名的随机密钥
- `AUTH_ADMIN_EMAIL` — 此用户获得管理员角色
在应用程序本身中管理用户(管理员面板、邀请、密码重置)。对于本地开发,`AUTH_DEV_BYPASS=true` 完全跳过身份验证,并自动以管理员身份登录。
### 实时协作(存在)
可选,**默认关闭** — 单用户安装不需要任何设置。设置 `COLLAB_ENABLED=true`,服务器在同一个 Node 进程中安装一个 [Yjs](https://yjs.dev) ( [Hocuspocus](https://tiptap.dev/docs/hocuspocus) )WebSocket 端点,位于 `/collab` — 无需额外的服务、端口或代理配置(WebSocket 升级默认由 Caddy/nginx 通过)。启用该标志后,编辑器显示实时协作者存在:谁在演示文稿中,谁正在查看哪张幻灯片,以及他们正在编辑哪个字段。访问控制重用正常的演示文稿权限;查看者和共享链接访客连接为只读。请参阅 `docs/reference/collab-presence.md` 以了解其工作原理。
## 部署
### Docker(推荐)
```bash
docker compose up -d --build
```
在 4177 端口运行。使用包含的 Caddy 配置进行 HTTPS。
从零到使用 [`scripts/vps-bootstrap.sh`](scripts/vps-bootstrap.sh) 在 VPS 上启动 HTTPS 实例是一条命令 — 请参阅 [自托管指南](docs/ops/self-hosting.md)。
### 手动
```bash
npm install --omit=dev
node server/server.js
```
### 数据存储
- 演示文稿:`server/data/presentations/`
- 上传:`server/uploads/`
定期备份这些目录。(可选 Postgres 模式:请参见 `.env.example`。)
## 项目结构
```
deckyard/
├── client/ # 前端(浏览器)
├── server/ # 后端(Node.js)
│ ├── mcp/ # MCP 服务器(stdio + SSE)
│ └── utils/ai/ # AI 管道
├── shared/ # 共享代码(幻灯片类型、markdown)
├── themes/ # 内置主题
├── skills/ # 代理技能模板(OpenClaw)
├── custom/ # 您的自定义(gitignored)
│ ├── themes/
│ ├── slide-types/
│ └── assets/
├── tests/ # MCP + 单元测试
└── docs/ # 文档
```
## 文档
- [deckyard.eu](https://deckyard.eu) — 产品网站和已发布的文档(功能、使用指南)
- [MCP 服务器参考](docs/reference/mcp-server.md) — 所有 27 个工具、6 个提示、传输选项
- [开发者文档](docs/developer/README.md) — 架构和扩展
- [主题参考](docs/developer/themes.md) — 主题系统
- [自托管指南](docs/ops/self-hosting.md) — VPS 引导、更新、备份
- [路线图](ROADMAP.md) — Deckyard 的发展方向
## 贡献
欢迎贡献!请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md) 以获取指南。
## 维护者
Deckyard 由 [Jaap Stronks](https://github.com/jaapstronks) 构建和维护。对于安全报告,请使用 GitHub 的私人漏洞报告(请参见 [`SECURITY.md`](SECURITY.md));对于其他事项,请打开一个问题。
## 许可证
MIT 许可证 — 请参见 `LICENSE` 以获取详细信息。