Agent skill
pptx
プレゼンテーション作成、編集、分析。推奨:プロフェッショナルなデザインの一貫性を保つため、プレゼンテーション作成時は常に既存のテンプレートを使用してください。サポート:(1) テンプレートベースの作成(推奨)、(2) スクラッチからの作成(テンプレートが利用できない場合)、(3) 既存プレゼンテーションの修正、(4) コメントやスピーカーノートの追加
Install this agent skill to your Project
npx add-skill https://github.com/Takaaki-Yokoyama/skills/tree/main/pptx
SKILL.md
PPTXの作成、編集、分析
概要
ユーザーは.pptxファイルの内容を作成、編集、または分析するように依頼することがあります。.pptxファイルは本質的に、読み取りまたは編集可能なXMLファイルやその他のリソースを含むZIPアーカイブです。異なるタスクには異なるツールとワークフローが利用できます。
推奨ワークフロー:プレゼンテーションを作成する際は、常に既存のテンプレートを出発点として使用することを優先してください。これにより、プロフェッショナルなデザインの一貫性、適切なブランディングが確保され、大幅な時間の節約になります。適切なテンプレートが存在しない場合のみ、スクラッチから作成してください。
コンテンツの読み取りと分析
テキスト抽出
プレゼンテーションのテキストコンテンツを読み取るだけの場合は、ドキュメントをMarkdownに変換してください:
# ドキュメントをMarkdownに変換
python -m markitdown path-to-file.pptx
生XMLへのアクセス
次の場合に生XMLアクセスが必要です:コメント、スピーカーノート、スライドレイアウト、アニメーション、デザイン要素、複雑な書式設定。これらの機能のいずれかを扱う場合は、プレゼンテーションを展開して生のXMLコンテンツを読み取る必要があります。
ファイルの展開
python ooxml/scripts/unpack.py <office_file> <output_dir>
注意: unpack.pyスクリプトはプロジェクトルートから相対的にskills/pptx/ooxml/scripts/unpack.pyにあります。このパスにスクリプトが存在しない場合は、find . -name "unpack.py"を使用して場所を特定してください。
主要なファイル構造
ppt/presentation.xml- メインのプレゼンテーションメタデータとスライド参照ppt/slides/slide{N}.xml- 個別のスライドコンテンツ(slide1.xml、slide2.xmlなど)ppt/notesSlides/notesSlide{N}.xml- 各スライドのスピーカーノートppt/comments/modernComment_*.xml- 特定スライドのコメントppt/slideLayouts/- スライドのレイアウトテンプレートppt/slideMasters/- マスタースライドテンプレートppt/theme/- テーマとスタイル情報ppt/media/- 画像やその他のメディアファイル
タイポグラフィと色の抽出
模倣すべきデザイン例が与えられた場合:まず以下の方法を使用してプレゼンテーションのタイポグラフィと色を分析してください:
- テーマファイルを読む:色(
<a:clrScheme>)とフォント(<a:fontScheme>)についてppt/theme/theme1.xmlを確認 - サンプルスライドコンテンツ:実際のフォント使用(
<a:rPr>)と色についてppt/slides/slide1.xmlを調査 - パターンを検索:grepを使用してすべてのXMLファイルから色(
<a:solidFill>、<a:srgbClr>)とフォント参照を検索
テンプレートを使用した新しいPowerPointプレゼンテーションの作成(推奨)
テンプレートを使用する理由:テンプレートはプロフェッショナルなデザインの一貫性、確立されたブランディング、実証済みのレイアウトを提供し、作成時間を大幅に短縮します。常にスクラッチからの作成よりもテンプレートを優先してください。
既存のテンプレートのデザインに従ったプレゼンテーションを作成する必要がある場合は、テンプレートスライドを複製して再配置し、その後プレースホルダーのコンテキストを置き換える必要があります。
ワークフロー
-
テンプレートテキストの抽出とビジュアルサムネイルグリッドの作成:
- テキスト抽出:
python -m markitdown template.pptx > template-content.md template-content.mdを読む: テンプレートプレゼンテーションの内容を理解するためにファイル全体を読んでください。このファイルを読む際に範囲制限を設定しないでください。- サムネイルグリッドの作成:
python scripts/thumbnail.py template.pptx - 詳細はサムネイルグリッドの作成セクションを参照
- テキスト抽出:
-
テンプレートの分析とインベントリをファイルに保存:
- ビジュアル分析: サムネイルグリッドを確認してスライドレイアウト、デザインパターン、視覚構造を理解
template-inventory.mdにテンプレートインベントリファイルを作成・保存:markdown# テンプレートインベントリ分析 **総スライド数: [count]** **重要: スライドは0からインデックス化されています(最初のスライド = 0、最後のスライド = count-1)** ## [カテゴリ名] - Slide 0: [利用可能な場合はレイアウトコード] - 説明/目的 - Slide 1: [レイアウトコード] - 説明/目的 - Slide 2: [レイアウトコード] - 説明/目的 [... すべてのスライドをインデックスと共に個別にリストする必要があります ...]- サムネイルグリッドの使用: ビジュアルサムネイルを参照して以下を特定:
- レイアウトパターン(タイトルスライド、コンテンツレイアウト、セクション区切り)
- 画像プレースホルダーの場所と数
- スライドグループ間のデザインの一貫性
- 視覚的な階層と構造
- このインベントリファイルは次のステップで適切なテンプレートを選択するために必須です
-
テンプレートインベントリに基づいてプレゼンテーションアウトラインを作成:
- ステップ2の利用可能なテンプレートを確認
- 最初のスライドには導入またはタイトルテンプレートを選択。これは最初のテンプレートの1つである必要があります
- 他のスライドには安全なテキストベースのレイアウトを選択
- 重要: レイアウト構造を実際のコンテンツに合わせる:
- シングルカラムレイアウト: 統一されたナラティブまたは単一トピックに使用
- ツーカラムレイアウト: 正確に2つの異なる項目/概念がある場合のみ使用
- スリーカラムレイアウト: 正確に3つの異なる項目/概念がある場合のみ使用
- 画像+テキストレイアウト: 実際に挿入する画像がある場合のみ使用
- 引用レイアウト: 人物からの実際の引用(出典付き)の場合のみ使用、強調目的では使用しない
- コンテンツよりも多くのプレースホルダーがあるレイアウトは使用しない
- 2つの項目がある場合、3カラムレイアウトに無理やり当てはめない
- 4つ以上の項目がある場合、複数のスライドに分けるかリスト形式の使用を検討
- レイアウトを選択する前に実際のコンテンツピースを数える
- 選択したレイアウトの各プレースホルダーが意味のあるコンテンツで埋められることを確認
- 各コンテンツセクションに最適なレイアウトを表す1つのオプションを選択
- 利用可能なデザインを活用するコンテンツとテンプレートマッピングを含む
outline.mdを保存 - テンプレートマッピングの例:
# 使用するテンプレートスライド(0ベースのインデックス) # 警告: インデックスが範囲内であることを確認!73スライドのテンプレートはインデックス0-72です # マッピング: アウトラインからのスライド番号 -> テンプレートスライドインデックス template_mapping = [ 0, # スライド0を使用(タイトル/カバー) 34, # スライド34を使用(B1: タイトルと本文) 34, # スライド34を再度使用(2番目のB1用に複製) 50, # スライド50を使用(E1: 引用) 54, # スライド54を使用(F2: 締め + テキスト) ]
-
rearrange.pyを使用してスライドを複製、並べ替え、削除:scripts/rearrange.pyスクリプトを使用して、希望する順序でスライドを含む新しいプレゼンテーションを作成:bashpython scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52- スクリプトは繰り返されるスライドの複製、未使用スライドの削除、並べ替えを自動的に処理
- スライドインデックスは0ベース(最初のスライドは0、2番目は1など)
- 同じスライドインデックスを複数回表示してそのスライドを複製可能
-
inventory.pyスクリプトを使用してすべてのテキストを抽出:-
インベントリ抽出の実行:
bashpython scripts/inventory.py working.pptx text-inventory.json -
text-inventory.jsonを読む: すべてのシェイプとそのプロパティを理解するために、text-inventory.jsonファイル全体を読んでください。このファイルを読む際に範囲制限を設定しないでください。
-
インベントリJSONの構造:
json{ "slide-0": { "shape-0": { "placeholder_type": "TITLE", // またはプレースホルダーでない場合はnull "left": 1.5, // インチ単位の位置 "top": 2.0, "width": 7.5, "height": 1.2, "paragraphs": [ { "text": "段落テキスト", // オプションプロパティ(デフォルト以外の場合のみ含まれる): "bullet": true, // 明示的な箇条書きが検出された "level": 0, // bulletがtrueの場合のみ含まれる "alignment": "CENTER", // CENTER、RIGHT(LEFTではない) "space_before": 10.0, // 段落前のスペース(ポイント単位) "space_after": 6.0, // 段落後のスペース(ポイント単位) "line_spacing": 22.4, // 行間(ポイント単位) "font_name": "Arial", // 最初の実行から "font_size": 14.0, // ポイント単位 "bold": true, "italic": false, "underline": false, "color": "FF0000" // RGB色 } ] } } } -
主な機能:
- スライド: "slide-0"、"slide-1"などと命名
- シェイプ: 視覚的位置順(上から下、左から右)に"shape-0"、"shape-1"などと命名
- プレースホルダータイプ: TITLE、CENTER_TITLE、SUBTITLE、BODY、OBJECT、またはnull
- デフォルトフォントサイズ: レイアウトプレースホルダーから抽出された
default_font_size(ポイント単位、利用可能な場合) - スライド番号はフィルタリング: SLIDE_NUMBERプレースホルダータイプのシェイプは自動的にインベントリから除外
- 箇条書き:
bullet: trueの場合、levelは常に含まれる(0の場合でも) - 間隔:
space_before、space_after、line_spacingはポイント単位(設定されている場合のみ含まれる) - 色: RGBの場合は
color(例:"FF0000")、テーマカラーの場合はtheme_color(例:"DARK_1") - プロパティ: デフォルト以外の値のみが出力に含まれる
-
-
置換テキストを生成してJSONファイルにデータを保存 前のステップのテキストインベントリに基づいて:
- 重要: まずインベントリに存在するシェイプを確認 - 実際に存在するシェイプのみを参照
- 検証: replace.pyスクリプトは置換JSON内のすべてのシェイプがインベントリに存在することを検証
- 存在しないシェイプを参照すると、利用可能なシェイプを示すエラーが表示される
- 存在しないスライドを参照すると、スライドが存在しないことを示すエラーが表示される
- すべての検証エラーはスクリプト終了前に一度に表示される
- 重要: replace.pyスクリプトは内部でinventory.pyを使用してすべてのテキストシェイプを識別
- 自動クリア: "paragraphs"を提供しない限り、インベントリからのすべてのテキストシェイプがクリアされる
- コンテンツが必要なシェイプに"paragraphs"フィールドを追加("replacement_paragraphs"ではない)
- 置換JSONに"paragraphs"がないシェイプのテキストは自動的にクリアされる
- 箇条書きを含む段落は自動的に左揃えされます。
"bullet": trueの場合、alignmentプロパティを設定しないでください - プレースホルダーテキストの適切な置換コンテンツを生成
- シェイプサイズを使用して適切なコンテンツの長さを決定
- 重要: 元のインベントリから段落プロパティを含める - テキストだけを提供しない
- 重要: bullet: trueの場合、テキストに箇条書き記号(•、-、*)を含めない - 自動的に追加される
- 必須の書式設定ルール:
- ヘッダー/タイトルは通常
"bold": trueを持つべき - リスト項目は
"bullet": true, "level": 0を持つべき(bulletがtrueの場合、levelは必須) - 配置プロパティを保持(例:センタリングされたテキストの場合
"alignment": "CENTER") - デフォルトと異なる場合はフォントプロパティを含める(例:
"font_size": 14.0、"font_name": "Lora") - 色: RGBの場合は
"color": "FF0000"、テーマカラーの場合は"theme_color": "DARK_1"を使用 - 置換スクリプトは適切にフォーマットされた段落を期待、単なるテキスト文字列ではない
- 重複するシェイプ: より大きなdefault_font_sizeまたはより適切なplaceholder_typeを持つシェイプを優先
- ヘッダー/タイトルは通常
- 置換を含む更新されたインベントリを
replacement-text.jsonに保存 - 警告: 異なるテンプレートレイアウトには異なるシェイプ数がある - 置換を作成する前に必ず実際のインベントリを確認
適切な書式設定を示すparagraphsフィールドの例:
json"paragraphs": [ { "text": "新しいプレゼンテーションタイトルテキスト", "alignment": "CENTER", "bold": true }, { "text": "セクションヘッダー", "bold": true }, { "text": "箇条書き記号なしの最初の箇条書きポイント", "bullet": true, "level": 0 }, { "text": "赤色のテキスト", "color": "FF0000" }, { "text": "テーマカラーのテキスト", "theme_color": "DARK_1" }, { "text": "特別な書式設定なしの通常の段落テキスト" } ]置換JSONにリストされていないシェイプは自動的にクリアされる:
json{ "slide-0": { "shape-0": { "paragraphs": [...] // このシェイプは新しいテキストを取得 } // インベントリのshape-1とshape-2は自動的にクリアされる } }プレゼンテーションの一般的な書式設定パターン:
- タイトルスライド: 太字テキスト、時々センタリング
- スライド内のセクションヘッダー: 太字テキスト
- 箇条書きリスト: 各項目に
"bullet": true, "level": 0が必要 - 本文テキスト: 通常、特別なプロパティは不要
- 引用: 特別な配置やフォントプロパティを持つ場合がある
-
replace.pyスクリプトを使用して置換を適用bashpython scripts/replace.py working.pptx replacement-text.json output.pptxスクリプトは以下を実行:
- まずinventory.pyの関数を使用してすべてのテキストシェイプのインベントリを抽出
- 置換JSON内のすべてのシェイプがインベントリに存在することを検証
- インベントリで識別されたすべてのシェイプからテキストをクリア
- 置換JSONで"paragraphs"が定義されているシェイプにのみ新しいテキストを適用
- JSONからの段落プロパティを適用して書式を保持
- 箇条書き、配置、フォントプロパティ、色を自動的に処理
- 更新されたプレゼンテーションを保存
検証エラーの例:
ERROR: Invalid shapes in replacement JSON: - Shape 'shape-99' not found on 'slide-0'. Available shapes: shape-0, shape-1, shape-4 - Slide 'slide-999' not found in inventoryERROR: Replacement text made overflow worse in these shapes: - slide-0/shape-2: overflow worsened by 1.25" (was 0.00", now 1.25")
スクラッチから新しいPowerPointプレゼンテーションを作成(テンプレートが利用できない場合のみ使用)
注意: この方法は適切なテンプレートが存在しない場合にのみ使用してください。テンプレートは大幅に高速で、より優れたデザインの一貫性を提供します。
スクラッチから新しいPowerPointプレゼンテーションを作成する場合は、html2pptxワークフローを使用してHTMLスライドを正確な位置でPowerPointに変換します。
デザイン原則
重要: プレゼンテーションを作成する前に、コンテンツを分析し、適切なデザイン要素を選択してください:
- 主題を考慮: このプレゼンテーションは何についてですか?どのようなトーン、業界、または雰囲気を示唆していますか?
- ブランディングを確認: ユーザーが会社/組織に言及している場合は、そのブランドカラーとアイデンティティを考慮
- パレットをコンテンツに合わせる: 主題を反映する色を選択
- アプローチを述べる: コードを書く前にデザインの選択を説明
要件:
- ✅ コードを書く前にコンテンツに基づいたデザインアプローチを述べる
- ✅ Webセーフフォントのみ使用: Arial、Helvetica、Times New Roman、Georgia、Courier New、Verdana、Tahoma、Trebuchet MS、Impact
- ✅ サイズ、太さ、色を通じて明確な視覚的階層を作成
- ✅ 可読性を確保: 強いコントラスト、適切なサイズのテキスト、クリーンな配置
- ✅ 一貫性を保つ: パターン、間隔、視覚言語をスライド全体で繰り返す
カラーパレットの選択
色を創造的に選ぶ:
- デフォルトを超えて考える: この特定のトピックに本当に合う色は何ですか?自動操縦の選択を避ける
- 複数の角度を考慮: トピック、業界、雰囲気、エネルギーレベル、ターゲットオーディエンス、ブランドアイデンティティ(言及されている場合)
- 冒険的に: 予想外の組み合わせを試す - ヘルスケアのプレゼンテーションが緑である必要はなく、金融が紺である必要もない
- パレットを構築: 一緒に機能する3〜5色を選ぶ(主要な色+サポートトーン+アクセント)
- コントラストを確保: テキストは背景上で明確に読める必要がある
カラーパレット例(創造性を刺激するために使用 - 1つを選択、適応、または独自のものを作成):
- クラシックブルー: 深い紺(#1C2833)、スレートグレー(#2E4053)、シルバー(#AAB7B8)、オフホワイト(#F4F6F6)
- ティール&コーラル: ティール(#5EA8A7)、深いティール(#277884)、コーラル(#FE4447)、ホワイト(#FFFFFF)
- ボールドレッド: レッド(#C0392B)、明るい赤(#E74C3C)、オレンジ(#F39C12)、イエロー(#F1C40F)、グリーン(#2ECC71)
- ウォームブラッシュ: モーヴ(#A49393)、ブラッシュ(#EED6D3)、ローズ(#E8B4B8)、クリーム(#FAF7F2)
- バーガンディラグジュアリー: バーガンディ(#5D1D2E)、クリムゾン(#951233)、ラスト(#C15937)、ゴールド(#997929)
- ディープパープル&エメラルド: パープル(#B165FB)、ダークブルー(#181B24)、エメラルド(#40695B)、ホワイト(#FFFFFF)
- クリーム&フォレストグリーン: クリーム(#FFE1C7)、フォレストグリーン(#40695B)、ホワイト(#FCFCFC)
- ピンク&パープル: ピンク(#F8275B)、コーラル(#FF574A)、ローズ(#FF737D)、パープル(#3D2F68)
- ライム&プラム: ライム(#C5DE82)、プラム(#7C3A5F)、コーラル(#FD8C6E)、ブルーグレー(#98ACB5)
- ブラック&ゴールド: ゴールド(#BF9A4A)、ブラック(#000000)、クリーム(#F4F6F6)
- セージ&テラコッタ: セージ(#87A96B)、テラコッタ(#E07A5F)、クリーム(#F4F1DE)、チャコール(#2C2C2C)
- チャコール&レッド: チャコール(#292929)、レッド(#E33737)、ライトグレー(#CCCBCB)
- バイブラントオレンジ: オレンジ(#F96D00)、ライトグレー(#F2F2F2)、チャコール(#222831)
- フォレストグリーン: ブラック(#191A19)、グリーン(#4E9F3D)、ダークグリーン(#1E5128)、ホワイト(#FFFFFF)
- レトロレインボー: パープル(#722880)、ピンク(#D72D51)、オレンジ(#EB5C18)、アンバー(#F08800)、ゴールド(#DEB600)
- ヴィンテージアーシー: マスタード(#E3B448)、セージ(#CBD18F)、フォレストグリーン(#3A6B35)、クリーム(#F4F1DE)
- コースタルローズ: オールドローズ(#AD7670)、ビーバー(#B49886)、エッグシェル(#F3ECDC)、アッシュグレー(#BFD5BE)
- オレンジ&ターコイズ: ライトオレンジ(#FC993E)、グレイッシュターコイズ(#667C6F)、ホワイト(#FCFCFC)
ビジュアル詳細オプション
幾何学的パターン:
- 水平ではなく対角線のセクション区切り
- 非対称的なカラム幅(30/70、40/60、25/75)
- 90°または270°に回転したテキストヘッダー
- 画像用の円形/六角形フレーム
- コーナーの三角形アクセントシェイプ
- 深さのための重なり合うシェイプ
ボーダー&フレーム処理:
- 片側のみの太い単色ボーダー(10-20pt)
- 対照的な色の二重線ボーダー
- フルフレームの代わりにコーナーブラケット
- L字型ボーダー(上+左または下+右)
- ヘッダー下のアンダーラインアクセント(3-5pt太さ)
タイポグラフィ処理:
- 極端なサイズコントラスト(72pt見出し vs 11pt本文)
- ワイドレタースペーシングの全て大文字ヘッダー
- 特大ディスプレイタイプの番号付きセクション
- データ/統計/技術コンテンツ用のモノスペース(Courier New)
- 密集した情報用の凝縮フォント(Arial Narrow)
- 強調のためのアウトラインテキスト
チャート&データスタイリング:
- 主要データのための単一アクセントカラーのモノクロームチャート
- 垂直ではなく水平棒グラフ
- 棒グラフの代わりにドットプロット
- 最小限のグリッドラインまたはなし
- 要素上に直接データラベル(凡例なし)
- 主要指標のための特大数字
レイアウトイノベーション:
- テキストオーバーレイ付きのフルブリード画像
- ナビゲーション/コンテキスト用のサイドバーカラム(20-30%幅)
- モジュラーグリッドシステム(3×3、4×4ブロック)
- ZパターンまたはFパターンのコンテンツフロー
- 色付きシェイプ上のフローティングテキストボックス
- 雑誌スタイルのマルチカラムレイアウト
背景処理:
- スライドの40-60%を占める単色ブロック
- グラデーション塗りつぶし(垂直または対角のみ)
- 分割背景(2色、対角または垂直)
- エッジからエッジまでのカラーバンド
- デザイン要素としてのネガティブスペース
レイアウトのヒント
チャートやテーブルを含むスライドを作成する場合:
- 2カラムレイアウト(推奨): 全幅にまたがるヘッダーを使用し、その下に2つのカラム - 一方のカラムにテキスト/箇条書き、もう一方に特集コンテンツ。これによりバランスが向上し、チャート/テーブルが読みやすくなります。各コンテンツタイプのスペースを最適化するために、不均等なカラム幅(例:40%/60%分割)のflexboxを使用
- 全スライドレイアウト: 特集コンテンツ(チャート/テーブル)がスライド全体を占めて最大の影響と可読性を実現
- 絶対に垂直にスタックしない: 単一カラムでテキストの下にチャート/テーブルを配置しないでください - これは可読性とレイアウトの問題を引き起こします
ワークフロー
- 必須 - ファイル全体を読む:
html2pptx.mdを最初から最後まで完全に読んでください。このファイルを読む際に範囲制限を設定しないでください。 プレゼンテーション作成を進める前に、詳細な構文、重要な書式設定ルール、ベストプラクティスについてファイル全体の内容を読んでください。 - 適切な寸法(例:16:9の場合720pt × 405pt)の各スライド用のHTMLファイルを作成
- すべてのテキストコンテンツに
<p>、<h1>-<h6>、<ul>、<ol>を使用 - チャート/テーブルが追加される領域には
class="placeholder"を使用(視認性のためにグレー背景でレンダリング) - 重要: まずSharpを使用してグラデーションとアイコンをPNG画像としてラスタライズし、その後HTMLで参照
- レイアウト: チャート/テーブル/画像を含むスライドの場合、読みやすさ向上のため全スライドレイアウトまたは2カラムレイアウトを使用
- すべてのテキストコンテンツに
html2pptx.jsライブラリを使用してHTMLスライドをPowerPointに変換し、プレゼンテーションを保存するJavaScriptファイルを作成・実行html2pptx()関数を使用して各HTMLファイルを処理- PptxGenJS APIを使用してプレースホルダー領域にチャートとテーブルを追加
pptx.writeFile()を使用してプレゼンテーションを保存
- 視覚的検証: サムネイルを生成してレイアウトの問題を検査
- サムネイルグリッドを作成:
python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4 - サムネイル画像を読んで以下を注意深く調査:
- テキストの切り取り: ヘッダーバー、シェイプ、またはスライドのエッジによってテキストが切り取られている
- テキストの重なり: テキストが他のテキストやシェイプと重なっている
- 位置の問題: コンテンツがスライド境界や他の要素に近すぎる
- コントラストの問題: テキストと背景間の不十分なコントラスト
- 問題が見つかった場合、HTMLのマージン/間隔/色を調整してプレゼンテーションを再生成
- すべてのスライドが視覚的に正しくなるまで繰り返す
- サムネイルグリッドを作成:
既存のPowerPointプレゼンテーションの編集
既存のPowerPointプレゼンテーション内のスライドを編集する場合、生のOffice Open XML(OOXML)形式で作業する必要があります。これには.pptxファイルの展開、XMLコンテンツの編集、再パックが含まれます。
ワークフロー
- 必須 - ファイル全体を読む:
ooxml.md(約500行)を最初から最後まで完全に読んでください。このファイルを読む際に範囲制限を設定しないでください。 プレゼンテーション編集を行う前に、OOXML構造と編集ワークフローに関する詳細なガイダンスを得るためにファイル全体の内容を読んでください。 - プレゼンテーションを展開:
python ooxml/scripts/unpack.py <office_file> <output_dir> - XMLファイルを編集(主に
ppt/slides/slide{N}.xmlと関連ファイル) - 重要: 各編集後すぐに検証し、続ける前に検証エラーを修正:
python ooxml/scripts/validate.py <dir> --original <file> - 最終プレゼンテーションをパック:
python ooxml/scripts/pack.py <input_directory> <office_file>
サムネイルグリッドの作成
迅速な分析と参照のためにPowerPointスライドのビジュアルサムネイルグリッドを作成するには:
python scripts/thumbnail.py template.pptx [output_prefix]
機能:
- 作成:
thumbnails.jpg(または大きなデッキの場合はthumbnails-1.jpg、thumbnails-2.jpgなど) - デフォルト: 5列、グリッドあたり最大30スライド(5×6)
- カスタムプレフィックス:
python scripts/thumbnail.py template.pptx my-grid- 注意: 特定のディレクトリに出力する場合は、出力プレフィックスにパスを含める必要があります(例:
workspace/my-grid)
- 注意: 特定のディレクトリに出力する場合は、出力プレフィックスにパスを含める必要があります(例:
- 列を調整:
--cols 4(範囲: 3-6、グリッドあたりのスライドに影響) - グリッド制限: 3列 = 12スライド/グリッド、3列 = 20、5列 = 30、6列 = 42
- スライドはゼロインデックス(Slide 0、Slide 1など)
使用例:
- テンプレート分析: スライドレイアウトとデザインパターンを迅速に理解
- コンテンツレビュー: プレゼンテーション全体の視覚的概要
- ナビゲーション参照: 視覚的外観によって特定のスライドを見つける
- 品質チェック: すべてのスライドが適切にフォーマットされていることを確認
例:
# 基本的な使用
python scripts/thumbnail.py presentation.pptx
# オプションを組み合わせ: カスタム名、列
python scripts/thumbnail.py template.pptx analysis --cols 4
スライドを画像に変換
PowerPointスライドを視覚的に分析するために、2ステッププロセスを使用して画像に変換します:
-
PPTXをPDFに変換:
bashsoffice --headless --convert-to pdf template.pptx -
PDFページをJPEG画像に変換:
bashpdftoppm -jpeg -r 150 template.pdf slideこれにより
slide-1.jpg、slide-2.jpgなどのファイルが作成されます。
オプション:
-r 150: 解像度を150 DPIに設定(品質/サイズのバランスを調整)-jpeg: JPEG形式で出力(PNGが好ましい場合は-pngを使用)-f N: 変換する最初のページ(例:-f 2はページ2から開始)-l N: 変換する最後のページ(例:-l 5はページ5で停止)slide: 出力ファイルのプレフィックス
特定範囲の例:
pdftoppm -jpeg -r 150 -f 2 -l 5 template.pdf slide # ページ2-5のみ変換
コードスタイルガイドライン
重要: PPTX操作のコードを生成する場合:
- 簡潔なコードを書く
- 冗長な変数名と不要な操作を避ける
- 不要なprint文を避ける
依存関係
必要な依存関係(既にインストールされているはず):
- markitdown:
pip install "markitdown[pptx]"(プレゼンテーションからのテキスト抽出用) - pptxgenjs:
npm install -g pptxgenjs(html2pptx経由でプレゼンテーションを作成するため) - playwright:
npm install -g playwright(html2pptxでのHTMLレンダリング用) - react-icons:
npm install -g react-icons react react-dom(アイコン用) - sharp:
npm install -g sharp(SVGラスタライズと画像処理用) - LibreOffice:
sudo apt-get install libreoffice(PDF変換用) - Poppler:
sudo apt-get install poppler-utils(PDFを画像に変換するpdftoppm用) - defusedxml:
pip install defusedxml(安全なXML解析用)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
obsidian-vault
Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.
migrate-to-shoehorn
Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.
git-guardrails-claude-code
Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.
scaffold-exercises
Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.
setup-pre-commit
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
edit-article
Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.
Didn't find tool you were looking for?