pptx について
PowerPointプレゼンテーションの作成、編集、分析を案内するスキルです。テキスト抽出、OOXML処理、HTMLからのスライド作成に加え、表示確認の手順も扱います。
主な機能
- 01プレゼンテーションのテキストをMarkdownに抽出
- 02スライドXML、ノート、コメント、レイアウトの確認
- 03HTMLからスライドを作成
- 04OOXMLプレゼンテーションの編集と検証
- 05目視確認用のサムネイル生成
活用シーン
- 01PPTXファイルのテキストを読む
- 02発表者ノートやスライドレイアウトを確認
- 03テンプレートなしでプレゼンテーションを作成
- 04既存プレゼンテーションのスライドを編集
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ netease-youdao/ lobsterai --skill pptxインストール後、Claude Code で/pptxを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
html2pptx.mdLICENSE.txtooxml.mdooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsdopc-coreProperties.xsdopc-digSig.xsdopc-relationships.xsdooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsddml-chartDrawing.xsddml-diagram.xsddml-lockedCanvas.xsddml-main.xsddml-picture.xsddml-spreadsheetDrawing.xsddml-wordprocessingDrawing.xsdpml.xsdshared-additionalCharacteristics.xsdshared-bibliography.xsdshared-commonSimpleTypes.xsdshared-customXmlDataProperties.xsdshared-customXmlSchemaProperties.xsdshared-documentPropertiesCustom.xsdshared-documentPropertiesExtended.xsdshared-documentPropertiesVariantTypes.xsdshared-math.xsdshared-relationshipReference.xsdsml.xsdvml-main.xsdvml-officeDrawing.xsdvml-presentationDrawing.xsd詳細
PPTX の作成、編集、分析
概要
ユーザーから、.pptx ファイルの作成、編集、内容の分析を依頼されることがあります。.pptx ファイルは基本的に、読み取りや編集が可能な XML ファイルやその他のリソースを含む ZIP アーカイブです。タスクに応じて、さまざまなツールやワークフローを利用できます。
内容の読み取りと分析
テキストの抽出
プレゼンテーションのテキスト内容を読むだけの場合は、ドキュメントを Markdown に変換してください。
# Convert document to markdown
python -m markitdown path-to-file.pptx
生の XML へのアクセス
コメント、発表者ノート、スライドレイアウト、アニメーション、デザイン要素、複雑な書式設定には、生の XML へのアクセスが必要です。これらの機能を扱う場合は、プレゼンテーションを展開して、生の XML コンテンツを読み取る必要があります。
ファイルの展開
python ooxml/scripts/unpack.py <office_file> <output_dir>
注意:スクリプトのパスは、このスキルのディレクトリを起点に解決してください。$SKILLS_ROOT が利用可能な場合は $SKILLS_ROOT/pptx/ooxml/scripts/unpack.py を優先してください。利用できない場合は、この SKILL.md ファイルがあるディレクトリを起点に ooxml/scripts/unpack.py を解決してください。ワークスペース相対の skills/pptx/... パスを前提にしないでください。
主なファイル構造
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/- 画像やその他のメディアファイル
タイポグラフィと色の抽出
再現するデザインの例が提示された場合:以下の方法で、まずプレゼンテーションのタイポグラフィと色を必ず分析してください。
- テーマファイルを読む:
ppt/theme/theme1.xmlで色(<a:clrScheme>)とフォント(<a:fontScheme>)を確認する - スライドの内容を確認する:
ppt/slides/slide1.xmlで実際に使用されているフォント(<a:rPr>)と色を調べる - パターンを検索する:すべての XML ファイルを対象に、色(
<a:solidFill>、<a:srgbClr>)とフォントの参照を grep で検索する
テンプレートなしで新しい PowerPoint プレゼンテーションを作成する
新しい PowerPoint プレゼンテーションを一から作成する場合は、HTML スライドを正確な位置に配置して PowerPoint に変換する html2pptx ワークフローを使用してください。
デザインの原則
重要:プレゼンテーションを作成する前に、内容を分析し、適切なデザイン要素を選んでください。
- 題材を考慮する:このプレゼンテーションは何についてのものですか?どのようなトーン、業界、雰囲気がふさわしいですか?
- ブランディングを確認する:ユーザーが企業や組織に言及している場合は、そのブランドカラーやアイデンティティを考慮する
- 配色を内容に合わせる:題材を反映した色を選ぶ
- 方針を明示する:コードを書く前に、デザインの選択理由を説明する
要件:
- ✅ コードを書く前に、内容を踏まえたデザイン方針を明示する
- ✅ Web セーフフォントのみを使用する:Arial、Helvetica、Times New Roman、Georgia、Courier New、Verdana、Tahoma、Trebuchet MS、Impact
- ✅ サイズ、ウェイト、色を使って、明確な視覚的階層を作る
- ✅ 読みやすさを確保する:十分なコントラスト、適切な文字サイズ、整った配置
- ✅ 一貫性を保つ:スライド全体でパターン、間隔、ビジュアル表現を繰り返し使用する
カラーパレットの選択
創造的な色選び:
- 既定の選択肢にとらわれない:この特定のテーマに本当に合う色は何でしょうか? 惰性で選ぶのは避けましょう。
- さまざまな角度から検討する:テーマ、業界、雰囲気、エネルギーの度合い、対象読者、ブランドアイデンティティ(言及されている場合)
- 大胆に試す:意外な組み合わせを試してみましょう。医療関連のプレゼンテーションに必ずしも緑を使う必要はなく、金融関連に必ずしもネイビーを使う必要もありません。
- パレットを作る:組み合わせて使える色を3~5色選びます(メインカラー+補助色+アクセントカラー)。
- コントラストを確保する:背景に対してテキストがはっきり読めるようにします。
カラーパレットの例(創造性を引き出す参考にしてください。いずれかを選ぶ、調整する、または独自のパレットを作成できます):
- クラシックブルー:ディープネイビー(#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、本文は11pt)
- 文字間隔を広くしたすべて大文字の見出し
- 大きなディスプレイ書体で番号付きセクションを表現する
- データ/統計/技術的な内容に等幅フォント(Courier New)を使用する
- 情報量が多い箇所には幅の狭いフォント(Arial Narrow)を使用する
- 強調する箇所にはアウトライン文字を使用する
グラフとデータのスタイル:
- 重要なデータに単一のアクセントカラーを使用したモノクロのグラフ
- 縦棒グラフではなく横棒グラフを使用する
- 棒グラフではなくドットプロットを使用する
- グリッド線を最小限にする、または使用しない
- 凡例は使わず、要素に直接データラベルを付ける
- 重要な指標は大きな数字で表示する
レイアウトの工夫:
- テキストを重ねたフルブリード画像
- ナビゲーション/コンテキスト用のサイドバー列(幅20~30%)
- モジュール式のグリッドシステム(3×3、4×4のブロック)
- ZパターンまたはFパターンでコンテンツを配置する
- 色付きの図形の上にフローティングテキストボックスを配置する
- 雑誌風の複数列レイアウト
背景の処理:
- スライドの40~60%を占める単色のブロック
- グラデーションの塗りつぶし(垂直または斜めのみ)
- 背景を2色に分割する(斜めまたは垂直)
- 端から端まで広がる色の帯
- デザイン要素としてネガティブスペースを活用する
レイアウトのヒント
グラフや表を含むスライドを作成する場合:
- 2列レイアウト(推奨):幅いっぱいにヘッダーを配置し、その下を2列に分けます。片方の列にはテキスト/箇条書き、もう片方の列には主要なコンテンツを配置します。これによりバランスがよくなり、グラフや表も読みやすくなります。各コンテンツタイプに合わせてスペースを最適化するため、列幅に差をつけたフレックスボックス(例:40%/60%)を使用します。
- スライド全体を使うレイアウト:インパクトと読みやすさを最大限に高めるため、主要なコンテンツ(グラフ/表)をスライド全体に配置します。
- 縦方向に積み重ねないでください:1列の中でテキストの下にグラフ/表を配置しないでください。読みやすさが損なわれ、レイアウトにも問題が生じます。
ワークフロー
- 必須 — ファイル全体を読む:この
SKILL.mdと同じディレクトリにあるhtml2pptx.md(デフォルトのインストール先:$SKILLS_ROOT/pptx/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 コンテンツを編集してから、再度パッケージ化します。
ワークフロー
- 必須 — ファイル全体を読む:この
SKILL.mdと同じディレクトリにあるooxml.md(デフォルトのインストール先:$SKILLS_ROOT/pptx/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 -m markitdown template.pptx > template-content.md template-content.mdを読みます:テンプレートのプレゼンテーションの内容を把握するため、ファイル全体を読んでください。このファイルを読む際に、範囲を指定してはいけません。- サムネイルのグリッドを作成します:
python scripts/thumbnail.py template.pptx - 詳細については、サムネイルグリッドの作成 セクションを参照してください。
- テキストを抽出します:
-
テンプレートを分析し、インベントリをファイルに保存する:
- ビジュアル分析:サムネイルグリッドを確認し、スライドのレイアウト、デザインパターン、視覚的な構成を把握します
template-inventory.mdにテンプレートインベントリファイルを作成して保存します。内容は次のとおりです。# テンプレートインベントリ分析 **スライド総数:[count]** **重要:スライドのインデックスは0から始まります(最初のスライド = 0、最後のスライド = count-1)** ## [カテゴリ名] - スライド0:[利用可能な場合はレイアウトコード] - 説明/用途 - スライド1:[レイアウトコード] - 説明/用途 - スライド2:[レイアウトコード] - 説明/用途 [... すべてのスライドをインデックス付きで個別に記載してください ...]- サムネイルグリッドの使用:視覚的なサムネイルを参照して、次の項目を特定します。
- レイアウトパターン(タイトルスライド、コンテンツレイアウト、セクション区切り)
- 画像プレースホルダーの位置と数
- スライドグループ間のデザインの一貫性
- 視覚的な階層と構成
- 次のステップで適切なテンプレートを選択するには、このインベントリファイルが必須です
-
テンプレートインベントリに基づいてプレゼンテーションのアウトラインを作成する:
- ステップ2で確認した利用可能なテンプレートを確認します。
- 最初のスライドには、イントロまたはタイトル用のテンプレートを選びます。最初のほうにあるテンプレートを使用してください。
- それ以外のスライドには、安全なテキストベースのレイアウトを選びます。
- 重要:レイアウト構成を実際のコンテンツに合わせます:
- 1列レイアウト:一貫した説明や単一のトピックに使用します
- 2列レイアウト:明確に異なる項目や概念が正確に2つある場合にのみ使用します
- 3列レイアウト:明確に異なる項目や概念が正確に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スクリプトを使用して、希望する順序でスライドを並べた新しいプレゼンテーションを作成します。python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52- このスクリプトは、スライドの複製、未使用スライドの削除、並べ替えを自動的に処理します
- スライドインデックスは0から始まります(最初のスライドは0、2番目は1など)
- 同じスライドインデックスを複数回指定すると、そのスライドが複製されます
-
inventory.pyスクリプトを使用してすべてのテキストを抽出する:-
インベントリの抽出を実行する:
python scripts/inventory.py working.pptx text-inventory.json -
text-inventory.json を読む:すべての図形とそのプロパティを把握するため、text-inventory.json ファイル全体を読みます。このファイルを読むときに、範囲の上限を決して設定しないでください。
-
インベントリ JSON の構造:
{ "slide-0": { "shape-0": { "placeholder_type": "TITLE", // or null for non-placeholders "left": 1.5, // position in inches "top": 2.0, "width": 7.5, "height": 1.2, "paragraphs": [ { "text": "Paragraph text", // Optional properties (only included when non-default): "bullet": true, // explicit bullet detected "level": 0, // only included when bullet is true "alignment": "CENTER", // CENTER, RIGHT (not LEFT) "space_before": 10.0, // space before paragraph in points "space_after": 6.0, // space after paragraph in points "line_spacing": 22.4, // line spacing in points "font_name": "Arial", // from first run "font_size": 14.0, // in points "bold": true, "italic": false, "underline": false, "color": "FF0000" // RGB color } ] } } } -
主な機能:
- スライド:「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」を指定しない限り、一覧にあるすべてのテキスト図形がクリアされます。
- 内容が必要な図形には、「replacement_paragraphs」ではなく「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"」を使用します。
- 置換スクリプトでは、テキスト文字列だけではなく、適切に書式設定された段落が必要です。
- 重なり合う図形:デフォルトの「font_size」が大きい図形、または「placeholder_type」がより適切な図形を優先します。
- 置換内容を含む更新済みの一覧を
replacement-text.jsonに保存します。 - 警告:テンプレートのレイアウトによって図形の数は異なります。置換内容を作成する前に、必ず実際の一覧を確認してください。
適切に書式設定された「paragraphs」フィールドの例:
"paragraphs": [ { "text": "New presentation title text", "alignment": "CENTER", "bold": true }, { "text": "Section Header", "bold": true }, { "text": "First bullet point without bullet symbol", "bullet": true, "level": 0 }, { "text": "Red colored text", "color": "FF0000" }, { "text": "Theme colored text", "theme_color": "DARK_1" }, { "text": "Regular paragraph text without special formatting" } ]置換用 JSON に記載されていない図形は自動的にクリアされます:
{ "slide-0": { "shape-0": { "paragraphs": [...] // This shape gets new text } // shape-1 and shape-2 from inventory will be cleared automatically } }プレゼンテーションでよく使われる書式設定パターン:
- タイトルスライド:太字テキスト。中央揃えの場合もあります。
- スライド内のセクションヘッダー:太字テキスト
- 箇条書き:各項目に「"bullet": true, "level": 0」を設定します。
- 本文:通常、特別なプロパティは必要ありません。
- 引用:配置やフォントのプロパティを指定する場合があります。
-
replace.pyスクリプトを使用して置換を適用するpython 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 スライドのサムネイルグリッドを作成し、すばやく分析・参照するには:
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 枚のスライド/グリッド、4 列=20 枚、5 列=30 枚、6 列=42 枚
- スライド番号は 0 から始まります(スライド 0、スライド 1 など)
使用例:
- テンプレート分析:スライドのレイアウトやデザインパターンをすばやく把握できます
- コンテンツのレビュー:プレゼンテーション全体を視覚的に確認できます
- ナビゲーションの参照:見た目から特定のスライドを見つけられます
- 品質チェック:すべてのスライドが適切にフォーマットされていることを確認できます
例:
# Basic usage
python scripts/thumbnail.py presentation.pptx
# Combine options: custom name, columns
python scripts/thumbnail.py template.pptx analysis --cols 4
スライドを画像に変換する
PowerPoint スライドを視覚的に分析するには、次の 2 段階の手順で画像に変換します。
-
PPTX を PDF に変換:
soffice --headless --convert-to pdf template.pptx -
PDF のページを JPEG 画像に変換:
pdftoppm -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 # Converts only pages 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 解析用)