演示文稿生成API

DeckForge是一个API优先的演示文稿生成工具,支持通过JSON中间表示或自然语言提示生成专业的.pptx文件或Google Slides演示文稿,适用于人类用户和AI代理。

  • by Whatsonyourmind
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 Whatsonyourmind/deckforge

使用说明

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→ 轮廓→ 扩展→ 优化),选择幻灯片类型并写入内容,然后返回结构化的IR render.
  • 您需要金融风格的幻灯片,而无需每次都重新构建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 蓝图:

  1. 在“渲染”面板中选择 New → 蓝图 并将其指向此仓库——Render读取 render.yaml (web服务+worker+托管Postgres+Redis)。
  2. 在服务中设置生产秘密(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/ 作为集成示例。

链接

贡献

  1. 分叉回购
  2. 创建要素分支(git checkout -b feature/my-feature)
  3. 运行测试(pytest 对于Python, cd sdk && npm test 对于TypeScript)
  4. 承诺并推动
  5. 打开拉取请求

许可证

麻省理工学院


DeckForge -- Executive-ready slides, one API call away.