
ピッチデック自動化の価値
- ピッチデッキ自動生成の完全自動化を実現するPythonスクリプトを5ステップで解説
- 「白紙からの試行錯誤で1週間以上」という課題を根本から解消する
- Claude Codeへの自然言語指示だけでスクリプトを生成できる
- 月・週・日単位の定期実行で完全無人化を実現する方法も紹介
以下のステップを順番に実行することで、今日から業務自動化を始められます。コピーして使えるコードと、Claude Codeへの指示文をセットで解説します。
投資家向けピッチデックは「Problem→Solution→Market→Traction→Team→Ask」の構造が基本です。Claude Code + python-pptx でこの構造を自動生成し、数値更新も即座に反映できます。
ステップ1:ピッチデック構造を自動生成
python-pptxで自動生成するスクリプトを作成して
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
prs = Presentation()
prs.slide_width = Inches(13.33)
prs.slide_height = Inches(7.5)
DARK = RGBColor(0x0D, 0x0D, 0x0D)
ORANGE = RGBColor(0xC4, 0x3E, 0x1C)
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
GRAY = RGBColor(0xF2, 0xF2, 0xF2)
slides_config = [
{"title": "会社名・バリュープロポジション", "type": "cover",
"body": "ひと言で言えるバリュープロポジション\n2025年 シードラウンド"},
{"title": "解決すべき課題", "type": "content",
"body": "現状の痛み:\n◉ XX業務に年間XX時間を無駄にしている\n◉ XX%の企業がDX推進で壁に直面\n◉ 市場全体の損失は年間XX億円"},
{"title": "私たちの解決策", "type": "content",
"body": "プロダクト:\n✓ AIで〇〇を完全自動化\n✓ 既存ツールとシームレス連携\n✓ 導入1週間で効果を実感"},
{"title": "市場規模", "type": "content",
"body": "TAM(全体市場): 5,000億円\nSAM(実現可能市場): 500億円\nSOM(3年獲得目標): 50億円"},
{"title": "牽引力(Traction)", "type": "content",
"body": "◉ 月次ARR: ¥50M(前月比+25%)\n◉ 顧客数: 87社(3ヶ月で3倍)\n◉ NPS: 72(業界平均32)"},
{"title": "チーム", "type": "content",
"body": "CEO: 山田太郎(元Google・起業3社経験)\nCTO: 鈴木花子(元DeepMind・特許5件)\nAdvisor: 田中一郎(業界著名VC)"},
{"title": "資金調達", "type": "ask",
"body": "調達額: ¥500M\n使途: エンジニア採用50% / マーケ30% / 運転資金20%\nマイルストーン: 18ヶ月でARR ¥500Mへ"},
]
for config in slides_config:
slide = prs.slides.add_slide(prs.slide_layouts[6])
is_cover = config["type"] == "cover"
bg = slide.shapes.add_shape(1, 0, 0, prs.slide_width, prs.slide_height)
bg.fill.solid()
bg.fill.fore_color.rgb = DARK if is_cover else GRAY
bg.line.fill.background()
if not is_cover:
bar = slide.shapes.add_shape(1, 0, 0, Inches(0.12), prs.slide_height)
bar.fill.solid(); bar.fill.fore_color.rgb = ORANGE
bar.line.fill.background()
title_tb = slide.shapes.add_textbox(
Inches(0.5), Inches(0.25 if not is_cover else 2.8),
Inches(12), Inches(0.7)
)
tf = title_tb.text_frame
tf.text = config["title"]
run = tf.paragraphs[0].runs[0]
run.font.size = Pt(24 if is_cover else 20)
run.font.bold = True
run.font.color.rgb = WHITE if is_cover else DARK
if is_cover:
tf.paragraphs[0].alignment = PP_ALIGN.CENTER
body_tb = slide.shapes.add_textbox(
Inches(0.5), Inches(1.1 if not is_cover else 3.7),
Inches(12.3), Inches(5.5 if not is_cover else 1.5)
)
btf = body_tb.text_frame
btf.word_wrap = True
btf.text = config["body"]
for para in btf.paragraphs:
for run in para.runs:
run.font.size = Pt(13)
run.font.color.rgb = WHITE if is_cover else RGBColor(0x40,0x40,0x40)
if is_cover:
para.alignment = PP_ALIGN.CENTER
prs.save("ピッチデック.pptx")
print(f"ピッチデック生成完了: {len(slides_config)}スライド")
投資家向けピッチデック7スライドを自動生成。資料作成(1日)がスクリプト実行10秒に。
ステップ2:JSONで数値管理して再生成を高速化
import json
# 最新数値をJSONで管理
config = {
"company": "株式会社〇〇",
"round": "シードラウンド",
"arr": "¥50M",
"arr_growth": "+25%",
"customers": "87社",
"nps": "72",
"raise": "¥500M",
}
with open("pitch_config.json", "w", encoding="utf-8") as f:
json.dump(config, f, ensure_ascii=False, indent=2)
print("設定ファイル保存完了。数値を更新→スクリプト実行で最新デックを自動再生成")
JSONを更新するだけで最新数値を反映したピッチデックを即再生成。投資家ミーティング前の数値更新が2分に。
ステップ3:競合比較スライドを自動生成
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
slide = prs.slides.add_slide(prs.slide_layouts[6])
bg = slide.shapes.add_shape(1, 0, 0, prs.slide_width, prs.slide_height)
bg.fill.solid(); bg.fill.fore_color.rgb = RGBColor(0xF2,0xF2,0xF2)
bg.line.fill.background()
competitors = [
{"name": "競合A", "price": "高", "ease": "低", "ai": "なし", "us": False},
{"name": "競合B", "price": "中", "ease": "中", "ai": "限定", "us": False},
{"name": "自社", "price": "中", "ease": "高", "ai": "フル", "us": True},
]
ORANGE = RGBColor(0xC4,0x3E,0x1C)
DARK = RGBColor(0x1A,0x1A,0x2E)
WHITE = RGBColor(0xFF,0xFF,0xFF)
for i, comp in enumerate(competitors):
x = 1.5 + i * 3.8
color = ORANGE if comp["us"] else RGBColor(0xBF,0xBF,0xBF)
card = slide.shapes.add_shape(1, Inches(x), Inches(1.5), Inches(3.4), Inches(4.5))
card.fill.solid(); card.fill.fore_color.rgb = color if comp["us"] else RGBColor(0xFF,0xFF,0xFF)
card.line.color.rgb = color
tb = slide.shapes.add_textbox(Inches(x+0.1), Inches(1.6), Inches(3.2), Inches(0.5))
tb.text_frame.text = comp["name"]
tb.text_frame.paragraphs[0].runs[0].font.size = Pt(14)
tb.text_frame.paragraphs[0].runs[0].font.bold = True
tb.text_frame.paragraphs[0].runs[0].font.color.rgb = WHITE if comp["us"] else DARK
prs.save("ピッチデック.pptx")
print("競合比較スライド追加完了")
競合比較スライドを自動生成。自社の優位性が視覚的に明確になる。
このシステムが解決する課題
事業計画・資金調達用プレゼンをAIで一瞬で作成。この自動化が特に効果的な場面と、解決できる課題を整理します。
- スタートアップのピッチデッキを1から作るのに何日もかかっている
- 投資家に響くストーリー構成がわからず、何度も作り直している
- 同じ内容のデッキを複数の投資家向けにカスタマイズする手間が大変
- VC・CVC・事業会社など投資家タイプ別の訴求ポイントの違いが把握できていない
実務での活用シナリオ
導入前後の効果比較
白紙の状態からスライドを作り始め、構成の試行錯誤を繰り返しながら1週間以上かけてピッチデッキを作成。デザインにも時間がかかり、内容の磨き込みに集中できなかった。
Claude CodeにYAML形式の事業情報を入力するだけで、ピッチデッキの標準構成(Problem→Solution→Market→Business Model→Team→Ask)に沿ったスライドを自動生成。デザインもテンプレート適用で即完成。
導入のポイントと注意事項
- ピッチデッキのスライド数は10〜15枚が黄金律。Claude Codeに「10枚以内にまとめて」と制約を与えると過不足なく生成される
- 各スライドのビジュアルエレメント(グラフ・数値・図解)も一緒に依頼すると、テキストだけでなく視覚的に説得力のあるデッキになる
- 投資家タイプ別(VCなのか事業会社なのか)にメッセージを変えた複数バージョンを用意すると商談成功率が上がる
- 英語版ピッチデッキが必要な場合はDeepL APIとの連携でそのまま多言語化できる
よくある質問(FAQ)
まとめ
✅ 標準ピッチ構造7スライドを自動生成
✅ JSON更新だけで最新数値を即反映
✅ 競合比較スライドも自動で作成
✅ ピッチデック作成1日→スクリプト実行10秒
どんな現場で使われているか:活用シナリオ
実装で押さえるべき重要ポイント
- 1
ピッチの構成はProblem→Solution→Marketの順を基本に:標準的なピッチ構成(課題→解決策→市場→ビジネスモデル→チーム→財務)をテンプレートに組み込むことで、ロジカルな流れの資料を自動生成できます。
- 2
TAM/SAM/SOMの市場規模グラフを自動計算:入力した市場数値からTAM・SAM・SOMのバブルチャートを自動生成することで、投資家に刺さるビジュアライゼーションを瞬時に作成できます。
- 3
バージョン管理で投資家A用・VC B用を管理:投資家ごとに強調するポイントが変わります。差し込み変数で投資家向け情報を切り替えて複数バージョンを自動生成する仕組みを実装しましょう。
ビジネスインパクト
この記事のまとめ
- ✅ ビジネス情報から投資家向けピッチデッキのドラフトを自動生成できる
- ✅ 市場規模・財務プロジェクションのグラフを自動計算・挿入できる
- ✅ 1週間かかるピッチ資料作成を2〜3日に短縮できる
- ✅ 投資家別にカスタマイズした複数バージョンを一括自動生成できる
関連記事