---
name: paragraph-pptx
description: "Create academic and research presentations using the パラグラフテンプレート (paragraph template) — a custom 4:3 slide template with topic-header/message/supporting-content structure. Before building slides, first offer to create a presenter-facing explanation note in Markdown so the speaker can understand the material, ask questions, and only then move to slide structure and PPTX generation. Use this skill whenever the user mentions template.pptx, パラグラフテンプレート, パラグラフスライド, 学術発表スライド, 研究プレゼン, or wants to create slides with topic+message+supporting-detail structure. Also trigger when the user references slide duplication for animation, yellow highlight frames, Memo bars, card layouts (3-card/4-card), or any of the design patterns specific to this template. Prefer the bundled reference template at `references/template.pptx` unless the user explicitly supplies a different template."
---

# パラグラフテンプレート スキル

template.pptx を使った学術発表・研究プレゼンテーション作成ガイド。

このスキルは既存の **pptx スキル**（unpack→edit→pack ワークフロー）の上に乗るテンプレート固有の知識を提供する。pptx スキルの `editing.md` に記載されたワークフローとスクリプト群をそのまま使い、本スキルはテンプレートの構造・デザインパターン・XML スニペットを補完する。テンプレートの正本はこのスキル配下の `references/template.pptx` とし、ユーザーが別テンプレートを明示しない限りこのファイルを使う。

## テンプレート概要

| 項目 | 値 |
|------|-----|
| スライドサイズ | 4:3 (10" × 7.5" / 9144000 × 6858000 EMU) |
| フォント（見出し） | 游ゴシック Bold |
| フォント（本文） | 游ゴシック Medium |
| メインレイアウト | slideLayout13.xml（パラグラフスライド） |
| タイトルレイアウト | slideLayout1.xml |
| テンプレートファイル | `references/template.pptx`（正本） |

## テンプレートスライド一覧

| slide | 用途 | いつ複製するか |
|-------|------|---------------|
| slide1 | タイトルページ | 表紙 |
| slide2 | **空のパラグラフ** | 通常のコンテンツスライド（最も頻繁に使う） |
| slide3 | 図形パターン例 | 参考用（通常は複製しない） |
| slide4 | 循環図パターン | 参考用（通常は複製しない） |
| slide5 | 3カード（並列） | 3項目の並列比較 |
| slide6 | 3カード（階段） | 3項目の順序付き比較 |
| slide7 | 4カード（2×2） | 4項目の比較・分類 |
| slide8 | 4カード（循環） | 4項目の循環関係 |

基本は **slide2 を複製**してコンテンツスライドを作る。カード比較が必要なときだけ slide5〜8 を使う。

## テンプレート参照ルール

- 正式な参照元は `references/template.pptx`。eval もこのパスを使う。
- 既存の pptx ワークフローをそのまま使いたい場合は、作業ディレクトリへ `template.pptx` としてコピーしてから unpack / pack してよい。
- 直接パスを指定してもよいが、`unpack.py` と `pack.py --original` では同じテンプレートを参照する。
- ユーザーが別の `.pptx` を明示した場合のみ、そのファイルを優先する。

## パラグラフスライドの3層構造

パラグラフスライド（slideLayout13）は「問い→答え→根拠」の3層で1つのメッセージを伝える設計になっている。学術発表では「聴衆が今何を考えるべきか（話題）」→「その答え（メッセージ）」→「なぜそう言えるか（補足）」の流れが明快さの鍵になる。

```
┌──────────────────────────────────────────────┐
│ [話題＝問い] (idx=11)              [ページ番号] │
│──────────────────────────────────────────────│  ← 水平線 y=825500
│                                               │
│ [メッセージ＝答え] (type="title")              │
│                                               │
│ [補足説明] (idx=1)                             │
│   ● 根拠・解説・具体例                          │
│     ● 第2段                                    │
└──────────────────────────────────────────────┘
```

### 1. 話題ヘッダー（idx="11", type="body"）
- 位置: 上部 (x=157931, y=348226, w=8591550, h=469900)
- 游ゴシック Medium、太字なし
- スライドのトピック（問い）を書く。「背景：なぜ〇〇が必要か」「提案手法：〇〇」のように

### 2. メッセージ（type="title"）
- 位置: 話題の下 (x=419100, y=1016002, w=8324850, h=938159)
- 游ゴシック Bold 27pt
- そのスライドで伝えたい一言（問いへの答え）。1〜2行に収める

### 3. 補足説明（idx="1"）
- 位置: メッセージの下 (x=419100, y=2013155, w=8324850, h=4572000)
- Wingdings bullet "l"（黒丸）、5段階インデント
- テキスト箇条書き以外の用途（図・グラフ等）では、このプレースホルダーのテキストを空にして自由配置の図形やテキストボックスを追加する

## テーマカラー（theme2）

パラグラフスライドはスライドマスター2（theme2 = グレー基調）を使う。

| スキーム名 | 色コード | 用途の目安 |
|-----------|----------|-----------|
| dk1 | `4D4D4D` | メインテキスト |
| lt1 | `F8F8F8` | 背景 |
| accent1 | `7F7F7F` | グレーアクセント |
| accent2 | `B2B2B2` | 薄グレー |
| accent3 | `2E5B96` | **青**（重要な強調） |
| accent4 | `C03936` | **赤**（警告・注意） |
| accent5 | `ED7D31` | オレンジ |
| accent6 | `3E9288` | **ティール**（Memo バー、カード枠、矢印） |

よく使う追加色:
- `FFFF00` — 黄色（ハイライト枠）
- `000000` — 黒（課題ボックス背景）
- `FF0000` / `0000FF` — 赤・青（テキスト強調）

## 既定フロー

このスキルは、原則として次の 3 段階で進める。

1. 最初に必ず「まずスライドは作らず、発表者向けの解説ノートを作るか」を確認する
2. ユーザーが希望した場合は、Markdown 正本の理解用ノートを作り、必要な箇所だけ Mermaid 図を併用する
3. ユーザーの理解確認と質疑応答を経て、明示的に「理解できた」「次へ進む」と承認された後にのみ、スライド構成と PPTX 作成へ進む

理解用ノートを使わない場合のみ、従来どおり情報確認から直接スライド構成に入ってよい。

## 理解用ノート先行フロー

### 最初に必ず確認すること

スライド作成を開始する前に、次の問いを最初にユーザーへ確認する。

> まずスライドは作らず、ユーザー（発表者）向けの解説ノートを作りますか？

- **推奨既定値**: はい
- はいの場合、ここではまだ unpack や PPTX 編集を始めない
- いいえの場合のみ、後続の情報確認とスライド構成へ進む

### 理解用ノートの標準出力

- 正本は **Markdown**
- HTML / サイト表示は補助的な提示手段としてのみ許可する
- 図解は **必要な場合のみ Mermaid** を使う
- スライド制作前の理解確認用成果物として扱い、PPTX の代替物にはしない

理解用ノートの具体的な書き方は [references/explanation-notes.md](references/explanation-notes.md) を参照。

### 理解用ノートの必須内容

理解用ノートには最低限、次を含める。

1. 発表全体で最終的に伝えたいメッセージ
2. その理解に必要な前提知識の分解
3. 難しい用語の言い換え
4. 具体例
5. 主張と根拠の因果関係
6. 発表者が自分で理解確認するための質問

関係性、流れ、比較、因果関係が文章だけでは伝わりにくい場合は、Mermaid で簡潔に補う。

### 理解確認フェーズ

- ユーザーが理解用ノートを読んだあと、質問を受け付けて答える
- 用語説明、背景知識の補足、説明の飛躍の修正を優先する
- ユーザーが質問を続けている間は、スライド構成に進まない
- **明示承認ゲート**: ユーザーが「理解できた」「次へ進む」と明示するまで、構成案や PPTX 作業へ移行しない

### スライド構成への引き継ぎルール

- スライド構成案は、理解用ノートで合意した内容のみを材料にする
- 理解確認で未解決の難語や飛躍を残したまま、スライド側で新しい難解要素を追加しない
- 各スライドでは「問い」「メッセージ」「補足」に加えて、発表者向けの口頭説明ポイントを用意する

スピーカーノートは、理解用ノートで整理した内容を要約して再利用してよい。

## スライド作成前の情報確認（必須）

スライド作成に着手する（unpack や原稿作成を開始する）前に、ユーザーから提供された情報が十分か**必ず確認**すること。
以下の情報が不足している場合、勝手に推測して作成を開始せず、**必ずユーザーに質問して要件を明確にする**こと。

1. **全体構成とページ数（スライド枚数）の目安**: スライド全体のストーリーと、おおよその枚数感
2. **スライドのターゲットと目的**: 誰に向けて、何を納得させるためのプレゼンか
3. **各スライドの「問い」と「メッセージ(答え)」**: トピックごとの核心となる主張が明確か
4. **根拠となるデータや詳細**: 図解や補足説明に用いる具体的な事実・論理関係が明確か

情報が十分に揃っていない場合は、「〇〇に関する情報が不足しています。作成前に以下の点について教えてください（例：全体の想定枚数、構成案のご希望など）」と具体的に質問リストを提示すること。

## ワークフロー

pptx スキルの editing.md のワークフローに従う。テンプレート固有のポイントだけ補足する。

### 0. 理解用ノートを先に作るか確認

最初の質問として、必ず「まずスライドは作らず、発表者向けの解説ノートを作るか」を確認する。

- **はい**:
  - 理解用ノートを Markdown で作成する
  - 必要なら Mermaid 図を入れる
  - ユーザーの質問に答え、理解が固まるまで待つ
  - ユーザーの明示承認後にのみ、次のステップへ進む
- **いいえ**:
  - 従来どおり、情報確認のうえでスライド構成へ進む

### 1. 情報確認と理解済み内容の固定

理解用ノートを使った場合でも使わない場合でも、スライド作成前に必要情報を揃える。

- 全体構成と枚数感
- ターゲットと目的
- 各スライドの問いとメッセージ
- 根拠データや詳細

理解用ノートを先に作った場合は、そのノートで合意済みの内容を正本として扱う。

### 2. unpack
```bash
python3 ~/.claude/skills/pptx/scripts/office/unpack.py references/template.pptx unpacked/
```

既存ツールやスクリプトがカレントディレクトリの `template.pptx` を前提にしている場合は、先に `references/template.pptx` を作業ディレクトリへコピーしてから同じ手順を使ってよい。

### 3. スライド構成を計画
presentation.xml の `<p:sldIdLst>` を確認。各スライドの内容に応じて**表現形式を選択**する。

このとき、構成案は理解用ノートで合意した範囲から組み立てる。未説明の専門用語や未合意の論点を、構成段階で新規追加しない。

#### 表現形式の判断基準

スライドごとに「テキスト箇条書きで十分か、図解の方がわかりやすいか」を判断する。以下に該当する場合は**図解（図形・矢印・カード）を使う**：

| 内容のパターン | 推奨する表現 | 使うテンプレート/パターン |
|---------------|-------------|------------------------|
| 手順・プロセス・フロー | 矢印フロー図 | slide2 + 矢印図形（rightArrow 等） |
| 3項目の比較・並列 | 3カードレイアウト | slide5 または slide6 を複製 |
| 4項目の比較・分類 | 4カードレイアウト | slide7 または slide8 を複製 |
| 因果関係・変換 | ボックス＋矢印 | slide2 + テキストボックス＋矢印 |
| 構成要素・アーキテクチャ | ブロック図 | slide2 + rect 図形の組み合わせ |
| 課題と解決策の対比 | 黒背景ボックス＋カード | カードスライド + 黒背景ボックス |
| 循環・サイクル | 循環図 | slide4 または slide8 を複製 |
| 事実の列挙・説明 | テキスト箇条書き | slide2（従来通り） |

**原則：テキスト箇条書きだけのスライドは「事実の列挙・詳細説明」に限定する。関係性・流れ・比較がある内容は図解で表現する。**

### 4. スライド追加
```bash
python3 ~/.claude/skills/pptx/scripts/add_slide.py unpacked/ slide2.xml   # パラグラフスライド
python3 ~/.claude/skills/pptx/scripts/add_slide.py unpacked/ slide5.xml   # 3カード
python3 ~/.claude/skills/pptx/scripts/add_slide.py unpacked/ slide7.xml   # 4カード
```
出力される `<p:sldId>` を presentation.xml に挿入し、不要なテンプレートスライド（slide3〜8 の説明用）は削除する。

### 5. コンテンツ編集
各スライドの XML を Edit ツールで直接編集する。

- 話題ヘッダー（idx="11"）→ トピックテキストを書き換え
- メッセージ（type="title"）→ メッセージテキストを書き換え
- 補足説明（idx="1"）→ **内容に応じて以下のいずれかを選択**：
  - **テキスト箇条書き**: 事実の列挙・詳細説明のみの場合
  - **図解（図形＋矢印＋テキストボックス）**: 関係性・フロー・比較がある場合。補足説明プレースホルダーのテキストを空にし、自由配置の図形を追加する
- **スピーカーノート** → 各スライドに必ず作成する。最低でも「話題の言い換え」「メッセージの口頭説明」「補足説明で強調する点」を 3-5 文程度で書く。理解用ノートを先に作った場合は、その内容を発表者が話せる言葉に圧縮して反映する。

#### 図解スライドの作成手順

図解が適切と判断したスライドでは、以下の手順で作成する：

1. 補足説明プレースホルダー（idx="1"）のテキストを空（`<a:p><a:endParaRPr/></a:p>`）にする
2. [references/xml-patterns.md](references/xml-patterns.md) から適切な XML スニペットを選んで `<p:spTree>` 内に追加する
3. よく使う図解パターン：
   - **フロー図**: テキストボックス（ステップ名） → rightArrow → テキストボックス → rightArrow → テキストボックス
   - **ブロック図**: rect 図形を並べて構成要素を表現、矢印で関係性を示す
   - **比較図**: カード枠（rect + テキストボックス）を横に並べる。slide5〜8 を複製する方が早い場合はそちらを使う
   - **強調付き説明**: テキスト箇条書き＋ハイライト枠（黄色 roundRect）で重要部分を囲む
4. 図形の色はテーマカラーを使う：ティール（accent6）を基調、強調は青（accent3）や赤（accent4）

スピーカーノートの書き方は [references/speaker-notes.md](references/speaker-notes.md) を参照。

### 6. スピーカーノートを PPTX に書き込む

コンテンツ編集が完了したら、`add_notes.py` で各スライドのノートペイン（PowerPoint の「ノート」欄）にスピーカーノートを **XMLレベルで** 書き込む。

```bash
# 基本構文
python3 ~/.claude/skills/pptx/scripts/add_notes.py unpacked/ slideN.xml "ノートのテキスト"

# 例: slide2 にノートを追加
python3 ~/.claude/skills/pptx/scripts/add_notes.py unpacked/ slide2.xml "水質検査の背景について説明します。WHOの推計では年間約50万人が下痢性疾患で死亡しています。"

# 改行を含むノート（\n で区切る）
python3 ~/.claude/skills/pptx/scripts/add_notes.py unpacked/ slide3.xml "最初にPCR法の利点を説明します。\n次に、感染性判定の課題に触れます。"

# 既にノートがあるスライドに実行すると上書き更新される
python3 ~/.claude/skills/pptx/scripts/add_notes.py unpacked/ slide2.xml "更新後のノートテキスト"
```

**このスクリプトが自動で行うこと:**
- `ppt/notesMasters/notesMaster1.xml` が存在しなければ自動生成
- `ppt/notesSlides/notesSlideN.xml` の作成（または既存ノートの更新）
- `presentation.xml`, `[Content_Types].xml`, slide rels への参照登録

**ノート内容のガイドライン:**
- タイトルスライドにも短い導入ノートを付ける。
- パラグラフスライドでは、見出しを読むだけで終わらず、メッセージの因果関係や補足の読み上げ順を書く。
- 段階表示の複製スライドでは、ノート本文は使い回してよいが、その段で新しく注目させる要素を 1 文追加する。
- Memo バーや黒背景ボックスがある場合は、ノートでも「何を注意喚起する欄か」を明示する。

### 7. clean & pack
```bash
python3 ~/.claude/skills/pptx/scripts/clean.py unpacked/
python3 ~/.claude/skills/pptx/scripts/office/pack.py unpacked/ output.pptx --original references/template.pptx
```

## デザインパターン

サンプル（sample1.pptx, sample2.pptx）で頻出するパターン。XML は [references/xml-patterns.md](references/xml-patterns.md) を参照。

### カード型レイアウト（3枚・4枚）
slide5〜8 を複製して使う。各カードは rect 枠 + テキストボックス。枠線は accent6（ティール）幅 19050 EMU。カード見出し＋説明テキストを内側に配置する。

### ハイライト枠（黄色）
`roundRect`、noFill、枠線 `FFFF00` 幅 57150 EMU。段階表示で「今ここに注目」を示すために使う。

### Memo バー
スライド下部（y≈6290000）の注記欄。ティール塗りの "Memo" ラベル + 右隣のテキストボックスの2要素。

### 黒背景ボックス
solidFill `000000` + 白テキスト。カード下部に重ねて課題・デメリットを表示。

### 矢印・フロー
`rightArrow` 等の prstGeom。accent6（ティール）で塗りつぶし。

## アニメーション（段階表示）

PowerPoint のアニメーション機能は使わない。代わりに**スライド複製**で段階表示を実現する。

1. 最終状態のスライドを作る
2. 必要回数だけ複製する
3. 早い段階の複製から要素を段階的に削除（最初の複製が最も要素が少ない）
4. presentation.xml で正しい順序に並べる

ハイライトも同様：複製ごとに黄色枠の位置を変えて注目箇所を移動させる。

## フォント指定（XML）

```xml
<!-- 游ゴシック (Regular/Bold) -->
<a:latin typeface="游ゴシック" panose="020B0400000000000000" pitchFamily="50" charset="-128"/>
<a:ea typeface="游ゴシック" panose="020B0400000000000000" pitchFamily="50" charset="-128"/>

<!-- 游ゴシック Medium -->
<a:latin typeface="游ゴシック Medium" panose="020B0500000000000000" pitchFamily="50" charset="-128"/>
<a:ea typeface="游ゴシック Medium" panose="020B0500000000000000" pitchFamily="50" charset="-128"/>
```

## EMU 変換

| 単位 | EMU |
|------|-----|
| 1 inch | 914400 |
| 1 cm | 360000 |
| 1 pt | 12700 |
| スライド幅 | 9144000 (10") |
| スライド高さ | 6858000 (7.5") |
