---
name: supermovie-se
description: |
  SuperMovieプロジェクトのテロップデータを分析し、効果音（seData.ts）を
  自動配置するスキル。テロップのスタイル・内容に応じたSE選択、
  バリエーション管理、音量バランス調整を自動実行。
  「SE配置」「効果音つけて」「supermovie se」と言われたときに使用。
argument-hint: [プロジェクトパス]
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
---

# SuperMovie SE — 効果音自動配置

Senior sound designer として、テロップの内容とタイミングを分析し、
動画のテンポを引き立てる効果音を自動配置する。

---

## ★標準フロー（確定仕様・必ずこの順で）

1. **Read: `_SEライブラリ/カタログ.md`**（音源・推奨volume・用途の正本。スキル内の表は参考要約）
2. telopData.ts / titleData.ts を読み、emphasis/warning/success テロップとタイトルに
   内容に合うSEを選んで `src/SoundEffects/seData.ts` を書く（配置ルールは Phase 3）
3. **検証スクリプトを必ず実行**（エラー0になるまで修正）:
   ```bash
   python3 "<このスキルのフォルダ>/scripts/check_se.py" "<PROJECT>"
   ```
   E1〜E9（配置対象・冒頭クリーン・間隔・連続・範囲・ファイル存在・音量・末尾余韻・密度均一）を機械検証する。

### 実証済みの配置原則（supermovie-0609・まさきFB反映）

- **SEを置くのは emphasis / warning / success テロップの startFrame と タイトル切替だけ。** normal=無音。
- **★冒頭クリーン**: frame 0 のタイトルと最初のテロップにはSEもアニメも付けない（静かに始める）。
- **★二重発火回避**: 章タイトル切替と同フレームに章頭の emphasis テロップがある場合、
  SEはタイトル側の1つに統合する（同フレーム2連発はノイズ）。
- **リスト項目**: 目次の「1つ目」「2つ目」…は番号テロップのみにSEを付け、直後の項目名テロップは省略
  （冒頭の密度過多を防ぐ）。
- **末尾の余韻**: 締めの挨拶（最後の5〜8秒）はSEなし。
- 密度はテロップ比 約30%（許容15〜45%）、**尺3分割で各1/3が同程度**（前半だけ賑やか=NG）。
- 多彩さ: 20種前後をローテーション。同一SEの連続使用禁止。音量はカタログ推奨値（0.20〜0.33が実績）。
- SEのフレームはテロップの startFrame をそのまま使う（テロップが+2f同期済みなので自動的に音声頭に揃う）。

## ワークフロー概要

```
┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐
│ 1. データ  │→│ 2. SE素材 │→│ 3. 配置   │→│ 4. 書き出し│
│ 読み込み  │  │ 準備     │  │ ロジック  │  │ + 検証    │
└──────────┘   └──────────┘   └──────────┘   └──────────┘
```

---

## 前提条件チェックリスト

- [ ] `/supermovie-subtitles` でテロップ生成済み
- [ ] `src/テロップテンプレート/telopData.ts` にデータあり
- [ ] `public/se/` にSEファイル配置済み
- [ ] /supermovie-image-gen で画像生成済み（任意）
- [ ] src/InsertImage/insertImageData.ts が存在（任意：画像出現タイミングにSE付与）

---

## Phase 1: データ読み込み

### 1-1. テロップデータ
`src/テロップテンプレート/telopData.ts` から全セグメントを取得。
**★注意: telopData のフレームは再生タイムライン（カット後）。SEもこのタイムラインに合わせる。**

### 1-2. タイトルデータ
`src/Title/titleData.ts` からセグメント境界を取得。

### 1-3. プロジェクト設定
`project-config.json` の `tone` を取得（SE密度の調整に使用）。

### 1-4. タイムライン確認（★必須）
SEの `startFrame` はテロップと同じ **再生タイムライン** で記述する。
テロップの `startFrame` をそのまま参照してSEを配置すれば、
自動的にカット後のタイムラインに揃う。
**transcript_fixed.json の元動画タイムスタンプを直接使ってはいけない。**

---

## Phase 2: SE素材準備

### 2-0. 共通SEライブラリ（★最優先で参照）

**正規ライブラリ:** `/Users/noguchimasatomo/Desktop/動画編集/_SEライブラリ/`
**カタログ:** `/Users/noguchimasatomo/Desktop/動画編集/_SEライブラリ/カタログ.md`

このライブラリには SuperMovie 全プロジェクトで共有する mp3 と、
用途・推奨volume・スタイル別マッピングを記載したカタログがある。
**SE配置前に必ず `カタログ.md` を Read して最新の音源・推奨volume・style別マッピングを把握する。**
（新音源が追加されても、ここを読めば即対応できる）

### 2-1. 素材チェック
`public/se/` の中身を確認。空の場合は共通ライブラリから全コピー:

```bash
cp /Users/noguchimasatomo/Desktop/動画編集/_SEライブラリ/*.mp3 "<PROJECT>/public/se/"
```

ライブラリよりプロジェクト側のSEが少ない場合（追加音源未反映）も同じく上書きコピー。

### 2-2. SE素材カタログ

カタログ本体は `_SEライブラリ/カタログ.md` を正本とする。
このスキル内のテーブルは**参考用の要約**に留め、実際の選択は必ず `カタログ.md` を Read してから判断する。

要約（2026-06-09時点・19種）:

```
┌─────────────┬──────────────────────────────────────┐
│ カテゴリ     │ ファイル例                              │
├─────────────┼──────────────────────────────────────┤
│ 強調         │ 決定ボタンを押す3/4/5/8 / 和太鼓でドドン │
│ 刻み・リスト  │ 和太鼓でカカッ / 拍子木1                │
│ 気づき・通知  │ 鈴を鳴らす / チリン / ピコンッ / ピーん  │
│              │ ポンッ / きらーん1 / ちゃりん            │
│ 成功・好転    │ 好転                                  │
│ 警告・ネガ    │ ショック2 / ドンッ / 不安(ピアノ) / チーン1 │
└─────────────┴──────────────────────────────────────┘
```

---

## Phase 3: SE配置ロジック

### 3-1. 配置密度（トーン別）

| トーン | SE密度（テロップ比） | 特徴 |
|--------|---------------------|------|
| プロフェッショナル | 30-40% | 控えめ、POP中心 |
| エンタメ | 50-70% | 積極的、バリエーション豊富 |
| カジュアル | 40-50% | 程よい、自然な配置 |
| 教育的 | 25-35% | 最小限、邪魔しない |

### 3-2. スタイル別SE選択（カタログ.md準拠・実ファイル名）

実績マッピング（supermovie-0609。音量はカタログ推奨値に従う）:

```
┌──────────┬──────────────────────────────────────────────────────┐
│ style    │ SE候補（内容に合わせてローテーション）                     │
├──────────┼──────────────────────────────────────────────────────┤
│ emphasis │ 決定ボタンを押す1/3/4/5/8/13/22/29 をローテ               │
│          │ 決め台詞=シャキーン1 / リスト・ステップ刻み=和太鼓でカカッ・拍子木1 │
│          │ 気づき=ピーん                                           │
│ warning  │ ドンッ / 警告音2 / ショック2 / 前振り「実は…」=不安（ピアノ演奏） │
│          │ オチ・残念=チーン1                                       │
│ success  │ 好転（メイン）/ きらーん1 / 鈴を鳴らす / お金・成果=ちゃりん     │
│          │ 締め=和太鼓でドドン                                      │
│ タイトル  │ 和太鼓でドドン / 拍子木1 を交互                            │
│ normal   │ SEなし（絶対）                                          │
└──────────┴──────────────────────────────────────────────────────┘
```

※ 旧表記（POP/WSH/BTN/CUR/BUZZ等の略称）は実ファイルに存在しない。**必ずカタログ.mdの実ファイル名を使う。**

### 3-3. 配置ルール（優先度順）

**★ 大原則: SEは「アニメーション付きテロップ」だけに置く（subtitlesルールと完全連動）**

`normal` スタイルにはSEを置かない。視聴者の目をチカチカさせないため、
SE と アニメーション は emphasis / warning / success の3スタイル限定で発火させる。

**必ずSEを置く（優先度: 高）:**
1. `emphasis` テロップの startFrame → 決定ボタン系ローテ（決め台詞はシャキーン1）
2. `warning` テロップの startFrame → ドンッ/警告音2/ショック2（前振りは不安ピアノ）
3. `success` テロップの startFrame → 好転/きらーん1/鈴を鳴らす
4. タイトル切り替わりフレーム → 和太鼓でドドン/拍子木1
5. 画像出現フレーム（insertImageData.tsのstartFrame・画像がある場合のみ）→ ポンッ/ピコンッ

**置かない:**
- `normal` テロップ → SEなし（アニメーションもなしで、静かに読ませる）
- ★frame 0 のタイトル・最初のテロップ（冒頭クリーン）
- ★章タイトルと同フレームの章頭テロップ（タイトル側1つに統合・二重発火回避）
- ★リスト番号テロップ直後の項目名テロップ（番号側だけに付ける）
- 直前のSEから10フレーム以内
- 動画の最後5〜8秒（余韻）

### 3-4. バリエーション管理

**連続回避ルール:**
- 同一SEファイルを **連続使用しない**（check_se.py の E4 で機械検証）
- 決定ボタン系（1/3/4/5/8/13/22/29）をローテーション
- タイトルSEは 和太鼓でドドン ⇄ 拍子木1 を交互
- 1動画で20種前後を使い、特定SEに偏らせない（実績: 53個で21種）

---

## Phase 4: 書き出し＆検証

### 4-1. seData.ts 出力形式

```typescript
import type { SoundEffect } from './SEPlayer';

export const seData: SoundEffect[] = [
  { id: 1, startFrame: 45, file: 'パッ (1).mp3', volume: 0.3 },
  { id: 2, startFrame: 120, file: '決定ボタンを押す2.mp3', volume: 0.35 },
  // ...
];
```

### 4-2. バリデーション（必須・scripts/check_se.py を実行）

```bash
python3 "<このスキルのフォルダ>/scripts/check_se.py" "<PROJECT>"
```

手動でチェック表を再実装しない。スクリプトが E1〜E9 を機械検証する:
配置対象（emphasis/warning/success/タイトルのstartFrameのみ）/ 冒頭クリーン /
重複・10f間隔 / 同一SE連続禁止 / 範囲 / ファイル存在 / 音量0.15〜0.40 /
最後5秒の余韻 / 密度15〜45%＋尺3分割の均一性。
**エラーが0になるまで seData.ts を修正して再実行してから完了報告する。**

---

## 完了時の報告フォーマット

```
✅ SE配置完了

🔊 SE数: <N>個（テロップ比 <X>%）
   - POP: <n> / BTN: <n> / WSH: <n> / CUR: <n> / BUZZ: <n> / 他: <n>
🎚️ 音量レンジ: 0.25〜0.35

次のステップ:
→ npm run dev でプレビュー確認
→ 気になるSEがあれば seData.ts を手動調整
```

---

## エラーハンドリング

| エラー | 対応 |
|--------|------|
| telopData が空 | `/supermovie-subtitles` の実行を促す |
| SE素材が不足 | 共通素材のコピーを提案 |
| project-config.json なし | デフォルト（カジュアル密度40%）で続行 |

---

## 連携マップ

```
/supermovie-init              ← ヒアリング → プロジェクト作成
    ↓
/supermovie-transcribe        ← 文字起こし（ローカル無料）
    ↓ transcript.json
/supermovie-transcript-fix    ← 誤字修正（辞書 + Claude LLM）
    ↓ transcript_fixed.json
/supermovie-cut               ← 不要区間カット（VAD + LLM分析）
    ↓ cutData.ts
/supermovie-subtitles         ← テロップ＆タイトル生成
    ↓ telopData.ts + titleData.ts
/supermovie-image-gen         ← 画像生成 + 配置データ
    ↓ insertImageData.ts
/supermovie-se                ← ★ここ: SE自動配置
    ↓
npm run dev                   ← プレビュー
```
