ppt-master
AIを活用したマルチフォーマット対応のSVGコンテンツ生成システムで、PDF・DOCX・URL・Markdownなどのソースドキュメントを高品質なSVGページに変換し、PPTXとして書き出します。「プレゼンを作って」「PPTを作成して」といった依頼や「ppt-master」と言及された際に使用してください。
description の原文を見る
> AI-driven multi-format SVG content generation system. Converts source documents (PDF/DOCX/URL/Markdown) into high-quality SVG pages and exports to PPTX through multi-role collaboration. Use when user asks to "create PPT", "make presentation", "生成PPT", "做PPT", "制作演示文稿", or mentions "ppt-master".
SKILL.md 本文
PPT Master Skill
AI駆動型マルチフォーマットSVGコンテンツ生成システム。ソースドキュメントを高品質SVGページに変換し、マルチロール協働を通じてPPTXにエクスポートします。
コアパイプライン: Source Document → Create Project → [Template] → Strategist → [Image_Generator] → Executor Live Preview → Quality Check → Post-processing → Export
[!CAUTION]
🚨 グローバル実行規律(必須)
このワークフローは厳密な直列パイプラインです。以下のルールは最優先です — いずれかに違反すると実行失敗となります:
- 直列実行 — ステップは順序通りに実行されなければならず、各ステップの出力は次のステップの入力になります。非BLOCKINGの隣接ステップは、ユーザーが「続行」と言うまで待たずに、前提条件を満たしたら連続して進むことができます
- BLOCKING = 硬停止 — ⛔ BLOCKINGとマークされたステップは全停止が必要です。AIは明示的なユーザー応答を待たなければならず、ユーザーの代わりに決定を下してはいけません
- クロスフェーズバンドリング禁止 — クロスフェーズバンドリングは禁止です。(注:ステップ4の8つの確認は⛔ BLOCKINGです — AIは推奨事項を提示し、明示的なユーザー確認を待たなければなりません。ユーザーが確認したら、その後のすべての非BLOCKINGステップ(デザイン仕様出力、SVG生成、スピーカーノート、後処理)は追加のユーザー確認なしで自動的に進むことができます)
- エントリー前のゲート — 各ステップには前提条件(🚧 GATE)があり、そのステップを開始する前に検証されなければなりません
- 投機的実行禁止 — 後続ステップ用コンテンツの「事前準備」は禁止です(例:Strategistフェーズ中にSVGコードを書くなど)
- サブエージェントSVG生成禁止 — Executor ステップ6のSVG生成はコンテキスト依存であり、現在のメインエージェントが完全にエンドツーエンドで完了する必要があります。ページSVG生成をサブエージェントに委譲することは禁止です
- 順序付きページ生成のみ — Executor ステップ6では、グローバルデザインコンテキストが確認された後、SVGページは1つの連続パスで1ページずつ順序通りに生成されなければなりません。ページバッチのグループ化(例えば一度に5ページ)は禁止です
- SPEC_LOCK ページごとの再読み込み — SVGページを生成する前に、Executor は
read_file <project_path>/spec_lock.mdを実行する必要があります。すべての色・フォント・アイコン・画像はこのファイルから取得する必要があります — メモリからの値や即席で発明した値ではありません。Executor は現在のページのpage_rhythm(anchor/dense/breathing)、page_layouts(継承するテンプレートSVG、ある場合)、page_charts(適応するチャートテンプレート、ある場合)も調べる必要があります。空の、または不在のエントリは意図的なStrategistシグナルです — executor-base.md §2.1を参照。このルールは長いデッキにおけるコンテキスト圧縮ドリフトに抵抗し、均一な「すべてのページはカードグリッド」デフォルトを破るために存在します- SVGは手書きでなければならず、スクリプト生成してはいけません — すべてのSVGページはメインエージェントによって直接手書きされます、1ページずつ(ルール6および7を参照)。PythonやNode、シェルスクリプトを書いたり実行したりしてSVGファイルをバッチで生成することは禁止です — ページをループ処理したり、テンプレートからデータを取得したり、ジェネレータを通じて出力する場合も同様です。「トークン節約」「クイックドラフト」「ユーザーが急いでいる」という名目でも禁止です。スクリプト生成パスは機能ブランチで試され、放棄されました:ページ横断的なビジュアル一貫性は、ジェネレータスクリプトが再現できない完全な上流コンテキストを持つページごとのオーサリングに依存します
[!IMPORTANT]
🌐 言語・通信ルール
- 応答言語: ユーザーの入力とソースマテリアルの言語に合わせます。明示的なユーザーオーバーライド(例:「請用英文回答」)が優先されます。
- テンプレート形式:
design_spec.mdはその元の英語テンプレート構造(セクション見出し、フィールド名)に従う必要があります。会話言語に関係なく。コンテンツ値はユーザーの言語でも構いません。
[!IMPORTANT]
🔌 汎用コーディングスキルとの互換性
ppt-masterはリポジトリ固有のワークフローであり、汎用アプリケーションスキャフォルドではありません- デフォルトでは
.worktrees/、tests/、ブランチワークフロー、汎用エンジニアリング構造を作成しないでください- 汎用コーディングスキルと競合する場合、ユーザーが明示的に別の指示をしない限りこのスキルに従ってください
メインパイプラインスクリプト
| スクリプト | 用途 |
|---|---|
${SKILL_DIR}/scripts/source_to_md/pdf_to_md.py | PDF から Markdown へ |
${SKILL_DIR}/scripts/source_to_md/doc_to_md.py | ドキュメントから Markdown へ — DOCX/HTML/EPUB/IPYNB のネイティブ Python、レガシー形式(.doc/.odt/.rtf/.tex/.rst/.org/.typ)の pandoc フォールバック |
${SKILL_DIR}/scripts/source_to_md/excel_to_md.py | Excel ワークブックから Markdown へ — .xlsx/.xlsm をサポート、レガシー .xls は .xlsx として再保存するべき |
${SKILL_DIR}/scripts/source_to_md/ppt_to_md.py | PowerPoint から Markdown へ |
${SKILL_DIR}/scripts/source_to_md/web_to_md.py | Web ページから Markdown へ(WeChat を curl_cffi でサポート) |
${SKILL_DIR}/scripts/project_manager.py | プロジェクト初期化・検証・管理 |
${SKILL_DIR}/scripts/analyze_images.py | 画像分析 |
${SKILL_DIR}/scripts/image_gen.py | AI 画像生成(マルチプロバイダ) |
${SKILL_DIR}/scripts/svg_quality_checker.py | SVG 品質チェック |
${SKILL_DIR}/scripts/total_md_split.py | スピーカーノート分割 |
${SKILL_DIR}/scripts/finalize_svg.py | SVG 後処理(統一エントリ) |
${SKILL_DIR}/scripts/svg_to_pptx.py | PPTX にエクスポート |
${SKILL_DIR}/scripts/update_spec.py | spec_lock.md の色・font_family 変更を生成されたすべての SVG に伝播 |
完全なツールドキュメントについては、${SKILL_DIR}/scripts/README.md を参照してください。
テンプレートインデックス
| インデックス | パス | 用途 |
|---|---|---|
| レイアウトテンプレート | ${SKILL_DIR}/templates/layouts/layouts_index.json | 利用可能なページレイアウトテンプレートをクエリ |
| ビジュアライゼーションテンプレート | ${SKILL_DIR}/templates/charts/charts_index.json | 利用可能なビジュアライゼーション SVG テンプレート(チャート、インフォグラフィック、ダイアグラム、フレームワーク) |
| アイコンライブラリ | ${SKILL_DIR}/templates/icons/ | ${SKILL_DIR}/templates/icons/README.md を参照、ls templates/icons/<library>/ | grep <keyword> でアイコンをオンデマンド検索 |
スタンドアロンワークフロー
| ワークフロー | パス | 用途 |
|---|---|---|
topic-research | workflows/topic-research.md | パイプライン前 — ユーザーがソースファイルなしでトピックのみを提供する場合の Web ソース収集 |
create-template | workflows/create-template.md | スタンドアロンテンプレート作成ワークフロー |
resume-execute | workflows/resume-execute.md | フェーズ B エントリ — 別のセッションで完了したフェーズ A(ステップ1–5)の後、新しいチャットで実行再開(スプリットモード) |
verify-charts | workflows/verify-charts.md | チャート座標キャリブレーション — SVG 生成後、デッキがデータチャートを含む場合に実行 |
customize-animations | workflows/customize-animations.md | オブジェクトレベル PPTX アニメーションカスタマイズ — ユーザーがアニメーション順序・効果・タイミングの調整を明示的に要求する場合のみ実行 |
live-preview | workflows/live-preview.md | ブラウザベースのライブプレビュー — 生成中に自動開始、ユーザーが「live preview」「preview」「看効果」と言及する、またはスライド要素をクリック・選択したい場合にいつでも再開可能 |
ワークフロー
ステップ 1: ソースコンテンツ処理
🚧 GATE: ユーザーがソースマテリアルを提供しました(PDF / DOCX / EPUB / URL / Markdown ファイル / テキスト説明 / 会話コンテンツ — いかなる形式でも受け入れ可能)。
ソースコンテンツがない場合? ユーザーがファイルや実質的な説明なしでトピック名または要件のみを提供する場合、まず
ワークフローを実行し、その製品を入力として返却します。topic-research
ユーザーが Markdown 以外のコンテンツを提供する場合、即座に変換します:
| ユーザーが提供 | コマンド |
|---|---|
| PDF ファイル | python3 ${SKILL_DIR}/scripts/source_to_md/pdf_to_md.py <file> |
| DOCX / Word / Office ドキュメント | python3 ${SKILL_DIR}/scripts/source_to_md/doc_to_md.py <file> |
| XLSX / XLSM / Excel ワークブック | python3 ${SKILL_DIR}/scripts/source_to_md/excel_to_md.py <file> |
| CSV / TSV | プレーンテキストテーブルソースとして直接読み込む |
| PPTX / PowerPoint デッキ | python3 ${SKILL_DIR}/scripts/source_to_md/ppt_to_md.py <file> |
| EPUB / HTML / LaTeX / RST / その他 | python3 ${SKILL_DIR}/scripts/source_to_md/doc_to_md.py <file> |
| Web リンク | python3 ${SKILL_DIR}/scripts/source_to_md/web_to_md.py <URL> |
| WeChat / 高セキュリティサイト | python3 ${SKILL_DIR}/scripts/source_to_md/web_to_md.py <URL>(requirements.txt に含まれる curl_cffi が必要) |
| Markdown | 直接読み込む |
✅ チェックポイント — ソースコンテンツの準備ができたことを確認、ステップ 2 に進みます。
ステップ 2: プロジェクト初期化
🚧 GATE: ステップ1 完了、ソースコンテンツの準備完了(Markdown ファイル、ユーザーが直接提供したテキスト、または会話で説明された要件はすべて有効)。
python3 ${SKILL_DIR}/scripts/project_manager.py init <project_name> --format <format>
フォーマットオプション:ppt169(デフォルト)、ppt43、xhs、story など。完全なフォーマットリストについては、references/canvas-formats.md を参照してください。
ソースコンテンツをインポート(状況に基づいて選択):
| 状況 | アクション |
|---|---|
| ソースファイル(PDF/MD など)がある | python3 ${SKILL_DIR}/scripts/project_manager.py import-sources <project_path> <source_files...> --move |
| ユーザーが会話内で直接テキストを提供 | インポート不要 — コンテンツは既に会話コンテキストに含まれています。その後のステップで直接参照できます |
⚠️
--moveを使用する必須(コピーではなく):すべてのソースファイル — ステップ1で生成された Markdown、元の PDF / MD / 画像 — はsources/にimport-sources --moveで移動します。実行後、元の場所には存在しなくなります。中間成果物(例:_files/)は自動的に処理されます。
✅ チェックポイント — プロジェクト構造が正常に作成されたことを確認、sources/ にすべてのソースファイルが含まれ、変換されたマテリアルの準備ができています。ステップ 3 に進みます。
ステップ 3: テンプレートオプション
🚧 GATE: ステップ2 完了、プロジェクトディレクトリ構造の準備完了。
デフォルト — 自由設計。 ステップ4に直進してください。layouts_index.json をクエリしないでください。ユーザーに尋ねないでください。コンテンツ、スラグのような単語、または曖昧なスタイル説明に基づいて、事前にテンプレートを提案・ヒント・ファジーマッチングしないでください。
テンプレートフロー トリガーは明示的なテンプレートディレクトリパスのみで発動(ユーザーの最初のメッセージで供給)。トリガールールは機械的であり、解釈的ではありません:
| ユーザー入力に含まれる内容 | ステップ 3 アクション |
|---|---|
テンプレートディレクトリへの明示的なパス(例:skills/ppt-master/templates/layouts/academic_defense/、projects/foo/template/ またはその他の絶対・相対パスで、design_spec.md と1つ以上のページ SVG を含むディレクトリに解決) | そのディレクトリの SVG + design_spec.md + アセットをプロジェクトにコピー、進行 |
| その他すべて — テンプレート名なし(「用 academic_defense 模板」)、スタイル説明(「麦肯锡风格」/ 「Google style」)、ブランド言及(「招商银行风格」)、曖昧な意図(「想用个模板」)、または沈黙を含む | ステップ 3 をスキップ、自由設計 |
スラグマッチング、名前検索、ファジー解決はありません。パスなしのテンプレート名はトリガーになりません — ユーザーが AI が cd できるパスを指定する必要があります。
パスはどこにでも存在することができます — skills/ppt-master/templates/layouts/<name>/(組み込みライブラリ)、projects/<other_project>/template/(以前のプロジェクトのテンプレートを再利用)、またはその他の場所。場所は無関係です。重要なのはユーザーがパスを指定したかどうかです。
TEMPLATE_DIR=<user-supplied path>
cp ${TEMPLATE_DIR}/*.svg <project_path>/templates/
cp ${TEMPLATE_DIR}/design_spec.md <project_path>/templates/
cp ${TEMPLATE_DIR}/*.png <project_path>/images/ 2>/dev/null || true
cp ${TEMPLATE_DIR}/*.jpg <project_path>/images/ 2>/dev/null || true
スタイル説明(「麦肯锡风格」/ 「Keynote 风」/ 「極簡風」等)はステップ3をトリガーしません。これらはStrategistの8つの確認の一部としてユーザー入力に自然に組み込まれます — Strategistは確認 e と g でスタイル提案を提案する際にこれらをスタイルブリーフとして使用します。
テンプレート名なし(「academic_defense」、「招商银行」)は、ライブラリにそのフォルダが存在していても、ステップ3をトリガーしません。ユーザーはパスを指定する必要があります。AI が「親切に」名前をパスに解決してはいけません。
「どんなテンプレートが存在しますか?」はバンド外の Q&A です —
layouts_index.jsonのエントリをそれらのパスと共にリストアップして回答してください。リストアップだけではパイプラインを進めません。ユーザーはステップ3トリガーするため、パスを送信する必要があります。
新しいテンプレートを作成するには、
workflows/create-template.mdを読んでください。
✅ チェックポイント — デフォルトパスはユーザーインタラクションなしでステップ 4 に進みます。ユーザーの入力に明示的なテンプレートディレクトリパスが含まれている場合、そのディレクトリは進行前にコピーされます。
ステップ 4: Strategist フェーズ(必須 — スキップ不可)
🚧 GATE: ステップ3 完了、デフォルト自由設計パスを取得、または(トリガーされた場合)テンプレートファイルをプロジェクトにコピー。
まずロール定義を読みます:
Read references/strategist.md
⚠️ 必須ゲート:
design_spec.mdを書く前に、Strategist はread_file templates/design_spec_reference.mdを実行し、その完全な I–XI セクション構造に従う必要があります。strategist.mdセクション1を参照。
8つの確認(完全なテンプレート:templates/design_spec_reference.md):
⛔ BLOCKING: 8つの確認を1つのバンドルされた推奨セットとして提示し、デザイン仕様とコンテンツアウトラインを出力する前に、明示的なユーザー確認または変更を待ちます。これが唯一のコア確認ポイントです — 確認されたら、その後のすべてのステップが自動的に進みます。
- キャンバスフォーマット
- ページ数範囲
- ターゲットオーディエンス
- スタイル目標
- カラースキーム
- アイコン使用アプローチ
- タイポグラフィ計画
- 画像使用アプローチ
必須 — スプリットモードノート(9番目の確認ではない):8つの確認詳細をリストアップした後、生成モードに関する正確に1行の短い行(ユーザーの言語でレンダリング、💡 プレフィックス)を追加する必要があります。フェーズ A シグナルの定性的な読みで変数を選択します — 推奨ページ数、ソースマテリアルの量、topic-research が実質的な Web 取得蓄積で実行されたかどうか:
| シグナル読み | 行コンテンツ |
|---|---|
| ヘビー(ページ数が長い / ソースが大量 / Web 取得蓄積が多い) | 推定ページ数と大きなソースサイズを記述、ステップ5後に スプリットモード への切り替えを推奨 — このチャットを停止し、新しいウィンドウを開いて 継续生成 projects/<project_name> を入力してフェーズ B(SVG 生成+エクスポート)に入る、応答または「続行」なし = デフォルト連続モード。 |
| 通常(デフォルト) | スケールは中等度、デフォルト連続モードで1回で生成、ウィンドウの途中切り替えが必要な場合、ステップ5後に 继续生成 projects/<project_name> を入力してスプリットモード resume-execute に切り替え可能。 |
この行は必須出力です — ユーザーは常にモード選択が存在することを確認する必要があります。それに対応するかどうかはユーザーの判断です。
ユーザーが画像を提供した場合、デザイン仕様を出力する前に分析を実行します:
python3 ${SKILL_DIR}/scripts/analyze_images.py <project_path>/images
⚠️ 画像処理:イメージファイル(
.jpg、.pngなど)を直接読む・開く・表示してはいけません。すべての画像情報はanalyze_images.py出力またはデザイン仕様の Image Resource List から取得します。
出力:
<project_path>/design_spec.md— 人間が読むデザイン叙述<project_path>/spec_lock.md— マシンが読む実行契約(スケルトン:templates/spec_lock_reference.md);Executor はページごとに再読み込みします
✅ チェックポイント — フェーズ成果物完了、次のステップに自動進行:
## ✅ Strategist フェーズ完了
- [x] 8つの確認完了(ユーザー確認)
- [x] スプリットモードノートを8つの項目下に追記(重または通常の変数)
- [x] デザイン仕様とコンテンツアウトラインが生成されました
- [x] 実行ロック(spec_lock.md)が生成されました
- [ ] **次**:[Image_Generator / Executor] フェーズに自動進行
ステップ 5: 画像取得フェーズ(条件付き)
🚧 GATE: ステップ4 完了、デザイン仕様とコンテンツアウトラインが生成され、ユーザーが確認。
トリガー: リソースリストの少なくとも1行が
Acquire Via: aiおよび/またはAcquire Via: webを持つ場合。すべての行がuserまたはplaceholderの場合、ステップ6 にスキップします。
常に共通フレームワークをロード:
Read references/image-base.md
次に、実際にそれを必要とする各行に対して、パス固有の参照を遅延ロード:
| Acquire Via | ロード参照(そのような行が存在する場合のみ) | 実行 |
|---|---|---|
ai | references/image-generator.md | python3 ${SKILL_DIR}/scripts/image_gen.py --manifest <project_path>/images/image_prompts.json |
web | references/image-searcher.md | python3 ${SKILL_DIR}/scripts/image_search.py ... |
user / placeholder | (スキップ) | (スキップ) |
ai 行のみのデッキは image-searcher.md をロードしません。web 行のみのデッキは image-generator.md をロードしません。混合デッキは両方をロードし、各行を独自のパスで処理し、image_prompts.json と image_sources.json を書き込みます。
⚠️ パイプライン内の ai パスはマニフェストモードを使用する必須 —
ai行が1つだけ存在する場合でも。最初にimages/image_prompts.jsonを書き込み、次にimage_gen.py --manifestを実行し、次にimage_gen.py --render-mdを実行してimage_prompts.mdサイドカーを生成します。位置指定フォーム(image_gen.py "prompt" ...)はパイプライン外の1回限りのテスト・単一画像修正用に予約 — マニフェストとサイドカーをスキップし、監査証跡が残りません。
ワークフロー:
- デザイン仕様から
Status: PendingかつAcquire Via ∈ {ai, web}のすべての行を抽出 image-base.md§2 ディスパッチテーブルに従って、ai 行用のプロンプト生成および/または web 行用の検索実行- すべての行が端末ステータスに到達することを確認:
Generated(ai 成功)、Sourced(web 成功)、またはNeeds-Manual
✅ チェックポイント — すべての行に対して取得が試みられたことを確認:
## ✅ 画像取得フェーズ完了
- [x] image_prompts.json 作成(ai 行処理時)
- [x] image_prompts.md サイドカー レンダリング(ai 行処理時)
- [x] image_sources.json 作成(web 行処理時)
- [x] 各行:ステータスは `Generated` / `Sourced` / `Needs-Manual`(`Pending` なし)
デフォルト — ステップ 6 に自動進行。 ユーザーのステップ4応答がスプリットモードを明示的にオプトインした場合のみ、以下のフェーズ A ハンドオフを出力して、このチャットを停止:
## ✅ フェーズ A 完了
- [x] 仕様:`design_spec.md`、`spec_lock.md`
- [x] リソース:`sources/`、`images/`、`templates/`
- [ ] **次**:新しいチャットウィンドウを開いて `继续生成 projects/<project_name>` を入力してフェーズ B に入る、[`resume-execute`](workflows/resume-execute.md) ワークフロー経由。
取得失敗時は停止しないでください —
image-base.md§5 の失敗処理ルールに従います:1回再試行し、次に行をNeeds-Manualにマーク、ユーザーに報告、チェックポイント上記に続行。
ステップ 6: Executor フェーズ
🚧 GATE: ステップ4(ステップ5 がトリガーされた場合)完了;すべての前提条件となる成果物の準備完了。
選択されたスタイルに基づいてロール定義を読みます:
Read references/executor-base.md # 必須:共通ガイドライン
Read references/shared-standards.md # 必須:SVG/PPT 技術制約
Read references/executor-general.md # 一般的な柔軟なスタイル
Read references/executor-consultant.md # コンサルティングスタイル
Read references/executor-consultant-top.md # トップコンサルティングスタイル(MBB レベル)
Executor-base + shared-standards + 1つのスタイルファイルのみを読んでください。
デザインパラメータ確認(必須): 最初の SVG の前に、仕様からキーデザインパラメータ(キャンバス寸法、カラースキーム、フォント計画、本文フォントサイズ)を出力します。executor-base.md §2 を参照。
ライブプレビュー自動スタートアップ(必須): 最初の SVG の前に、ブラウザエディタをライブモードで自動開始し、Executor + ステップ7エクスポート全体を通して継続実行:
python3 ${SKILL_DIR}/scripts/svg_editor/server.py <project_path> --live
- Executor の開始時にすぐに開始、
svg_output/は空でも構いません。エディタはhttp://localhost:5050で開き、ポート競合 →--port <other>で実際の URL を報告します。 - 長時間実行されるサイドプロセス・セッションとして実行、SVG ページの生成を開始する前に終了を待たないでください。スタートアップ後、ユーザー確認を待たないでください。
- サービスは以下のいずれかまで実行を続ける必要があります:(a) ユーザーがブラウザの Exit preview をクリック、または (b) ユーザーがチャットで明示的に停止を要求。生成はエディタを閉じた場合でも続行します。
- 生成中に送信された注釈を読んだり適用しないでください。 ユーザーはいつでも注釈を付けることができますが、Executor はそれらに触れずに続行します。注釈を適用するウィンドウはステップ7完了後に開きます —
を参照。workflows/live-preview.md - UI ボタンのセマンティクスとエディタの詳細:
ノートを参照。workflows/live-preview.md
生成前バッチ読み込み(必須): 最初の SVG の前に、spec_lock.page_layouts で参照される各個別レイアウト SVG と spec_lock.page_charts で参照される各個別チャート SVG(§VII バックアップチャート含む)をバッチ読み込みします。ファイルごとに1回読み込み、ページ生成中は再読み込みしません。executor-base.md §1.0 を参照。
ページごとの spec_lock 再読み込み(必須): SVG ページを生成する前に、read_file <project_path>/spec_lock.md を実行し、その色・フォント・アイコン・画像のみを使用、プラス、ページごとの page_rhythm / page_layouts / page_charts ルックアップ(上記のバッチ読み込みで既に読み込まれたテンプレート SVG に解決)。長いデッキのコンテキスト圧縮ドリフトに抵抗します。executor-base.md §2.1 を参照。
⚠️ メインエージェントのみ: SVG 生成は現在のメインエージェント内にとどまる必要があります — ページデザインは完全な上流コンテキストに依存します。ページ SVG 生成をサブエージェントに委譲しないでください。 ⚠️ 生成リズム: ページを順序通りに、1ページずつ、同じ連続コンテキストで生成。バッチ化(例:一度に5ページ)しないでください。
ビジュアル構成フェーズ: SVG ページを順序通りに、1ページずつ、1つの連続パスで生成 → <project_path>/svg_output/
品質チェックゲート(必須) — すべての SVG の後、注釈処理とスピーカーノート前:
python3 ${SKILL_DIR}/scripts/svg_quality_checker.py <project_path>
- すべての
error(禁止 SVG 機能、viewBox ミスマッチ、spec_lock ドリフトなど)は進行する前に修正されなければなりません — ビジュアル構成に戻り、そのページを再生成、チェックを再実行します。 warningエントリ(低解像度画像、PPT 非対応フォントテール、等):簡潔な場合は修正、そうでなければ了解して解放。finalize_svg.pyの後ではなくsvg_output/に対して実行 — finalize は SVG を書き直し違反をマスクします。
ロジック構成フェーズ: スピーカーノート生成 → <project_path>/notes/total.md
✅ チェックポイント — すべての SVG とノートが完全に生成・品質チェックされたことを確認。ステップ7後処理に直進:
## ✅ Executor フェーズ完了
- [x] ライブプレビューが開始され、報告された URL で利用可能に保持
- [x] すべての SVG が svg_output/ に生成
- [x] svg_quality_checker.py が合格(エラー 0)
- [x] スピーカーノートが notes/total.md に生成
チャートページ? このデッキがデータチャート(棒・折れ線・円・レーダー等)を含む場合、ステップ7前にスタンドアロン
ワークフローを実行して座標をキャリブレーション。AI モデルはデータをピクセル位置にマップする際に定期的に 10–50 px のエラーを導入します;verify-charts はそのクラスのエラーを排除します。チャートページがない場合はスキップ。verify-charts
ステップ 7: 後処理・エクスポート
🚧 GATE: ステップ6 完了;すべての SVG が svg_output/ に生成;スピーカーノート notes/total.md が生成。
🚧 画像準備 GATE(ステップ5 が Needs-Manual の ai 行を残した場合):すべての期待されるファイルは 7.1 実行の前に project/images/<filename> に存在する必要があります。
ファイルが不足している場合:一時停止、不足しているファイル名をリスト、ユーザーを
images/image_prompts.md(各### Image N:ブロックは ChatGPT / Gemini / Midjourney 用にペースト可能。image_prompts.jsonから自動生成)と必須の配置project/images/<filename>に指摘。すべての期待されるファイルが配置された後のみ、ステップ 7.1 を再開。finalize_svg.pyとsvg_to_pptx.pyはこのレイアーでファイル不在を検出しません — ギャップで進行すると、壊れた画像参照を持つデッキが生成されます。
⚠️ 3つのサブステップを1つずつ実行 — 各ステップは次のステップの前に正常に完了する必要があります。 ❌ 決して単一のコードブロックまたはシェル呼び出しに組み合わせてください。
標準的な3つのコマンドパイプライン(references/shared-standards.md §5 を反映):
ステップ 7.1 — スピーカーノート分割:
python3 ${SKILL_DIR}/scripts/total_md_split.py <project_path>
ステップ 7.2 — SVG 後処理(アイコン埋め込み・画像クロップ埋め込み・テキスト平坦化・丸矩形をパスに変換):
python3 ${SKILL_DIR}/scripts/finalize_svg.py <project_path>
ステップ 7.3 — PPTX エクスポート(デフォルトでスピーカーノートを埋め込み):
python3 ${SKILL_DIR}/scripts/svg_to_pptx.py <project_path>
# 出力:
# exports/<project_name>_<timestamp>.pptx ← メインネイティブ pptx(svg_output/ から読み込み、高忠実度)
# backup/<timestamp>/<project_name>_svg.pptx ← SVG プレビュー pptx(svg_final/ から読み込み)
# backup/<timestamp>/svg_output/ ← Executor SVG ソースバックアップ
2つの製品は意図的に異なるソースから読み込みます:ネイティブ pptx は
svg_output/から読み込むため、コンバーター が高忠実度プリミティブ(アイコン<use>プレースホルダ、画像preserveAspectRatio→srcRect、丸矩形rx/ry→prstGeom roundRect)を保持できます。レガシー・プレビュー pptx はsvg_final/から読み込みます。なぜなら PowerPoint の内部 SVG パーサーはこれらのプリミティブを処理できません。単一ソース動作が必要な場合、-s outputまたは-s finalを渡して、両製品上で1つのソースを強制します。
オプションアニメーションフラグ(デフォルトは既にリッチな入場アニメーションを有効にしています — ユーザーが別のものを要求する場合のみ調整):
-t <effect>— ページトランジション。デフォルトfade。オプション:fade/push/wipe/split/strips/cover/random/none。-a <effect>— 要素ごと入場アニメーション。デフォルトmixed(デッキ全体で自動変更)。noneを渡すと無効化、または特定の効果を選択(例:fade)。トップレベル<g id="...">グループ(Executor で既に必須)が必要。--animation-trigger {on-click,with-previous,after-previous}— 開始モード(PowerPoint のアニメーションペーン開始ドロップダウンに対応)。デフォルトafter-previous(クリックフリーカスケード;--animation-staggerでペーシング)。プレゼンターペーシング表示にはon-clickを使用、またはすべて一度にwith-previousを使用。--animation-config <path>— オプションのオブジェクトレベルサイドカー。デフォルト:存在する場合は<project_path>/animations.json。--auto-advance <seconds>— キオスク風自動再生。
オプションカスタムアニメーション(ユーザーが特定のオブジェクトのアニメーション順序・効果・タイミングを調整するよう要求する場合のみ):
スタンドアロン
ワークフローを実行。デフォルトエクスポートは既に グローバル入場アニメーション を持っています。オブジェクトレベルカスタマイズが要求されない限り、customize-animationsanimations.jsonを作成しないでください。
オプション録音ナレーション(ユーザーがナレーション・ビデオエクスポートを要求する場合のみ):
スタンドアロン
ワークフローを実行。AI がナレーションバックエンド(デフォルトgenerate-audioedge、または ElevenLabs / MiniMax / Qwen / CosyVoice などの設定クラウドプロバイダを高品質またはクローンボイス用に選択)を選択、ユーザーに1回尋ねます(バックエンド+ボイス+レート・設定、すべて推奨値付き)、次にnotes_to_audio.pyを実行し、選択した場合--recorded-narration audioで PPTX を再エクスポート。
ワークフローを通さずに直接
notes_to_audio.pyを呼び出さないでください —--voice/--voice-idは必須であり、ワークフローが選択を意味のあるものにする ロケール・プロバイダ対応の推奨を生成します。
完全な効果リスト、アンカーロジック、制限:
。references/animations.md
❌ 決して
finalize_svg.pyにcpを代替しないでください — finalize は複数の重大な処理ステップを実行します ❌ 決して レガシー・プレビュー pptx に-s outputを強制しないでください(PowerPoint の内部 SVG パーサーがアイコンと丸矩形を削除)。デフォルト自動分割は既にネイティブに高忠実度ソースを与えます。 ❌ 決して--onlyを使用しないでください(1つの出力ファイルを抑制)
エクスポート後の注釈ウィンドウ:ステップ6 のプレビューサービスは通常、エクスポート後も実行を継続します。ユーザーがブラウザで注釈を送信(Executor 中または後)し、今ではそれらを適用するよう要求 — ブラウザプロンプトを引用できます(「注釈が保存されました。...注釈を適用」)、「apply my annotations」/ 「应用注解」 / 同等物を言う —
ステップ2を実行して適用し、再エクスポート。生成中に送信された注釈もここで処理されます。live-preview
プレビューが実行されていない? ユーザーが「live preview」「preview」「看效果」と言及するか、スライド要素を選択・クリックしたいが、サービスが実行されていない場合:
ステップ1を実行して開始。サービスが既に実行されている場合、URL を指すだけで — 再開始しないでください。live-preview
ロール切り替えプロトコル
ロールを切り替える前に、対応する参照ファイルを必ず読んでください。出力マーカー:
## [ロール切り替え:<ロール名>]
📖 ロール定義を読み込み中:references/<filename>.md
📋 現在のタスク:<簡潔な説明>
参照リソース
| リソース | パス |
|---|---|
| 共有技術制約 | references/shared-standards.md |
| キャンバスフォーマット仕様 | references/canvas-formats.md |
| 画像テキストレイアウトパターン(デザイン語彙 — 配置、オーバーレイ、画像としてのキャンバス、複数画像、特殊技法) | references/image-layout-patterns.md |
| 画像レイアウトサイジング(横並び容器寸法の数学) | references/image-layout-spec.md |
| SVG 画像埋め込み | references/svg-image-embedding.md |
| アイコンライブラリ | templates/icons/README.md |
ノート
- ローカルプレビュー:
python3 -m http.server -d <project_path>/svg_final 8000 - トラブルシューティング:生成問題(レイアウトオーバーフロー、エクスポートエラー、白い画像など)について、
docs/faq.mdで既知の解決策を確認してください
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- hugohe3
- リポジトリ
- hugohe3/ppt-master
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/hugohe3/ppt-master / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。