gpt-image2-ppt
OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。
description の原文を見る
Generate visually striking PPT slides via OpenAI's gpt-image-2 -- 10 curated styles (Spatial Glass / Tech Blue / Editorial Mono / Dark Aurora / Risograph / Wabi / Swiss Grid / Hand Sketch / Y2K Chrome / Retro Vector) plus a template-clone mode that mimics any user-supplied .pptx; ships an HTML viewer and a 16:9 .pptx. Use when the user asks to make a presentation, slides, deck, pitch deck, investor PPT, magazine-style PPT, or 做一份 PPT / 生成幻灯片 / 用 gpt-image 生成 PPT / 按这个模板生成 PPT.
SKILL.md 本文
gpt-image2-ppt -- gpt-image-2 で PPT を生成
Markdown アウトライン(または slides_plan.json)+ ビジュアルスタイルを OpenAI 公式 Images API(gpt-image-2)に直接入力し、ページごとに画像を生成した後、キーボード操作でページを切り替えられる HTML ビューアと 16:9 の .pptx に統合します。
10 種類の組み込みスタイル
| スタイル ID | 一言での位置づけ | 適用シーン |
|---|---|---|
gradient-glass | Apple Vision OS / Spatial Glass | AI 製品発表、技術シェア、クリエイティブ提案 |
clean-tech-blue | Stripe / Linear レベルの青白 | 資金調達ピッチ、ビジネスプラン、企業戦略 |
vector-illustration | レトロベクターイラスト + 黒い輪郭線 | 教育トレーニング、ブランドストーリー、コミュニティシェア |
editorial-mono | Kinfolk / Monocle エディトリアルデザイン | ブランド発表、文化インタビュー、書籍シェア |
dark-aurora | Linear / Vercel ダークネオン | AI 製品、開発者ツール、技術シェア |
risograph | Riso 2 色印刷 + ハーフトーン テクスチャ | クリエイティブスタジオ、文化ブランド、独立 zine |
japanese-wabi | 無印 / 原研哉式わびさび | 茶道、ライフスタイル、ラグジュアリー、文化講演 |
swiss-grid | Bauhaus / Vignelli インターナショナルグリッド | 学術報告、博物館展示、厳粛な報告 |
hand-sketch | スケッチノート / ホワイトボード手描き | ワークショップ、製品ブレインストーミング、トレーニング |
y2k-chrome | Y2K ミレニアム液体メタル + バタフライステッカー | トレンドブランド、エンタメ、ブランドコラボ、Z 世代マーケティング |
スタイル選択の原則:技術系は
dark-aurora/gradient-glassを優先、商務系はclean-tech-blue/editorial-monoを優先、文化生活系はjapanese-wabi/vector-illustrationを優先、トレンドエンタメ系はrisograph/y2k-chromeを優先、学術系はswiss-gridを優先、ワークショップと初期クリエイティブ系はhand-sketchを優先します。
テンプレートクローンモード
スキルに .pptx テンプレートを直接提供すると、以降のすべてのページがこのテンプレートに合わせてレンダリングされます。
# 1 行で実行:自動レンダリング + vision スタイル抽出 + 画像生成。本機に LibreOffice または docker イメージがあれば実行可能
python3 scripts/generate_ppt.py \
--plan slides_plan.json \
--template-pptx ./company-template.pptx \
--template-strict
--template-strict は、各ページでテンプレートの対応ページを image reference として gpt-image-2 に入力し、最高の再現性を実現します。
テンプレートレンダリング:本機で PowerPoint を操作する必要はありません
スキルに付属の render_template.py は、.pptx を自動的に各ページ PNG にレンダリングして <cwd>/template_renders/<stem>/page-NN.png に保存します。
バックエンドは優先度順に自動選択します:
- 本機の
libreoffice/sofficeコマンド(最速) - 本機の docker +
linuxserver/libreofficeイメージ(初回ダウンロード ~2.5GB) - PDF → PNG は
pymupdf(既に requirements に含まれる);インストールされていない場合はpdf2image+ poppler を使用
どちらの LibreOffice も利用できない場合は、ユーザーに PowerPoint/Keynote/WPS から各ページ PNG を手動でエクスポートするよう指示し、page-01.png から始まる辞書順の命名規則に従わせます。
generate_ppt.py --template-pptx ... を実行する際に --template-images を省略すると、レンダリングが自動的に 1 回実行されます。または手動で先に実行することもできます:
python3 scripts/render_template.py company-template.pptx
# -> <cwd>/template_renders/company_template/page-01.png ... page-NN.png
テンプレート模倣の 2 層キャッシング
| 資料 | パス | 用途 |
|---|---|---|
| テンプレート各ページ PNG | <cwd>/template_renders/<stem>/page-NN.png | LibreOffice 1 回レンダリングの長期再利用 |
| Vision スタイル分析 | <cwd>/template_cache/<sha256>.json | gemini-3.1-pro-preview 1 回分析の長期再利用 |
| 生成成果物 | <cwd>/outputs/<timestamp>/ | 毎回実行時に新ディレクトリ |
すべてが呼び出し元の cwd 下にあり、プロジェクトとの関係は自然です。template_renders/、template_cache/、outputs/ をプロジェクトの .gitignore に追加することをお勧めします。
Vision モデル(エージェントが設定の必要性を自ら判断):
- 本スキルを実行する現在のエージェント自体が多モーダルの場合(Claude Code は Claude Opus/Sonnet などの多モーダル SKU を使用、codex は GPT 多モーダル SKU を使用など)、外部 vision モデルを接続する必要がまったくありません:エージェント自体に
Readtemplate_renders/<stem>/page-*.pngさせ、スタイルを 1 回で抽出してtemplate_cache/<sha256>.jsonに書き込むだけで済みます(スキーマはtemplate_analyzer.pyを参照)。これがデフォルトパスであり、VISION_*を設定する必要はありません。 - エージェント自体が純テキストモデルの場合のみ(または特定のより強力な vision で強制的にテンプレート分析を行いたい場合)、
VISION_*を設定してtemplate_analyzer.pyに独立した OpenAI 互換多モーダル chat completions エンドポイントを使用させます(Gemini / GPT / Claude いずれでも選択可能、デフォルトは内置されていません)。
Vision 分析と画像生成の gpt-image-2 は常に分離されています — vision プロバイダーの変更は出力パスに影響しません。
インストール
git clone git@github.com:JuneYaooo/gpt-image2-ppt-skills.git
cd gpt-image2-ppt-skills
bash install_as_skill.sh --target claude # Claude Code
# または
bash install_as_skill.sh --target codex # Codex
# API ダイレクト接続モードを使用する場合のみ、対応ディレクトリの .env を編集して API_KEY を入力してください
必須の環境変数
OPENAI_BASE_URL=https://api.openai.com # または任意の OpenAI 互換リレーサービス
OPENAI_API_KEY=sk-...
GPT_IMAGE_MODEL_NAME=gpt-image-2
GPT_IMAGE_QUALITY=high # low / medium / high / auto
# オプション:テンプレートクローンモードの vision 分析バックエンド。
# デフォルトでは、本スキルを実行するエージェント自体に画像を見させます(多モーダル Claude Code / 多モーダル codex いずれでも可)。
# エージェント自体が純テキストモデルの場合のみ、以下を外部接続する必要があります。
# デフォルトエンドポイントは内置されていないため、信頼できるサービスを記入してください。そうでなければ入力しないでください。
# VISION_BASE_URL=https://your-openai-compatible-relay.example.com/v1
# VISION_API_KEY=sk-...
# VISION_MODEL_NAME=gemini-3.1-pro-preview # または gpt-4o / claude-3.5-sonnet など任意の多モーダル SKU
セキュリティに関する注意:スクリプトは
<script_dir>/.env、~/.codex/skills/.../.env、~/.claude/skills/.../.env、~/skills/.../.env、および明示的なGPT_IMAGE2_PPT_ENVからのみ認証情報を読み込みます。プロジェクトディレクトリの.envを再帰的に読み込んで無関係なキーを誤って取得することはありません。
Codex エージェント本体の場合(ネイティブ image_generation 出力 — 推奨)
本体が Codex の場合(現在このスキルを実行しているエージェントが Codex CLI / Codex TUI)、ネイティブの image_generation ツールと ChatGPT ログイン状態を備えています。この場合、generate_ppt.py を実行しないでください。ネイティブツールを直接使ってパイプライン全体を完成させてください — 依存関係なし、API キーなし、ネスト化なし。
判定方法
image_generation ツールにアクセスでき、OPENAI_API_KEY を手動で設定することなく画像を生成できます — この 2 つの条件を満たしていればネイティブパスを使用します。
画像生成フロー(Codex ネイティブパス)
1. Slides データを準備
slides_plan.json がない場合は、以下の「生成フロー」の第 2-3 ステップに従い、slides_plan.md を書いてから python3 scripts/md_to_plan.py ... で json に変換してください。
2. スタイルテンプレートを読み込み
styles/<id>.md を読み、## 基础提示词模板 セクションを base prompt として取得します。
3. 各ページのプロンプトを構築
generate_ppt.py の generate_prompt() ロジックを参考にし、コア規則:
- カバー(cover/スライド 1):タイトル/サブタイトルをビジュアルの焦点に
- データページ(data/最後のページ):重要な数字、対比、または結論を強調
- コンテンツページ(content/その他のページ):階層構造、配置、余白に基づいて構造化された提示
- すべてのテキストは簡体字中文でなければならず、フォントは Noto Sans CJK / Pingfang を使用し、草書体/装飾的フォントは禁止
- 16:9 横長ワイドスクリーン(landscape, widescreen)、プロンプトで明確に「幅が高さより明らかに大きく、正方形は絶対に使わない」と述べてください
{style 基础提示词模板}
---
それでは本グループの【{カバーページ/コンテンツページ/データページ}】を生成してください。{対応するヒント}
本ページで表現するコンテンツは以下の通りです(このスタイルの美学に従ってレイアウトを再設計してください):
{slide content}
【強制的な言語とフォント要件】
1. すべてのテキストは簡体字中文を使用する必要があります。英文は禁止です(固有名詞を除く)
2. 中文フォントは Noto Sans CJK または Pingfang を使用し、草書体、装飾的フォントは禁止
3. タイトルは太字、本文は通常、フォントサイズは明確な対比を持つ
【画面比率 — 強制】16:9 横長ワイドスクリーン (landscape, widescreen)、幅が高さより明らかに大きく、正方形または縦図は絶対に使わない。
4. image_generation ツールを呼び出して出力
各ページについて image_generation ツールを呼び出します:
prompt:上記で組み立てた完全なプロンプトoutput_format:png- 返された画像を
outputs/<timestamp>/images/slide-NN.pngに保存(NN は 2 桁のページ番号)
並列実行可能(推奨 ≤4 並列、レート制限を避けるため)。
5. HTML ビューアを生成
templates/viewer.html を読み、/* IMAGE_LIST_PLACEHOLDER */ を 'images/slide-01.png', 'images/slide-02.png', ... に置き換えて outputs/<timestamp>/index.html に書き込みます。
6. PPTX をパッケージ化(オプション)
python3 -c "
from pptx import Presentation
from pptx.util import Inches
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
import os, glob
for p in sorted(glob.glob('outputs/<timestamp>/images/slide-*.png')):
slide = prs.slides.add_slide(blank)
slide.shapes.add_picture(p, 0, 0, width=prs.slide_width, height=prs.slide_height)
prs.save('outputs/<timestamp>/<title>.pptx')
print('done')
"
テンプレートクローンモード(Codex ネイティブパス)
本体が多モーダルエージェントである — テンプレート各ページ PNG を直接 Read してビジュアルスタイルを抽出し、template_cache/<sha256>.json に書き込みます(スキーマは template_analyzer.py の TemplateProfile を参照)。その後、上記フローに従って出力する際、対応するテンプレートページを reference image として image_generation ツールに渡します。
VISION_* を設定する必要はありません — 本体自体が vision です。
以下の「--backend codex」との違い
| ネイティブパス(本セクション) | --backend codex | |
|---|---|---|
| 適用シーン | 本体が Codex エージェント | Claude Code / その他のエージェント、本機の codex CLI を借用 |
| 呼び出し方法 | image_generation ツールを直接呼び出し | codex exec --full-auto 子プロセスをスポーン |
| 出力レイヤ | 1 層 | 2 層(エージェント → python → codex exec) |
| 速度 | 数秒/枚 | 30-60 秒/枚 |
| 信頼性 | ツールパラメータ正確 | 自然言語リレー、時折失敗 |
| API キーが必要 | 不要 | 不要 |
オプション:codex CLI で出力(--backend codex、Codex caller 以外用)
Codex エージェント本体の場合は、このパスを使用しないでください — 前セクションの「ネイティブパス」を使用してください。
Claude Code / OpenClaw / その他のエージェントでこのスキルを実行するが、本機に codex CLI がインストールされており、ログイン済み(codex login)の場合、そのログイン状態を借用して出力でき、OPENAI_API_KEY の設定を省略できます:
python3 scripts/generate_ppt.py --plan slides_plan.json --style styles/editorial-mono.md --backend codex
デフォルトバックエンドは依然として openai(API 直接呼び出し、高速、並列実行安定、1 ページあたり 3-10 秒)。--backend codex はエスケープハッチで、「1-2 枚の画像を試してみたいだけで、キーを設定したくない」というシナリオに適しています。
トレードオフ:
- ✅ 本スキルで
OPENAI_API_KEYを設定する必要なし - ⚠️ 遅い:1 ページあたりエージェントループが 1 層多く、単ページ 30-60 秒以上、10 ページは 5-10 分かかる可能性
- ⚠️ 計費は変わらない:gpt-image-2 は画像ごとの課金で ChatGPT サブスクリプション内ではなく、codex はあなたの代わりにクレジットを消費するだけ
- ⚠️ 制御性が低い:aspect_ratio / quality / reference_image は自然言語指令に依存して codex が転送し、時折失敗
関連する env(すべてオプション):
CODEX_CMD="codex exec --full-auto" # codex 呼び出し方法をオーバーライド(デフォルトはこれ)
CODEX_IMAGE_MODEL=gpt-image-2 # codex に渡すターゲットモデル
CODEX_TIMEOUT_SECS=900 # 単ページタイムアウト
GPT_IMAGE_BACKEND=codex # 毎回 --backend とタイプしたくない場合は設定
テンプレートクローンの vision 分析も同理 — caller エージェント自体が多モーダル(Claude Code / 多モーダル codex)の場合、テンプレート PNG を直接 Read してスタイルを抽出でき、VISION_* を設定する必要はありません。caller エージェント自体が純テキストモデルの場合のみ、vision プロバイダーを外部接続する必要があります。
生成フロー(組み込みスタイル)
先に md、後に json:md は人間が読むため、diff / レビュー / テキスト修正が簡単;json は md から派生し、generate_ppt.py に入力され、生成済みとマークされ、手動では変更しません。
- ユーザーがアウトライン / 既存の slides_plan.json を提供
- Claude は下記の md 規約に従って
slides_plan.mdを書き、ユーザーとテキスト内容を確認:--- title: MediWise Health Suite ビジネスプラン --- ## 1. [cover] MediWise Health Suite サブタイトル:家庭健康管理インテリジェントプラットフォーム 年:2026 ## 2. [content] 市場痛点:ヘルスマネジメントの 2 つの分裂 痛点 1:高頻度で低深度 ... ## 6. [data] 効率比較:MediWise 使用前後 ...- h2 形式:
## N. [page_type, layout=layout-05] このページのタイトル行 N.は省略可(出現順で自動採番);[page_type]は省略可(デフォルトcontent);layout=はテンプレートクローンモードでのみ必要page_type:cover/content/data- h2 タイトル行 → json の
contentの最初の行;以下の本文 → 本文
- h2 形式:
- ユーザーが OK したら、json に変換:
python3 scripts/md_to_plan.py slides_plan.md -o slides_plan.json - スタイルを選択:上記 10 種類から 1 つ選び、対応する
styles/<id>.md - スクリプトを実行:
python3 scripts/generate_ppt.py --plan slides_plan.json --style styles/editorial-mono.md - 成果物は
<cwd>/outputs/<timestamp>/にあります:images/slide-XX.png-- 各ページの PNG(16:9、1536x1024)index.html-- HTML ビューア、方向キーでページ送り、スペースキーで自動再生、ESC でフルスクリーンprompts.json-- 各ページで使用された完全なプロンプト(復習 / 二次調整に便利)<title>.pptx-- 16:9 全ページ画像埋め込みの .pptx、シェア/プロジェクション直接使用
生成フロー(テンプレートクローン)
- テンプレート .pptx を取得(ユーザー提供 / 内部テンプレートライブラリ / ネットダウンロード)
- (オプション)先に単独でレンダリングして人工的に選択 ---- 大きなテンプレート(>15 ページ)の場合は
python3 scripts/render_template.py xxx.pptxを先に実行し、template_renders/<stem>/から 8-12 の代表ページをtemplate_renders/<stem>_curated/にコピーして vision 分析に提供することをお勧めします。ページ数が多いほど、layout マッチング精度が向上します - slides_plan.md → slides_plan.json を生成(組み込みスタイルフロー第 2-3 ステップを参照)。各ページについて
slide_number/page_type(cover/content/data/ など)/content;正確にマッピングしたい場合は h2 にlayout=layout-NNを追加(NN = テンプレート第 N ページ / マッピング対象のテンプレートページ番号) - generate_ppt.py を実行:
先にpython3 scripts/generate_ppt.py \ --plan slides_plan.json \ --template-pptx xxx.pptx \ --template-images template_renders/xxx_curated \ --template-strict --slides 1--slides 1でカバーをスモークテストし、効果が OK になったら全量を実行 - ユーザーに成果物パスを通知
テンプレートページの選択 / 再利用の原則
コア原則:できるだけ 1 ページ : 1 レイアウト を実現 ---- 同じ deck 内の各スライドが異なるテンプレートページを reference として使用すれば、観客は各ページが新しいコンテンツと感じます。同じユニークな layout が 2-3 回出現する場合、観客は無意識に「なぜこのページがまた出ているのか」と考えます。
Vision 分析時に各 layout に reuse_friendly ラベルが付きます:
| reuse_friendly | 典型的な layout | 複数回使用のコスト |
|---|---|---|
false(再利用不可、(!) 強い警告) | カバー、3 つの指定キャラクターイラストページ、ユニークなシーン画像(雪山/放送塔/レトロラジオ)、5 ステップ zigzag 各ステップ独自アイコン、novel データ中央装置 | ビジュアル重複が非常に明らかで、観客は困惑します |
true(再利用可能だが、依然として間隔をあけることを推奨、(i) 弱いヒント) | 純テキスト、カードグリッド、通用リスト、セクション小見出し | 致命的ではありませんが、テンプレート内の他の優れたレイアウトを無駄にします |
Claude がプラン組み立て時の実行戦略:
- 優先的にテンプレート内の N つの異なる layout を N ページのスライドに割り当て(N が不足する場合は SKILL 内で reuse_friendly=true の部分から復用可能な部分を選択)
- プラン内で特定ページのコンテンツ構造が非常に似ている場合(例:複数の「5 ステップフロー」)、コンテンツを改写して異なる layout で表現することを優先試行(4 ステップ + 5 ステップは異なるフロープロセスページを使用)し、同じ zigzag を 2 回使わない
- スモークテスト完了後、「Layout 再利用検出」セクションの出力を確認:(!) 必須修正、(i) 情況に応じて修正;プラン内の対応スライドの
layout_idを修正してください - キャッシュ JSON を見て layout を選択:
cat <cwd>/template_cache/<sha256>.json | jq '.layouts[] | {id, page_type, reuse_friendly, summary}'で一目見てテンプレートにどのレイアウトが選択可能かわかります
generate_ppt.py はタスク派遣前に自動的に再利用検出を 1 回実行し、警告をターミナルに出力し、実行をブロックしません。
スキル呼び出し規約
ユーザーが「PPT を作成する」/ 「スライドを生成する」と言ったとき:
- 先に 3 つのことを聞く(直接実行しないでください):
- コンテンツ / ページ数 / 観客は誰?
- スタイル選好?「10 種類の組み込みスタイル」表のシーンカテゴリに基づいて 1-2 個を推奨;またはユーザー自身の .pptx テンプレートをアップロード(
--template-pptxを使用、自動レンダリング) - 単ページテストで 1 枚の画像を先に見て効果を確認する必要がありますか?(
--slides 1)
- 先に slides_plan.md を書く ユーザーに確認するためのテキスト内容(md は source of truth、人間のレビューに優しい)
- slides_plan.json に変換:
python3 scripts/md_to_plan.py slides_plan.md -o slides_plan.json(json は生成済みとマークされ、手動では変更しないでください;テキストを変更する場合は md に戻して修正してから変換します) - generate_ppt.py を実行、先に
--slides 1
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- JuneYaooo
- ライセンス
- Apache-2.0
- 最終更新
- 2026/5/11
Source: https://github.com/JuneYaooo/gpt-image2-ppt-skills / ライセンス: Apache-2.0