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.mdsvg-diagram スキル16:9 / 4:3 / 小红书 / 微信など10種のキャンバス比率と推奨寸法表
skills/ppt-master/references/image-generator.mdcodex-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.system0件
subprocess.run(shell=True)0件。subprocess の用途は git pullpandocffmpeg、ローカルサーバ起動など妥当な範囲
テレメトリ送信(PostHog / Sentry / Mixpanel など)0件
Flask サーバ(svg_editorconfirm_ui127.0.0.1 限定 bind、LAN 公開なし
外部 API 呼び出し16個の画像生成バックエンドと TTS のみ。.envIMAGE_BACKEND を選んだプロバイダにしか送信されない
update_repo.pygit 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 を扱うワークフローの参考事例として読む価値は十分にあった。