mcpField
P
pptx

pptx

github.com/autumnsgroveドキュメント3748 回インストール53 週間前に更新
リポジトリ

pptx について

pptxは、Pythonのpython-pptxライブラリでPowerPointの作成、編集、自動化を行うスキルです。スライドの内容や書式、テンプレート、データに基づく生成に対応します。

主な機能

  1. 01プレゼンテーションの作成と設定
  2. 02スライドの追加、複製、並べ替え
  3. 03テキスト、グラフ、画像、表の挿入
  4. 04テーマ、色、フォントの設定
  5. 05既存ファイルの編集とテンプレート適用
  6. 06データからのスライド一括生成

活用シーン

  1. 01業務データからのプレゼン作成
  2. 02レポート用スライドの一括作成
  3. 03テンプレートを使ったブランド資料の生成
  4. 04既存のPowerPointファイルの更新

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/autumnsgrove/claudeskills --skill pptx

インストール後、Claude Code で/pptxを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
examples/
bulk-generation.md
business-presentation.md
chart-examples.md
editing-presentations.md
image-handling.md
table-examples.md
references/
advanced-techniques.md
design-best-practices.md
library-setup.md
templates-and-themes.md
troubleshooting.md
scripts/
pptx_helper.py

詳細

PowerPoint(PPTX)スキル

概要

このスキルでは、Python の python-pptx ライブラリを使用して、PowerPoint プレゼンテーションの作成、編集、自動化を幅広く行えます。レイアウト、テーマ、コンテンツ、グラフ、視覚化を自在に制御しながら、プロフェッショナルなプレゼンテーションをプログラムで作成できます。

主な機能

  • プレゼンテーションの作成:新規プレゼンテーション、テンプレート、メタデータ、ページ設定
  • スライド管理:定義済みのレイアウトを使ったスライドの追加、複製、削除、並べ替え
  • コンテンツの種類:テキスト、図形、画像、表、グラフ、SmartArt、ハイパーリンク
  • デザインと書式設定:テーマ、配色、フォント、塗りつぶし、枠線、効果
  • 高度な機能:画面切り替え、アニメーション、埋め込みオブジェクト、動画/音声、コメント

インストール

必要なライブラリをインストールします。

pip install python-pptx
# or with uv
uv pip install python-pptx

基本的なインポート:

from pptx import Presentation
from pptx.util import Inches, Pt, Cm
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE

ライブラリの完全なセットアップと関連パッケージ(Pillow、pandas、matplotlib)については、references/library-setup.md を参照してください。

主なワークフロー

ワークフロー 1:ビジネスプレゼンテーションの作成

目標: タイトルスライド、コンテンツスライド、結論を含むプロフェッショナルなプレゼンテーションを作成します。

手順:

  1. プレゼンテーションを初期化する

    • 新しいプレゼンテーションオブジェクトを作成する
    • スライドのサイズを設定する(標準の 16:9 または 4:3)
    • メタデータ(タイトル、作成者、件名、キーワード)を設定する
  2. タイトルスライドを追加する

    • タイトルスライドのレイアウトを使用する(通常は prs.slide_layouts[0])
    • タイトルとサブタイトルのテキストを設定する
    • 書式を適用する(フォントサイズ、色、太字)
  3. コンテンツスライドを追加する

    • 適切なレイアウト(箇条書き、2 列、タイトルのみ、空白)を使用する
    • プレースホルダーに入力するか、テキストボックスを追加する
    • 適切な階層構造でテキストを整える
  4. 視覚要素を追加する

    • 適切なサイズと位置で画像を挿入する
    • 書式設定したデータを使ってグラフを追加する
    • セルのスタイルを設定した表を作成する
  5. プレゼンテーションを保存する

    • .pptx 形式で保存する
    • ファイルが作成されたことを確認する

簡単な例:

from pptx import Presentation
from pptx.util import Inches, Pt

prs = Presentation()
prs.slide_width = Inches(10)
prs.slide_height = Inches(7.5)

# Title slide
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = "Q4 Business Review"
slide.placeholders[1].text = "Prepared by: Jane Doe\nDate: October 25, 2025"

prs.save('presentation.pptx')

完全な実装については、examples/business-presentation.md を参照してください。

ワークフロー 2:グラフの追加

目標: 棒グラフ、折れ線グラフ、円グラフでデータを視覚化します。

手順:

  1. CategoryChartData を使ってグラフデータを準備する
  2. カテゴリと系列を定義する
  3. 位置を指定してスライドにグラフを追加する
  4. グラフの書式を設定する(凡例、目盛線、ラベル)

簡単な例:

from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE

chart_data = CategoryChartData()
chart_data.categories = ['Q1', 'Q2', 'Q3', 'Q4']
chart_data.add_series('2025', (9.5, 10.8, 11.2, 13.1))

chart = slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED,
    Inches(1), Inches(2), Inches(8), Inches(4.5),
    chart_data
).chart

すべてのグラフの種類については、examples/chart-examples.md を参照してください。

ワークフロー 3:画像の操作

目標: プレゼンテーションに画像を追加し、配置して、書式を設定します。

手順:

  1. slide.shapes.add_picture() で画像を追加する
  2. 位置(left、top)とサイズ(width、height)を指定する
  3. 必要に応じて中央配置の位置を計算する
  4. 追加する前に画像を最適化する(前処理には Pillow を使用する)

簡単な例:

# Add image with auto-scaled aspect ratio
pic = slide.shapes.add_picture('logo.png', Inches(1), Inches(1), height=Inches(2))

# Center image on slide
pic.left = int((prs.slide_width - pic.width) / 2)
pic.top = int((prs.slide_height - pic.height) / 2)

高度なテクニックについては、examples/image-handling.md を参照してください。

ワークフロー 4:表の作成

目標: 書式設定した構造化データの表を追加します。

手順:

  1. 表のサイズ(行数、列数)を定義する
  2. 位置を指定して表を追加する
  3. 列幅を設定する
  4. ヘッダーに太字と背景色を設定して入力する
  5. データセルに適切な配置で値を入力する

簡単な例:

table = slide.shapes.add_table(4, 3, Inches(1.5), Inches(2), Inches(7), Inches(3)).table

# Header formatting
cell = table.cell(0, 0)
cell.text = "Product"
cell.text_frame.paragraphs[0].font.bold = True
cell.fill.solid()
cell.fill.fore_color.rgb = RGBColor(0, 51, 102)

高度な書式設定については、examples/table-examples.md を参照してください。

ワークフロー 5:既存のプレゼンテーションの編集

目標: 既存の PowerPoint ファイルを変更します。

手順:

  1. Presentation('file.pptx') でプレゼンテーションを開く
  2. スライドを順に確認してコンテンツを探す
  3. テキストや図形を変更するか、新しい要素を追加する
  4. 同じファイル名または別のファイル名で保存する

簡単な例:

prs = Presentation('existing.pptx')

# Find and update text
for slide in prs.slides:
    for shape in slide.shapes:
        if hasattr(shape, "text") and "Old Name" in shape.text:
            shape.text = shape.text.replace("Old Name", "New Name")

prs.save('updated.pptx')

スライドのコピーと高度な編集については、examples/editing-presentations.md を参照してください。

ワークフロー 6:テンプレートの使用

目標: マスタースライドとテンプレートを使って、一貫したブランド表現を適用します。

手順:

  1. テンプレートファイルを使って開始する:Presentation('template.pptx')
  2. 使用可能なレイアウトを確認する
  3. テンプレートのレイアウトを使ってスライドを追加する
  4. ブランドカラーを一貫して適用する

簡単な例:

prs = Presentation('corporate_template.pptx')

# Use template layouts
title_slide = prs.slides.add_slide(prs.slide_layouts[0])
content_slide = prs.slides.add_slide(prs.slide_layouts[1])

# Layouts inherit master formatting
prs.save('branded_presentation.pptx')

マスタースライドのカスタマイズについては、references/templates-and-themes.md を参照してください。

ワークフロー 7:スライドの一括生成

目標: データから複数のスライドを自動生成します。

手順:

  1. CSV、JSON、またはデータベースからデータを読み込みます
  2. プレゼンテーションオブジェクトを作成します
  3. データレコードを順に処理します
  4. レコードごとにスライドを1枚生成します
  5. レコードのデータをスライドに入力します

簡単な例:

import pandas as pd

df = pd.read_csv('employee_data.csv')
prs = Presentation()

for _, row in df.iterrows():
    slide = prs.slides.add_slide(prs.slide_layouts[1])
    slide.shapes.title.text = row['Name']
    # Add employee details to slide body

prs.save('employee_directory.pptx')

完全な実装については、examples/bulk-generation.md を参照してください。

デザイン原則

色とタイポグラフィ
  • 60-30-10の配色ルールを使用します(60%がメインカラー、30%がセカンダリカラー、10%がアクセントカラー)
  • WCAG AAのコントラスト比を確保します(最低4.5:1)
  • フォントファミリーは最大2種類にします
  • 読みやすさを考慮し、本文の最小サイズを18ptにします
レイアウトと構成
  • 要素の配置には三分割法を適用します
  • すべての辺に最低0.5"の余白を確保します
  • スライドあたりの要素数を5~7個に制限します
  • 配置を統一します(グリッドにスナップします)
視覚的な階層
  • サイズで重要度を表します(大きいほど重要です)
  • 強調には色のコントラストを使用します
  • コンテンツの流れにはZパターンを適用します
グラフ作成のベストプラクティス
  • 適切なグラフの種類を選びます(比較には棒グラフ、傾向には折れ線グラフ、全体に対する内訳には円グラフ)
  • 色は最大3~5色に制限します
  • 軸には必ずラベルを付け、データラベルを含めます
  • グリッド線は控えめに使用します

デザインガイドラインの詳細については、references/design-best-practices.md を参照してください。

よく使われるパターン

ブランドカラーの適用
BRAND_COLORS = {
    'primary': RGBColor(0, 51, 102),
    'secondary': RGBColor(0, 153, 204),
    'accent': RGBColor(255, 102, 0)
}

# Apply to text
shape.text_frame.paragraphs[0].font.color.rgb = BRAND_COLORS['primary']

# Apply to fill
shape.fill.solid()
shape.fill.fore_color.rgb = BRAND_COLORS['secondary']
要素の中央揃え
def center_shape(shape, prs):
    """Center shape on slide."""
    shape.left = int((prs.slide_width - shape.width) / 2)
    shape.top = int((prs.slide_height - shape.height) / 2)
テキストの自動調整
from pptx.enum.text import MSO_AUTO_SIZE

text_frame = shape.text_frame
text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE  # Shrink text
# or
text_frame.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT  # Expand shape

トラブルシューティング早見表

「ModuleNotFoundError: No module named 'pptx'」

pip install python-pptx

「AttributeError: 'NoneType' object has no attribute...」

  • プレースホルダーのインデックスを確認します:[p.placeholder_format.idx for p in slide.placeholders]
  • レイアウトに想定したプレースホルダーがあることを確認します

画像が見つからない

  • 絶対パスを使用します:os.path.abspath('image.png')
  • ファイルが存在することを確認します:os.path.exists(img_path)

テキストが収まらない

  • 自動調整を有効にします:text_frame.auto_size = MSO_AUTO_SIZE.TEXT_TO_FIT_SHAPE
  • 長いテキストは省略記号を付けて短縮します

ファイルサイズが大きすぎる

  • 追加する前に画像を圧縮します(Pillowを使用)
  • 画像をプレゼンテーションのサイズに合わせてリサイズします(最大1920x1080)

トラブルシューティングの詳細については、references/troubleshooting.md を参照してください。

ヘルパースクリプト

​scripts/pptx_helper.py モジュールには、次のユーティリティ関数が用意されています:

  • create_presentation():デフォルト設定で初期化します
  • add_title_slide():書式設定済みのタイトルスライドを追加します
  • add_bullet_slide():箇条書き付きのスライドを追加します
  • add_image_slide():中央揃えの画像を含むスライドを追加します
  • add_chart_slide():グラフ付きのスライドを追加します
  • add_table_slide():書式設定済みの表を追加します
  • apply_brand_colors():統一された配色を適用します
  • optimize_images():複数の画像を一括で最適化します

使用方法:

from scripts.pptx_helper import create_presentation, add_title_slide, add_chart_slide

prs = create_presentation(title="My Presentation")
add_title_slide(prs, "Main Title", "Subtitle")
add_chart_slide(prs, "Sales Data", chart_type='bar',
                categories=['Q1', 'Q2', 'Q3', 'Q4'],
                values=[10, 20, 15, 25])
prs.save('output.pptx')

参考資料

ドキュメント
詳細資料
例
デザイン資料

ベストプラクティスのまとめ

  1. ブランドイメージを統一するため、常にテンプレートを使用します
  2. プレゼンテーションに追加する前に画像を最適化します
  3. 各スライドのテキストを抑えます(箇条書きは最大5~7項目)
  4. 読みやすさのため、コントラストを高くします
  5. 発表前に対象デバイスでテストします
  6. ファイルサイズを適切に保ちます(メールでは20MB未満)
  7. 詳細な説明ポイントには発表者ノートを使用します
  8. 6×6ルールに従います:箇条書きは最大6項目、各項目は最大6語
  9. グラフを作成する前にデータを検証します
  10. 余白と配置を統一します

このスキルを使用する場面:

  • データからビジネスプレゼンテーションを作成する
  • レポート生成を自動化する
  • データベースからスライドを一括作成する
  • テンプレートベースのプレゼンテーションを作成する
  • グラフや画像を含む教育コンテンツを作成する
  • ドキュメントをスライドに変換する

コメント