使用说明
DeckForge
API-first presentation generation for humans and AI agents
执行准备幻灯片,只需一个API调用。发送JSON中间表示(IR)或自然语言提示,并返回 .pptx 文件或谷歌幻灯片组——具有专业布局、一致的品牌和经过验证的质量。
🚀 在生产中使用DeckForge,还是想要更高的限制、优先级支持或特定的幻灯片/图表功能? 告诉我你的用例→ --我读了每一本。
这解决了什么
- 您的代理需要将结构化幻灯片规范转换为真正的PowerPoint,而不需要无头Office安装或手写的python pptx代码。 将演示文稿IR(幻灯片、元素、主题)发送至
render并获得一个主题.pptx(或谷歌幻灯片)甲板加上质量分数和布局/QA问题计数。 - 你的代理人需要从一行提示中获得一副牌——而不需要设计叙事本身。
generate运行一个4级内容管道(intent→ 轮廓→ 扩展→ 优化),选择幻灯片类型并写入内容,然后返回结构化的IRrender. - 您需要金融风格的幻灯片,而无需每次都重新构建DCF、comptable、瀑布图或返回布局。 9种财务幻灯片类型和面向财务的图表类型(瀑布、龙卷风、足球场、敏感度表)是一流的IR,因此数字的模型输出成为可审计的主题幻灯片。
- 您的代理人必须选择有效
slide_type,theme,以及运行时的图表值——无需猜测。themes(15) 以及slide_types(32:23通用+9金融,带必需/可选元素)是发现工具,可返回准确的标识符和元素要求以构建正确的IR。 - 在不进行试用调用的情况下,您需要在渲染之前确定成本。
cost_estimate计算学分ceil(slides/10)加上每张财务幻灯片和每张图表的附加费,返回明细和等值美元,以便自主代理在采取行动之前进行预算。 - 您希望甲板保持一致并经过机器检查,而无需人工设计。 每个渲染都运行一个QA管道,该管道具有自动修复对比度、溢出和对齐的功能,并报告
quality_score和qa_issues向来电者倒数。
特性
- 32种滑盖类型 --标题、议程、要点、比较、时间线、流程图、组织结构图、统计标注、表格、图表、矩阵、漏斗图、地图等
- 9张财务幻灯片 --DCF摘要、计算表、瀑布图、交易概述、回报分析、资本结构、市场格局、风险矩阵、投资理论
- 24种图表类型 --条、线、区域、饼、甜甜圈、散射、气泡、组合、瀑布、漏斗、树状图、雷达、龙卷风、足球场、敏感度表、热图、桑基、甘特、日爆等
- 15个内置主题 --公司蓝、高管黑、金融专业、现代渐变、极简光、科技霓虹灯和其他9种(加上定制品牌套件)
- 本机PPTX输出 --带有元素级控制、转换和图表嵌入的python-pptx渲染
- 谷歌幻灯片输出 --通过Google Slides API直接导出(包括OAuth流)
- AI内容生成 --通过Claude、OpenAI、Gemini或Ollama(4阶段流程:意图、大纲、扩展、细化)将自然语言转换为幻灯片
- 5级QA管道 --使用自动修复引擎进行自动质量检查,以进行对比度、溢出、对齐等
- 基于约束的布局 --kiwisolver约束求解器,12列网格,自适应溢出(字体缩小、回流、拆分)
- MCP服务器 --6个AI代理集成工具(渲染、生成、主题、幻灯片类型、成本估算、定价)
- x402支付中间件 --可选的每次呼叫USDC支持(Base L2),用于自托管部署;默认情况下禁用
- 计费基础设施 --Stripe订阅+信用系统支持自托管部署(目前还不提供托管付费计划)
- TypeScript SDK --
@lukastan/deckforge具有流畅的构建器模式、全类型安全、SSE流式传输
快速开始
在5分钟内从零到第一个渲染甲板。
先决条件
步骤
# 1. Clone the repo
git clone https://github.com/Whatsonyourmind/deckforge && cd deckforge
# 2. Copy environment config (works out of the box for local dev)
cp .env.example .env
# 3. Start all services (API, workers, PostgreSQL, Redis, MinIO)
docker compose up -d
# 4. Initialize the database (runs migrations, seeds test user + API key)
bash scripts/bootstrap-db.sh
# 5. Verify the API is running
curl http://localhost:8000/v1/health
# => {"status":"healthy"}
引导程序脚本输出测试API密钥(dk_test_...).请将其保存为以下示例。
API示例
从IR渲染甲板
curl -X POST http://localhost:8000/v1/render \
-H "Authorization: Bearer dk_test_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"title": "Q4 Board Update",
"theme": "corporate-blue",
"slides": [
{
"slide_type": "title_slide",
"elements": [
{"type": "title", "content": "Q4 2026 Board Update"},
{"type": "subtitle", "content": "Acme Corp -- Confidential"}
]
},
{
"slide_type": "stats_callout",
"elements": [
{"type": "title", "content": "Key Metrics"},
{"type": "metric", "content": "$4.2M", "label": "ARR"},
{"type": "metric", "content": "142%", "label": "YoY Growth"},
{"type": "metric", "content": "94%", "label": "Retention"}
]
}
]
}' \
--output board-update.pptx
从自然语言生成套牌
curl -X POST http://localhost:8000/v1/generate \
-H "Authorization: Bearer dk_test_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Create a 10-slide pitch deck for a B2B SaaS startup in the cybersecurity space, Series A, $2M ARR",
"theme": "executive-dark",
"output_format": "pptx"
}' \
--output pitch-deck.pptx
注: 这
/v1/generate终结点需要在中配置至少一个LLM API密钥.env(Anthropic、OpenAI、Gemini或Ollama)。
检查可用的主题和幻灯片类型
# List all 15 themes
curl http://localhost:8000/v1/themes
# List all 32 slide types with example IR
curl http://localhost:8000/v1/slide-types
# Estimate credit cost before rendering
curl -X POST http://localhost:8000/v1/estimate \
-H "Authorization: Bearer dk_test_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"slides": [{"slide_type": "title_slide"}, {"slide_type": "chart_slide"}]}'
TypeScript SDK
从npm安装:
npm install @lukastan/deckforge
具有全类型安全性的流畅构建器:
import { DeckForge, Presentation, Slides } from "@lukastan/deckforge";
const client = new DeckForge({ apiKey: "dk_test_YOUR_KEY_HERE" });
const deck = Presentation.create("Q4 Board Update", "corporate-blue")
.addSlide(
Slides.titleSlide({
title: "Q4 2026 Board Update",
subtitle: "Acme Corp -- Confidential",
})
)
.addSlide(
Slides.statsCallout({
title: "Key Metrics",
metrics: [
{ value: "$4.2M", label: "ARR" },
{ value: "142%", label: "YoY Growth" },
{ value: "94%", label: "Retention" },
],
})
);
const pptx = await client.render(deck);
// => Buffer containing .pptx file
通过SSE流式传输从提示生成:
const stream = client.generate({
prompt: "Create a PE deal memo for a $500M LBO of a healthcare platform",
theme: "finance-pro",
});
for await (const event of stream) {
console.log(`${event.stage}: ${event.message}`);
}
// intent: Analyzing prompt for presentation structure...
// outline: Creating 12-slide deal memo outline...
// expand: Generating slide content...
// refine: Running QA pipeline (5 passes)...
// complete: Deck ready for download
建筑
+------------------+
| Clients |
| (curl/SDK/MCP) |
+--------+---------+
|
+--------v---------+
| FastAPI (uvicorn)|
| /v1/* routes |
| Auth + Rate Limit|
| Credit Billing |
+--+-----+------+--+
| | |
+-----------+ | +----------+
| | |
+--------v------+ +------v--------+ +------v--------+
| Content Worker | | Render Worker | | Sync Path |
| (ARQ + Redis) | | (ARQ + Redis) | | (< 10 slides) |
| NL -> IR | | IR -> PPTX | | Direct return |
+--------+------+ +------+--------+ +------+--------+
| | |
v v v
+--------+------+ +------+---------+ +-----+--------+
| LLM Adapters | | PPTX Renderer | | Google Slides|
| Claude/GPT/ | | Layout Engine | | Renderer |
| Gemini/Ollama | | Theme Resolver | | (OAuth) |
+---------------+ | Chart Renderer | +--------------+
| QA Pipeline |
+------+---------+
|
+------v---------+
| Storage |
| MinIO (dev) |
| R2/S3 (prod) |
+----------------+
+----------------+ +----------------+
| PostgreSQL | | Redis |
| Users, Keys | | Queue, Cache |
| Jobs, Decks | | Rate Limits |
| Billing | | SSE Pub/Sub |
+----------------+ +----------------+
API路线
所有路线都安装在 /v1 前缀。互动文档 http://localhost:8000/docs.
| 端点 | 方法 | 身份验证 | 描述 |
|---|---|---|---|
/v1/health |
GET | 否 | 健康检查 |
/v1/render |
POST | API键 | 将IR渲染到PPTX/Google幻灯片 |
/v1/generate |
POST | neneneba API键 | 从自然语言生成幻灯片 |
/v1/preview |
POST | API键 | 生成缩略图PNG |
/v1/estimate |
POST | API密钥 | 估计信贷成本 |
/v1/jobs/{id} |
GET | API键 | 检查异步作业状态 |
/v1/themes |
GET | 否 | 列出可用主题 |
/v1/slide-types |
GET | 否 | 列出幻灯片类型及其示例 |
/v1/decks |
GET/POST/DELETE | neneneba API键 | 甲板CRUD操作 |
/v1/batch |
POST | neneneba API键 | 批量渲染多组 |
/v1/webhooks |
GET/POST/DELETE | API密钥 | 管理webhook订阅 |
/v1/billing/* |
各种 | API密钥 | 条带订阅管理 |
/v1/pricing |
GET | 否 | 当前定价和等级信息 |
/v1/onboard/signup |
POST | 否 | 创建帐户和API密钥 |
/v1/analytics/* |
GET | 管理 | 使用分析和指标 |
/v1/auth/google/* |
获取 | API密钥 | 幻灯片的Google OAuth流 |
环境变量
所有变量都以前缀 DECKFORGE_。参见 .env.example 以获取带有注释和示例值的完整参考。
| 变量 | 默认值 | 描述 |
|---|---|---|
DECKFORGE_DATABASE_URL |
postgresql+psycopg://...localhost |
PostgreSQL连接字符串 |
DECKFORGE_REDIS_URL |
redis://localhost:6379/0 |
Redis连接(队列、缓存、发布/订阅) |
DECKFORGE_S3_ENDPOINT_URL |
http://localhost:9000 |
S3兼容存储端点 |
DECKFORGE_S3_ACCESS_KEY |
minioadmin |
S3访问密钥(开发默认为MinIO) |
DECKFORGE_S3_SECRET_KEY |
minioadmin |
S3密钥 |
DECKFORGE_S3_BUCKET |
deckforge |
S3存储桶名称 |
DECKFORGE_API_HOST |
0.0.0.0 |
API绑定地址 |
DECKFORGE_API_PORT |
8000 |
API端口 |
DECKFORGE_DEBUG |
true |
调试模式(生产中禁用) |
DECKFORGE_ENVIRONMENT |
development |
development / staging / production |
DECKFORGE_LLM_DEFAULT_PROVIDER |
claude |
内容生成的默认LLM |
DECKFORGE_LLM_FALLBACK_CHAIN |
claude,openai,gemini |
LLM回退顺序 |
DECKFORGE_ANTHROPIC_API_KEY |
-- | Claude的Anthropic API密钥 |
DECKFORGE_OPENAI_API_KEY |
-- | OpenAI API密钥 |
DECKFORGE_GEMINI_API_KEY |
-- | Google Gemini API密钥 |
DECKFORGE_OLLAMA_BASE_URL |
http://localhost:11434 |
Ollama本地服务器URL |
DECKFORGE_STRIPE_SECRET_KEY |
-- | 条纹密钥 |
DECKFORGE_STRIPE_WEBHOOK_SECRET |
-- | 条纹式webhook签名密钥 |
DECKFORGE_STRIPE_STARTER_PRICE_ID |
-- | 初学者层的条纹价格ID |
DECKFORGE_STRIPE_PRO_PRICE_ID |
-- | 专业版条纹价格ID |
DECKFORGE_GOOGLE_CLIENT_ID |
-- | 谷歌OAuth客户端ID(用于幻灯片) |
DECKFORGE_GOOGLE_CLIENT_SECRET |
-- | 谷歌OAuth客户端机密 |
DECKFORGE_GOOGLE_REDIRECT_URI |
http://localhost:8000/v1/auth/google/callback |
OAuth重定向URI |
DECKFORGE_UNKEY_ROOT_KEY |
-- | 取消密钥根密钥(生产身份验证) |
DECKFORGE_UNKEY_API_ID |
-- | 未密钥API ID |
DECKFORGE_X402_ENABLED |
false |
启用x402 USDC支付 |
DECKFORGE_X402_WALLET_ADDRESS |
-- | USDC在Base上接收钱包 |
DECKFORGE_X402_FACILITATOR_URL |
https://x402.org/facilitator |
x402主持人端点 |
DECKFORGE_X402_NETWORK |
eip155:8453 |
基础主网链ID |
部署
渲染(推荐)
托管的生产API在以下位置的Render上运行 https://deckforge-api.onrender.com.DeckForge运送 render.yaml 蓝图:
- 在“渲染”面板中选择 New → 蓝图 并将其指向此仓库——Render读取
render.yaml(web服务+worker+托管Postgres+Redis)。 - 在服务中设置生产秘密(Stripe/Anthopic/S3) 环境 选项卡,然后触发第一次部署。
# Verify
curl https://deckforge-api.onrender.com/v1/health
Fly.io(替代)
DeckForge还运送了一个生产就绪的产品 fly.toml 多阶段 Dockerfile.
# 1. Install Fly CLI
curl -L https://fly.io/install.sh | sh
# 2. Login and launch
fly auth login
fly launch --name deckforge-api --region iad
# 3. Provision PostgreSQL
fly postgres create --name deckforge-db --region iad
fly postgres attach deckforge-db
# 4. Provision Redis (via Upstash or Fly Redis)
fly redis create --name deckforge-redis
# Copy the REDIS_URL from output
# 5. Set production secrets
fly secrets set \
DECKFORGE_ENVIRONMENT=production \
DECKFORGE_DEBUG=false \
DECKFORGE_DATABASE_URL="postgres://..." \
DECKFORGE_REDIS_URL="redis://..." \
DECKFORGE_S3_ENDPOINT_URL="https://..." \
DECKFORGE_S3_ACCESS_KEY="..." \
DECKFORGE_S3_SECRET_KEY="..." \
DECKFORGE_S3_BUCKET="deckforge" \
DECKFORGE_STRIPE_SECRET_KEY="sk_live_..." \
DECKFORGE_STRIPE_WEBHOOK_SECRET="whsec_..." \
DECKFORGE_ANTHROPIC_API_KEY="sk-ant-..."
# 6. Deploy
fly deploy
# 7. Run database migrations
fly ssh console -C "alembic upgrade head"
# 8. Verify
curl https://<your-app>.fly.dev/v1/health
Fly.io配置亮点:
- 2个共享CPU,每个虚拟机1 GB RAM
- 自动停止/启动以提高成本效益(至少1台机器运行)
- 具有并发限制的强制HTTPS(200软/250硬)
- 多流程:
api(玉米)+worker(ARQ)
Docker Compose(本地开发)
# Start all 6 services
docker compose up -d
# Services:
# api - FastAPI + uvicorn (port 8000)
# content-worker - ARQ worker for NL-to-IR generation
# render-worker - ARQ worker for IR-to-PPTX rendering
# postgres - PostgreSQL 16 (port 5432)
# redis - Redis 7 (port 6379)
# minio - MinIO S3-compatible storage (port 9000, console 9001)
# Check service health
docker compose ps
# View API logs
docker compose logs -f api
# Tear down (preserves data volumes)
docker compose down
# Full reset (removes data)
docker compose down -v
S3存储选项
| 环境 | 提供程序 | 配置 |
|---|---|---|
| 本地开发 | MinIO(通过Docker Compose) | 默认值 .env.example 价值观 |
| 生产 | Cloudflare R2 | 设置 S3_ENDPOINT_URL, S3_ACCESS_KEY, S3_SECRET_KEY |
| 生产 | AWS S3 | 套件 S3_ENDPOINT_URL 到AWS端点 |
| Fly.io | 飞虎 | fly storage create,自动配置 |
定价
定价尚未公布,您今天没有可以购买的付费计划。 想要托管或商业版本、更高的限制或优先支持? 加入早期访问→
此仓库中的计费代码(Stripe订阅、信用系统、x402 USDC中间件)是自托管部署的基础设施,默认情况下已禁用。
信贷成本(发动机机械师)
每个API调用都会根据复杂度消耗信用:
- 简单渲染 (<5张幻灯片):1学分
- 标准渲染 (5-20张幻灯片):2-3学分
- 复杂渲染 (图表、财务幻灯片):3-5学分
- 内容生成 (NL到IR):+2学分(LLM使用)
演示甲板
五个生产质量演示IR demos/:
| 演示 | 幻灯片 | 主题 | 用例 |
|---|---|---|---|
| 麦肯锡战略 | 12 | 企业蓝 | 战略咨询平台 |
| 私募股权交易备忘录 | 10 | 金融支持 | 私募股权投资委员会 |
| 初创企业推介 | 12 | 现代渐变 | A轮融资 |
| 董事会更新 | 8 | 高管黑暗 | 季度董事会会议 |
| 产品发布 | 10 | 科技霓虹灯 | 产品发布公告 |
渲染任何演示:
curl -X POST http://localhost:8000/v1/render \
-H "Authorization: Bearer dk_test_YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d @demos/mckinsey-strategy/ir.json \
--output mckinsey-strategy.pptx
集成
MCP服务器(AI代理)
DeckForge包括 模型上下文协议 服务器有6个工具:
{
"mcpServers": {
"deckforge": {
"command": "python",
"args": ["-m", "deckforge.mcp.server"]
}
}
}
工具: render, generate, themes, slide_types, cost_estimate, pricing
代理框架支持
- 链语 --渲染+生成工具类
- 船员AI --具有动作参数的统一工具
- 自动生成 --普通功能工具
Annotated类型
看 demos/ 作为集成示例。
链接
贡献
- 分叉回购
- 创建要素分支(
git checkout -b feature/my-feature) - 运行测试(
pytest对于Python,cd sdk && npm test对于TypeScript) - 承诺并推动
- 打开拉取请求
许可证
DeckForge -- Executive-ready slides, one API call away.