# Sangoku Song

> 三国志武将のHIPHOP楽曲を、武将選択から曲+歌詞+画像+動画まで質問ドリブンで制作するウィザード。ユーザーが「三国志」「sangoku」等と言った時、または /sangoku-song を呼んだ時にトリガー。

- Skill: `fukukei23/sangoku-song` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds add fukukei23/sangoku-song`
- Raw SKILL.md: https://api.skillmd.com/api/skills/fukukei23/sangoku-song/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: fukukei23 (https://skillmd.com/u/fukukei23)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/fukukei23/sangoku-song

---


# 三国志HIPHOP制作ウィザード

## トリガーワード
「三国志」「sangoku」「/sangoku-song」

## 前提知識（進行開行に必ず読み込む）

> 📁 **保存場所（固定・変更禁止）**: 全成果物は `/home/yn4416/projects/sangokushi-HIPHOP/songs/<武将>_<エピソード>/` 配下に保存すること。`~/Music/` には一切保存しない。スキル実行時は最初に `mkdir -p` で正規パスを事前作成し、そこ以外にファイルを作らないこと。

- `references/発音ルール.md`（**硬制約**・造語/誤読再発防止・は→わ）
- `references/曲構成_BPM計算.md`（テンポ×曲長連動・構造タグ14種）
- `references/固有名詞マップ.md`（読み辞書・janome限界）
- `references/music-cover手法.md`（発音問題の公式解法）
- `references/韻技術.md`（母音ベース韻・Phase 2 で使用）
- `references/武将カタログ.md`（Phase 0 選択用）
- `references/ジャンルカタログ.md`（Phase 1 選択用）

> **🔗 作曲エンジン共通参照**（`make-song` へ共通化済み・必ず参照）:
> - `../make-song/references/[L1]プロンプト技法.md`（**Phase 1/3 参照**・GMIV順序・具体語推・楽器制限・括弧/コロン記法）
> - `../make-song/references/[L1]構造理論.md`（**Phase 2 参照**・小節×BPM・ジャンル別構造・**感情曲線Emotion Arc**）
> - `../make-song/references/[L1]楽曲制作基礎_ジャンル別.md`（**Phase 1 参照**・コード進行語彙・スケール・リズム・10ジャンルの作曲の型）
> - `../make-song/references/[L1]日本語歌詞技法.md`（**Phase 2 参照**・韻・歌詞構成論・音節設計）
>
> 本スキル固有の `発音ルール.md`/`曲構成_BPM計算.md`/`武将カタログ.md`/`ジャンルカタログ.md` は三国志HIPHOP特化として残存・上記共通知識と併用すること。

---

## 進行（7フェーズ・ハイブリッド）

**🔴 = 人間判断ポイント。必ず停止してユーザー確認を待つ。** 楽曲制作は「聴かないと分からない」ので生成ごとに停止（曹仁v1-v8の失敗→修正ループの再現）。

### Phase 0: 武将選択（起点）

`AskUserQuestion` で選択式:
```
質問:「どの武将で作りますか?」
選択肢（武将カタログから代表）:
  曹操 / 曹仁 / 関羽 / 張飛 / 趙雲 / 諸葛亮 / 呂布 / 周瑜 / 劉備 / 司馬懿
  ＋「その他（カタログ参照）」
```
> **💡 外部楽曲ベースの場合**: YouTube動画から世界観・構造を逆コンパイルしたい時は `reverse-engineer-song` スキルを使用（「YouTubeから分析して」等）。出力仕様書を本skillの Phase 0「その他」経由で持ち込み可能。

> **💡 汎用の作曲・作詞（テーマ不限）の場合**: `make-song` スキルを使用（「曲作って」「作曲して」等）。本スキルは三国志HIPHOP固有だが、作曲エンジン部分は `make-song` に共通化されている。必要に応じて `make-song` の参照（プロンプト技法・構造理論・発音問題等）を活用可。

選択後、`references/武将カタログ.md` からその武将の **代表作戦・人物像・推奨ジャンル/テンポ** を提示。

### Phase 1: 設計パラメータ固め（核心5項目）

`AskUserQuestion` で順に選択式:

1. **対象エピソード/戦** — 選んだ武将のカタログから候補提示（曹仁→「樊城籠城戦」等）
2. **ジャンル** — 代表8個 ＋「その他」:
   `和風HIPHOP / グレイトフル・デイズ風 / 中華風HIPHOP / トラップ / ドリル / オーケストラHIPHOP / ブームバップ / ヌメタルHIPHOP`
3. **テンポ感 → BPM** — `スロー70-85 / ミドル86-100 / アップ101-115 / ファスト116+ / 数値直接指定`
4. **曲の規模** — `フック8小節 / フック16小節 / 60秒 / フル3分 / フル4分`
   ※ 秒数は BPM から自動算出して表示（`秒数 = 小節数 × 4 × 60 / BPM`）。`曲構成_BPM計算.md` 参照。
5. **ボーカル性別** — `男 / 女 / デュオ(F)(M)`

### Phase 2: 歌詞制作（スキル内10ステップ・硬制約適用）

`発音ルール.md` と `固有名詞マップ.md` を厳守しながら:

1. テーマ確定 → 史実確認（カタログの史実参照）
2. 構成設計 → `曲構成_BPM計算.md` で小節数逆算
3. **漢字で歌詞執筆**（意味明確に）
4. **ひらがな化** → `scripts/kanji_to_hiragana.py` でjanome確認（固有名詞マップ適用）
5. **発音制御** → 助詞「は→わ」**全適用**（発音ルール.md）
6. **日本語チェック** → 造語・不自然表現スキャン（1行ずつ音読）
7. **漢字版併記**（ユーザー照合用・必須）
8. **韻設計** → `韻技術.md` で母音列調整
9. **生成前チェックリスト**（発音ルール.md §6項目全確認）
10. 🔴 **人間判断**: 漢字版歌詞を提示 → **「この歌詞で生成していいですか?」**

### Phase 3: 楽曲生成

1. MiniMax MCP `music_generation`（model=music-2.6）で生成
   - prompt: ジャンルカタログの英語プロンプト指針
   - lyrics: Phase 2 のひらがな歌詞（構造タグ `[Verse 1][Chorus]` 等）
2. 🔴 **人間判断**: 聴取 → **「発音/曲調はどうですか?」**
3. **発音問題あれば music-cover ループ**（`music-cover手法.md`）:
   - 良い回を即 `music_cover_preprocess`（無料・直接API）→ `cover_feature_id`（24h有効）
   - 修正歌詞で `music-cover` 生成（直接API・MCP不可）
   - → 再聴取

### Phase 4: アートワーク（画像）

1. MiniMax MCP `text_to_image`（image-01）で構図生成
   - 水墨画風・武将の象徴シーン（曹仁なら籠城/関羽攻撃/洪水 等）
   - **構造化プロンプト推奨**（出典: サイバー和モダン映像分析・Gemini生成）:
     `[スタイル] + [被写体] + [環境/小物] + [照明/色] + [構図] --ar 16:9`
     - 例: `Chinese ink wash painting, general Cao Ren on flooded walls, rain and storm clouds, dramatic lighting indigo and crimson, cinematic --ar 16:9`
2. 🔴 花鈿（眉間の赤点）あれば → `remove-huadian` スキルを自動呼出
3. 🔴 **人間判断**: **「構図/花鈿除去はこれでいいですか?」**

### Phase 5: 動画生成

1. MiniMax MCP `generate_video`（Hailuo-2.3）で生成
   - **FL2V**（開始+終了帧）/ **S2V**（人物参照）/ **I2V**（静止画→動画）を `00_SYSTEM/AI生成メディア_ケイパビリティマップ.md` 参照で選択
   - 最大10秒。15秒は10s+5sを2本→ffmpeg結合
   - **モーション指示**（出典: サイバー和モダン映像分析・Gemini生成）:
     - 静（Lofi/籠城）: `perfect loop, subtle swaying smoke, slow grain, no sudden camera movement`
     - 動（戦闘/サビ）: `fast dynamic camera panning, ink transition effect, aggressive particle motion`
2. 🔴 **人間判断**: **「動画はこれでいいですか?」**
   - Token Plan制限時: 従量課金($0.19~/本)を案内してスキップ可、または `MINIMAX_API_KEY_VIDEO`（別アカウント）で直接API生成（`00_SYSTEM/AI生成メディア_ケイパビリティマップ.md` §2 参照）

### Phase 6: 成果物整理 + SSOT記録

1. 楽曲ディレクトリに格納（`/home/yn4416/projects/sangokushi-HIPHOP/songs/<武将>_<エピソード>/`）
   - `lyrics.md`（ひらがな＋漢字版＋修正履歴）
   - `README.md`（アートワーク・履歴表）
   - `_INDEX.md` 更新
2. SSOT記録（既存ルール準拠）:
   - `01_DECISIONS/ai-music/YYYY-MM-DD_<武将><エピソード>.md`（詳細）
   - `10_DAILY/YYYY-MM-DD.md`（サマリー+リンク）

---

## エラー処理・フォールバック

| 障害 | 対処 |
|---|---|
| 🔴発音問題（聴取後） | music-coverループ（`music-cover手法.md`） |
| 🔴生成揺らぎ | 良い回を即 preprocess 保存（cover_feature_id は24h有効） |
| 🔴動画Token Plan制限 | 従量課金($0.19~/本)案内してスキップ可 |
| 🔴花鈿（眉間の赤点） | `remove-huadian` スキルを自動呼出 |
| 🔴造語/漢字誤読 | Phase 2 の品質チェックで硬制約（janome+固有名詞マップ・人間最終確認） |

## 重要: MCP説明文 ≠ 公式仕様

`music_generation` MCP説明文に「up to 1 minute」とあるが**誤り**。曲長は BPM×小節数で決まり、5分曲も可能（曹仁v8=175秒で実証）。長さ・コスト・機能の上限は `references/曲構成_BPM計算.md` と `00_SYSTEM/AI生成メディア_ケイパビリティマップ.md` を信じる。

## 関連
- `references/` 7本（知識層）
- `scripts/kanji_to_hiragana.py`（janome一括変換・venv: `~/venv/janome`）
- 既存スキル `remove-huadian`（花鈿除去・Phase 4 で呼出）
- 設計書: `obsidian-ssot/01_DECISIONS/ai-music/2026-06-15_sangoku-songスキル_design.md`

