見出し画像

Python1つでPPTXが作成できる方法

初めましての人は初めまして、そうでない人はお久しぶりです。

エクスプラザで AIリードプロデューサーAIえばんじぇりすと をしている「まつにぃ」です。

以下のNoteに記載されているように、AIを楽しみながら仕事に邁進している人です。

昨今、スライド作成のサービスや手法がどんどん増えてきていますね。
Nanobanana Pro、Manus、Genspark、Gamma、Canva、そしてChatGPTやClaudeを使った生成など選択肢は増えてきています。

特に最近話題の「まじん式」は凄く良い思想設計だなと関心しました。
Googleスライド × Gemini × GASコードで、グラフや動画まで含む定型化スライドを作れるのは良いですよね。

ただ個人的には、こんなことで頭を悩ませていました。

  • テンプレートをもっと気軽にいじれないか?(もうちょっと気軽に調整がしたい)

  • どの環境でも再現できないか?(MSやGoogleなどを問わずに気軽に作りたい)

  • AIと連携しやすいか?(ChatGPTやClaudeなどの汎用AIアプリで編集したりファイル作成してほしい)

そこで今回、テンプレートもある程度気軽にいじれて、自分のローカルPCなどで実行したら即PPTXが作れるPythonスクリプトを作成しました。
1ファイル完結なので共有も簡単です。

せっかくなので、使い方や設計思想を記載します。

■ どんなPythonスクリプトなのか

今回共有するスクリプトは デザインや仕様などがすべてが1つのPythonファイルに収まっている仕様となっており、

  • ChatGPTやClaudeのCode Interpreter / ArtifactsでそのままPPTX作成が可能

  • 依存関係が最小限(python-pptx)

  • テンプレートを気軽に編集できる

ということで、
AIに丸ごと渡して「このスライドのタイトルを変えて」「グラフのデータを更新して」といった指示で内容の編集を行うことができます。

使用ライブラリ: python-pptx

今回使うのは `python-pptx` というライブラリです。

pip install python-pptx

このライブラリは、PowerPointファイル(.pptx)をPythonで直接生成・編集できる優れものです。

できること:

  • スライドの追加・削除

  • テキストボックス、図形、画像の配置

  • グラフ(棒グラフ、円グラフ、折れ線グラフ)の作成

  • テーブルの作成

  • フォント・色・サイズの細かい制御

Officeがインストールされていない環境でも動作するので、サーバーサイドでの自動生成にも使えると思います(多分)。

■ 使い方の3ステップ

このPythonスクリプトの使い方はシンプルです。

STEP 1: `SLIDES_TO_USE` でスライド構成を決める

使いたいテンプレート番号を配列で指定します。
順序がそのまま反映され、同じ番号の複数回使用も可能です。

SLIDES_TO_USE = [1, 2, 3, 4, 5, 1]
# → 表紙(1) → 目次(2) → 棒グラフ(3) → 円グラフ(4) → テーブル(5) → 表紙(1)

STEP 2: `SLIDE_CONTENT` でテキスト内容を編集

キーは`SLIDES_TO_USE` の順序に対応しており、コード内のjsonを編集することでPPTXに反映することができます。

SLIDE_CONTENT = {
    1: {"title": "表紙タイトル", "subtitle": "...", "credit": "..."},
    2: {"title": "目次", "items": ["項目1", "項目2", ...]},
    3: {"title": "売上推移", "categories": [...], "series": [...], ...},
    ...
}

STEP 3: 実行

python pptx_generator.py

これで `pptx_generator.pptx` が生成されます。

■ 現在のテンプレート

用意しているテンプレートは以下の通りです。
あくまでテンプレートなので、存分に魔改造してください。

  • 表紙(2025年度 中期経営計画)

  • 目次(Agenda)

  • 市場トレンド(棒グラフ)

  • 市場シェア(円グラフ)

  • 2024年度レビュー(テーブル)

  • 売上戦略(折れ線グラフ)

  • 新ソリューション機能(カードグリッド)

  • 今後の展望(画像付き)

  • サービスの特長(3ポイント丸囲み)

  • 導入ステップ(ポイントリスト)

  • 実績と信頼(ポイントリスト大)

  • ロードマップ(タイムライン)

画像
表紙
画像
カード
画像
グラフチャート
画像
タイムライン

可変コンテンツ対応のテンプレートは、配列のサイズに応じて自動で行数や項目数が調整されます。
データを増やせば勝手にレイアウトが伸びる、減らせば縮むという感じです。

■ ChatGPT / Claude で使う

結構いいなぁと思っていることですが、

このPythonスクリプトの強みは、ChatGPTやClaudeにスライド内容の編集から作成までをお願いできることにあります。Code Interpreter や Artifacts 環境でそのまま動くので、会話しながらスライドを仕上げていけます。

※GeminiのCanvasでは動かず…

使い方の例

  1. PythonスクリプトをChatGPT(Code Interpreter)に添付する

  2. 「Pythonスクリプトのルールに従って〇〇について`SLIDES_TO_USE` と`SLIDE_CONTENT`を修正」など追加指示

  3. 「このPythonスクリプトを実行してPPTXを作成」と指示

  4. 生成されたPPTXをダウンロード

画像
ChatGPTで編集してPPTX変換
画像
Claudeでも編集してPPTX変換

記載の通り、Claudeでも同様にArtifacts機能でPythonコードを実行できます。

ポイント:
1ファイル構成なので、AIがコード全体を把握した状態で編集できます。
分割されたモジュール構成だと「あのファイルも読んで」というやり取りが必要になりますが、1ファイルならその手間がゼロです。

■ テンプレート自体もAIで作れる

さらに「おぉ〜」となったのが、テンプレートのデザイン自体もAIに作らせることができる点です。

Claude Opus 4.5 でテンプレート作成

  1. 理想のスライドデザインの画像(スクショ等)を用意

  2. Claude Opus 4.5にPythonスクリプトと画像を渡す

  3. 「このデザインを再現するpython-pptxのコードを書いて」と指示

Claude Opus 4.5は画像理解からのスライド描写力が高いので、レイアウト・色・フォントサイズなどをかなり正確に読み取って、コードに落とし込んでくれます。

私もこの方法で、サンプルテンプレートをコード化しました。

■ まとめ

最後にまとめますが、

  • python-pptx でPowerPointをコード生成できる

  • 1ファイル完結 なのでChatGPT/Claudeでそのまま動く(Cursorなどでも当然動く)

  • Claude Opus 4.5 に画像を渡せばオリジナルテンプレートも作れる

ということで、
「パワポ作成の時間を減らしたい」「AIにもっと資料作成を任せたい」という方は、ぜひ試してみてください。

コードは以下に添付しておくので、ダウンロードして魔改造、使い回ししまくってもらえたらと思います。


皆さんもPython × AIで資料作成を効率化していきましょう!

いいなと思ったら応援しよう!

ピックアップされています

医療✕AI - Future of Healthcare

  • 13本

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
Python1つでPPTXが作成できる方法|まつにぃ
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1