Deckforge について
DeckForgeは、構造化されたスライド仕様や自然言語のプロンプトからプレゼンテーションを生成し、個人やAIエージェント向けに提供します。PPTXとGoogle Slidesに対応し、財務向けレイアウトと自動品質チェックを備えています。
主な機能
- 01プロンプトや構造化IRからスライドを生成
- 02PPTXまたはGoogle Slidesで出力
- 0332種類のスライドと24種類のチャート
- 04財務向けスライドレイアウト
- 05レイアウト品質の確認と自動修正
- 06レンダリング費用の見積もり
活用シーン
- 01プロンプトから経営層向け資料を作成
- 02財務データをテーマ付きスライドに変換
- 03指定されたスライド仕様をレンダリング
- 04納品前にプレゼンテーションの品質を確認
MCP 対応
DeckForgeは、資料の生成・レンダリング、テーマとスライドタイプの確認、費用見積もり、料金確認を行う6つのツールを備えたMCPサーバーを含みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
DeckForge
人間と AI エージェントのための、API ファーストなプレゼンテーション生成
エグゼクティブ向けのスライドを、API 呼び出しひとつで。JSON 中間表現(IR)または自然言語のプロンプトを送ると、プロフェッショナルなレイアウト、一貫したブランディング、検証済みの品質を備えた .pptx ファイルまたは Google Slides のデッキが返されます。
🚀 DeckForge を本番環境でご利用中ですか?より高い上限、優先サポート、特定のスライド/チャート機能をお求めですか? ご利用用途をお聞かせください → — すべてのメッセージに目を通しています。
解決できる課題
- エージェントが、構造化されたスライド仕様を実際の PowerPoint に変換する必要があるものの、ヘッドレスの Office 環境も、手書きの python-pptx コードも使いたくない。 Presentation IR(スライド、要素、テーマ)を
renderに送信すると、テーマを適用した.pptx(または Google Slides)のデッキに加え、品質スコアとレイアウト/QA の問題数が返されます。 - エージェントが、ナラティブを自分で設計することなく、1 行のプロンプトからデッキを作成する必要がある。
generateは 4 段階のコンテンツパイプライン(意図 → アウトライン → 展開 → 推敲)を実行し、スライドの種類を選んで内容を作成します。構造化された IR が返され、それをrenderに渡せます。 - DCF、比較会社分析テーブル、ウォーターフォール、リターンのレイアウトを毎回作り直すことなく、財務関連のスライドが必要である。 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 種類 -- corporate-blue、executive-dark、finance-pro、modern-gradient、minimal-light、tech-neon、その他 9 種類(カスタムブランドキットにも対応)
- ネイティブ PPTX 出力 -- 要素単位の制御、トランジション、グラフ埋め込みに対応した python-pptx によるレンダリング
- Google Slides 出力 -- Google Slides API による直接エクスポート(OAuth フローを含む)
- AI コンテンツ生成 -- Claude、OpenAI、Gemini、または Ollama による自然言語からスライドへの変換(意図、アウトライン、展開、洗練の 4 段階パイプライン)
- 5 段階の QA パイプライン -- コントラスト、はみ出し、配置などを対象に、自動修正エンジンを備えた品質チェック
- 制約ベースのレイアウト -- kiwisolver 制約ソルバー、12 列グリッド、適応型オーバーフロー処理(フォント縮小、再配置、分割)
- MCP サーバー -- AI エージェント連携用の 6 つのツール(render、generate、themes、slide_types、cost_estimate、pricing)
- x402 決済ミドルウェア -- セルフホスト型デプロイ向けの、任意の呼び出しごとの USDC 決済対応(Base L2)。デフォルトでは無効です
- 課金インフラストラクチャ -- セルフホスト型デプロイ向けの Stripe サブスクリプションおよびクレジットシステムに対応(ホスト型の有料プランはまだ提供していません)
- TypeScript SDK -- 流暢なビルダーパターン、完全な型安全性、SSE ストリーミングを備えた
@lukastan/deckforge
クイックスタート
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エンドポイントを使用するには、.envで少なくとも 1 つの LLM API キー(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 Slides にレンダリング |
/v1/generate | POST | 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 | API キー | デッキの CRUD 操作 |
/v1/batch | POST | API キー | 複数のデッキを一括レンダリング |
/v1/webhooks | GET/POST/DELETE | API キー | Webhook サブスクリプションを管理 |
/v1/billing/* | Various | API キー | Stripe サブスクリプションを管理 |
/v1/pricing | GET | 不要 | 現在の料金とプラン情報 |
/v1/onboard/signup | POST | 不要 | アカウントと API キーを作成 |
/v1/analytics/* | GET | 管理者 | 利用状況の分析とメトリクス |
/v1/auth/google/* | GET | API キー | Slides 用の Google OAuth フロー |
環境変数
すべての変数には DECKFORGE_ がプレフィックスとして付いています。コメントと値の例を含む完全なリファレンスについては、.env.example を参照してください。
| 変数 | デフォルト値 | 説明 |
|---|---|---|
DECKFORGE_DATABASE_URL | postgresql+psycopg://...localhost | PostgreSQL 接続文字列 |
DECKFORGE_REDIS_URL | redis://localhost:6379/0 | Redis 接続(キュー、キャッシュ、Pub/Sub) |
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 | -- | Stripe シークレットキー |
DECKFORGE_STRIPE_WEBHOOK_SECRET | -- | Stripe Webhook 署名シークレット |
DECKFORGE_STRIPE_STARTER_PRICE_ID | -- | Starter ティアの Stripe 価格 ID |
DECKFORGE_STRIPE_PRO_PRICE_ID | -- | Pro ティアの Stripe 価格 ID |
DECKFORGE_GOOGLE_CLIENT_ID | -- | Google OAuth クライアント ID(Slides 用) |
DECKFORGE_GOOGLE_CLIENT_SECRET | -- | Google OAuth クライアントシークレット |
DECKFORGE_GOOGLE_REDIRECT_URI | http://localhost:8000/v1/auth/google/callback | OAuth リダイレクト URI |
DECKFORGE_UNKEY_ROOT_KEY | -- | Unkey ルートキー(本番環境の認証用) |
DECKFORGE_UNKEY_API_ID | -- | Unkey API ID |
DECKFORGE_X402_ENABLED | false | x402 USDC 決済を有効にする |
DECKFORGE_X402_WALLET_ADDRESS | -- | Base 上で USDC を受け取るウォレットアドレス |
DECKFORGE_X402_FACILITATOR_URL | https://x402.org/facilitator | x402 ファシリテーターのエンドポイント |
DECKFORGE_X402_NETWORK | eip155:8453 | Base Mainnet のチェーン ID |
デプロイ
Render(推奨)
ホスト型の本番 API は Render で https://deckforge-api.onrender.com として稼働しています。DeckForge には render.yaml ブループリントが含まれています。
- Render ダッシュボードで New → Blueprint を選択し、このリポジトリを指定します。Render が
render.yaml(Web サービス + ワーカー + マネージド Postgres + Redis)を読み込みます。 - サービスの Environment タブで本番環境のシークレット(Stripe / Anthropic / 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 の主な設定:
- VM あたり共有 CPU 2 基、RAM 1 GB
- コスト効率化のための自動停止/起動(最低 1 台を稼働)
- 同時実行数の制限を設けた HTTPS の強制(ソフト上限 200 / ハード上限 250)
- マルチプロセス:
api(uvicorn)+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 Tigris | fly storage create を実行すると自動設定 |
料金
料金プランはまだありません。現在ご購入いただける有料プランはありません。 ホスティング版や商用版、上限の引き上げ、優先サポートをご希望ですか?アーリーアクセスに申し込む →
このリポジトリの課金コード(Stripe のサブスクリプション、クレジットシステム、x402 USDC ミドルウェア)は、セルフホスト環境向けのインフラであり、デフォルトでは無効になっています。
クレジット消費量(エンジンの仕組み)
API 呼び出しごとに、複雑さに応じてクレジットが消費されます。
- シンプルなレンダリング(5 枚未満のスライド):1 クレジット
- 標準的なレンダリング(5~20 枚のスライド):2~3 クレジット
- 複雑なレンダリング(グラフ、財務スライド):3~5 クレジット
- コンテンツ生成(NL-to-IR):+2 クレジット(LLM の使用)
デモデッキ
demos/ に、プロダクション品質のデモ IR が 5 つあります。
| デモ | スライド | テーマ | 用途 |
|---|---|---|---|
| McKinsey Strategy | 12 | corporate-blue | 戦略コンサルティング用デッキ |
| PE Deal Memo | 10 | finance-pro | プライベートエクイティ投資委員会 |
| Startup Pitch | 12 | modern-gradient | シリーズ A の資金調達 |
| Board Update | 8 | executive-dark | 四半期取締役会 |
| Product Launch | 10 | tech-neon | 製品発売の告知 |
任意のデモをレンダリングします。
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 つのツールを備えた Model Context Protocol サーバーが含まれています。
{
"mcpServers": {
"deckforge": {
"command": "python",
"args": ["-m", "deckforge.mcp.server"]
}
}
}
ツール:render、generate、themes、slide_types、cost_estimate、pricing
エージェントフレームワークのサポート
- LangChain -- render と generate のツールクラス
- CrewAI -- action パラメーターを備えた統合ツール
- AutoGen --
Annotated型を使用するプレーン関数ツール
インテグレーションの例については、demos/ をご覧ください。
リンク
コントリビューション
- リポジトリをフォークします
- 機能ブランチを作成します(
git checkout -b feature/my-feature) - テストを実行します(Python は
pytest、TypeScript はcd sdk && npm test) - コミットしてプッシュします
- Pull Request を作成します
ライセンス
DeckForge -- API を 1 回呼び出すだけで、経営層向けのスライドが完成します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。