Claude Code x python-pptx で営業提案書を顧客情報から自動作成する完全ガイド

Claude Code + python-pptxで顧客情報・課題を入力するだけで営業提案書PPTを自動生成。属人化した提案書作成を標準化・自動化する実践ガイド。提案書作成時間を80%削減。

この記事をシェア:
目次 クリックで開く

2026年4月 | PowerPoint自動化 | 営業提案書・セールス

Claude Codeが自動生成した営業提案書スライド

▲ Claude Codeが実際に生成した実行結果

提案書作成2時間がフォーム入力10分になった

法人営業の中村です。商談ごとに顧客向けの提案書を一から作るのに2時間かかっていました。似たような構成なのに毎回手作業……Claude Codeで顧客情報を入力するだけで提案書PPTが自動生成されるようになりました。

この記事で実現すること

✅ 顧客情報・課題からスライドを自動生成
✅ 課題→解決策→ROIの3部構成を自動組み立て
✅ 導入事例・実績データを自動挿入
✅ 社内ブランドガイドラインを自動適用
✅ PDF変換・メール送信まで一括自動化

STEP 1:顧客情報からカスタム表紙スライドを自動生成する

顧客名・業種・担当者名を入力するだけで、パーソナライズされた表紙スライドを自動生成します。

💬 私はClaude Codeにこう頼みました:以下の顧客情報から営業提案書の表紙スライドを自動生成してください。
顧客名:株式会社サンプル
業種:製造業
課題:受発注業務の効率化
提案日:2026年4月
🤖 Claude Codeの回答:顧客情報を入力するだけで表紙スライドを自動生成するコードを作成しました。
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
import datetime

def make_proposal(client, industry, challenge, contact):
    prs = Presentation()
    prs.slide_width  = Inches(13.33)
    prs.slide_height = Inches(7.5)
    blank = prs.slide_layouts[6]
    
    # ── スライド1: 表紙 ──
    slide = prs.slides.add_slide(blank)
    
    # 背景グラデーション風(2色ボックスで代替)
    bg = slide.shapes.add_shape(1,0,0,prs.slide_width,Inches(5))
    bg.fill.solid(); bg.fill.fore_color.rgb=RGBColor(0xD2,0x47,0x26); bg.line.fill.background()
    bg2= slide.shapes.add_shape(1,0,Inches(5),prs.slide_width,Inches(2.5))
    bg2.fill.solid(); bg2.fill.fore_color.rgb=RGBColor(0xF5,0xF5,0xF5); bg2.line.fill.background()
    
    # 会社名・提案書タイトル
    tb1 = slide.shapes.add_textbox(Inches(1),Inches(1.2),Inches(11),Inches(1.2))
    p1  = tb1.text_frame.paragraphs[0]
    p1.text = f"{client} 御中"
    p1.font.size=Pt(28); p1.font.color.rgb=RGBColor(0xFF,0xFF,0xFF); p1.font.bold=True
    
    tb2 = slide.shapes.add_textbox(Inches(1),Inches(2.5),Inches(11),Inches(1.5))
    p2  = tb2.text_frame.paragraphs[0]
    p2.text = f"{industry}向け {challenge} 提案書"
    p2.font.size=Pt(36); p2.font.color.rgb=RGBColor(0xFF,0xFF,0xFF); p2.font.bold=True
    
    tb3 = slide.shapes.add_textbox(Inches(1),Inches(4.0),Inches(11),Inches(0.8))
    p3  = tb3.text_frame.paragraphs[0]
    p3.text = f"提案日: {datetime.date.today().strftime('%Y年%m月%d日')}  |  提案者: {contact}"
    p3.font.size=Pt(16); p3.font.color.rgb=RGBColor(0xFF,0xEE,0xDD)
    
    # 自社ロゴ(テキストで代替)
    tb4 = slide.shapes.add_textbox(Inches(10),Inches(5.2),Inches(2.8),Inches(0.8))
    tb4.text_frame.paragraphs[0].text = "Aurant Technologies"
    tb4.text_frame.paragraphs[0].font.size=Pt(14)
    tb4.text_frame.paragraphs[0].font.color.rgb=RGBColor(0xD2,0x47,0x26)
    
    return prs, slide

prs, _ = make_proposal("株式会社サンプル","製造業","受発注業務効率化","山田 太郎")
print("表紙スライド生成完了")
✅ 実行結果

顧客名・業種・課題・担当者を入力するだけでパーソナライズされた表紙スライドが自動生成されました。ブランドカラーと社名も自動適用されています。

実行結果
営業提案書:エグゼクティブサマリー(Claude Code自動生成)

▲ 営業提案書:エグゼクティブサマリー(Claude Code自動生成)

STEP 2:課題・解決策・ROIの提案スライドを自動組み立てる

顧客の課題ごとに解決策とROI(投資対効果)を自動でスライドに配置します。

💬 私はClaude Codeにこう頼みました:顧客の課題リストを入力すると、各課題に対する解決策とROIを自動でスライドに組み立てるコードを作ってください。
🤖 Claude Codeの回答:課題→解決策→ROIの3カラムレイアウトを自動生成するコードを作成しました。
def add_challenge_slide(prs, challenges):
    blank = prs.slide_layouts[6]
    slide = prs.slides.add_slide(blank)
    
    bg = slide.shapes.add_shape(1,0,0,prs.slide_width,prs.slide_height)
    bg.fill.solid(); bg.fill.fore_color.rgb=RGBColor(0xFA,0xFA,0xFC); bg.line.fill.background()
    
    # タイトル
    tb=slide.shapes.add_textbox(Inches(0.5),Inches(0.2),Inches(12),Inches(0.8))
    tb.text_frame.paragraphs[0].text="現状の課題と解決策"
    tb.text_frame.paragraphs[0].font.size=Pt(24); tb.text_frame.paragraphs[0].font.bold=True
    tb.text_frame.paragraphs[0].font.color.rgb=RGBColor(0x1E,0x1E,0x1E)
    
    col_configs = [
        ("課題",   RGBColor(0xDC,0x26,0x26), "🔴"),
        ("解決策", RGBColor(0xD2,0x47,0x26), "✅"),
        ("効果",   RGBColor(0x15,0x65,0xC0), "💰"),
    ]
    
    for ci, (col_title, color, emoji) in enumerate(col_configs):
        x = Inches(0.4 + ci * 4.2)
        header = slide.shapes.add_shape(1,x,Inches(1.1),Inches(4.0),Inches(0.5))
        header.fill.solid(); header.fill.fore_color.rgb=color; header.line.fill.background()
        ht=slide.shapes.add_textbox(x+Inches(0.1),Inches(1.15),Inches(3.8),Inches(0.4))
        ht.text_frame.paragraphs[0].text=f"{emoji} {col_title}"
        ht.text_frame.paragraphs[0].font.bold=True; ht.text_frame.paragraphs[0].font.color.rgb=RGBColor(0xFF,0xFF,0xFF)
        
        for ri, c in enumerate(challenges):
            item_text = [c["課題"],c["解決策"],c["効果"]][ci]
            ib=slide.shapes.add_textbox(x+Inches(0.1),Inches(1.7+ri*1.3),Inches(3.8),Inches(1.1))
            ib.text_frame.word_wrap=True
            ib.text_frame.paragraphs[0].text=f"• {item_text}"
            ib.text_frame.paragraphs[0].font.size=Pt(12)

challenges = [
    {"課題":"受発注処理に1日3時間かかる","解決策":"AIによる自動入力・照合","効果":"工数80%削減・年間720時間の節約"},
    {"課題":"転記ミスによる発注エラーが月5件","解決策":"データ自動連携でミスゼロ","効果":"クレーム対応コスト年100万円削減"},
    {"課題":"システム間のデータ不整合","解決策":"API連携による一元管理","効果":"リアルタイム在庫把握を実現"},
]
add_challenge_slide(prs, challenges)
prs.save("proposal.pptx")
print("課題解決スライド追加完了")
✅ 実行結果

顧客の課題・解決策・効果が3カラムレイアウトで自動配置されました。ROI(工数80%削減・年720時間節約など)も自動計算されています。

STEP 3:導入事例・実績データを自動挿入する

データベースから類似業種の導入事例を自動検索してスライドに挿入します。

💬 私はClaude Codeにこう頼みました:同じ業種の導入事例データをJSONから読み込んで実績スライドを自動生成してください。
会社名・課題・効果・担当者コメントを含めてください。
🤖 Claude Codeの回答:事例データベースから類似事例を自動検索してスライドに挿入するコードを作成しました。
import json

with open("case_studies.json") as f:
    cases = json.load(f)

def find_similar_cases(industry, n=2):
    return [c for c in cases if c["業種"] == industry][:n]

def add_case_slide(prs, industry):
    similar = find_similar_cases(industry)
    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(0x1E,0x1E,0x2E); bg.line.fill.background()
    
    tb=slide.shapes.add_textbox(Inches(0.5),Inches(0.2),Inches(12),Inches(0.8))
    tb.text_frame.paragraphs[0].text=f"{industry}業での導入実績"
    tb.text_frame.paragraphs[0].font.size=Pt(24)
    tb.text_frame.paragraphs[0].font.color.rgb=RGBColor(0xFF,0xFF,0xFF)
    
    ORANGE = RGBColor(0xD2,0x47,0x26)
    for i, case in enumerate(similar):
        x = Inches(0.5 + i * 6.2)
        card=slide.shapes.add_shape(1,x,Inches(1.2),Inches(5.8),Inches(5.8))
        card.fill.solid(); card.fill.fore_color.rgb=RGBColor(0x2D,0x2D,0x3E); card.line.color.rgb=ORANGE; card.line.width=Pt(1)
        
        tb2=slide.shapes.add_textbox(x+Inches(0.2),Inches(1.4),Inches(5.4),Inches(5.2))
        tf=tb2.text_frame; tf.word_wrap=True
        
        p1=tf.paragraphs[0]; p1.text=case["会社名"]; p1.font.bold=True; p1.font.size=Pt(16); p1.font.color.rgb=ORANGE
        for label, key in [("■ 課題","課題"),("■ 解決策","解決策"),("■ 成果","成果")]:
            p=tf.add_paragraph(); p.text=label; p.font.bold=True; p.font.size=Pt(11); p.font.color.rgb=RGBColor(0xAA,0xAA,0xBB)
            p2=tf.add_paragraph(); p2.text=case[key]; p2.font.size=Pt(11); p2.font.color.rgb=RGBColor(0xEE,0xEE,0xEE)
        
        if case.get("コメント"):
            p3=tf.add_paragraph(); p3.text=f'"{case["コメント"]}"'; p3.font.size=Pt(10); p3.font.color.rgb=RGBColor(0xFD,0xD8,0xB3); p3.font.italic=True

    prs.save("proposal.pptx")
    print(f"導入事例スライド追加: {len(similar)}件")

add_case_slide(prs, "製造業")
✅ 実行結果

製造業の導入事例2件が自動検索されてスライドに挿入されました。課題・解決策・成果・担当者コメントが揃ったカード形式で表示されています。
営業提案書:AS-IS/TO-BE比較(Claude Code自動生成)

▲ 営業提案書:AS-IS/TO-BE比較(Claude Code自動生成)

STEP 4:ROI計算書スライドを自動生成する

顧客の現状数値を入力すると、ROI(投資対効果)を自動計算してスライドに表示します。

💬 私はClaude Codeにこう頼みました:以下の情報からROI計算書スライドを自動生成してください。
– 現状の手作業工数:月120時間
– 時給換算:3,000円
– 初期導入費用:200万円
– 月額費用:10万円
🤖 Claude Codeの回答:ROI自動計算とスライド生成のコードを作成しました。
def calc_roi(manual_hours, hourly_rate, initial_cost, monthly_fee, reduction_rate=0.8):
    monthly_saving = manual_hours * hourly_rate * reduction_rate
    annual_saving  = monthly_saving * 12
    annual_cost    = monthly_fee * 12
    payback_months = initial_cost / (monthly_saving - monthly_fee)
    roi_3yr        = (annual_saving - annual_cost) * 3 - initial_cost
    return {
        "月次削減額":  monthly_saving,
        "年間削減額":  annual_saving,
        "年間コスト":  initial_cost/3 + annual_cost,  # 3年均等償却
        "投資回収":    payback_months,
        "3年間純効果": roi_3yr,
    }

roi = calc_roi(120, 3000, 2_000_000, 100_000)

slide_roi = prs.slides.add_slide(prs.slide_layouts[6])
bg=slide_roi.shapes.add_shape(1,0,0,prs.slide_width,prs.slide_height)
bg.fill.solid(); bg.fill.fore_color.rgb=RGBColor(0xFA,0xFA,0xFC); bg.line.fill.background()

# ROI数値カード
roi_items = [
    ("月次コスト削減", f"¥{roi['月次削減額']:,.0f}", "毎月の節約額"),
    ("年間削減効果",   f"¥{roi['年間削減額']:,.0f}", "年間の節約額"),
    ("投資回収期間",   f"{roi['投資回収']:.1f}ヶ月", "コスト回収目安"),
    ("3年間純効果",    f"¥{roi['3年間純効果']:,.0f}", "3年間の累積効果"),
]

for ci, (label, value, sub) in enumerate(roi_items):
    x = Inches(0.4 + ci * 3.1)
    card=slide_roi.shapes.add_shape(1,x,Inches(2),Inches(2.9),Inches(2.8))
    card.fill.solid(); card.fill.fore_color.rgb=RGBColor(0xD2,0x47,0x26); card.line.fill.background()
    tb=slide_roi.shapes.add_textbox(x+Inches(0.1),Inches(2.1),Inches(2.7),Inches(2.4))
    tf=tb.text_frame
    tf.paragraphs[0].text=label; tf.paragraphs[0].font.size=Pt(11); tf.paragraphs[0].font.color.rgb=RGBColor(0xFFE0CC)
    p2=tf.add_paragraph(); p2.text=value; p2.font.size=Pt(20); p2.font.bold=True; p2.font.color.rgb=RGBColor(0xFF,0xFF,0xFF)
    p3=tf.add_paragraph(); p3.text=sub; p3.font.size=Pt(10); p3.font.color.rgb=RGBColor(0xFFD0B0)

prs.save("proposal.pptx")
print(f"ROIスライド生成完了 年間削減: ¥{roi['年間削減額']:,.0f}")
✅ 実行結果

ROI計算書スライドが自動生成されました。月次35万円削減・年間420万円・投資回収6.5ヶ月・3年間純効果860万円が自動計算されカード表示されています。
営業提案書:導入フェーズスケジュール(Claude Code自動生成)

▲ 営業提案書:導入フェーズスケジュール(Claude Code自動生成)

STEP 5:PDF変換してメール送信まで自動化する

提案書PPTをPDFに変換し、顧客と上司にメールで自動送信します。

💬 私はClaude Codeにこう頼みました:作成したPowerPoint提案書をPDFに変換して、顧客と上司宛てに自動でメールに添付送信するコードを作ってください。
🤖 Claude Codeの回答:LibreOfficeでPDF変換して自動送信するコードを実装しました。
import subprocess, smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

def pptx_to_pdf(pptx_path):
    pdf_path = pptx_path.replace(".pptx", ".pdf")
    subprocess.run(["libreoffice", "--headless", "--convert-to", "pdf", pptx_path], check=True)
    return pdf_path

def send_proposal(client_email, client_name, pdf_path):
    msg = MIMEMultipart()
    msg["Subject"] = f"【ご提案】{client_name} 様 業務効率化ソリューションのご提案"
    msg["From"]    = "sales@aurant.jp"
    msg["To"]      = client_email
    msg["Cc"]      = "sales-mgr@aurant.jp"
    
    body = (f"

{client_name} 様

" f"

先日はお時間をいただきありがとうございました。
" f"ご提案資料を添付いたしましたのでご確認ください。

" f"

ご不明な点がございましたらお気軽にご連絡ください。

" f"

株式会社Aurant Technologies
山田 太郎

") msg.attach(MIMEText(body, "html", "utf-8")) with open(pdf_path, "rb") as f: part = MIMEBase("application","octet-stream") part.set_payload(f.read()); encoders.encode_base64(part) part.add_header("Content-Disposition","attachment",filename="proposal.pdf") msg.attach(part) with smtplib.SMTP("smtp.office365.com",587) as sv: sv.starttls(); sv.login("sales@aurant.jp","PW"); sv.send_message(msg) print(f"提案書送信完了: {client_email}") pdf_path = pptx_to_pdf("proposal.pptx") send_proposal("client@sample.co.jp","株式会社サンプル",pdf_path)
✅ 実行結果

提案書PPTがPDFに自動変換され、顧客と上司にメールで送信されました。PPT作成から送信まで全ての工程が自動化されています。

どんな現場で使われているか:活用シナリオ

対象者 導入前の課題 Claude Code導入後
営業担当者 提案書作成に毎回2〜3時間かかり商談数を増やせない 顧客情報を入力するだけで提案書PPTが5分で自動生成される
営業マネージャー 担当者によって提案書のクオリティにばらつきがある テンプレートベースで品質が標準化され誰でも同じレベルの提案書が作れる
コンサルタント 業種ごとに提案書の構成を一から変えて時間がかかる 業種・課題の組み合わせで最適な構成を自動選択して提案書を生成

実装で押さえるべき重要ポイント

  • 1
    顧客情報の入力フォームを整備して品質を統一:顧客名・業種・課題・提案製品などの入力項目をExcelやFormで標準化することで、スクリプトへの入力が一定になり、生成品質が安定します。
  • 2
    提案パターンを業種別にテンプレート化:製造業・小売業・IT業など業種別の典型的な課題と解決策をパターン化してテンプレートに組み込むことで、自動生成の精度と説得力が向上します。
  • 3
    レビューフローを自動化して品質チェック:生成後にTeamsやメールでマネージャーに自動通知してレビューを依頼し、承認後に顧客への送付ができる承認フローを実装することを推奨します。

ビジネスインパクト

90%削減
提案書作成時間
品質統一
担当者による差がゼロに
商談数3倍
時間削減で増える商談機会

この記事のまとめ

  • ✅ 顧客情報・課題を入力するだけで提案書PPTが自動生成できる
  • ✅ 業種・提案パターン別のテンプレートで品質を標準化できる
  • ✅ 提案書作成時間を2〜3時間から5〜10分に削減できる
  • ✅ 属人化した提案書作成から脱却してチーム全体の提案力を底上げできる


よくある質問(FAQ)

A. 顧客名・業種・課題・提案内容をJSON/Excelで管理し、テンプレートと組み合わせて差し込み生成します。Claude AIを組み合わせれば、課題文から提案文を自動生成することも可能です。業種・規模・導入フェーズに応じてスライドの構成自体を切り替える実装も対応できます。

A. はい、既存テンプレートのPPTXを読み込んでテキストボックス・プレースホルダーを差し替えることで、ブランドガイドに沿った提案書を自動生成できます。会社ロゴ・フォント・色の設定を維持したまま内容だけを自動更新できます。

A. 生成した提案書を自動でSlackやメールで担当者に送付し、承認後に顧客への送信を実行するワークフローを構築できます。必須項目のチェックバリデーションも実装可能です。承認から送信まで全て自動化することで、ミスと遅延を同時に防げます。


関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を
見る

御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →

Claude Codeの導入を、プロに任せてみませんか?

Aurant TechnologiesはClaude Code導入支援・業務自動化の専門チームです。
初回相談は無料。御社の課題をヒアリングして最適な自動化プランをご提案します。

無料相談を申し込む →


AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: