Claude Codeで会社テンプレートを完全活用するPowerPoint自動生成ワークフロー
この記事について: 2026年1月時点の情報に基づいています。Claude Code CLIでの操作を想定しています。
手軽に始めたい方へ: セットアップ不要で今すぐ試せる方法もあります。Claude Desktop/Web版の資料作成ガイドをご覧ください。精密な制御が不要なら、そちらの方が早いです。
Note: Claude Desktop/Webでのテンプレート機能は有料プラン(Max, Teams, Enterprise)が必要ですが、Claude Code + PPTXスキルは無料で使用できます。
「Claude Desktopでもプレゼンは作れるけど、細かいフォントサイズや配置がズレる...」
エンジニアであれば、より精密な制御が欲しいと思うことがあるでしょう。
Claude Code の公式PPTXスキルを使えば、会社テンプレートのフォント、色、配置、スペーシングを 完全に維持 したまま、テキストだけを差し替えることができます。
この記事では、公式スキルのワークフローを実践的に解説します。
2つのワークフロー: テンプレート活用 vs リッチデザイン
Claude CodeでPowerPointを作成する方法は2つあります。それぞれ得意なことが異なります。
比較表
| 項目 | テンプレート活用 (replace.py) | リッチデザイン (html2pptx) |
|---|---|---|
| テンプレートのロゴ・ヘッダー | ◎ そのまま維持 | ✕ 手動で追加が必要 |
| 書式(フォント・色・配置) | ◎ 完全維持 | △ CSSで再現 |
| カスタム図形・アイコン | ✕ 追加不可 | ◎ 自由に追加 |
| 色付きボックス・カラムレイアウト | ✕ プレースホルダーのみ | ◎ HTMLで自由設計 |
| 視覚的な豊かさ | △ テンプレート依存 | ◎ 高い自由度 |
| ブランド統一性 | ◎ 確実 | △ 手動で担保 |
どちらを選ぶか?
テンプレート活用が向いているケース:
- 会社のブランドガイドラインを厳守する必要がある
- テンプレートに十分なレイアウトパターンがある(図形・ボックス付き)
- 文字中心の資料(報告書、提案書など)
リッチデザイン(html2pptx)が向いているケース:
- 図解、フローチャート、アイコンを多用したい
- テンプレートにないレイアウトを使いたい
- 視覚的にインパクトのある資料を作りたい
⚠️ よくある誤解と注意点
「テンプレートを使えば、テンプレートのデザインがそのまま適用される」は半分正しく、半分間違いです。
テンプレート活用ワークフローで維持されるのは:
- ✅ ヘッダー・フッターのデザイン
- ✅ ロゴの配置
- ✅ カラースキーム
- ✅ フォント設定
- ✅ プレースホルダー内のテキスト書式
維持されない・追加できないのは:
- ❌ テンプレートにない図形やボックス
- ❌ カスタムアイコン
- ❌ 複雑なレイアウト(プレースホルダー外)
つまり、テンプレートのプレースホルダーがシンプル(タイトル+本文のみ)だと、出力もシンプルになります。
重要: テンプレートの質がアウトプットの質を決める
テンプレート活用ワークフローでは、テンプレートに含まれるレイアウト以上のことはできません。
シンプルなテンプレート(タイトル+本文のみ)
→ シンプルな出力しか得られない
リッチなテンプレート(図形・ボックス・アイコン付きレイアウト)
→ リッチな出力が得られる
テンプレートを評価する際は、以下をチェックしてください:
| チェック項目 | 良いテンプレート | 悪いテンプレート |
|---|---|---|
| レイアウト数 | 10種類以上 | 3-5種類 |
| 図形・ボックス | 各レイアウトに含まれる | タイトル+本文のみ |
| カラムレイアウト | 2列、3列、4列など多様 | なし |
| 数字強調・引用 | 専用レイアウトあり | なし |
ハイブリッドアプローチ
両方の良いとこ取りをする方法もあります。
方法1: テンプレート自体を拡張する(推奨)
最も確実な方法です。PowerPointでテンプレートを編集し、図形付きレイアウトを追加します。
- テンプレートを開く
- 「表示」→「スライドマスター」
- 新しいレイアウトを追加(図形・ボックス付き)
- 保存してからreplace.pyワークフローを使用
方法2: html2pptx + ブランディング後処理
html2pptxで自由にデザインした後、テンプレートのヘッダー/ロゴを追加します。
# add_branding.py
from pptx import Presentation
from pptx.util import Inches
from pptx.dml.color import RGBColor
from pptx.enum.shapes import MSO_SHAPE
def add_branding(input_pptx, output_pptx, header_color="181B24", logo_path=None):
"""html2pptxで生成したPPTXにブランディングを追加"""
prs = Presentation(input_pptx)
for slide in prs.slides:
# ヘッダーバーを追加(例: 青い帯)
header = slide.shapes.add_shape(
MSO_SHAPE.RECTANGLE,
Inches(0), Inches(0),
prs.slide_width, Inches(0.8)
)
header.fill.solid()
header.fill.fore_color.rgb = RGBColor.from_string(header_color)
header.line.fill.background()
# ロゴを追加(画像として)
if logo_path:
slide.shapes.add_picture(
logo_path,
prs.slide_width - Inches(1.5), Inches(0.1),
height=Inches(0.6)
)
prs.save(output_pptx)
# 使用例
# add_branding("html2pptx-output.pptx", "branded-output.pptx", logo_path="logo.png")
方法3: スライドマスター適用(PowerPoint手動)
- html2pptxでスライドを生成
- PowerPointで開く
- 「デザイン」→「テーマの参照」でテンプレートを選択
- 各スライドにレイアウトを適用
この方法は手動作業が入りますが、最も柔軟です。
この方法のメリット(テンプレート活用)
| 項目 | Claude Desktop | Claude Code + PPTXスキル |
|---|---|---|
| テンプレート対応 | ◯ | ◎ 完全対応 |
| 書式維持 | △ ズレることあり | ◎ 完全維持 |
| 再現性 | △ | ◎ 同じ入力→同じ出力 |
| バッチ処理 | ✕ | ◎ 複数資料を一括生成可能 |
| バージョン管理 | ✕ | ◎ JSONで管理可能 |
他のAIツールとの比較
| ツール | テンプレート | 書式維持 | プログラマブル | 備考 |
|---|---|---|---|---|
| Claude Code + PPTX | ◎ 直接編集 | ◎ 完全 | ◎ | JSON定義でバッチ処理可能 |
| Claude Desktop (有料) | ◯ 直接編集 | △ | ✕ | GUIで手軽だが精密制御は難しい |
| ChatGPT (有料) | △ 参照のみ | ✕ | ✕ | ファイル参照可能だが書式維持は困難 |
| NotebookLM | △ 参照のみ | ✕ | ✕ | PDF出力のみ。編集可能なPPTX非対応 |
「参照」vs「直接編集」: ChatGPT/NotebookLMはテンプレートを「参考に」できますが、フォント名・色コード・余白を厳密に維持する「直接編集」はできません。
Claudeの役割を理解する
このワークフローを理解する上で最も重要なのは、Claude(AI)とPythonスクリプトの役割分担です。
Claude = 「頭脳」、スクリプト = 「手足」
flowchart TB
subgraph Claude["Claude(AI)の担当"]
C1[テンプレート分析]
C2[template-inventory.md 生成]
C3[outline.md 生成]
C4[replacement-text.json 生成]
C5[サムネイル確認・問題検出]
end
subgraph Scripts["Pythonスクリプトの担当"]
S1[markitdown - テキスト抽出]
S2[thumbnail.py - 画像生成]
S3[rearrange.py - スライド配置]
S4[inventory.py - 書式抽出]
S5[replace.py - テキスト置換]
end
Claude -->|指示| Scripts
なぜこの理解が重要か?
多くの人が「手動作成」と聞くと、自分でファイルを書く必要があると思いがちです。しかし実際は:
| ファイル | 誤解 | 実際 |
|---|---|---|
template-inventory.md |
自分で書く | Claudeが生成 |
outline.md |
自分で書く | Claudeが生成 |
replacement-text.json |
自分で書く | Claudeが生成 |
あなたの役割は、Claudeに「何を作りたいか」を伝えることだけです。
各ステップでの役割
| ステップ | あなた | Claude | スクリプト |
|---|---|---|---|
| 1. 分析 | テンプレートを用意 | サムネイルを視覚分析 | markitdown, thumbnail.py |
| 2. 目録 | - | inventory.mdを生成 | - |
| 3. 設計 | 作りたい内容を伝える | outline.mdを生成 | - |
| 4. 配置 | - | - | rearrange.py |
| 5. 抽出 | - | - | inventory.py |
| 6. 生成 | - | replacement.jsonを生成 | replace.py |
| 7. 確認 | 最終確認 | 問題を検出・修正 | thumbnail.py |
前提条件
必要なもの
- Claude Code CLI(インストール済み)
- Python 3.11+(pipenv推奨)
- 会社のPowerPointテンプレート(.pptx)
スキルのインストール
# マーケットプレイスを追加
claude plugin marketplace add anthropics/skills
# ドキュメントスキルをインストール
claude plugin install document-skills@anthropic-agent-skills
Python依存関係
pip install "markitdown[pptx]" python-pptx defusedxml Pillow
クイックスタート: 実際の使い方
セットアップが完了したら、あとはClaudeに指示するだけです。
手順
- テンプレートを用意: 会社のPowerPointテンプレート(.pptx)を作業ディレクトリに配置
- Claude Codeを起動:
claudeコマンドでCLIを開く - 指示を出す: 以下のように依頼
指示例
template.pptx を使って、[サービス名]の営業資料を作成してください。
【サービス概要】
- [サービスの説明を1-2文で]
- [料金]
- [主な特徴]
【伝えたいこと】
- 課題: [顧客が抱える問題]
- 解決: [サービスが提供する解決策]
- 実績: [数字で示せる成果]
Claudeが自動で実行すること
flowchart LR
A[あなたの指示] --> B[Claude]
B --> C[テンプレート分析]
C --> D[構成設計]
D --> E[スライド配置]
E --> F[テキスト置換]
F --> G[確認・修正]
G --> H[output.pptx]
あなたがやること: テンプレートを用意して、作りたい内容を伝える Claudeがやること: 分析、設計、スクリプト実行、確認、修正まで全て
ワークフロー詳細
以下は、Claudeが内部で実行しているワークフローの詳細です。
通常は読み飛ばしてOK:クイックスタートの方法でうまくいかない場合や、手動で細かく制御したい場合に参照してください。
2つの実行方法
| 方法 | 説明 |
|---|---|
| Claude経由(推奨) | 「〜を作成して」と指示するだけ。Claudeが以下のステップを全て自動実行 |
| 手動実行 | 各コマンドを自分で実行。デバッグやカスタマイズ時に使用 |
以下のStep 1-7では、各ステップで何が行われるかと、手動実行する場合のコマンドを記載しています。
概要
flowchart TD
A[テンプレート.pptx] --> B[テンプレート分析]
B --> C[outline.md作成]
C --> D[rearrange.py]
D --> E[working.pptx]
E --> F[inventory.py]
F --> G[text-inventory.json]
G --> H[replacement-text.json作成]
H --> I[replace.py]
I --> J[output.pptx]
J --> K[thumbnail.py]
K --> L[確認・修正]
ファイルの役割
| ファイル | 役割 | 生成方法 |
|---|---|---|
template.pptx |
会社テンプレート(変更禁止) | 手動で用意 |
template-inventory.md |
テンプレートのスライド分析 | Claude生成 |
outline.md |
資料構成・内容設計 | Claude生成 |
working.pptx |
作業用コピー | rearrange.py |
text-inventory.json |
全テキストと書式情報 | inventory.py |
replacement-text.json |
置換するテキスト定義 | Claude生成 |
output.pptx |
最終成果物 | replace.py |
Step 1: テンプレート分析
このステップで行われること: テンプレートの構造(スライド数、各スライドの用途)を把握します。
Claude経由の場合: 「template.pptxを分析して」と指示するだけ。Claudeがサムネイルを生成・確認し、目録を作成します。
手動実行する場合:
# テキスト内容を抽出
python -m markitdown template.pptx > template-content.md
# サムネイル生成(視覚的に確認)
python ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/pptx/scripts/thumbnail.py \
template.pptx \
template-thumbnails.jpg
テンプレート目録(template-inventory.md)
Claudeが生成する目録の例(手動作成する場合の参考):
# Template Inventory
**Total Slides: 9**
**IMPORTANT: Slides are 0-indexed**
| Index | レイアウト | 用途 |
|-------|-----------|------|
| 0 | Title | 表紙 |
| 1 | Section | セクション区切り |
| 2 | Content | 箇条書き(4ポイント) |
| 3 | Two-Column | 比較、Before/After |
| 4 | Features | 3つの特徴 |
| 5 | Quote | 引用、ミッション |
| 6 | Stats | 数字で見る実績(3つ) |
| 7 | Process | プロセス・ステップ(4つ) |
| 8 | Thank You | クロージング |
Step 2: コンテンツ設計(outline.md)
このステップで行われること: 資料の構成と、使用するテンプレートスライドのマッピングを定義します。
Claude経由の場合: 「〜の営業資料を作成して」と指示すれば、Claudeが自動で構成を設計します。
手動作成する場合の形式:
# 営業資料 - Tech Digest
## Template Mapping
template_mapping = 0,5,2,4,7,6,2,8
## 各スライドの内容
### Slide 0: 表紙 (Template 0)
- タイトル: Tech Digest
- サブタイトル: テック最前線を、毎朝5分で
- 日付: 2026年1月
### Slide 1: ミッション (Template 5 - Quote)
- 引用: 「情報格差をなくし、全員が同じスタートラインに」
- 発言者: Tech Digest
### Slide 2: 課題提起 (Template 2 - Content)
- タイトル: AI時代の情報キャッチアップ、追いついていますか?
- ポイント1: 毎週のように新しいAIモデルがリリース
- ポイント2: 情報収集に毎日1-2時間を消費
- ポイント3: 重要なニュースを見逃すリスク
- ポイント4: 英語情報の壁
### Slide 3: 3つの特徴 (Template 4 - Features)
- タイトル: サービスの3つの特徴
- 特徴1: 毎朝配信 - 平日8時、厳選ニュース
- 特徴2: カスタマイズ - カテゴリ・キーワード設定
- 特徴3: 分析機能 - クリック計測・人気記事
...
Step 3: スライド配置(rearrange.py)
このステップで行われること: テンプレートから必要なスライドを選択・複製・並べ替えて、作業用ファイル(working.pptx)を作成します。
Claude経由の場合: outline.mdのtemplate_mappingに基づいて、Claudeが自動実行します。
手動実行する場合:
python ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/pptx/scripts/rearrange.py \
template.pptx \
working.pptx \
0,5,2,4,7,6,2,8
引数の順序(重要):
rearrange.py <入力テンプレート> <出力ファイル> <インデックス列>
インデックス形式:
- カンマ区切り(
0,5,2,4) - 同じインデックスを複数回指定可能(
0,2,2,8でSlide 2を2回使用) - JSON配列形式(
"[0,5,2,4]")は 無効
Step 4: テキスト・書式抽出(inventory.py)
このステップで行われること: working.pptxの全テキストと書式情報(フォント、色、配置など)をJSONに抽出します。
Claude経由の場合: Claudeが自動実行し、結果を解析して次のステップに使用します。
手動実行する場合:
python ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/pptx/scripts/inventory.py \
working.pptx \
text-inventory.json
出力例
{
"slide-0": {
"shape-0": {
"placeholder_type": "CENTER_TITLE",
"paragraphs": [
{
"text": "プレゼンテーションタイトル",
"alignment": "CENTER",
"font_name": "Arial",
"font_size": 33.0,
"bold": true,
"color": "1B365D",
"line_spacing": 33.0,
"space_after": 12.0
}
]
}
}
}
このJSONには、フォント名、サイズ、色、太字、配置、行間など、すべての書式情報が含まれています。
Step 5: 置換テキスト作成(replacement-text.json)
このステップで行われること: text-inventory.jsonを参考に、新しいテキスト内容を定義したJSONを作成します。
Claude経由の場合: Claudeがtext-inventory.jsonを読み込み、ユーザーが指定した内容に基づいて自動生成します。
手動作成する場合の注意点:
重要: 書式プロパティを必ず含める
text だけでなく、書式プロパティを全て含めないとデザインが崩れます。
{
"slide-0": {
"shape-0": {
"paragraphs": [
{
"text": "Tech Digest",
"alignment": "CENTER",
"font_name": "Arial",
"font_size": 33.0,
"bold": true,
"color": "1B365D",
"line_spacing": 33.0,
"space_after": 12.0
}
]
},
"shape-1": {
"paragraphs": [
{
"text": "テック最前線を、毎朝5分で",
"alignment": "CENTER",
"font_name": "Arial",
"font_size": 18.0,
"color": "5A6B7D"
}
]
}
}
}
書式プロパティ一覧
| プロパティ | 説明 | 例 |
|---|---|---|
text |
テキスト内容 | "サービス名" |
alignment |
配置 | "CENTER", "LEFT" |
font_name |
フォント名 | "Arial" |
font_size |
フォントサイズ | 33.0 |
bold |
太字 | true, false |
color |
文字色(#なし16進数) | "1B365D" |
line_spacing |
行間 | 33.0 |
space_after |
段落後スペース | 12.0 |
bullet |
箇条書き | true |
level |
インデントレベル | 0, 1 |
作成のコツ
- text-inventory.json をコピー して
textのみ変更するのが確実 - 全shapeを含める: 含まれないshapeはクリアされる
- 番号バッジは維持:
"01","1"などはそのまま
Step 6: テキスト置換(replace.py)
このステップで行われること: replacement-text.jsonの内容でworking.pptxのテキストを置換し、output.pptxを生成します。
Claude経由の場合: Claudeが自動実行します。
手動実行する場合:
python ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/pptx/scripts/replace.py \
working.pptx \
replacement-text.json \
output.pptx
オーバーフローエラーの対処
ValueError: Found 3 overflow error(s)
- slide-2/shape-4: overflow worsened by 0.19"
テキストがshapeからはみ出す場合、エラーが発生します。
対処法:
- テキストを短くする
font_sizeを小さくする
{
"text": "長いテキストを短く編集",
"font_size": 12.0
}
Step 7: 確認(thumbnail.py)
このステップで行われること: 生成されたoutput.pptxのサムネイルを作成し、問題がないか確認します。
Claude経由の場合: Claudeがサムネイルを生成・視覚分析し、テキストの切れや重なりがあれば自動で修正を試みます。
手動実行する場合:
python ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/pptx/scripts/thumbnail.py \
output.pptx \
output-thumbnails.jpg
確認ポイント:
- テキストの切れ、重なりがないか
- 配置・余白が適切か
- フォントサイズ・色が正しいか
問題があれば replacement-text.json を修正して Step 6 から再実行。
追加の指示パターン
クイックスタート以外にも、状況に応じた指示方法があります。
パターン1: 特定のステップだけ依頼
text-inventory.json を読み込んで、replacement-text.json を作成してください。
書式プロパティは全て維持し、text のみ以下の内容に置換:
- タイトル: Tech Digest
- サブタイトル: テック最前線を、毎朝5分で
- 課題: 情報過多、時間不足、見逃しリスク、英語の壁
パターン2: 修正を依頼
output.pptx のサムネイルを確認して、問題があれば修正してください。
特に、テキストの切れや重なりがないかチェックしてください。
パターン3: 既存資料のテンプレート適用
既存の資料.pptx の内容を、template.pptx のデザインで作り直してください。
やり直しフロー
| 変更内容 | 再実行ステップ |
|---|---|
| テキスト修正のみ | Step 6 (replace.py) |
| スライド構成変更 | Step 3 (rearrange.py) から |
| テンプレート変更 | Step 1 から |
まとめ
Claude CodeのPPTXスキルを使うことで:
- 書式が完全に維持される: フォント、色、配置、スペーシングが崩れない
- 再現性がある: 同じJSON入力から同じ出力が得られる
- 自動化できる: バッチ処理やCI/CD連携が可能
- バージョン管理できる: JSONファイルをGitで管理可能
最初のセットアップには時間がかかりますが、一度ワークフローを構築すれば、高品質な資料を効率的に量産できます。
参考リンク
公式ドキュメント
- Anthropic Skills リポジトリ - スキルのソースコード
- Agent Skills クイックスタート - API利用ガイド
- Using Skills in Claude - ヘルプセンター
- Skills Introduction - 入門ガイド
ローカルファイル(インストール後)
- 公式SKILL.md:
~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/pptx/SKILL.md - html2pptx.md: テンプレートなしでのHTML→PowerPoint変換
- ooxml.md: Office Open XML直接編集
更新履歴
| 更新日 | 内容 |
|---|---|
| 2026-01-26 | 2つのワークフロー(テンプレート活用 vs リッチデザイン)の比較を追加 |
| 2026-01-11 | Claudeの役割を明確化、実践例を追加、公式リンクを追加 |
| 2026-01-10 | 初版公開 |
ご注意: 本記事は2026年1月時点の情報に基づいています。Claude CodeやPPTXスキルのバージョンアップにより、コマンドや挙動が変更される可能性があります。
