Install any skill in seconds. Free to start, no credit card required.
Get Started Free →TikTok/YouTube Shorts向けのバイラル動画スクリプト&ストーリーボード生成スキル。 調査済みのバイラルテクニック(3秒フック、モジュラー構造、ループブリッジ、フラッシュテキスト、 スプリットスクリーン等)をスクリプティングとストーリーボード作成に自動組み込み。 「TikTok動画のスクリプト」「バイラル動画を作りたい」「Short動画の台本」等で発動。
.claude/skills/minicoohei-viral-short-video/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 152% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 158% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 139% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 181% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 153% | 0% |
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] ← 既存スキル(拡張済み)
├─ キャプション焼き込み
├─ フラッシュテキスト挿入
├─ スプリットスクリーン合成 (背景オーバーレイ方式)
└─ 最終動画.mp4assets/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
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
| 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/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.jsonjson{ "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" } ] }
データ: 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" |
text[Hook: 0-3秒] → [Body: 3-15秒] → [CTA: 15秒+]
subway_surfers, minecraft| スキル | 役割 | 連携方法 | |-------|------|---------| | 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 | 投稿文・ハッシュタグ生成 | 別途実行 |
GEMINI_API_KEY: Gemini Flash(スクリプト生成)用storyboard-generator の依存(絵コンテ生成時のみ)ffmpeg(動画合成時のみ)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 17,065 | 6,556 | -62% | 1 | 1 | 0% | 2,887 | 3,800 | +32% | 0 | 0 | — |
case-02 | fail→fail | 15,533 | 6,391 | -59% | 1 | 1 | 0% | 2,936 | 3,647 | +24% | 0 | 0 | — |
case-03 | fail→fail | 21,086 | 7,708 | -63% | 1 | 1 | 0% | 3,214 | 4,001 | +24% | 0 | 0 | — |
case-04 | pass→pass | 7,532 | 2,413 | -68% | 1 | 1 | 0% | 1,184 | 3,788 | +220% | 0 | 0 | — |
case-05 | pass→pass | 10,640 | 2,864 | -73% | 1 | 1 | 0% | 1,720 | 3,798 | +121% | 0 | 0 | — |
case-06 | fail→pass | 11,272 | 6,881 | -39% | 1 | 1 | 0% | 1,824 | 4,593 | +152% | 0 | 0 | — |
case-07 | fail→pass | 10,018 | 2,429 | -76% | 1 | 1 | 0% | 1,453 | 3,751 | +158% | 0 | 0 | — |
case-08 | fail→pass | 10,587 | 4,466 | -58% | 1 | 1 | 0% | 1,711 | 4,084 | +139% | 0 | 0 | — |
case-09 | fail→pass | 9,020 | 3,152 | -65% | 1 | 1 | 0% | 1,406 | 3,956 | +181% | 0 | 0 | — |
case-10 | fail→pass | 9,492 | 1,796 | -81% | 1 | 1 | 0% | 1,450 | 3,673 | +153% | 0 | 0 | — |
case-11 | fail→pass | 10,915 | 4,855 | -56% | 1 | 1 | 0% | 1,746 | 4,092 | +134% | 0 | 0 | — |
case-12 | pass→pass | 7,462 | 2,240 | -70% | 1 | 1 | 0% | 1,299 | 3,681 | +183% | 0 | 0 | — |
case-13 | pass→pass | 7,991 | 3,496 | -56% | 1 | 1 | 0% | 1,405 | 4,010 | +185% | 0 | 0 | — |
case-14 | fail→pass | 8,359 | 2,275 | -73% | 1 | 1 | 0% | 1,328 | 3,782 | +185% | 0 | 0 | — |
case-15 | fail→pass | 5,429 | 2,081 | -62% | 1 | 1 | 0% | 947 | 3,728 | +294% | 0 | 0 | — |
case-16 | fail→pass | 10,659 | 4,439 | -58% | 1 | 1 | 0% | 1,816 | 4,241 | +134% | 0 | 0 | — |
case-17 | pass→pass | 5,356 | 2,540 | -53% | 1 | 1 | 0% | 983 | 3,802 | +287% | 0 | 0 | — |
case-18 | pass→pass | 10,077 | 6,925 | -31% | 1 | 1 | 0% | 1,788 | 4,584 | +156% | 0 | 0 | — |
case-19 | pass→pass | 12,871 | 17,166 | +33% | 1 | 1 | 0% | 2,221 | 6,371 | +187% | 0 | 0 | — |
case-20 | pass→pass | 11,569 | 7,226 | -38% | 1 | 1 | 0% | 2,001 | 4,664 | +133% | 0 | 0 | — |
case-21 | pass→pass | 5,955 | 1,112 | -81% | 1 | 1 | 0% | 919 | 3,497 | +281% | 0 | 0 | — |
case-22 | pass→pass | 7,605 | 2,133 | -72% | 1 | 1 | 0% | 1,238 | 3,728 | +201% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.