AIプレゼン作成にGammaやBeautiful AIを使っているなら、毎月の課金に悩んでいるはずだ。月8〜15ドルのサブスクリプション、APIアクセス制限、そして自社データが外部サーバーを経由するプライバシーリスク——これらはSaaS型ツールに共通する構造的な問題だ。

AIエージェントフレームワーク比較2026|LangGraph・CrewAI・Dify等9種をStar数・実コードで検証

その問題を根本から解決するOSSツールが Presenton だ。2025年5月にリポジトリが公開されてから1年足らずで 5,139スター・986フォーク を記録し、Apache 2.0ライセンスで完全無料で使える自己ホスト型AIプレゼンテーション生成エンジンだ。Gamma・Beautiful AI・Decktopusの機能的な代替として、開発者・チームから急速に支持を集めている。

この記事でわかること
・Presentonのアーキテクチャと設計思想
・DockerとDesktop Appの2通りのインストール手順
・OpenAI・Gemini・Claude・Ollamaなど全LLMプロバイダーの設定方法
・REST APIを使ったプレゼン生成の自動化手順
・MCPサーバー経由でClaude Codeからプレゼンを直接生成する方法
・Gamma・Beautiful AI・Decktopusとの機能・コスト比較
・本番環境でのdocker-compose設定テンプレート

Presentonとは何か——設計思想と5つの柱

Presentonの公式の説明は「Open-Source AI Presentation Generator and API(Gamma, Beautiful AI, Decktopus Alternative)」だ。このリポジトリ説明がそのままツールの本質を示している。

Presentonが解決しようとしている問題は三つある。コスト(月額SaaSの継続課金)、データ管理(機密スライドが外部サーバーを通過する)、LLM固定(使うモデルを選べない)——SaaS型AIプレゼンツール全般に共通する構造的な制約だ。

Presentonの設計原則
No SaaS lock-in — サブスクリプション不要、完全無料
No forced subscriptions — 使った分だけAPIコストが発生するBYOK方式
Full control over models and data — 使用LLMもデータ保存場所も自分で決める

これを実現する5つの技術柱がある。

1. マルチプロバイダーLLM対応

OpenAI・Google Gemini・Vertex AI・Azure OpenAI・Anthropic Claude・Ollama・カスタムエンドポイントを環境変数一行で切り替えられる。ローカルでOllamaを動かせば、LLMコストをゼロにできる。

2. 自己ホストの徹底

DockerイメージまたはElectronデスクトップアプリで動作する。データはローカルの app_data ディレクトリに保存され、外部サーバーへの送信は一切ない(Ollama使用時はLLM呼び出しも含めて完全ローカル)。

3. REST APIサーバーとしての公開

起動後はHTTP Basic認証で保護されたAPIサーバーとして機能する。チーム共有・CI/CD組み込み・他システムとの連携がAPIで実現できる。

4. 組み込みMCPサーバー

Model Context Protocolに対応した内蔵MCPサーバーを持つ。Claude CodeやCursor等のMCPクライアントから、自然言語でプレゼン生成を直接指示できる。

5. 完全編集可能なPPTX出力

Gammaのエクスポートと異なり、フォント・レイアウト・図形がすべてPowerPoint上で編集できる状態でエクスポートされる。ベンダーロックアウトのないファイル形式が保証される。

システムアーキテクチャ——コンポーネント構成と処理フロー

PresentonはNext.jsフロントエンドとFastAPIバックエンドの2層構造で動作する。デプロイ方法(Docker/Electron)に関わらず、バックエンドのロジックは共通だ。

flowchart LR A["ユーザー"] --> B["Web UI
Next.js"] A --> C["REST API
/api/v1/ppt"] A --> D["MCPサーバー"] B --> E["FastAPI
バックエンド"] C --> E D --> E E --> F["LLMプロバイダー
OpenAI・Gemini・Anthropic
Ollama・Azure・Vertex"] E --> G["画像生成
DALL-E3・Gemini・Pexels"] E --> H["Mem0
プレゼン記憶"] E --> I["エクスポート
PPTX・PDF"] E --> J["LiteParse
ドキュメント解析"]

このアーキテクチャの重要な点は、フロントエンドとバックエンドの完全分離だ。UIなしでAPIとして使えるため、Webブラウザ・CLI・MCPクライアント・外部システムのいずれからでも同じ生成ロジックにアクセスできる。

LiteParse(ドキュメント解析コンポーネント)はPDFやWordファイルを読み込み、テキストを抽出する。アップロードしたドキュメントからプレゼンを生成する際に使われる。処理はすべてローカルで行われ、OCRレンダリングDPIや並列ワーカー数を環境変数で調整できる。

Mem0(プレゼン記憶コンポーネント)はローカルQdrant + SQLiteによるベクトルDB実装だ。プレゼン単位でコンテキストを記憶し、続きの編集セッションで前回の内容を参照できる。デフォルトでOllamaベースの組み込みLLMを使うため、OpenAIキーがなくても動作する。

バックエンドはPython(FastAPI)で実装されており、LLMの呼び出し・スライド構造の生成・画像取得・PPTX組み立てまでをすべてサーバーサイドで処理する。フロントエンドのNext.jsはUIとして機能し、実際の生成ロジックはFastAPI側が担う。

インストール方法——DockerとDesktop Appの選択

Presentonを動かす方法は2つある。用途とスキルレベルに応じて選択する。

Option 1: Docker(チーム共有・本番運用向け)

依存関係の管理が不要で、1コマンドで起動できる。チームへの共有サーバーとして運用する場合に最適だ。

# Linux/macOS(Bash/Zsh)
docker run -it --name presenton \
  -p 5000:80 \
  -v "./app_data:/app_data" \
  ghcr.io/presenton/presenton:latest

# Windows(PowerShell)
docker run -it --name presenton `
  -p 5000:80 `
  -v "${PWD}\app_data:/app_data" `
  ghcr.io/presenton/presenton:latest

コンテナが起動したら http://localhost:5000 にアクセスするだけで使い始められる。データは ./app_data ディレクトリにローカル保存され、コンテナを停止しても失われない。

ポート番号は 5000:80 の左側の 5000 を任意の値に変更できる。社内サーバーで443番ポートをリバースプロキシで通す場合も同様に設定する。

Option 2: Electron Desktop App(個人利用・オフライン向け)

コマンドラインなしで使い始めたい場合はデスクトップアプリが適している。Mac・Windows・Linuxの各プラットフォーム向けにビルド済みパッケージが提供されている。

プラットフォーム アーキテクチャ 形式
macOS Apple Silicon / Intel .dmg
Windows x64 .exe
Linux x64 .deb

デスクトップアプリはElectronベースで、同じFastAPIバックエンドをアプリ内に内包している。インターネット接続なしで、LLMもOllamaでローカル実行すれば、完全オフラインのプレゼン生成環境が実現する。

開発者向けには、ソースからElectronアプリをビルドすることもできる。Node.js(LTS)・npm・Python 3.11・uv(FastAPIバックエンドの依存管理)が事前準備として必要だ。

# 初回セットアップ(electronディレクトリ内)
cd electron
npm run setup:env

# 開発モードで実行
npm run dev

Cloud Deployment

Railwayへのワンクリックデプロイも用意されている。Dockerが使えない環境でクラウドホスティングする場合に便利だ。railway.com/deploy/presenton-ai-presentations からワンクリックでデプロイできる。

対応LLMプロバイダーと設定方法

Presentonの最大の特徴の一つが、LLMプロバイダーの完全な自由選択だ。LLM 環境変数を切り替えるだけで使うモデルを変更できる。

OpenAI(デフォルト)

LLM=openai
OPENAI_API_KEY=sk-xxx
OPENAI_MODEL=gpt-4.1          # デフォルト値
WEB_GROUNDING=true            # Web検索グラウンディング(オプション)

Anthropic Claude

LLM=anthropic
ANTHROPIC_API_KEY=sk-ant-xxx
ANTHROPIC_MODEL=claude-3-5-sonnet-20241022   # デフォルト値
EXTENDED_REASONING=true       # 拡張推論モード(オプション)

Google Gemini

LLM=google
GOOGLE_API_KEY=AIzaXxx
GOOGLE_MODEL=models/gemini-2.0-flash   # デフォルト値

Ollama(ローカル・コストゼロ)

ローカルLLMを使う場合、推論はすべてオンプレミスで完結する。機密スライドを外部に一切送信せずに生成できる。

LLM=ollama
OLLAMA_URL=http://host.docker.internal:11434
OLLAMA_MODEL=llama3.2:3b
START_OLLAMA=false             # Ollamaをコンテナ内で起動しない(別途起動済みの場合)
Ollama使用時の注意点:DockerコンテナからホストのOllamaに接続する場合、`localhost` ではなく `host.docker.internal` を使う。Linux では `host-gateway` に変更が必要な場合がある。

Azure OpenAI / Vertex AI

企業の既存クラウド契約を活かす場合は、AzureやVertex AIを使える。

# Azure OpenAI
LLM=azure
AZURE_OPENAI_MODEL=gpt-4o     # デプロイ名
AZURE_OPENAI_API_KEY=xxx
AZURE_OPENAI_API_VERSION=2024-10-21
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com

# Vertex AI
LLM=vertex
VERTEX_MODEL=gemini-2.5-flash
VERTEX_PROJECT=your-gcp-project
VERTEX_LOCATION=us-central1

v0.8.5-betaで追加されたLiteLLM対応

2026年5月12日のv0.8.5-betaリリースで、LiteLLMサポートが追加された。LiteLLMはOpenAI互換の統合プロキシで、任意のLLMプロバイダーをOpenAI形式のAPIとして扱える。

LLM=custom
CUSTOM_LLM_URL=http://localhost:4000   # LiteLLMプロキシのURL
CUSTOM_LLM_API_KEY=your-litellm-key
CUSTOM_MODEL=gpt-4                     # LiteLLM経由でのモデル名
DISABLE_THINKING=false

これにより、Presenton単体では直接サポートしていないプロバイダー(Mistral・Cohere・ローカルvLLMなど)も、LiteLLM経由で利用可能になった。

画像生成プロバイダーの選択

スライドの画像はLLMとは独立して設定できる。

IMAGE_PROVIDER 設定値一覧(選択して使用):
pexels — ストック写真(無料APIキーが必要)
pixabay — ストック写真(無料APIキーが必要)
dall-e-3 — OpenAI AI生成(OPENAI_API_KEYが必要)
gemini_flash — Google AI生成(GOOGLE_API_KEYが必要)
gpt-image-1.5 — OpenAI最新画像モデル
comfyui — 自己ホストComfyUIエンドポイント
open_webui — OpenWebUI互換エンドポイント

テキストLLMにAnthropicを使いながら画像はPexelsのストック写真にする、といった組み合わせが可能だ。コスト最適化の観点では、テキスト生成にOllama・画像にPexelsFreeを組み合わせることでランニングコストをほぼゼロにできる。

REST APIでプレゼン生成を自動化する

Presentonの真価はAPIにある。HTTP Basic認証で保護されたRESTful APIが /api/v1/ppt/ 以下に用意されており、外部システムからプレゼンを自動生成できる。

基本的な生成リクエスト

curl -u username:password \
  -X POST http://localhost:5000/api/v1/ppt/presentation/generate \
  -H "Content-Type: application/json" \
  -d '{
    "content": "機械学習の基礎入門",
    "n_slides": 8,
    "language": "Japanese",
    "template": "general",
    "export_as": "pptx",
    "tone": "professional",
    "verbosity": "standard"
  }'

レスポンスには presentation_id、ダウンロードパス、Webエディタへのパスが含まれる。

{
  "presentation_id": "d3000f96-096c-4768-b67b-e99aed029b57",
  "path": "/app_data/d3000f96/機械学習の基礎入門.pptx",
  "edit_path": "/presentation?id=d3000f96-096c-4768-b67b-e99aed029b57"
}

pathedit_path にサーバーのルートURLを付加することで、ダウンロードリンクと編集リンクが得られる。

APIパラメータ全リスト

パラメータ 必須 デフォルト 説明
content string - 生成元コンテンツ(テーマ・本文)
n_slides integer × 8 生成するスライド枚数
language string × “English” 出力言語
template string × “general” テンプレート名
tone string × “default” 文体トーン
verbosity string × “standard” テキスト密度
web_search boolean × false Web検索グラウンディング有効化
export_as string × “pptx” 出力形式(pptx / pdf)
files string[] × null アップロード済みファイルID
slides_markdown string[] × null カスタムスライドMarkdown(各スライド1要素)
instructions string × null 追加生成指示
include_title_slide boolean × true タイトルスライドを含める
include_table_of_contents boolean × false 目次スライドを含める

tone オプション: default / casual / professional / funny / educational / sales_pitch

verbosity オプション: concise(簡潔)/ standard(標準)/ text-heavy(詳細テキスト)

ドキュメントからの生成

既存ドキュメントを元にプレゼンを生成する場合、まずファイルをアップロードする。

# Step 1: ファイルアップロード
FILE_ID=$(curl -u username:password \
  -X POST http://localhost:5000/api/v1/ppt/files/upload \
  -F "[email protected]" | python3 -c "import sys, json; print(json.load(sys.stdin)['file_id'])")

# Step 2: ドキュメントからプレゼン生成
curl -u username:password \
  -X POST http://localhost:5000/api/v1/ppt/presentation/generate \
  -H "Content-Type: application/json" \
  -d "{
    \"content\": \"四半期業績レポートサマリー\",
    \"files\": [\"$FILE_ID\"],
    \"n_slides\": 12,
    \"language\": \"Japanese\",
    \"export_as\": \"pptx\",
    \"tone\": \"professional\"
  }"

PDFやWordドキュメントを自動的にプレゼン化するワークフローが構築できる。月次レポートの自動スライド化や、研究論文からサマリープレゼンを生成するといったユースケースに対応する。

slides_markdown パラメータを使えば、AIが生成するスライド構造を事前に制御することもできる。スライドごとにMarkdown文字列を配列で渡すと、AIはそのMarkdownをデザインに変換するだけになる。構成を完全に制御しながら視覚的なPPTXが欲しい場合に有用だ。

MCPサーバー統合——Claude Codeからプレゼンを直接生成する

Agent ハーネスは魔法ではない。実装例から学ぶ基本構造

PresentonにはModel Context Protocol(MCP)対応の組み込みサーバーが付属している。Claude Code・Cursor・その他MCP対応クライアントから、自然言語でプレゼン生成を指示できる。

MCPサーバーの設定

Claude Codeの設定ファイル(.claude/settings.json またはグローバル設定)にPresentonのMCPエンドポイントを追加する。

{
  "mcpServers": {
    "presenton": {
      "url": "http://localhost:5000/mcp",
      "headers": {
        "Authorization": "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
      }
    }
  }
}

dXNlcm5hbWU6cGFzc3dvcmQ=username:password をBase64エンコードした値だ。実際の認証情報に置き換えてから設定する。

設定後、Claude Codeのセッションから直接プレゼンを生成できる。

「機械学習入門の10枚スライドをPPTX形式で、プロフェッショナルトーンで日本語で作成して」

Claude Codeがこの指示を受け取り、PresentonのMCPツールを呼び出してスライドを生成する。生成されたファイルのパスが返ってきたら、サーバーからダウンロードして使える。

MCPサーバー活用の実践例

MCPとAPIが組み合わさることで、エージェントベースの自動化ワークフローが実現する。

  • 技術資料の自動化: コードドキュメントやREADMEからAPIリファレンスプレゼンを自動生成
  • レポート連携: データ分析スクリプトの実行結果をその場でスライド化
  • 会議資料の自動生成: 議事録やIssueの内容から次回MTGの資料を自動作成
  • CI/CDパイプライン組み込み: コードリリースのたびにリリースノートをPPTX形式で生成

AIエージェントがPresentonのAPIを呼び出すシナリオでは、slides_markdown パラメータが特に有効だ。エージェントが分析結果をMarkdownで整形し、それをPresenton APIに渡せば、構成を制御しながら視覚的なプレゼンが自動生成される。

カスタムテンプレートとエクスポート機能

HTMLとTailwind CSSによるテンプレート作成

PresentonのテンプレートはHTML + Tailwind CSSで定義する。企業ブランドのスライドデザインをHTMLで実装し、チーム全員が同じデザインシステムでプレゼンを生成できる。

テンプレートの柔軟性は「無制限のデザイン」という言葉で表現されている。PowerPointのテンプレート機能とは異なり、CSSで表現できるあらゆるデザインがスライドに適用できる。

さらに、既存のPowerPointファイルからAIがテンプレートを自動生成する機能(AI Template Generation)も用意されている。手元にある会社のPPTXテンプレートをアップロードするだけで、PresentonがそのデザインパターンをHTMLテンプレートに変換する。

エクスポートオプション

生成したプレゼンは2つの形式でエクスポートできる。

  • PPTX: PowerPoint互換の完全編集可能なファイル。フォント・レイアウト・図形・アニメーションがPowerPoint上で変更できる
  • PDF: プレゼン配布・印刷用の固定レイアウトファイル

PPTXの「完全編集可能」という点が重要だ。GammaのPPTXエクスポートは構造が複雑でテキスト編集しかできないことが多い。PresentonはネイティブのPPTX構造を生成するため、PowerPoint上での本格的な編集が可能だ。

競合比較——Gamma・Beautiful AI・Decktopusとの違い

バイブコーディングは終わった?2026年版Agentic AIエンジニアのロードマップと進化の全体像

SaaS型AIプレゼンツールとOSSのPresenton、どちらを選ぶべきか。機能・コスト・データ管理の3軸で比較する。

機能 Presenton Gamma Beautiful AI Decktopus
価格 無料(OSS) $8〜/月 $12/月 $15/月
自己ホスト × × ×
REST API ○(全プラン) △(有料プランのみ) × ○(有料)
MCPサーバー × × ×
LLM選択自由 × × ×
ローカルLLM ○(Ollama) × × ×
PPTX完全編集
PDF出力
データ管理 完全自己管理 外部サーバー 外部サーバー 外部サーバー
ライセンス Apache 2.0 商用 商用 商用
テンプレート HTML自作/AI生成 豊富なプリセット 豊富なプリセット 豊富なプリセット
GitHub Stars 5,139

Presentonが劣る点も正直に見ておく必要がある。UIのポリッシュ度はGammaが依然として高い。Gammaは豊富なプリセットテンプレートと洗練されたデザインシステムを持っており、デザインスキルなしで見栄えするスライドを素早く作れる。PresentonのカスタムテンプレートはHTMLの記述が必要になる場面があり(既存PPTXからの自動生成機能で軽減されつつあるが)、完全なノーコード体験とはまだ言えない。

用途別の推奨:

  • コスト最優先の個人・スタートアップ: Presenton(ランニングコスト最小)
  • 機密データを扱う企業: Presenton(データコンプライアンス優先)
  • API・自動化が必要: Presenton(REST API + MCP)
  • デザイン品質最優先の一回限りの用途: Gamma(UIと即席使いやすさ)
  • リアルタイムチームコラボ機能重視: Beautiful AI

本番環境での設定例——docker-compose.yml

チームでPresenton を本番運用する際は、docker-compose.yml.env ファイルの組み合わせが推奨される構成だ。

# docker-compose.yml(本番設定例)
version: "3.8"
services:
  presenton:
    image: ghcr.io/presenton/presenton:latest
    ports:
      - "5000:80"
    volumes:
      - ./app_data:/app_data
    environment:
      # 認証設定
      - AUTH_USERNAME=${AUTH_USERNAME}
      - AUTH_PASSWORD=${AUTH_PASSWORD}
      - CAN_CHANGE_KEYS=false      # UIからのキー変更を無効化
      # LLM設定
      - LLM=${LLM_PROVIDER}
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - OPENAI_MODEL=gpt-4.1
      # 画像生成
      - IMAGE_PROVIDER=pexels
      - PEXELS_API_KEY=${PEXELS_API_KEY}
      - DISABLE_IMAGE_GENERATION=false
      # Mem0(プレゼン記憶)
      - MEM0_ENABLED=true
      - MEM0_LLM_BASE_URL=${OLLAMA_URL:-http://host.docker.internal:11434}
      - MEM0_EMBEDDER_PROVIDER=fastembed
      # データベース
      - MIGRATE_DATABASE_ON_STARTUP=true
      # 高度な設定
      - WEB_GROUNDING=true
    restart: unless-stopped

対応する .env ファイル:

AUTH_USERNAME=admin
AUTH_PASSWORD=your-secure-password-here
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-xxxxxxxx
PEXELS_API_KEY=your-pexels-key

CAN_CHANGE_KEYS=false の設定が本番運用の要点だ。チームメンバーがUI経由でAPIキーを変更できないようにロックできる。管理者がキーを中央管理しコストコントロールを維持できる。

MIGRATE_DATABASE_ON_STARTUP=true はDockerの全サービスでデフォルトで推奨される設定で、コンテナ起動時にマイグレーションが自動実行される。データベーススキーマの変更がバージョンアップ時に自動適用される仕組みだ。

セキュリティ上の注意点

デフォルトでは認証なしで動作するため、本番環境では必ず AUTH_USERNAMEAUTH_PASSWORD を設定する。API エンドポイントはHTTP Basic認証で保護されるが、HTTPSなしで外部公開する場合は認証情報が平文で送信されるため、リバースプロキシでTLS終端を行うことが必須だ。

アップデート履歴と開発状況

直近のリリース履歴を見ると、開発ペースの速さがわかる。

バージョン リリース日 主な変更点
v0.8.5-beta 2026-05-12 LiteLLMサポート追加・モデル設定強化
v0.8.4-beta 2026-05-11 Azure・Vertex LLM対応・テンプレート生成改善
v0.8.3-beta 2026-05-09 スライドレイアウトジョブ・DBバグ修正

3日連続でベータリリースが出ている。公開ロードマップがGitHub Projects(github.com/orgs/presenton/projects/2)で管理されており、コミュニティからのフィードバックが反映されている。

開発チームはネパールを拠点とするスタートアップで、主に sudipnext(バックエンド・LLM統合)と sauravniraula(エクスポート・Docker)がコア開発者として携わっている。

2026年5月時点でOpen Issuesになっている主なリクエスト:

  • サーバーサイドWebグラウンディング(ローカルLLMパイプライン向け)
  • カスタムテンプレートのAPI経由指定
  • 画像生成モデルの呼び出し形式の拡張
  • スライドの選択編集機能

v0.8.x はベータ段階だが、本番利用で必要なAzure・Vertex・LiteLLMへの対応が週単位で追加されており、商用環境への適用に向けた成熟が続いている。

導入前チェックリスト

Presenton導入の判断チェックリスト
□ 月額SaaSコストを削減・ゼロにしたい
□ プレゼン生成APIを自社システムやCI/CDに組み込みたい
□ スライド内の機密データを外部サーバーに送りたくない
□ 使うLLMを自由に選択・切り替えたい(BYOK)
□ Ollamaでローカル実行してコストをゼロにしたい
□ Claude CodeなどMCPクライアントからプレゼンを生成したい
□ チーム共有のプレゼンAPIサーバーとして運用したい
□ カスタムブランドデザインのテンプレートを使いたい

2つ以上当てはまればPresenton導入の価値がある。1つも当てはまらない場合——デザイン品質最優先でコストを気にしない個人ユーザーであれば、GammaのUIの方が初期体験が良い。

まとめ——AIプレゼン生成のインフラレイヤーとして

Presentonは「GammaのOSS代替」という位置づけを超えて、AIプレゼン生成のインフラレイヤーとして機能する。5,139スターと986フォークという数字は、単なるユーザーの支持ではなく、自分のシステムに組み込もうとする開発者の関心を示している。

コスト・データ管理・自動化のいずれかが優先事項であれば、Presentonは現時点で最有力の選択肢だ。SaaS型ツールが持つ構造的な制約——月額コスト・API制限・データの外部送信——をすべて回避しながら、同等以上の生成品質を実現している。

特にMCPサーバーの内蔵は、AIエージェント時代への布石として重要だ。エージェントがデータ分析を実行し、その結果を即座にプレゼン化する——というワークフローが、Presentonを組み込むことで技術的に完成する。GammaやBeautiful AIはSaaSとしてAPIが制限されているため、この自動化ループへの組み込みが難しい。

2026年5月時点でのv0.8.x はベータ段階だが、週単位のリリースと活発なコミュニティを持つプロジェクトとして、本番採用を検討するに値するOSSに成長している。

参照ソース