mcpField
P
pptx

pptx

github.com/k-dense-aiドキュメント55.1k1.8k 回インストール3 日前に更新
リポジトリ

pptx について

pptx は、PowerPoint の .pptx を作成、編集、分析するスキルです。pptxgenjs による作成ガイドとパッケージ単位のスライド編集に加え、検証、サムネイル生成、変換の手順を扱います。

主な機能

  1. 01pptxgenjs によるプレゼン作成
  2. 02スライドとテンプレートの編集
  3. 03スライドの追加・並べ替え・削除
  4. 04スライドのサムネイル生成
  5. 05プレゼンの検証と変換

活用シーン

  1. 01プレゼンを一から作成
  2. 02既存デッキやテンプレートを改変
  3. 03スライド構成の確認とファイル検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill pptx

インストール後、Claude Code で/pptxを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE.txt
scripts/
__init__.py
add_slide.py
clean.py
scripts/office/helpers/
__init__.py
pptx_chart.py
pptx_slide.py
pptx_theme.py
scripts/office/schemas/ecma/fouth-edition/
opc-contentTypes.xsd
opc-coreProperties.xsd
opc-digSig.xsd
opc-relationships.xsd
scripts/office/schemas/ISO-IEC29500-4_2016/
dml-chart.xsd
dml-chartDrawing.xsd
dml-diagram.xsd
dml-lockedCanvas.xsd
dml-main.xsd
dml-picture.xsd
dml-spreadsheetDrawing.xsd
dml-wordprocessingDrawing.xsd
pml.xsd
shared-additionalCharacteristics.xsd
shared-bibliography.xsd
shared-commonSimpleTypes.xsd
shared-customXmlDataProperties.xsd
shared-customXmlSchemaProperties.xsd
shared-documentPropertiesCustom.xsd
shared-documentPropertiesExtended.xsd
shared-documentPropertiesVariantTypes.xsd
shared-math.xsd

詳細

PPTX の作成、編集、分析

.pptx は XML ファイルをまとめた ZIP アーカイブです。タスクに応じて方法を選択してください。

タスク方法
新しいデッキを作成するpptxgenjs スクリプトを作成します。以下の注意点をご覧ください
既存のデッキを編集する、またはテンプレートから作成する解凍 → ppt/slides/slideN.xml を編集 → 圧縮
内容を読むmarkitdown deck.pptx(`` マーカーの下にスライドごとに 1 ブロック)。ビジュアルグリッド:python scripts/thumbnail.py deck.pptx

スクリプト

パスはこのスキルのディレクトリを基準とします。それ以外はすべて通常の Python、node、またはシェルです。

スクリプト内容
scripts/thumbnail.py deck.pptx [prefix]テンプレートのレイアウト選択に使える、全スライドのラベル付きグリッドです。.pptx のみ対応します。prefix を指定してください。既定値は thumbnails で、同じディレクトリで処理した別のデッキのグリッドを上書きします
scripts/add_slide.py unpacked/ slide2.xml [--after slideN.xml]パッケージ内の関連情報をすべて含めて、スライド(または slideLayoutN.xml)を複製します。-o out.pptx を指定して .pptx を直接処理することもできます
scripts/clean.py unpacked/参照されなくなったスライド、メディア、rels を削除します。<p:sldIdLst> が確定した後に実行してください
scripts/office/validate.py deck.pptx [--original src.pptx]スキーマ、関連情報、コンテンツタイプ、グラフ、スライドをチェックします。失敗項目ごとに修正方法を示します。テンプレートから作成したデッキでは --original を指定してください。テンプレートを基準にスキーマをチェックするため、テンプレート自体の XSD エラーが自分のエラーとして扱われません
scripts/office/soffice.py --headless --convert-to pdf deck.pptxLibreOffice のラッパーです。このサンドボックスでは soffice を直接実行するとハングします

pptxgenjs を使った作成時の注意点

pptxgenjs はプリインストールされています。先に npm install を実行せず、スクリプトを書いて require('pptxgenjs') を直接呼び出してください。その require が失敗した場合に限り、npm install pptxgenjs を実行してください。モデルは API を把握しています。以下は落とし穴です。

  • スライドを追加する前に pres.layout を設定してください。 デフォルトのキャンバスは LAYOUT_16x9=10" × 5.625" で、幅は 13.3" ではありません。範囲外の座標もそのまま書き込まれ、クランプされません。その図形はスライドに表示されないだけです。(LAYOUT_WIDE は 13.3" × 7.5" です。)
  • 16 進カラーでは # を付けず、8 桁にもしないでください。 color: "FF0000" のように指定します。"#FF0000" と、16 進カラーにアルファ値を埋め込んだ値("00000020")は、どちらもファイルを破損させます。半透明にするには、塗りつぶしと画像には transparency: 0-100、影には opacity: 0.0-1.0 を指定してください。それぞれ、もう一方に指定しても黙って無視されます。
  • pptxgenjs はオプションオブジェクトをその場で変更します(初回使用時に値を EMU に変換します)。同じ shadow/オプションオブジェクトを複数の add* 呼び出しで共有しないでください。毎回、新しいオブジェクトを作成してください。
  • 影の offset は 0 以上でなければなりません。 負の値を指定するとファイルが破損します。上向きの影を付けるには、正の offset と angle: 270 を使用してください。
  • letterSpacing は黙って無視されます。 正しいオプションは charSpacing です。
  • リスト: 各項目に bullet: true を指定し、リテラルの • は使わないでください(箇条書き記号が二重に表示されます)。最後以外の配列項目すべてに breakLine: true を設定してください。箇条書きの段落間隔には lineSpacing ではなく paraSpaceAfter を指定してください(間隔が大きくなりすぎます)。
  • 出力ファイルごとに new pptxgen() を 1 つ作成してください。 インスタンスを再利用しないでください。
  • rectRadius が機能するのは ROUNDED_RECTANGLE のみです。 RECTANGLE では機能しません。
  • グラデーション塗りつぶしには対応していません。 代わりに、グラデーション画像を背景として使用してください。
  • テキストボックスには内部余白が組み込まれています。 テキストを図形、線、アイコンと同じ x 座標に揃える必要がある場合は、margin: 0 を設定してください。
  • スピーカーノートは slide.addNotes("...") に指定します(プレーンテキストで、スライドごとに 1 回)。スライド上のテキストボックスには入れないでください。
  • グラフはネイティブ形式のままにしてください。 PowerPoint でグラフ化できるものにはすべて addChart() を使用します(コンボグラフでは {type, data, options} の配列を渡します)。トレンドラインや誤差範囲など、ライブラリが公開していない PowerPoint ネイティブ機能については、追加の系列を自分で計算するか、生成された OOXML を後処理してください。レンダリング済み画像で代用しないでください。PowerPoint にネイティブ形式がないグラフの種類(サンキー、ネットワーク、コード)に限り、画像として挿入します。
  • デフォルトのグラフは簡素な表示になります(タイトルなし、データラベルなし、古い配色)。showTitle と title、showValue: true と dataLabelPosition、パレットから選んだ chartColors: [...] を設定し、枠まわりの表示を控えめにしてください(catAxisLabelColor/valAxisLabelColor、valGridLine: { color, size }、catGridLine: { style: "none" }、系列が 1 つの場合は showLegend: false)。
  • 積み上げ棒グラフまたは積み上げ縦棒グラフでは、dataLabelPosition に ctr、inEnd、inBase のいずれかを指定してください。 outEnd を指定するとファイルが破損します。
  • secondaryValAxis/secondaryCatAxis を使用するコンボ系列では、グラフオプションに valAxes と catAxes の両方が必要で、それぞれ 2 つの項目を指定してください。 これらがないと、pptxgenjs は宣言されていない軸 ID を書き込み、PowerPoint はグラフを破棄してファイルが破損していると報告します。valAxes だけでは不十分です。
  • writeFile() の後に python scripts/office/validate.py deck.pptx を実行してください。 このコマンドは、上記 2 つのグラフの不具合と、PowerPoint が受け付けないスライド XML の欠陥を報告し、それぞれの修正方法も示します。修正は生成用スクリプトで行い、パッケージ化された XML を手作業で編集しないでください。
  • <p:presentation> の子要素の順序は絶対に変更しないでください。 pptxgenjs は <p:notesMasterIdLst> を <p:sldIdLst> の直後に書き込み、両方のマスターを 1 つのテーマパーツに関連付けます。PowerPoint はこの状態を問題なく読み込みますが、要素を移動すると同じデッキが開けなくなります。
  • アイコン: react-icons を ReactDOMServer.renderToStaticMarkup で SVG にレンダリングし、sharp で 256px 以上にラスタライズしてから、addImage({ data: "image/png;base64," + buf.toString("base64") }) で挿入します。image/png;base64, のプレフィックスは必須です(react-icons、react、react-dom、sharp はプリインストールされています。require が失敗した場合に限り、npm install react-icons react react-dom sharp を実行してください)。

既存のデッキとテンプレートの編集

まずレイアウトを選びます:python scripts/thumbnail.py template.pptx template-thumbs を実行すると、各スライドにラベルを付けた一覧が出力され、作成されたファイル(template-thumbs.jpg、スライドが12枚を超える場合は分割された template-thumbs-N.jpg)が表示されます。2つ目の引数は必ず指定し、デッキ名にちなんだ名前を付けてください。 既定値は thumbnails なので、同じディレクトリ内で2つのデッキのサムネイルを作成すると、一覧が気づかないうちに上書きされ、最初のデッキの一覧が失われます(テンプレートの分析専用です。ビジュアル QA には画像への変換で作成するフル解像度のレンダリングが必要です。また、.pptx のみ受け付けるため、まず .potx を .pptx という名前でコピーしてください)。これを markitdown と併用して、各コンテンツセクションをテンプレートのスライドに割り当て、レイアウトに変化を持たせます。すべてのセクションを同じタイトルと箇条書きのスライドにしないでください。

python3 -c "import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall('unpacked')" deck.pptx
python scripts/add_slide.py unpacked/ slide2.xml --after slide2.xml   # duplicate a slide (or slideLayoutN.xml); prints the new slide's path
# reorder / delete slides = edit <p:sldIdLst> in ppt/presentation.xml
python scripts/clean.py unpacked/                                     # after deletions: removes orphaned slides, media, rels
# edit slide content in ppt/slides/slideN.xml
(cd unpacked && rm -f ../out.pptx && zip -Xr ../out.pptx .)           # zip from INSIDE the dir; rm first or deleted parts survive
python scripts/office/validate.py out.pptx --original deck.pptx
  • スライドのコンテンツを編集する前に、追加・削除・並べ替えなどの構造上の作業をすべて行ってください。 add_slide.py はスライドファイルをそのままコピーするため、編集後に複製すると編集済みのコンテンツも複製されます。また、clean.py は <p:sldIdLst> にないスライドをすべて削除するため、書き込んだばかりのスライドも削除されます。
  • スライドファイルを手動でコピーしないでください — add_slide.py は新しいスライドに必要な登録をすべて行い、作成した内容を報告します(Created ppt/slides/slide17.xml from slide2.xml)。ファイルを直接指定して実行することもできます:add_slide.py deck.pptx slide2.xml -o out.pptx — -o を指定しないと、入力デッキが上書きされます。 複製したスライドは、元のスライドのグラフ/SmartArt/埋め込みオブジェクトのパーツを複製せずに参照するため、一方のスライドのグラフを編集すると、もう一方にも変更が反映されます。
  • python-pptx を使う場合、できないことが3つあります。スライドの複製(唯一のエントリーポイントは add_slide(layout) です)、text_frame.text = "..." による書式の保持(段落全体が書式のない単一の run にまとめられるため、代わりに run.text を割り当ててください)、テンプレートでよく使われる SVG/EMF の読み込み(add_picture は UnidentifiedImageError を発生させます)です。
  • 古い形式の .ppt は、まず変換する必要があります:python scripts/office/soffice.py --headless --convert-to pptx file.ppt。.potx テンプレートは展開と再パッケージが同じ手順で行えます — 出力でも .potx 拡張子を維持してください。
  • テンプレートのアイコンや画像を再利用するには、それを含むスライドまたはレイアウトを複製してください。

テンプレートに内容を入力するときは、次の点に注意してください:

  • XML 変換をスクリプトで行う場合は、defusedxml.minidom で解析してください。OOXML を xml.etree.ElementTree で往復処理すると、名前空間のプレフィックスが書き換えられ、デッキが破損します。
  • テンプレートの枠 ≠ ソース項目。 テンプレートにチームメンバーが4人表示されていて、実際は3人の場合、4人目のテキストだけでなく、グループ全体(画像+テキストボックス)を削除してください。その後、QA で不要なビジュアルが残っていないか確認します。
  • リスト項目ごとに <a:p> を1つ使います。複数の項目を1つの段落にまとめないでください。間隔を維持するには、兄弟要素の <a:pPr> をコピーし、タイトル、セクション見出し、インラインラベル(Status:、Owner:)の <a:rPr> に b="1" を指定します。
  • 箇条書きの設定はレイアウトから継承させます。上書きする場合に限り <a:buChar>、<a:buAutoNum>(番号付き)、または <a:buNone> を追加してください。テキスト内に文字として • を入力してはいけません。
  • 先頭または末尾にスペースがあるテキストでは、<a:t> に xml:space="preserve" を指定する必要があります。

デザインのアイデア

退屈なスライドは作らないでください。 白い背景に単純な箇条書きを並べても、見る人の印象には残りません。各スライドについて、以下のリストからアイデアを検討してください。

開始する前に
  • 大胆で、内容に合ったカラーパレットを選びます:パレットは、このトピックのためにデザインされたと感じられるものにします。色をまったく別のプレゼンテーションに入れ替えても「問題なく使える」なら、選択が十分に具体的ではありません。
  • 均等さよりも、色の主役を決めます:1色を視覚的な重みの60~70%にし、補助色を1~2色、鋭いアクセントカラーを1色加えます。すべての色を同じ比重にするのは避けます。
  • 明暗のコントラストをつけます:タイトルと結論のスライドは暗い背景、本文のスライドは明るい背景にします(「サンドイッチ」構成)。または、プレミアムな印象を目指して、全体を暗い色調に統一します。
  • ビジュアルモチーフを決めます:特徴的な要素を1つ選び、繰り返し使います。たとえば、角丸の画像フレームや、色付きの円に入れたアイコンなどです。すべてのスライドで一貫して使います。カラーバーやアクセントのストライプをモチーフにしないでください(「避ける項目」を参照)。
カラーパレット

トピックに合う色を選びます。一般的な青を安易に選ばないでください。以下のパレットを参考にしてください。

テーマメインカラーサブカラーアクセントカラー
ミッドナイト・エグゼクティブ1E2761(ネイビー)CADCFC(アイスブルー)FFFFFF(白)
フォレスト&モス2C5F2D(フォレストグリーン)97BC62(モスグリーン)F5F5F5(クリーム)
コーラル・エナジーF96167(コーラル)F9E795(ゴールド)2F3C7E(ネイビー)
ウォーム・テラコッタB85042(テラコッタ)E7E8D1(サンド)A7BEAE(セージ)
オーシャン・グラデーション065A82(ディープブルー)1C7293(ティール)21295C(ミッドナイト)
チャコール・ミニマル36454F(チャコール)F2F2F2(オフホワイト)212121(黒)
ティール・トラスト028090(ティール)00A896(シーフォーム)02C39A(ミント)
ベリー&クリーム6D2E46(ベリー)A26769(ダスティローズ)ECE2D0(クリーム)
セージ・カーム84B59F(セージ)69A297(ユーカリ)50808E(スレート)
チェリー・ボールド990011(チェリー)FCF6F5(オフホワイト)2F3C7E(ネイビー)
各スライドについて

すべてのスライドにビジュアル要素が必要です。画像、グラフ、アイコン、図形などを使います。テキストだけのスライドは印象に残りません。

レイアウトの選択肢:

  • 2列(左にテキスト、右にイラスト)
  • アイコン+テキストの行(色付きの円に入れたアイコン、太字の見出し、その下に説明)
  • 2×2または2×3のグリッド(片側に画像、もう片側にコンテンツブロックのグリッド)
  • 片側全体に画像を配置し、その上にコンテンツを重ねるレイアウト

データの表示:

  • 大きな数値のコールアウト(60~72ptの大きな数値と、その下の小さなラベル)
  • 比較用の列(導入前/導入後、メリット/デメリット、選択肢の並列比較)
  • タイムラインまたはプロセスフロー(番号付きの手順、矢印)

ビジュアルの仕上げ:

  • セクション見出しの横に、小さな色付きの円に入れたアイコンを配置します
  • 重要な統計やタグラインには、アクセントとしてイタリック体のテキストを使います
タイポグラフィ

.pptx に指定したフォント名は、この環境ではなくユーザーの PowerPoint で描画されます。 ビジュアル QA の描画には LibreOffice を使用しますが、LibreOffice にないフォントは代替フォントに置き換えられます。また、フォントによっては代替フォントの幅が異なるため、QA プレビューでは実際のスライドとは異なり、テキストがはみ出したり、収まったりすることがあります。QA の信頼性を保つため、次の点に注意してください。

  • 安全なフォント(QA で実際の幅どおりに描画され、Office にも付属):Arial、Calibri、Cambria、Times New Roman、Courier New、Bookman Old Style、Century Schoolbook。本文や、文字の収まりが重要な箇所にはこれらを使用してください。
  • QA 上のリスクなしで個性を出せる見出し:安全なフォントのセリフ体見出し(Cambria、Bookman Old Style、Century Schoolbook)と、安全なフォントのサンセリフ体本文(Calibri または Arial)を組み合わせます。文字のはみ出しを確実に確認しながら、視覚的なコントラストを付けられます。
  • ユーザーが安全なフォント一覧にないフォント(例:Georgia、Trebuchet MS)を指定した場合:指定された箇所にはそのフォントを使用しますが、コンテナーには約10%の余裕を持たせ、それらの要素の文字の収まりについては QA を信頼しないでください。そのフォントのプレビューはあくまで概算です。ユーザーから指定がない場合は、本文には安全なフォント一覧のフォントを優先してください。
  • QA で信頼できないフォント(代替フォントの幅が異なるため、はみ出しの確認が不正確になる場合がある):Georgia、Trebuchet MS、Impact、Arial Black、Garamond、Consolas、Palatino Linotype。Calibri Light の代替は環境によって異なるため、QA で信頼できないフォントとして扱ってください。タイトルやアクセントには余裕を持たせて使用できますが、文字の収まりの確認には使わないでください。
  • Aptos をデフォルトにしないでください。Office の2023年以降のデフォルトフォントは、この環境にメトリック互換の代替フォントがなく、古い Office には含まれていないため、どちらの環境でも信頼できません。
要素サイズ
スライドタイトル36〜44pt、太字
セクション見出し20〜24pt、太字
本文14〜16pt
キャプション10〜12pt、控えめな色
間隔
  • 余白は最低0.5インチ
  • コンテンツブロック間は0.3〜0.5インチ
  • 余白を十分に取り、隅々まで埋めないでください
避けること(よくあるミス)
  • 同じレイアウトを繰り返さない — スライドごとにカラム、カード、コールアウトに変化を付けてください
  • 本文を中央揃えにしない — 段落とリストは左揃えにし、中央揃えはタイトルだけにしてください
  • サイズのコントラストを弱めない — タイトルは本文の14〜16ptより目立つよう、36pt以上にしてください
  • 青をデフォルトにしない — トピックに合った色を選んでください
  • 間隔をランダムに混在させない — 0.3インチまたは0.5インチの間隔を選び、一貫して使用してください
  • 1枚だけをスタイリングして、残りをそのままにしない — 全体に徹底するか、すべてをシンプルにしてください
  • テキストだけのスライドを作らない — 画像、アイコン、グラフ、その他のビジュアル要素を追加し、タイトルと箇条書きだけの構成は避けてください
  • テキストボックスのパディングを忘れない — テキストの端に合わせて行や図形を配置する場合は、テキストボックスの margin: 0 を設定するか、パディングを考慮して図形の位置をずらしてください
  • コントラストの低い要素を使わない — アイコンもテキストも背景に対して十分なコントラストが必要です。明るい背景に明るいテキスト、暗い背景に暗いテキストを置くのは避けてください
  • タイトルの下にアクセントラインを絶対に使わない — AI 生成スライドの典型的な特徴です。代わりに余白や背景色を使ってください
  • 装飾的なカラーバーやアクセントストライプを絶対に追加しない — これには、スライド幅いっぱいのヘッダー/フッターのバー、スライドの片側に沿って縦に伸びるサイドバーストライプ、カードやコンテンツブロックの端に沿った細いアクセントストライプ、長方形の「片側だけの枠線」が含まれます。これらは AI 生成の埋め草のように見えます。カードを際立たせるなら、端のストライプではなく、控えめな背景色、ドロップシャドウ、アイコンを使ってください。
  • クリーム色やベージュ色の背景をデフォルトにしない — 背景の指定がない場合は、白(FFFFFF)またはユーザーのブランドカラーを使用し、F5F5DC、FAF0E6、FAEBD7、FFF8E1 のような暖色系のニュートラルカラーをデフォルトで使うのは避けてください
  • 図形からはみ出すテキストをそのままにしない — テキストが収まらない場合は、フォントサイズを小さくする、スライドを分割する、またはコンテナーを大きくしてください。内容が切れたり、範囲からはみ出したりしたままにしないでください

QA(必須)

最初のレンダリングには、通常、重なり、はみ出し、位置ずれなど、いくつかの実際の問題があります。それらを見つけて修正し、変更したスライドだけを再レンダリングして、終了します。

コンテンツ QA
markitdown output.pptx

コンテンツの欠落、誤字、順序の誤りがないか確認します。

テンプレートを使用する場合は、残存するプレースホルダーテキストがないか確認します:

markitdown output.pptx | grep -iE "\bx{3,}\b|lorem|ipsum|\bTODO|\[insert|this.*(page|slide).*layout"

grep が結果を返す場合は、成功を宣言する前にそれらを修正します。

アクセシビリティ QA

PowerPoint でアクセシビリティチェッカーを使用してデッキを確認し、閲覧順序ウィンドウを調べます。オブジェクトを意図した読み上げ順序に並べ、情報を伝える視覚要素には意味のある代替テキストを追加し、純粋に装飾的なオブジェクトは閲覧順序から除外します。正しくレンダリングされたスライドでも、スクリーンリーダーによっては誤った順序で読み上げられることがあります。ネイティブのアクセシビリティチェックが利用できない場合は、画像の検査をアクセシビリティの検証として扱うのではなく、そのギャップを明記します。

ファイル QA(必須)
python scripts/office/validate.py output.pptx                      # built from scratch
python scripts/office/validate.py output.pptx --original src.pptx  # built from a template

デッキがテンプレートから作成された場合は、必ず --original を渡します。 テンプレート自体に XSD が拒否する部分が含まれていることがあるため、引数なしで実行すると、自分が引き起こしていない 失敗が報告され、その中に本当のリグレッションが隠れてしまうことがあります。--original は スキーマとスライドのチェックをテンプレートに対してベースライン化し、テンプレートがもともと抱えていた エラーを抑制します。構造チェック — リレーションシップ、コンテンツタイプ、グラフ — は --original を無視し、 テンプレートから継承した問題をいずれにせよ報告するため、それらはそれ自体の妥当性で判断します。

pptxgenjs は PowerPoint が開くことを拒否し、他のすべてのツールが受け入れるグラフ XML を出力します。 python-pptx はそうしたデッキを開き、LibreOffice はそれらをレンダリングし、XSD はそれらを通過させます。 すべての失敗はその修正方法を示します。ジェネレーターで修正し、再ビルドします。

ビジュアル QA

スライドを画像に変換し(画像への変換を参照)、すべてを検査します。生成コードを じっと見つめた後では、実際にレンダリングされたものではなく、期待しているものを見てしまいがちなので、 画像を新鮮な目で見ます(サブエージェントがいれば、これに適しています)。探すべきユーザーに見える欠陥:

  • テキストのはみ出し、またはボックスやスライドの境界でテキストが切れている — これを最初に確認します。 これは最も一般的な欠陥であり、常にユーザーに見えます。(タイポグラフィの項でプレビューアーが信頼性をもってレンダリングしないフォントの場合、プレビューは概算です。見かけ上の収まりではなく、残した約 10% の余裕を信頼します。)
  • 重なり合う要素(図形を貫くテキスト、単語を貫く線、積み重なった要素)
  • 出典引用やフッターが、その上のコンテンツと衝突している
  • 要素が近すぎる(間隔が 0.3 インチ未満)、またはカードやセクションがほとんど接触している
  • 不均一な間隔(ある場所では大きな空白領域、別の場所では窮屈)
  • スライド端からの余白が不十分(0.5 インチ未満)
  • 列や同様の要素が一貫して揃っていない
  • 低コントラストのテキスト(例: クリーム色の背景に薄いグレーのテキスト)
  • テキスト置換後にテンプレートの装飾が位置ずれしている — 例: 1 行用に配置されたタイトルの下線が、置換後のタイトルが 2 行に折り返したため合わない
  • 低コントラストのアイコン(例: 対比となる円のない、暗い背景上の暗いアイコン)
  • テキストボックスが狭すぎて過剰に折り返している
  • 残存するプレースホルダーコンテンツ

画像への変換

視覚的な検査のために、プレゼンテーションを個々のスライド画像に変換します:

python scripts/office/soffice.py --headless --convert-to pdf output.pptx
rm -f slide-*.jpg
pdftoppm -jpeg -r 150 output.pdf slide
ls -1 "$PWD"/slide-*.jpg

上に出力された絶対パスを、そのまま view ツールに渡します。 rm は以前の実行による古い画像を削除します。pdftoppm はページ数に基づいてゼロ埋めします: 10 ページ未満のデッキでは slide-1.jpg、10〜99 ページでは slide-01.jpg、100 ページ以上では slide-001.jpg です。

修正後は、上記の 4 つのコマンドをすべて再実行します — pdftoppm が変更を反映するには、編集した .pptx から PDF を再生成する必要があります。

依存関係

pptxgenjs (npm、プリインストール済み — require('pptxgenjs') が失敗した場合のみインストールしてください) · markitdown[pptx]、Pillow、defusedxml、lxml (pip — テキストダンプ、サムネイル、クリーン、バリデーション) · LibreOffice (soffice、scripts/office/soffice.py を介してサンドボックス環境向けに自動設定されます) · pdftoppm (Poppler)


このスキルは Anthropic によって作成および保守されています。ここでは frontmatter メタデータとアクセシビリティ QA ガイダンスを加えて適応しています。利用条件については LICENSE.txt を参照してください。

コメント