officecli-pptx
このスキルは、.pptxファイルが関わるあらゆるシーン(入力、出力、またはその両方)で使用できます。スライドデック、ピッチデック、プレゼンテーションの作成や、任意の.pptxファイルからのテキスト読み込み・解析・抽出、既存プレゼンテーションの編集・修正・更新、スライドファイルの結合・分割、テンプレート・レイアウト・スピーカーノート・コメントの操作に対応します。ユーザーが「デック」「スライド」「プレゼンテーション」といった用語を提示した場合、または.pptxファイル名を参照した場合に自動的に起動します。
description の原文を見る
Use this skill any time a .pptx file is involved -- as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file; editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions 'deck,' 'slides,' 'presentation,' or references a .pptx filename.
SKILL.md 本文
OfficeCLI PPTX スキル
開始前に (重要)
officecli を使用する前に、毎回このチェックを実行してください:
if ! command -v officecli &> /dev/null; then
echo "Installing officecli..."
curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCli/main/install.sh | bash
# Windows: irm https://raw.githubusercontent.com/iOfficeAI/OfficeCli/main/install.ps1 | iex
else
CURRENT=$(officecli --version 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
LATEST=$(curl -fsSL https://api.github.com/repos/iOfficeAI/OfficeCLI/releases/latest | grep '"tag_name"' | sed -E 's/.*"v?([0-9.]+)".*/\1/')
if [ "$CURRENT" != "$LATEST" ]; then
echo "Upgrading officecli $CURRENT → $LATEST..."
curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCli/main/install.sh | bash
else
echo "officecli $CURRENT is up to date"
fi
fi
officecli --version
クイックリファレンス
| タスク | アクション |
|---|---|
| コンテンツの読み込み・分析 | 下記の view および get コマンドを使用 |
| 既存プレゼンテーションの編集 | editing.md を参照 |
| ゼロから新規作成 | creating.md を参照 |
読み込みと分析
テキスト抽出
officecli view slides.pptx text
officecli view slides.pptx text --start 1 --end 5
構造の概要
officecli view slides.pptx outline
スライドのタイトル、シェイプ数、スライドごとの画像数が表示されます。
詳細検査
officecli view slides.pptx annotated
シェイプタイプ、フォント、サイズ、代替テキストのステータス付きの画像、ディメンション付きのテーブルが表示されます。
統計情報
officecli view slides.pptx stats
スライド数、シェイプ数、フォント使用状況、タイトル欠落、代替テキスト欠落を表示します。
要素の検査
# スライド上のすべてのシェイプをリスト
officecli get slides.pptx /slide[1] --depth 1
# シェイプの詳細情報を取得 (位置、塗りつぶし、フォント、アニメーション等)
officecli get slides.pptx /slide[1]/shape[1]
# チャートのデータと設定を取得
officecli get slides.pptx /slide[1]/chart[1]
# テーブル構造を取得
officecli get slides.pptx /slide[1]/table[1] --depth 3
# 型別にプレースホルダーを取得
officecli get slides.pptx "/slide[1]/placeholder[title]"
CSS 風クエリ
# 特定のテキストを含むシェイプを検索
officecli query slides.pptx 'shape:contains("Revenue")'
# 代替テキストのない画像を検索
officecli query slides.pptx "picture:no-alt"
# 特定の塗りつぶし色のシェイプを検索
officecli query slides.pptx 'shape[fill=#4472C4]'
# 10cm より幅広いシェイプを検索
officecli query slides.pptx "shape[width>=10cm]"
# 特定のスライド上のシェイプを検索
officecli query slides.pptx 'slide[2] > shape[font="Arial"]'
ビジュアル検査
# SVG レンダリング (単一スライド、自己完結型、依存関係なし)
officecli view slides.pptx svg --start 1 --end 1 --browser
# HTML レンダリング (すべてのスライド、インタラクティブ、チャートと 3D 対応 -- 推奨)
officecli view slides.pptx html --browser
注: SVG は 1 回の実行につき 1 つのスライド (範囲内の最初のもの) のみをレンダリングします。複数スライドのプレビューおよびチャート・グラデーション・テーブルの完全なレンダリングには html --browser を使用してください。
デザイン原則
退屈なスライドは作らないでください。 白い背景に箇条書きを置いただけでは誰も感動しません。
開始前に
- 大胆でコンテンツに根ざした色パレットを選択してください: パレットはこのトピックのために設計されたものであるべきです。色を別のプレゼンテーションに置き換えてもまだ「機能する」のであれば、選択肢の指定が十分でありません。
- 支配性より平等性: 1 色が支配的であるべき (視覚的重みの 60~70%)、1~2 色の補助色、1 色の鮮烈なアクセント色があるべきです。すべての色に等しい重みを与えないでください。
- 暗/明コントラスト: タイトル + 最後のスライドは暗い背景、コンテンツスライドは明るい背景 (「サンドイッチ」構造)。またはプレミアム感を出すために全体を暗くすることにコミットします。
- 視覚的なモチーフにコミットしてください: 1 つの独自の要素を選択して繰り返す -- 丸い画像フレーム、色付き円のアイコン、厚い片側の枠線。すべてのスライドで続けます。
カラーパレット
トピックに合った色を選択してください -- 一般的な青色にデフォルトしないでください:
| テーマ | プライマリ | セカンダリ | アクセント | テキスト | ミュート/キャプション |
|---|---|---|---|---|---|
| Coral Energy | F96167 (coral) | F9E795 (gold) | 2F3C7E (navy) | 333333 (charcoal) | 8B7E6A (warm gray) |
| Midnight Executive | 1E2761 (navy) | CADCFC (ice blue) | FFFFFF (white) | 333333 (charcoal) | 8899BB (slate) |
| Forest & Moss | 2C5F2D (forest) | 97BC62 (moss) | F5F5F5 (cream) | 2D2D2D (near-black) | 6B8E6B (faded green) |
| Charcoal Minimal | 36454F (charcoal) | F2F2F2 (off-white) | 212121 (black) | 333333 (dark gray) | 7A8A94 (cool gray) |
| Warm Terracotta | B85042 (terracotta) | E7E8D1 (sand) | A7BEAE (sage) | 3D2B2B (brown-black) | 8C7B75 (dusty brown) |
| Berry & Cream | 6D2E46 (berry) | A26769 (dusty rose) | ECE2D0 (cream) | 3D2233 (dark berry) | 8C6B7A (mauve gray) |
| Ocean Gradient | 065A82 (deep blue) | 1C7293 (teal) | 21295C (midnight) | 2B3A4E (dark slate) | 6B8FAA (steel blue) |
| Teal Trust | 028090 (teal) | 00A896 (seafoam) | 02C39A (mint) | 2D3B3B (dark teal) | 5E8C8C (muted teal) |
| Sage Calm | 84B59F (sage) | 69A297 (eucalyptus) | 50808E (slate) | 2D3D35 (dark green) | 7A9488 (faded sage) |
| Cherry Bold | 990011 (cherry) | FCF6F5 (off-white) | 2F3C7E (navy) | 333333 (charcoal) | 8B6B6B (dusty red) |
テキスト を明るい背景のボディコピー、ミュート をキャプション、ラベル、軸テキストに使用してください。暗い背景では、ボディテキストにセカンダリまたは FFFFFF を、キャプションにミュートを使用してください。
表にない色が必要ですか? これらのパレットは出発点です。アクセント色を追加することができます (例: Forest & Moss に金色 D4A843)、またはトピックに合わせてパレットをブレンドすることができます。ユーザーが名前で存在しないパレットをリクエストした場合 (例: "Forest & Gold")、最も近い一致を使用し、適切なアクセント色で補完してください。
タイポグラフィ
興味深いフォントペアを選択してください -- Arial にデフォルトしないでください。
| ヘッダーフォント | ボディフォント | 最適な用途 |
|---|---|---|
| Georgia | Calibri | フォーマルなビジネス、金融、エグゼクティブレポート |
| Arial Black | Arial | 大胆なマーケティング、製品発表 |
| Calibri | Calibri Light | 清潔なコーポレート、ミニマルデザイン |
| Cambria | Calibri | 伝統的な専門的、法律、学術的 |
| Trebuchet MS | Calibri | フレンドリーなテク、スタートアップ、SaaS |
| Impact | Arial | 太字の見出し、イベントデック、基調講演 |
| Palatino | Garamond | 上品な編集、ラグジュアリー、非営利団体 |
| Consolas | Calibri | 開発者ツール、技術的/エンジニアリング |
| 要素 | サイズ |
|---|---|
| スライドタイトル | 36~44pt 太字 |
| セクションヘッダー | 20~24pt 太字 |
| ボディテキスト | 14~16pt |
| キャプション | 10~12pt ミュート |
レイアウトの多様性
すべてのスライドには視覚的要素が必要です -- 画像、チャート、アイコン、またはシェイプ。テキストのみのスライドは忘れられます。
これらのレイアウトタイプ全体で変化させてください:
- 2 列 (左にテキスト、右にビジュアル)
- アイコン + テキスト行 (色付き円のアイコン、太字のヘッダー、説明)
- 2×2 または 2×3 グリッド (コンテンツブロック)
- ハーフブリード画像 (左/右側全体) とコンテンツオーバーレイ
- 大きな統計コールアウト (60~72pt の大きな数字と下のラベル)
- 比較列 (ビフォア/アフター、長所/短所)
- タイムライン またはプロセスフロー (番号付きステップ、矢印)
コンテンツからレイアウトへのクイックガイド
これらは出発点です。コンテンツの密度とナレーティブフローに基づいて適応させてください。
| コンテンツタイプ | 推奨レイアウト | 理由 |
|---|---|---|
| 価格設定 / プランのティアリング | 2~3 列カード (比較) | 並べることで即座に比較できます |
| チーム / 人物 | アイコングリッド または 2×3 カード | 顔/アバターは同等の視覚的重みが必要 |
| タイムライン / ロードマップ | 矢印付きプロセスフロー または 番号付きステップ | 左から右への流れがシーケンスを伝えます |
| 主要メトリクス / KPI | 大きな統計コールアウト (3~4 個の大きな数字) | 大きな数字は注目を集めます。ラベルは下 |
| 推薦文 / 引用 | 帰属付き全幅引用 | 余白の豊かさが信頼性を示唆します |
| 機能比較 | 2 列のビフォア/アフター またはテーブル | 並列構造がスキャンを支援します |
| アーキテクチャ / システム | シェイプ + コネクター図 | 空間関係は視覚的表現が必要 |
| 財務データ | チャート + 概要テーブルの並置 | チャートはトレンドを示す。テーブルは精度を提供 |
間隔
- スライド端からの最小余白 0.5" (1.27cm)
- コンテンツブロック間 0.3~0.5" (0.76~1.27cm)
- 余白を残す -- すべてを埋めないでください
避けるべき (一般的な間違い)
- 同じレイアウトを繰り返さない -- 列、カード、コールアウトを変化させます
- ボディテキストを中央揃えしない -- 段落とリストを左揃え。中央揃えはタイトルのみ
- サイズコントラストをけちらない -- タイトルは 14~16pt のボディより目立つように 36pt+ である必要があります
- 青にデフォルトしない -- 特定のトピックを反映する色を選択してください
- 間隔をランダムに混ぜない -- 0.3" または 0.5" のギャップを選択して一貫して使用
- 1 つのスライドをスタイル設定して、残りを平凡なままにしない -- 完全にコミットするか、全体をシンプルに保つ
- テキストのみのスライドを作成しない -- 画像、アイコン、チャート、または視覚要素を追加
- テキストボックスのパディングを忘れない -- シェイプをテキスト端と配置する場合、テキストボックスに
margin=0を設定するか、デフォルトパディングを考慮してオフセット - 低コントラスト要素を使用しない -- アイコンとテキストの両方が背景に対して強いコントラストが必要です
- タイトル下にアクセント線を使用しない -- これは AI 生成スライドの特徴です。余白または背景色を代わりに使用してください
QA (必須)
問題があると想定してください。あなたの仕事はそれを見つけることです。
最初のレンダリングはほぼ決して正しくありません。QA をバグハントとして扱い、確認ステップではなく実施してください。最初の検査でゼロの問題が見つかった場合、十分に注意深く見ていません。
コンテンツ QA
# すべてのテキストを抽出し、欠落コンテンツ、タイプミス、間違った順序をチェック
officecli view slides.pptx text
# 構造的およびフォーマットの問題を自動的にチェック
officecli view slides.pptx issues
注: view issues は、すべての blank レイアウトスライドについて「Slide has no title」をレポートします。これは layout=blank (カスタムデザインの推奨アプローチ) を使用する場合の予期された動作です。これらの警告は安全に無視できます。
テンプレートを編集する場合、残されたプレースホルダーテキストをチェックします:
officecli query slides.pptx 'shape:contains("lorem")'
officecli query slides.pptx 'shape:contains("xxxx")'
officecli query slides.pptx 'shape:contains("placeholder")'
ビジュアル QA
サブエージェントを使用してください -- 2~3 スライドでも。あなたはコードを見つめていて、期待しているものを見ることになり、実際に存在するものは見えません。サブエージェントには新鮮な目があります。
# 単一スライドを SVG としてレンダリングしてビジュアル検査
officecli view slides.pptx svg --start 3 --end 3 --browser
# マルチスライド QA 用にスライドをループ処理
for i in 1 2 3 4 5; do officecli view slides.pptx svg --start $i --end $i > /tmp/slide-$i.svg; done
SVG の制限: SVG は 1 つのスライド (最初の --start/--end 範囲のもの) のみをレンダリングします。グラデーション背景、チャート、テーブルは SVG 出力に表示されません。チャートとグラデーションを含む完全忠実度のマルチスライドプレビューについては、HTML モードを使用します:
officecli view slides.pptx html --browser
ビジュアル QA サブエージェント用プロンプト:
これらのスライドをビジュアルに検査してください。問題があると想定してください -- それを見つけてください。
確認すべき点:
- 重複する要素 (テキストが図形を貫通、線が単語を貫通、積み重ねられた要素)
- テキストオーバーフロー または端/ボックス境界でカット
- 要素が近い (< 0.3" ギャップ) またはカード/セクションがほぼ接している
- ギャップが不均等 (1 箇所は大きな空き領域、別の場所は窮屈)
- スライド端からの余白が不十分 (< 0.5")
- 列または同様の要素が一貫して配置されていない
- 低コントラストテキスト (例: クリーム背景の薄い灰色)
- 低コントラストアイコン (例: 対照的な円がない暗い背景の暗いアイコン)
- テキストボックスが狭すぎて過度な折り返しが発生
- 残されたプレースホルダーコンテンツ
各スライドについて、問題または懸念領域をリストアップしてください (軽微でも)。
見つかったすべての問題をレポートしてください。
編集固有の QA チェックリスト (上記に加えて):
- すべてのテンプレートスライド (新しい blank スライドではない) で、装飾要素 (
!!プレフィックス付きシェイプ) が コンテンツテキストと重複または隠蔽していないことを確認 - すべてのヒーロー番号 / 主要メトリクスが表示されていることを確認 (カード塗りつぶしまたは背景と同じ色で隠されていない)
- 暗い背景スライドで、チャートバー/線、軸ラベル、グリッドラインが表示されていることを確認
検証
# スキーマ検証 -- 配信前にパスする必要があります
officecli validate slides.pptx
配信前チェックリスト
プレゼンテーションが完成したと宣言する前に、以下を確認してください:
- すべてのコンテンツスライドにスピーカーノート (タイトル/クロージング以外)
- 少なくとも 1 つのトランジションスタイルが適用されている (タイトルはフェード、コンテンツはプッシュまたはワイプ)
- すべての画像に代替テキスト
- スライド全体で少なくとも 3 つの異なるレイアウトタイプが使用されている
- 2 つの連続するスライドが同じレイアウトパターンを共有していない
検証ループ
- スライドを生成
view issues+validate+ ビジュアル検査を実行- 見つかった問題をリストアップ (見つからなかった場合、もっと批判的に見直す)
- 問題を修正
- 影響を受けたスライドを再検証 -- 1 つの修正が別の問題を作成することがよくあります
- 完全なパスで新しい問題が明らかになるまで繰り返す
少なくとも 1 つの修正と検証サイクルを完了するまで成功を宣言しないでください。
一般的な落とし穴
| 落とし穴 | 正しいアプローチ |
|---|---|
--name "foo" | --prop name="foo" を使用 -- すべての属性は --prop を通して |
x=-3cm | 負の座標はサポートされていません。x=0cm を代わりに使用 |
/shape[myname] | 名前インデックスはサポートされていません。数値インデックスを使用: /shape[3] |
| プロパティ名を推測 | officecli pptx set shape を実行して正確な名前を確認 |
シェル文字列の \n | --prop text="line1\\nline2" で改行に \\n を使用 |
| 開かれたファイルを修正 | PowerPoint/WPS でファイルを先に閉じる |
# 付き 16 進数色 | #FF0000 ではなく FF0000 を使用 -- ハッシュプレフィックスなし |
| テーマ色 | accent1..accent6, dk1, dk2, lt1, lt2 を使用 -- 16 進数ではない |
| 代替テキストを忘れる | アクセシビリティのため、画像に常に --prop alt="description" を設定 |
| パスは 1 ベース | /slide[1], /shape[1] -- XPath 規約 |
--index は 0 ベース | --index 0 = 最初の位置 -- 配列規約 |
zsh/bash で引用されていない [N] | シェルが /slide[1] をグロブ展開します -- パスを常に引用: "/slide[1]" |
| Z オーダー (シェイプの重複) | --prop zorder=back または zorder=front / forward / backward / 絶対位置番号を使用。警告: Z オーダー変更はシェイプインデックスの再番号付けを引き起こします -- インデックスで形状を参照する前に任意の Z オーダー変更の後に get --depth 1 で再度クエリ。複数のシェイプを変更する場合は最も高いインデックスを最初に処理 |
チャート追加の gap/gapwidth | add 中に無視されます -- 作成後に設定: officecli set ... /slide[N]/chart[M] --prop gap=80 |
バッチ JSON テキストの $ と ' | heredoc を使用: cat <<'EOF' | officecli batch -- 単一引用符で囲まれた区切り文字は $、アポストロフィ、バッククォートのシェル展開を防ぐ |
| テンプレートテキストのサイズが間違っている | テンプレートシェイプは焼き付けられたフォントサイズを持ちます。テンプレートシェイプのすべての set に常に size, font, color を含める。editing.md の「Font Cascade from Template Shapes」セクションを参照 |
パフォーマンス: レジデントモード
マルチステップワークフロー (同じファイルで 3+ コマンド) については、open/close を使用します:
officecli open slides.pptx # メモリに保持 -- その後のコマンドが高速
officecli add slides.pptx ... # コマンド毎のファイル I/O オーバーヘッドなし
officecli set slides.pptx ...
officecli close slides.pptx # 保存して解放
パフォーマンス: バッチモード
単一の open/save サイクルで複数の操作を実行します:
echo '[
{"command":"add","parent":"/slide[1]","type":"shape","props":{"text":"Title","x":"2cm","y":"2cm","width":"20cm","height":"3cm","size":"36","bold":"true"}},
{"command":"add","parent":"/slide[1]","type":"shape","props":{"text":"Body text","x":"2cm","y":"6cm","width":"20cm","height":"10cm","size":"16"}}
]' | officecli batch slides.pptx
バッチモードは以下をサポートします: add, set, get, query, remove, move, view, raw, raw-set, validate。
バッチモードはレジデントモードで機能します。最初に officecli open file.pptx を実行し、バッチコマンドをパイプし、その後 officecli close file.pptx を実行してください。これはバッチ効率とレジデントモードの永続ファイルハンドルを結合します。
バッチフィールド: command, path, parent, type, from, to, index, props (辞書), selector, mode, depth, part, xpath, action, xml。
parent = 追加先のコンテナ (add 用、from フィールド経由のクローンを含む)。path = 修正する要素 (set, get, remove, move 用)。
既知の問題
| 問題 | 回避策 |
|---|---|
チャートシリーズは作成後に追加できません: 既存チャートで set --prop data= と set --prop seriesN= を実行できるのは既存シリーズの更新のみです -- 新しいシリーズを追加することはできません。シリーズ数は作成時に固定されています。 | すべてのシリーズを add コマンドに含める (series1+series2 props または data prop を |
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- anthonyhtang
- ライセンス
- Apache-2.0
- 最終更新
- 2026/3/30
Source: https://github.com/anthonyhtang/OfficeCLI-enhanced-codex / ライセンス: Apache-2.0