---
name: minicoohei/viral-short-video
source: https://app.decimal.ai/s/minicoohei-viral-short-video@1/SKILL.md
source_sha256: 0c51dc20372b
---

# Viral Short Video - バイラルショート動画スクリプト&ストーリーボード

TikTok / YouTube Shorts 向けのバイラル動画制作パイプライン。
調査に基づくバイラルテクニックをスクリプトに自動埋め込みし、
既存の `storyboard-generator` / `video-editor` と連携して動画を生成する。

## パイプライン全体像

```
[トピック/商材/ターゲット]
  ↓
[generate_viral_script.py]  ← このスキルの中核
  ├─ viral_script.json       (バイラル構造化スクリプト)
  ├─ scenes.json             (storyboard-generator互換)
  ├─ hook_variants.json      (フックバリエーション x3)
  └─ hook_analysis.json      (--analyze-video時: ピークフック分析)
  ↓
[storyboard-generator]       ← 既存スキル
  ├─ frames/                 (絵コンテ画像)
  └─ scenes.json             (拡張済み)
  ↓
[video-editor]               ← 既存スキル（拡張済み）
  ├─ キャプション焼き込み
  ├─ フラッシュテキスト挿入
  ├─ スプリットスクリーン合成 (背景オーバーレイ方式)
  └─ 最終動画.mp4
```

## 同梱アセット

### ゲームプレイ背景素材 (`assets/gameplay/`)

| プリセット名 | ゲーム | 長さ | 備考 |
|-------------|--------|------|------|
| subway_surfers | Subway Surfers | 26分 | 縦型HD, No Copyright |
| minecraft | Minecraft Parkour | 5分 | 縦型2K 60fps, No Copyright |

### フックコンピレーション素材 (`assets/hooks/`)

| プリセット名 | 内容 | 用途 |
|-------------|------|------|
| hook_viral_10 | 10 TikTok Hooks You Can Use To Go Viral | フック実例集: 10パターン |
| hook_trifecta | This HOOK Combo Will Get You Viral on TikTok | フック三位一体戦略+実例 |
| hook_600k_gmv | This Hook Made $600K GMV on TikTok Shop | $600K売上フック分解 |

初回セットアップ: `bash skills/viral-short-video/scripts/download_assets.sh`

## Usage

```bash
# 基本: トピックからバイラルスクリプト生成
python skills/viral-short-video/scripts/generate_viral_script.py \
  --topic "仮想通貨ウォレットの安全な使い方" \
  --duration 30 \
  --target "20-30代の仮想通貨初心者" \
  --session "crypto_wallet_tips"

# 商材名を指定してスクリプト生成
python skills/viral-short-video/scripts/generate_viral_script.py \
  --topic "このアプリで送金手数料を90%カットする方法" \
  --product "My Product" \
  --duration 15 \
  --tone casual \
  --session "product_fees"

# ストーリーボード生成まで一気通貫
python skills/viral-short-video/scripts/generate_viral_script.py \
  --topic "AIで動画を作る方法" \
  --duration 60 \
  --generate-storyboard \
  --character "20代の日本人女性、カジュアルな服装" \
  --session "ai_video_tutorial"

# dry-run（スクリプトのみ生成、画像生成なし）
python skills/viral-short-video/scripts/generate_viral_script.py \
  --topic "3つの投資の間違い" \
  --duration 30 \
  --dry-run

# ピークフック抽出: 同梱のフックコンピレーション動画を分析
python skills/viral-short-video/scripts/generate_viral_script.py \
  --analyze-video hook_viral_10 \
  --topic "仮想通貨ウォレット" --duration 30

# ピークフック抽出: カスタム動画を分析
python skills/viral-short-video/scripts/generate_viral_script.py \
  --analyze-video path/to/any_viral_video.mp4 \
  --topic "アプリ紹介" --duration 15

# ピークフック抽出: dry-run（分析結果の表示のみ）
python skills/viral-short-video/scripts/generate_viral_script.py \
  --analyze-video hook_trifecta \
  --topic "副業" --dry-run
```

## Parameters

| Parameter | Required | Default | Description |
|-----------|----------|---------|-------------|
| --topic | Yes | - | 動画のトピック/テーマ |
| --product | No | - | 商材/サービス名 |
| --duration | No | 30 | 動画の長さ（秒）: 15, 30, 60 |
| --target | No | - | ターゲット層の説明 |
| --tone | No | casual | トーン: casual, professional, energetic, storytelling |
| --hook-style | No | auto | フックスタイル: curiosity, fomo, social_proof, pattern_interrupt, contrarian |
| --split-screen | No | false | スプリットスクリーン用の指示を含める |
| --flash-text | No | true | フラッシュテキスト（リウォッチ誘導）を含める |
| --loop | No | true | ループブリッジ（冒頭回帰）を含める |
| --variants | No | 3 | フックバリエーション数 |
| --generate-storyboard | No | false | scenes.json生成後にstoryboard-generatorを呼び出す |
| --character | No | - | ストーリーボード用キャラクター説明 |
| --session | No | - | セッション名（出力フォルダ名） |
| --dry-run | No | false | スクリプトのみ生成（APIコール最小） |
| --lang | No | ja | スクリプト言語: ja, en |
| --analyze-video | No | - | ピークフック抽出。プリセット名(hook_viral_10, hook_trifecta, hook_600k_gmv)またはファイルパス |

## Output Structure

```
output/viral-scripts/
└── YYYYMMDD_HHMMSS_session/
    ├── viral_script.json      # メインスクリプト（バイラル構造化）
    ├── scenes.json            # storyboard-generator互換形式
    ├── hook_variants.json     # フックバリエーション
    ├── hook_analysis.json     # ピークフック分析結果（--analyze-video時のみ）
    └── storyboard/            # --generate-storyboard時のみ
        ├── frames/
        ├── storyboard_sheet.png
        └── scenes.json
```

## viral_script.json フォーマット

```json
{
  "meta": {
    "topic": "トピック",
    "product": "商材名",
    "duration": 30,
    "target": "ターゲット層",
    "tone": "casual"
  },
  "hook": {
    "text": "正直これ教えたくなかったんだけど...",
    "duration": 3,
    "trigger_type": "curiosity_gap",
    "visual_note": "目を見開いてカメラに向かって話す",
    "emotion": "surprise"
  },
  "body": [
    {
      "text": "実はこのアプリ使うだけで送金手数料が...",
      "duration": 5,
      "visual_note": "スマホ画面を見せながら説明",
      "motion_type": "i2v"
    }
  ],
  "cta": {
    "text": "リンクはプロフィールから。今すぐチェックして",
    "duration": 3,
    "visual_note": "画面下を指差す",
    "emotion": "friendly"
  },
  "loop_bridge": {
    "enabled": true,
    "end_text": "さっき言った一番ヤバいやつだけど...",
    "connects_to": "hook",
    "visual_note": "冒頭と同じカメラアングルに戻る"
  },
  "flash_text": {
    "enabled": true,
    "text": "最後まで見た？もう一回見て",
    "color": "red",
    "duration_frames": 3,
    "position": "center"
  },
  "viral_techniques": {
    "split_screen": false,
    "captions": true,
    "lofi_aesthetic": true,
    "fast_pace": true,
    "speech_speed": 1.2
  },
  "hook_variants": [
    {
      "text": "99%の人がこれ知らないんだけど...",
      "trigger_type": "curiosity_gap"
    },
    {
      "text": "これ見逃したらマジで損する",
      "trigger_type": "fomo"
    },
    {
      "text": "100万人が使ってるのに誰も教えてくれない",
      "trigger_type": "social_proof"
    }
  ]
}
```

---

## バイラルテクニック チートシート

### 1. 冒頭3秒フック（最重要）

**データ**: 3秒維持率65%超 → 4-7xインプレッション / エンゲージメント+340%

**7つの心理トリガー** (バイラル動画の84.3%で使用):

| # | トリガー | 日本語フック例 | 英語フック例 |
|---|---------|--------------|-------------|
| 1 | パターンインタラプト | 「ちょっと待って、これ見て」 | "Wait, look at this" |
| 2 | キュリオシティギャップ | 「99%の人が知らない〇〇」 | "Nobody tells you this about..." |
| 3 | FOMO | 「今だけ」「これ見逃したら損」 | "You're missing out on..." |
| 4 | ソーシャルプルーフ | 「100万人が使ってる」 | "1M people already use this" |
| 5 | 感情的覚醒 | 「マジでヤバい」「信じられない」 | "I can't believe this works" |
| 6 | サプライズ | （目を見開く + 沈黙1秒） | (wide eyes + 1s pause) |
| 7 | 個人的関連性 | 「〇〇な人だけ見て」 | "If you're a [target], watch this" |

### 2. モジュラー構造

```text
[Hook: 0-3秒] → [Body: 3-15秒] → [CTA: 15秒+]
```

- 効果: 制作コスト-40%、テスト速度2x
- Hook部分だけ差し替えてA/Bテスト

### 3. ループブリッジ

- 効果: リウォッチ = アルゴリズムブースト+84%
- 70%完視聴率 → アルゴリズム推進
- 92%完視聴率 → 3xリーチ（Sticky Content認定）
- パターン: 動画の最後で「さっき言った〇〇だけど...」→ 冒頭に戻る

### 4. フラッシュテキスト（リウォッチトリガー）

- 最後の2-3フレーム（0.1秒未満）に赤/黒文字を一瞬表示
- 意識的に読めない速度 → 「今なんか見えた？」→ リウォッチ
- テキスト例: 「もう一回見て」「隠しメッセージ」「気づいた？」
- 色: 赤（緊急性・目立つ） or 黒背景に白文字（ミステリアス）

### 5. 背景ゲームプレイ（オーバーレイ方式）

- 全画面背景: Minecraft/Subway Surfers → 上部にメインコンテンツをオーバーレイ
- TikTokスタイル: ゲームプレイが全画面(1080x1920)、メインが上部(1080x960)
- 効果: 平均視聴時間+40%、コメント・シェア2x
- Gen Z(18-24歳)の67%に特に有効
- プリセット素材同梱: `subway_surfers`, `minecraft`
- 注意: ブランドイメージを損なう可能性 → オーガニック投稿向け推奨

### 6. ピークフック抽出

- バズ動画の最もフックの強い瞬間を自動特定
- video-frame-reader + Gemini Flash Vision でスコアリング
- 抽出したフックパターンでスクリプト再構成案を自動生成
- 同梱のフックコンピレーション素材(3本)で即座に分析可能

### 7. 字幕（キャプション）

- 85%がミュート視聴 → 字幕で維持率+31%、エンゲージメント+38%
- TikTokセーフゾーン: Y位置55-65%（上15%・下20%は避ける）
- 日本語: 1行5-8文字、最大2行、太字白+黒縁3px

### 8. ロファイ感（UGC風）

- UGC風 vs プロ品質: CTR 4x、コンバージョン率+29%
- iPhone撮影風のカジュアルな雰囲気
- 背景: 自宅風、カフェ風など自然な環境

### 9. 音声ペース

- 1.1-1.3xの速い音声 → 離脱防止
- 間を詰めて情報密度を上げる

---

## 連携スキル

| スキル | 役割 | 連携方法 |
|-------|------|---------|
| `storyboard-generator` | scenes.json → 絵コンテ画像 | `--generate-storyboard` で自動連携 |
| `video-editor` | 最終動画合成（キャプション/フラッシュ/背景オーバーレイ） | `compose_video.py --flash-text --split-screen subway_surfers` |
| `video-frame-reader` | 動画のキーフレーム抽出 | `--analyze-video` で自動連携 |
| `banner-creator` | サムネイル生成 | 別途実行 |
| `social-content` | 投稿文・ハッシュタグ生成 | 別途実行 |

## Requirements

- `GEMINI_API_KEY`: Gemini Flash（スクリプト生成）用
- Python packages: google-genai, python-dotenv
- `storyboard-generator` の依存（絵コンテ生成時のみ）
- `ffmpeg`（動画合成時のみ）

## Trigger Phrases

- 「TikTok動画のスクリプトを作って」
- 「バイラル動画を作りたい」
- 「Short動画の台本」
- 「TikTok用のスクリプト生成」
- 「バズる動画を作りたい」
- 「リール動画の企画」