PPT Masterを読んだので、SVG配布スキルに移植する部分だけ拾った
PPT Masterを読んだので、SVG配布スキルに移植する部分だけ拾った
結論を先に
- hugohe3/ppt-master は AI で「PowerPoint で要素単位で編集できる本物の
.pptx」を生成する Python ツール。MIT ライセンス、スター 35K、フォーク 2.9K。 - ただし自分は記事用に SVG 図解を作る運用に振り切っていて、PowerPoint を成果物にすることがない。SVG は Illustrator にも貼れるしブログにそのまま埋め込めるので、PPTX 化のニーズがない。
- だから PPT Master 全体を導入する気はない。代わりに、内部の「SVG 設計ルール」「テンプレート事例」「SVG → DrawingML 変換スクリプト」だけを自分の
svg-diagramスキルに切り出して移植する方針にした。 - Codex CLI ユーザーなら ChatGPT サブスクで完結する経路もある。
image_gen.pyを迂回して Codex 組み込みの画像生成ツールを使えば、追加 API キーは不要。
何のツールか
PPT Master は PDF・DOCX・URL・Markdown を入力として取り、Claude Code / Cursor / Codex CLI のような AI エージェントの中で動く「スキル + Python 後処理スクリプト」のセットだ。AI が中間表現として SVG を組み立て、後処理スクリプトが SVG を DrawingML に変換して .pptx を出力する。
AI プレゼン生成ツールは4種類に分けられるが、PPT Master は最後のカテゴリだけを狙っている。
| カテゴリ | 出力 | PowerPoint で要素単位編集 |
|---|---|---|
| テンプレ流し込み | 固定テンプレに値を埋めた PPTX | テンプレに縛られて部分的 |
| 画像ベース | スライド1枚 = 1画像の PPTX | 画像なので不可 |
| HTML プレゼン | Web ベースのスライド | そもそも PPTX ではない |
| ネイティブ編集型(PPT Master) | DrawingML 図形・テキストボックス・チャート | 各要素クリックして編集可 |
自分のスタックとの差分
ここが本題。PowerPoint を出さない自分の用途とは、出力フォーマットが根本的に違う。
| 観点 | 自分の svg-diagram 運用 | PPT Master |
|---|---|---|
| 最終出力 | SVG(記事に埋め込む単発の図解) | .pptx(複数ページのプレゼン資料) |
| 想定用途 | ブログ本文中の図解、書籍図のベクタ化、Illustrator への貼り付け | 講演スライド、配布資料、社内プレゼン |
| 構造単位 | 1枚の図、グリッドルール、配色 | スライド構造(ページ送り、ノート、アニメーション、TTSナレーション) |
| デザイン規範 | Müller-Brockmann 寄りのモジュラーグリッド、エディトリアル指向 | スイスグリッド・グラスモフィズム・Memphis・Risograph 等10種のテンプレ事例 |
| 再編集性 | SVG エディタ / Illustrator で触る | PowerPoint で要素クリックして触る |
| 中間表現 | SVG が最終形 | SVG を中間表現として生成し、DrawingML に変換 |
ここで気づくのは、中間表現としての SVG をきれいに作る工程が両者で完全に重なるという点だ。違うのは出力先(SVG のまま出すか、.pptx に変換するか)だけ。だから PPT Master の中身は、SVG 生成のノウハウとしてそのまま使える。
移植候補テーブル
PPT Master のディレクトリを読んで、自分の環境に取り込める部分とそうでない部分を分けた。
取り込む候補
| ファイル | 取り込み先 | 何が取れるか |
|---|---|---|
skills/ppt-master/references/canvas-formats.md | svg-diagram スキル | 16:9 / 4:3 / 小红书 / 微信など10種のキャンバス比率と推奨寸法表 |
skills/ppt-master/references/image-generator.md | codex-image-gen スキル | 画像生成プロンプトの書き方ノウハウ |
skills/ppt-master/SKILL.md(73KB) | svg-diagram スキル | SVG の構造化ルール、配色、フォント選定、グリッドの実例集 |
skills/ppt-master/templates/ | 新規スキルとして独立も可 | スイスグリッド、グラスモフィズム、Memphis、Risograph など6種のデザインテンプレ事例 |
scripts/svg_to_pptx.py 一式 | 単独のユーティリティ | SVG → DrawingML 変換は単体で価値がある。記事用 SVG を PPTX にしたくなったときに使える |
取り込まない部分(自分の環境では重複か不要)
| ファイル | 理由 |
|---|---|
image_backends/ 16ベンダー対応 | 自分は Codex 経路で完結する。OpenAI / Gemini / Qwen / Zhipu / Volcengine / MiniMax 等の各社対応は不要 |
source_to_md/(PDF / DOCX / Web → Markdown) | Turso + Yomitoku で書籍 OCR を既に持っているので重複 |
pptx_animations.py notes_to_audio.py | スライドアニメと TTS ナレーション。ブログ図解には使い道がない |
pptx_template_import.py | 既存 PPTX テンプレートを再利用する仕組み。手元に再利用したい PPTX 資産がない |
「SVG 設計ルール」と「SVG → PPTX 変換スクリプト」だけ抜くのが筋。それ以外は自分のスタックで既に上回っている部分が多い。
セキュリティ面の簡易チェック
外部 OSS をスキル化する前に、ざっと中身を grep して確認した。Python スクリプト群を直接読んだ結果は次の通り。
| 観点 | 結果 |
|---|---|
eval / exec / os.system | 0件 |
subprocess.run(shell=True) | 0件。subprocess の用途は git pull、pandoc、ffmpeg、ローカルサーバ起動など妥当な範囲 |
| テレメトリ送信(PostHog / Sentry / Mixpanel など) | 0件 |
Flask サーバ(svg_editor、confirm_ui) | 127.0.0.1 限定 bind、LAN 公開なし |
| 外部 API 呼び出し | 16個の画像生成バックエンドと TTS のみ。.env で IMAGE_BACKEND を選んだプロバイダにしか送信されない |
update_repo.py | git pull --ff-only 後、必要時のみ pip install。ローカル変更があると停止する保守的な作り |
実装そのものは素直で、不審な挙動は見当たらなかった。気になる点を強いて挙げると次の2つだ。
- README に中国系の AI 中継サービス4社のアフィリエイトリンクが大量に並ぶ。これはコードの挙動とは無関係の広告だが、踏むかどうかは好みの問題。
gemini_watermark_remover.pyという Gemini 生成画像の透かしを取り除くスクリプトを同梱している。Google の利用規約的にはグレー。使わなければ無関係。
Codex CLI で動かすときの最短経路
PPT Master の前提を整理すると、AI エージェントを動かすモデル(テキスト推論)と、画像を作るモデルは別物として扱われている。前者は Codex CLI 自身が ChatGPT サブスクで解決済みで、問題は後者だ。
PPT Master 同梱の image_gen.py は OpenAI の HTTP API を直叩きする実装で、ChatGPT サブスクではなく OpenAI API キー(billing 有効)が必要になる。これを回避する手段が2つある。
- 画像生成をスキップしてテキスト中心のスライドにする
- Codex に「画像は
image_gen.pyではなく Codex 組み込みのimage_gen.imagegenツールで作り、projects/<name>/assets/に保存して。SVG からは相対パスで参照して」と指示する
後者を採れば、Codex CLI ユーザーは API キーなしで完結できる。codex-image-gen スキルを既に持っているなら、その流儀をそのまま流し込めばいい。
まずやること
中身を読んだ上で、自分の環境では次の順に進めるのが手早そうだと判断した。
- Git_repo 直下に検証用ディレクトリを切り、UV の仮想環境で PPT Master を一度だけ動かす(ブログ本体には混ぜない)
- 1本だけ PPTX を生成して、SVG 中間表現と最終 PPTX を見比べる
- 良いと判断した SVG 設計ノウハウを
svg-diagramスキルへ転記する(MIT なのでクレジット付きで OK) -
svg_to_pptx.pyを独立スクリプトとして抜き、ブログ用 SVG を PPTX にしたい場合に呼べる状態にしておく
PPT Master 全体を入れる必要はないが、SVG を扱うワークフローの参考事例として読む価値は十分にあった。