mcpField
P
pptx

pptx

github.com/stvlynnドキュメント121129 回インストール32 週間前に更新
リポジトリ

pptx について

pptxは、PowerPointプレゼンテーションの作成、読み取り、編集を行うスキルです。制作作業を自動化したいユーザー向けに、HTML変換、一括生成、テキスト抽出、OOXMLの解析・編集を扱います。

主な機能

  1. 01HTMLからPPTを作成
  2. 02テンプレートやデータからスライドを一括生成
  3. 03テキスト、コメント、発表者ノートを抽出
  4. 04スライドの内容、レイアウト、テーマを編集
  5. 05OOXMLファイルの展開と再パッケージ

活用シーン

  1. 01HTMLやデータからレポート用プレゼンを作成
  2. 02製品や営業資料のスライドを一括生成
  3. 03発表者ノートやコメントを抽出
  4. 04既存PPTの内容やテーマを変更

インストール

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

$npx skills add https://github.com/stvlynn/dingtalk-wukong-skills --skill pptx

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

同梱ファイル

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

docs/
00-SKILL-完整制作指南.md
ooxml/schemas/ecma/fouth-edition/
opc-contentTypes.xsd
opc-coreProperties.xsd
opc-digSig.xsd
opc-relationships.xsd
ooxml/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
shared-relationshipReference.xsd
sml.xsd
vml-main.xsd
vml-officeDrawing.xsd
vml-presentationDrawing.xsd
vml-spreadsheetDrawing.xsd
vml-wordprocessingDrawing.xsd

詳細

PPTプレゼンテーション処理エキスパート Real Skill

一言で説明

HTMLから洗練されたPPTを自動生成し、プレゼンテーションの編集、コメントの管理、コンテンツの抽出に対応します。

プレゼンテーションの作成と編集 - HTMLからのプレゼンテーション作成、コンテンツの編集、コメントの管理、テキストの抽出。


使用シーン

適しています:

  • データ/HTMLから標準化されたPPTレポートを自動生成する
  • 洗練されたプレゼンテーションを作成する(営業、研修、報告)
  • PPTのテキスト、コメント、発表者ノートを抽出する
  • スライドの内容、レイアウト、テーマを変更する
  • 複数のプレゼンテーションを一括生成する

適していません:

  • 複雑なアニメーションの作成(専門ソフトウェアを使用してください)
  • リアルタイムの共同編集(リアルタイム共同編集には Google Slides を使用してください)

コアワークフロー

用户需求 → 内容分析 → 配色选择 → 工具选择 → 生成 PPT → 验证输出
User request → Content analysis → Color palette → Tool selection → Generate PPT → Validate

タスクの種類の判定:

プレゼンテーションの作成
  • HTMLからPPTへのワークフロー(推奨)

    • スタイルを設定したHTMLスライドを作成する
    • html2pptxライブラリを使用して変換する
    • 正確な位置指定と書式設定が可能
    • Webセーフフォントのみを使用する(Arial、Helvetica、Georgiaなど)
  • Python-PPTXワークフロー

    • プログラムによるスライド作成
    • データから一括生成
    • テンプレートベースの自動化
読み取りと分析
  • テキスト抽出 → markitdown(Markdownに変換)
  • コメントとノート → OOXMLを展開してXMLを読み取る
  • デザイン分析 → XMLからテーマ、色、フォントを抽出する
既存文書の編集
  • 簡単な編集 → python-pptxライブラリ
  • 複雑な編集 → OOXMLを展開し、XMLを変更して再パッケージ化する

タスク完了基準

必須条件(すべて満たす必要があります):

  • PPTが正常に開き、再生できる
  • スライドの内容が明瞭で読みやすい
  • 配色に調和があり、視覚的な階層が明確である
  • レイアウトが適切で、文字が詰め込まれていない

品質評価:

  • ⭐⭐⭐⭐⭐ 優秀 - 洗練されたデザイン+完全な内容+自動生成
  • ⭐⭐⭐ 合格 - 正確な内容+使用可能なPPT+適切な書式
  • ⭐ 失敗 - PPTが破損している、または内容に誤りがある

参考資料(AI向け)

種類パス説明
コアドキュメントdocs/00-SKILL-完整制作指南.mdPPT作成の完全ガイド(約500行)
OOXMLライブラリooxml/低レベルのXML操作
ユーティリティスクリプトscripts/unpack.pyPPTXファイルを展開
ユーティリティスクリプトscripts/pack.pyPPTXファイルをパッケージ化

重要な原則(AI必読)

1. デザイン優先 - コンテンツに基づくアプローチ(デザイン先行)

重要:プレゼンテーションを作成する前に、必ずコンテンツを分析してください。

  • 主題を考慮する:何についての内容か?トーン、業界、雰囲気はどうか?
  • ブランドを確認する:企業名が言及されている場合は、ブランドカラーを考慮する
  • コンテンツに合わせて配色する:主題を反映する色を選ぶ
  • アプローチを明示する:コードを書く前に、デザイン上の選択について説明する
2. Webセーフフォントのみを使用

使用可能なフォント:Arial、Helvetica、Times New Roman、Georgia、Courier New、Verdana、Tahoma、Trebuchet MS、Impact

  • カスタムフォントは使用しない:正しく表示されません
  • フォントの組み合わせ:プレゼンテーションごとに最大2~3種類のフォントを使用する
3. 視覚的な階層
  • サイズに大きな差をつける:見出しは72pt、本文は11pt
  • 太さに変化をつける:見出しは太字、本文は標準、キャプションは細字
  • 色で強調する:重要な情報にはアクセントカラーを使用する
  • 明確な構成にする:タイトル → メインコンテンツ → 補足情報
4. グラフと表のレイアウトルール

推奨 - 2カラムレイアウト:

  • ヘッダーをスライド全体の幅に配置する
  • 片方のカラムにテキスト/箇条書き(40%)、もう片方にグラフ/表(60%)を配置する
  • バランスと読みやすさが向上します

代替案 - 全面レイアウト:

  • インパクトを最大化するため、グラフ/表をスライド全体に配置する

縦方向に積み重ねない:

  • ❌ 1カラム内で、テキストの下にグラフ/表を配置しない
  • ❌ 読みやすさが損なわれ、レイアウト上の問題が生じます
5. 配色の選択(18種類の配色案)

既定の配色にとらわれない:このトピックに本当に合う色は何か? 複数の観点から検討する:トピック、業界、雰囲気、活気、対象者、ブランド 大胆に選ぶ:医療だから緑、金融だから紺でなければならないわけではありません


厳選された18種類の配色案

ビジネス・プロフェッショナル
  1. クラシックブルー:ネイビー(#1C2833)、スレート(#2E4053)、シルバー(#AAB7B8)、オフホワイト(#F4F6F6)
  2. ブラック&ゴールド:ゴールド(#BF9A4A)、ブラック(#000000)、クリーム(#F4F6F6)
  3. チャコール&レッド:チャコール(#292929)、レッド(#E33737)、ライトグレー(#CCCBCB)
クリエイティブ&活気 (创意/活力)
  1. ティール&コーラル: ティール (#5EA8A7)、ディープティール (#277884)、コーラル (#FE4447)、ホワイト (#FFFFFF)
  2. レトロなレインボー: パープル (#722880)、ピンク (#D72D51)、オレンジ (#EB5C18)、アンバー (#F08800)、ゴールド (#DEB600)
  3. ビビッドオレンジ: オレンジ (#F96D00)、ライトグレー (#F2F2F2)、チャコール (#222831)
  4. 大胆なレッド: レッド (#C0392B)、ブライトレッド (#E74C3C)、オレンジ (#F39C12)、イエロー (#F1C40F)、グリーン (#2ECC71)
ナチュラル&暖色系 (自然/温暖)
  1. セージ&テラコッタ: セージ (#87A96B)、テラコッタ (#E07A5F)、クリーム (#F4F1DE)、チャコール (#2C2C2C)
  2. フォレストグリーン: ブラック (#191A19)、グリーン (#4E9F3D)、ダークグリーン (#1E5128)、ホワイト (#FFFFFF)
  3. ヴィンテージアースカラー: マスタード (#E3B448)、セージ (#CBD18F)、フォレストグリーン (#3A6B35)、クリーム (#F4F1DE)
  4. クリーム&フォレスト: クリーム (#FFE1C7)、フォレストグリーン (#40695B)、ホワイト (#FCFCFC)
エレガント&ソフト (优雅/柔和)
  1. ウォームブラッシュ: モーヴ (#A49393)、ブラッシュ (#EED6D3)、ローズ (#E8B4B8)、クリーム (#FAF7F2)
  2. コースタルローズ: オールドローズ (#AD7670)、ビーバー (#B49886)、エッグシェル (#F3ECDC)、アッシュグレー (#BFD5BE)
  3. ピンク&パープル: ピンク (#F8275B)、コーラル (#FF574A)、ローズ (#FF737D)、パープル (#3D2F68)
ラグジュアリー&大胆 (奢华/大胆)
  1. バーガンディラグジュアリー: バーガンディ (#5D1D2E)、クリムゾン (#951233)、ラスト (#C15937)、ゴールド (#997929)
  2. ディープパープル&エメラルド: パープル (#B165FB)、ダークブルー (#181B24)、エメラルド (#40695B)、ホワイト (#FFFFFF)
フレッシュ&モダン (清新/现代)
  1. ライム&プラム: ライム (#C5DE82)、プラム (#7C3A5F)、コーラル (#FD8C6E)、ブルーグレー (#98ACB5)
  2. オレンジ&ターコイズ: ライトオレンジ (#FC993E)、グレイッシュターコイズ (#667C6F)、ホワイト (#FCFCFC)

クイックコマンドリファレンス (Quick Commands)

テキスト抽出 (文本提取)
# Convert PPTX to markdown
python -m markitdown presentation.pptx
シンプルなプレゼンテーションの作成 (创建简单演示文稿)
from pptx import Presentation

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[0])  # Title slide
title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "Hello World!"
subtitle.text = "My First Presentation"

prs.save("output.pptx")
分析用に PPTX を展開 (解压分析)
# Unpack PPTX to access raw XML
python ooxml/scripts/unpack.py presentation.pptx output_dir

# Key files to examine:
# ppt/presentation.xml - Main metadata
# ppt/slides/slide1.xml - Individual slide contents
# ppt/theme/theme1.xml - Theme colors and fonts
# ppt/comments/ - Comments
# ppt/notesSlides/ - Speaker notes
編集後に再パッケージ化 (编辑后打包)
# Pack modified XML back to PPTX
python ooxml/scripts/pack.py output_dir new_presentation.pptx
HTML から PPT へのワークフロー (HTML 转 PPT)
# Step 1: Write HTML slides
html_content = """
<!DOCTYPE html>
<html>
<head>
    <style>
        .slide { width: 960px; height: 720px; padding: 40px; }
        h1 { font-family: Arial; font-size: 48px; color: #1C2833; }
        p { font-family: Arial; font-size: 24px; color: #2E4053; }
    </style>
</head>
<body>
    <div class="slide">
        <h1>Welcome</h1>
        <p>This is my presentation</p>
    </div>
</body>
</html>
"""

# Step 2: Convert to PPTX
from html2pptx import html2pptx
with open("slides.html", "w") as f:
    f.write(html_content)
html2pptx("slides.html", "output.pptx")

依存関係のインストール (Dependencies Installation)

Python の依存関係
pip install -r requirements.txt
# Includes: python-pptx, html2pptx, markitdown

よくあるシナリオの例 (Common Scenarios)

シナリオ 1: プロフェッショナルなタイトルスライドを作成 (创建专业标题页)
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])  # Blank layout

# Add title
left = Inches(1)
top = Inches(2.5)
width = Inches(8)
height = Inches(1.5)
title_box = slide.shapes.add_textbox(left, top, width, height)
title_frame = title_box.text_frame
title_frame.text = "2024 Sales Report"

# Format title
title_para = title_frame.paragraphs[0]
title_para.font.size = Pt(72)
title_para.font.bold = True
title_para.font.color.rgb = RGBColor(28, 40, 51)  # Navy

# Add subtitle
subtitle_box = slide.shapes.add_textbox(left, Inches(4), width, Inches(0.5))
subtitle_frame = subtitle_box.text_frame
subtitle_frame.text = "Q4 Performance Review"
subtitle_para = subtitle_frame.paragraphs[0]
subtitle_para.font.size = Pt(24)
subtitle_para.font.color.rgb = RGBColor(46, 64, 83)  # Slate

prs.save("title_slide.pptx")
シナリオ 2: すべての発表者ノートを抽出 (提取所有演讲者备注)
# Step 1: Unpack PPTX
python ooxml/scripts/unpack.py presentation.pptx unpacked/

# Step 2: Extract notes using grep
cd unpacked/ppt/notesSlides/
grep -r "a:t>" . | sed 's/<[^>]*>//g' > ../../all_notes.txt
シナリオ 3: データからスライドを一括生成 (批量生成幻灯片)
from pptx import Presentation
from pptx.util import Inches, Pt

data = [
    {"name": "Product A", "sales": 1200, "growth": "15%"},
    {"name": "Product B", "sales": 980, "growth": "8%"},
    {"name": "Product C", "sales": 1450, "growth": "22%"}
]

prs = Presentation()

for item in data:
    slide = prs.slides.add_slide(prs.slide_layouts[1])  # Title and content
    title = slide.shapes.title
    title.text = item["name"]
    
    body = slide.placeholders[1]
    tf = body.text_frame
    tf.text = f"Sales: ${item['sales']}M"
    
    p = tf.add_paragraph()
    p.text = f"Growth: {item['growth']}"
    p.level = 1

prs.save("batch_report.pptx")

コメント