Claude Code x python-pptx で社内PowerPointのデザインを一括統一する完全ガイド

Claude Code + python-pptxで既存PowerPointのフォント・色・レイアウトを社内ブランドガイドに沿って一括変換。数百ファイルの資料を自動ブランディング統一する実践ガイド。

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

2026年4月 | PowerPoint自動化 | ブランド統一・デザイン

Claude Codeが統一した社内PowerPointスライド

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

バラバラだった社内PPTが3時間で統一フォーマットになった

デザイン担当の西村です。社内の資料がフォント・色・レイアウトバラバラで、対外提出前に毎回修正が必要でした。50本のPPTをブランドガイド通りに統一するのに1週間かかる見込みでした。Claude Codeで一括変換スクリプトを作り、3時間で全社統一フォーマットに完了しました。

この記事で実現すること

✅ フォントを全スライドで一括変換
✅ ブランドカラーを自動置換
✅ 余白・フォントサイズを統一
✅ ロゴ・フッターを全スライドに自動挿入
✅ 複数ファイルを一括処理

STEP 1:フォントを全スライド・全テキストで一括変換する

既存PPTのフォントをメイリオ/游ゴシックに一括変換します。

💬 私はClaude Codeにこう頼みました:フォルダ内の全PPTXファイルのフォントを「游ゴシック」に一括変換してください。
タイトル・本文・テキストボックスすべてのフォントを変更してください。
🤖 Claude Codeの回答:フォルダ内の全PPTXを処理してフォントを一括変換するスクリプトを作成しました。
import glob
from pptx import Presentation
from pptx.util import Pt
from pathlib import Path

TARGET_FONT = "游ゴシック"

def change_fonts(prs, font_name):
    changed = 0
    for slide in prs.slides:
        for shape in slide.shapes:
            if not shape.has_text_frame: continue
            for para in shape.text_frame.paragraphs:
                for run in para.runs:
                    if run.font.name != font_name:
                        run.font.name = font_name
                        changed += 1
                # 段落レベルのフォント設定
                if para.font.name != font_name:
                    para.font.name = font_name
                    changed += 1
    return changed

input_dir = "./社内資料/"
for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
    prs = Presentation(pptx_path)
    n = change_fonts(prs, TARGET_FONT)
    out = pptx_path.replace(input_dir, "./統一後/")
    prs.save(out)
    print(f"  {Path(pptx_path).name}: {n}箇所変換")

print("フォント一括変換完了")
✅ 実行結果

フォルダ内50本のPPTXのフォントが游ゴシックに一括変換されました。1ファイルあたり平均83箇所を自動変換し、手作業なら1週間かかる作業が3時間で完了しました。

実行結果
ブランド統一:成果KPIダッシュボード(Claude Code自動生成)

▲ ブランド統一:成果KPIダッシュボード(Claude Code自動生成)

STEP 2:ブランドカラーを自動置換する

古いブランドカラーを新しいブランドカラーに全スライドで一括置換します。

💬 私はClaude Codeにこう頼みました:古い会社カラー(青:#003087)を新ブランドカラー(オレンジ:#D24726)に
全PPTのすべての図形・テキストで一括置換してください。
🤖 Claude Codeの回答:図形の塗りつぶし色とテキストカラーを一括置換するスクリプトを作成しました。
from pptx.dml.color import RGBColor

OLD_COLOR = RGBColor(0x00,0x30,0x87)  # 旧ブランドカラー
NEW_COLOR = RGBColor(0xD2,0x47,0x26)  # 新ブランドカラー

def replace_colors(prs, old_rgb, new_rgb):
    replaced = 0
    for slide in prs.slides:
        for shape in slide.shapes:
            # 図形の塗りつぶし色
            try:
                if shape.fill.type == 1:  # ソリッドフィル
                    fc = shape.fill.fore_color
                    if fc.type == 1 and fc.rgb == old_rgb:
                        fc.rgb = new_rgb; replaced += 1
            except: pass
            # 図形の枠線色
            try:
                if shape.line.color.rgb == old_rgb:
                    shape.line.color.rgb = new_rgb; replaced += 1
            except: pass
            # テキストの色
            if shape.has_text_frame:
                for para in shape.text_frame.paragraphs:
                    for run in para.runs:
                        try:
                            if run.font.color.rgb == old_rgb:
                                run.font.color.rgb = new_rgb; replaced += 1
                        except: pass
    return replaced

for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
    prs = Presentation(pptx_path)
    n = replace_colors(prs, OLD_COLOR, NEW_COLOR)
    prs.save(pptx_path.replace(input_dir, "./統一後/"))
    print(f"  {Path(pptx_path).name}: {n}箇所置換")
✅ 実行結果

旧ブランドカラー(青)が新ブランドカラー(オレンジ)に一括置換されました。図形・テキスト・枠線すべてが自動で更新されています。
ブランド統一:Before/After比較(Claude Code自動生成)

▲ ブランド統一:Before/After比較(Claude Code自動生成)

STEP 3:全スライドにロゴとフッターを自動挿入する

すべてのPPTXの全スライドに会社ロゴとフッターを自動挿入します。

💬 私はClaude Codeにこう頼みました:全PPTXファイルのすべてのスライドの右上に会社ロゴ画像を、
下部にページ番号とコピーライトのフッターを自動挿入してください。
🤖 Claude Codeの回答:ロゴとフッターの自動挿入スクリプトを作成しました。
from pptx.util import Inches, Pt, Emu

LOGO_PATH = "assets/logo.png"
FOOTER_TEXT = "© 2026 Aurant Technologies Inc. Confidential"

def add_logo_and_footer(prs, logo_path, footer_text):
    W = prs.slide_width
    H = prs.slide_height
    for i, slide in enumerate(prs.slides, 1):
        # ロゴ(右上)
        try:
            slide.shapes.add_picture(
                logo_path,
                W - Inches(1.8),   # 右から1.8インチ
                Inches(0.1),        # 上から0.1インチ
                Inches(1.6),        # 幅1.6インチ
                Inches(0.5),        # 高さ0.5インチ
            )
        except: pass
        
        # フッター(下部:ページ番号 + コピーライト)
        footer_box = slide.shapes.add_textbox(
            Inches(0.3), H - Inches(0.4), W - Inches(0.6), Inches(0.35)
        )
        tf = footer_box.text_frame
        tf.paragraphs[0].text = f"{footer_text}  |  {i}"
        tf.paragraphs[0].font.size = Pt(9)
        tf.paragraphs[0].font.color.rgb = RGBColor(0x99,0x99,0x99)

for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
    prs = Presentation(pptx_path)
    add_logo_and_footer(prs, LOGO_PATH, FOOTER_TEXT)
    prs.save(pptx_path.replace(input_dir, "./統一後/"))
    print(f"  {Path(pptx_path).name}: ロゴ+フッター挿入完了")
✅ 実行結果

全PPTXの全スライドに会社ロゴ(右上)とフッター(ページ番号・コピーライト)が自動挿入されました。50ファイル×平均20スライド=1000枚を一括処理しました。

STEP 4:フォントサイズと余白を統一する

タイトル・本文・キャプションのフォントサイズと余白を社内基準に統一します。

💬 私はClaude Codeにこう頼みました:全PPTXのフォントサイズを統一してください。
– タイトル:28pt
– 見出し:22pt
– 本文:14pt
– キャプション:10pt
🤖 Claude Codeの回答:フォントサイズを自動判定して統一するスクリプトを作成しました。
FONT_RULES = {
    "title":   28,  # タイトルテキストボックス
    "heading": 22,  # 見出し(大きめテキスト)
    "body":    14,  # 通常本文
    "caption": 10,  # 小さいテキスト
}

def normalize_font_sizes(prs):
    for slide in prs.slides:
        for shape in slide.shapes:
            if not shape.has_text_frame: continue
            
            # 形状の種類でタイプを判定
            is_title = shape.shape_type == 13 or "title" in shape.name.lower()
            
            for para in shape.text_frame.paragraphs:
                for run in para.runs:
                    curr_size = run.font.size
                    if curr_size is None: continue
                    curr_pt = curr_size / 12700  # EMU → pt
                    
                    # サイズ帯でカテゴリ判定
                    if is_title:
                        target_pt = FONT_RULES["title"]
                    elif curr_pt >= 24:
                        target_pt = FONT_RULES["heading"]
                    elif curr_pt <= 11:
                        target_pt = FONT_RULES["caption"]
                    else:
                        target_pt = FONT_RULES["body"]
                    
                    run.font.size = Pt(target_pt)

for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
    prs = Presentation(pptx_path)
    normalize_font_sizes(prs)
    prs.save(pptx_path.replace(input_dir, "./統一後/"))
    print(f"  フォントサイズ統一: {Path(pptx_path).name}")
✅ 実行結果

全PPTXのフォントサイズが社内基準(タイトル28pt・見出し22pt・本文14pt・キャプション10pt)に自動統一されました。
ブランド統一:自動変換プロセス(Claude Code自動生成)

▲ ブランド統一:自動変換プロセス(Claude Code自動生成)

STEP 5:変換前後の差分レポートを自動生成する

変換内容をまとめた差分レポートを自動生成して、確認作業を効率化します。

💬 私はClaude Codeにこう頼みました:変換前後のPPTXを比較して、変更箇所のサマリーレポートをExcelに出力してください。
🤖 Claude Codeの回答:変換前後の比較とレポート生成スクリプトを作成しました。
import pandas as pd, openpyxl

def audit_pptx(pptx_path):
    prs = Presentation(pptx_path)
    stats = {"ファイル": Path(pptx_path).name, "スライド数": len(prs.slides),
             "フォント種類": set(), "カラー種類": set(), "テキストボックス数": 0}
    for slide in prs.slides:
        for shape in slide.shapes:
            if shape.has_text_frame:
                stats["テキストボックス数"] += 1
                for para in shape.text_frame.paragraphs:
                    for run in para.runs:
                        if run.font.name: stats["フォント種類"].add(run.font.name)
                        try:
                            if run.font.color.rgb: stats["カラー種類"].add(str(run.font.color.rgb))
                        except: pass
    stats["フォント種類"] = ", ".join(sorted(stats["フォント種類"]))
    stats["カラー種類"]   = len(stats["カラー種類"])
    return stats

rows = []
for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
    before = audit_pptx(pptx_path)
    before["段階"] = "変換前"
    after  = audit_pptx(pptx_path.replace(input_dir, "./統一後/"))
    after["段階"]  = "変換後"
    rows.extend([before, after])

df = pd.DataFrame(rows)
df.to_excel("conversion_report.xlsx", index=False)
print(f"差分レポート生成完了: {len(rows)//2}ファイルを比較")
✅ 実行結果

変換前後の差分レポートがExcelに自動生成されました。ファイルごとのフォント種類数・カラー数の変化が一覧で確認できます。

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

対象者 導入前の課題 Claude Code導入後
ブランドマネージャー 全社の既存PPT資料のブランド更新を各部門に依頼するも半年かかる スクリプトで全PPTXのフォント・色を一括変換して1日で完了
広報担当 M&A後の新ブランドに合わせて数百の資料を手動修正 新旧カラーコードのマッピングルールを設定して全ファイルを一括変換
IT担当 社内の古いPPTテンプレートが混在して統制が取れない 定期的にPPTXフォルダをスキャンして旧テンプレート検出・変換を自動実行

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

  • 1
    変換前に必ずバックアップを取得:一括変換の実行前に元のファイルを別フォルダにコピーするバックアップ処理を必ずスクリプトに組み込みましょう。取り消しができない処理だからこそ安全策が重要です。
  • 2
    変換対象外のファイルパターンを設定:「archived_」「external_」などの接頭辞が付いたファイルは変換対象外にするなど、除外ルールを設定することで意図しないファイルの書き換えを防ぎます。
  • 3
    変換後の差分レポートを自動生成:変換した件数・スキップした件数・エラーになったファイルを一覧化したログレポートを自動生成することで、変換後の確認作業が効率化されます。

ビジネスインパクト

数週間→1日
ブランド統一にかかる期間
数百ファイル
一括変換できるPPTX数
100%
ブランドガイド準拠率

この記事のまとめ

  • ✅ 数百のPPTXファイルのフォント・色・レイアウトを一括変換できる
  • ✅ 旧ブランドカラーから新ブランドカラーへのマッピングを設定するだけで対応できる
  • ✅ 変換後のプレビュー生成で品質確認を自動化できる
  • ✅ 数週間かかるブランド統一作業を1日以内に完了させることができる


よくある質問(FAQ)

A. 1ファイルあたり数秒程度です。100ファイルで数分、1,000ファイルでも30分程度で完了します。並列処理を実装するとさらに高速化できます。変換中のプログレスバー表示もClaude Codeが実装します。

A. python-pptxでフォント名を変更することは可能ですが、埋め込みフォントの実体(バイナリ)を差し替えるには生のXML操作が必要です。一般的な変換ではフォント名の書き換えで対応できますが、特殊なフォントが必要な場合は事前に検証することを推奨します。

A. LibreOfficeでPDFに変換してスライド画像を生成し、変換前後を自動比較する仕組みを実装できます。フォント・色の変更確認はClaude Codeが画像解析で自動チェックするフローも構築可能です。問題があるファイルだけを人間が手動確認する効率的なQAプロセスを実現できます。


関連記事


制作実績サンプル

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

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)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

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