Communitygithub.com

mkt-hyperframe-talking-head-video

MP4 9:16 のトーキングヘッド動画から、キャプション、SFX、ズームフック、Bロール、CTAを備えたHyperFramesプレビュープロジェクトを構築するパイプラインです。

mkt-hyperframe-talking-head-video とは?

このスキルは、事前に録画された9:16のトーキングヘッドMP4動画を、TikTokやReelsなどのショート動画プラットフォーム向けに、完全なHyperFramesプレビュープロジェクトに変換するエンドツーエンドのパイプラインです。主な機能として、ベトナム語音声の文字起こしとWhisperエラーの自動クリーンアップ、3〜5語のキャプショングループへの同期、6つの効果音、4つのズームフック、アンビエントケンバーンズドリフト、そして各BロールシーンにリッチなGSAPエフェクト(パルスリング、コーナーマーク、ワードスラムタイトル、カウントアップ数字、ライトスイープ、下線の落書き、スパークル、パーティクル)を適用します。さらに、動画の顔部分とBロール部分を同時に表示できるスプリットスクリーンレイアウトも推奨しており、キャプションは自動的に最適な位置に移動します。このスキルは、ユーザーが「tạo video tiktok từ footage」や「build hyperframe talking head」といったフレーズでリクエストした場合に自動的にトリガーされ、HyperFramesプレビュースタジオを開いてレビューを促します。重要なのは、**絶対にMP4を自動レンダリングしない**ことで、ユーザーがプレビューで確認した後に明示的にレンダリングを指示するまで待機します。このスキルは、Claude Code、Cursor、CodexなどのAIエージェント環境で動作し、`npx hyperframes`、`ffprobe`、`python3`といったCLIツールと連携します。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/lexuanthanhhy/MKT.LANDINGPAGE.SKILLS/tree/HEAD/.claude/skills/mkt-hyperframe-talking-head-video

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

mkt-hyperframe-talking-head-video は何をしますか?

MP4 9:16 トーキングヘッドから、キャプション、SFX、ズームフック、リッチエフェクト付きBロール、CTAを備えたHyperFramesプレビュープロジェクトを構築するパイプラインです。

使用するタイミング

  • ユーザーが9:16のフェイスカム動画(TikTok/Reels/Shorts)を録画済みで、キャプション、ビジュアルフック、SFXを追加したい場合
  • ユーザーが追加の画像や動画Bロールを(使用目的と共に)埋め込みたい場合
  • ユーザーがMP4レンダリング前にプレビュースタジオでビジュアルを確認したい場合

以下の場合はこのスキルを使用しないでください:

  • ユーザーがまだ動画を録画していない場合 — 事前に mkt-create-script-short-video を使用してスクリプトを作成するか、AIナレーション+アバター動画作成には別のスキルを使用してください
  • ユーザーが既存のHyperFramesプロジェクトを持っており、微調整のみを行いたい場合 — 再生成ではなく、ファイルを直接編集してください
  • ユーザーが既存のプロジェクトからMP4をレンダリングしたい場合 — npx hyperframes render を直接実行してください

パイプライン概要

MP4 9:16 トーキングヘッド + (オプション) Bロールファイル
    │
    ▼
1. MP4を検査 ────────── ffprobe → 長さ、解像度、FPS
    │
    ▼
2. 構造を計画 ───────── ユーザー入力または文字起こしから自動でレッスンマーカーを検出
    │
    ▼
3. 文字起こし ────────── npx hyperframes transcribe --model medium --language vi
    │
    ▼
4. 文字起こしをクリーニング ──── VN Whisperエラー辞書を適用 (alphabit→Alphabet など)
    │
    ▼
5. キャプションをグループ化 ──── 3〜5単語/グループ、0.45秒以上のギャップで分割、タイミング保持
    │
    ▼
6. Bロールをマッピング ──────── ユーザーに目的を確認 → レッスンシーンに割り当て
    │
    ▼
7. プロジェクトを生成 ──────── workspace/video-projects/<slug>/
    ├── index.html (ルート)
    ├── source.mp4
    ├── transcript.json + caption-groups.json
    ├── compositions/
    │   ├── captions.html
    │   ├── fs-lesson-N.html (レッスンごとに1つ、エフェクトは変化)
    │   ├── recap-card.html (該当する場合)
    │   └── fs-cta.html
    └── sfx/ (6つの効果音)
    │
    ▼
8. Lint ──────────────── npx hyperframes lint → エラー修正
    │
    ▼
9. プレビューを開く ──────── npx hyperframes preview (バックグラウンド) → Studio URL
    │
    ▼
10. ユーザーに引き継ぐ ──── MP4は自動レンダリングしない

プレビュー優先ルール(必須): スキルはステップ9で終了し、Studio URLを提供します。MP4レンダリングは、ユーザーがプレビュー後に明示的に確認した場合のみ実行します。

ステップ 1: 入力確認と計画

ユーザーは以下を提供します:

入力必須形式
MP4フェイスカム9:16はいファイルパス
スラッグ / プロジェクト名いいえファイル名から自動生成、指定も可
Bロールリストいいえ[{path: "screenshot.png", purpose: "レッスン1 — 実験の図解"}, ...]
動画構成いいえ"3レッスン+イントロ+CTA" / "5つのコツ" など — 指定がなければ自動検出

MP4を検査してから次に進みます:

ffprobe -v error -show_entries format=duration:stream=codec_type,width,height,r_frame_rate \
  -of json "<mp4_path>"

確認事項:

  • 解像度が9:16であること (例: 1080x1920, 1440x2560) — 横向きの場合は警告しますが、処理は続行します(object-fit:coverでクロップされます)
  • 長さが180秒未満が理想的、180秒超でも処理は可能ですが、TikTokのアルゴリズムは90秒以下を好むと警告します
  • FPS 24/25/30/60 は全てOK — 出力はデフォルト30fps

スラッグ: ファイル名から生成、小文字、ベトナム語記号→ASCII、スペース→ダッシュ。例 "3 bài học .mp4" → 3-bai-hoc。ユーザーは上書き可能です。

出力ディレクトリ: workspace/video-projects/<slug>/

ステップ 2: 文字起こしとクリーニング

cd workspace/video-projects/<slug>/
cp <user_mp4> source.mp4
npx hyperframes transcribe source.mp4 --model medium --language vi

ベトナム語音声に対しては 決して --model medium.en や small.en を使用しないでください — .en モデルは文字起こしではなく英語に翻訳します。ベトナム語音声には常に --language vi を使用してください。

完了後、文字起こしをクリーニング:

python3 .claude/skills/mkt-hyperframe-talking-head-video/scripts/clean_transcript.py \
  transcript.json
# 出力: transcript.json (インプレースクリーニング) + caption-groups.json (自動グループ化)

このスクリプトはVN Whisperのエラー置換(alphabit→Alphabet、Cod→Code、dụng/dùng 文脈認識、đ��ng→đắc など)を適用し、0.45秒以上のギャップで3〜5単語のキャプションフレーズに自動グループ化します。

重要なキャプション同期ルール: タイミングは単語レベルの文字起こしから正確に保持しなければなりません。タイミングを手動編集しないでください。テキスト修正が必要な場合はテキストのみを編集してください — clean_transcript.py スクリプトが処理済みです。よくあるバグ: テキストを手動編集した際に誤ってタイミングを変更し、動画途中でキャプションが5秒ずれる問題が発生します。

ステップ 3: シーン構造を検出

python3 .claude/skills/mkt-hyperframe-talking-head-video/scripts/detect_scenes.py \
  transcript.json
# 出力: scenes.json

スクリプトは文字起こしから以下のマーカーを検索:

  • "Bài học đầu tiên / thứ 2 / thứ 3 / thứ N" → レッスンシーン
  • "Tips số 1 / Tip 1 / Số 1" → ヒントシーン
  • "Tổng kết lại / Recap / Kết luận" → まとめの瞬間
  • "Comment / Đăng ký / Like / Theo dõi" → CTAの瞬間

出力 scenes.json:

{
  "type": "lessons",
  "scenes": [
    { "kind": "lesson", "num": 1, "start": 9.4, "end": 13.0, "kicker": "Bài học #1", "heading": "..." },
    { "kind": "lesson", "num": 2, "start": 34.5, "end": 38.0, ... },
    { "kind": "lesson", "num": 3, "start": 61.5, "end": 65.5, ... },
    { "kind": "recap", "start": 84.9, "end": 99.0 },
    { "kind": "cta", "start": 99.0, "end": 106.94 }
  ]
}

自動検出で明確な構造が見つからない場合(例: 自由形式のVlog)、結果をユーザーに提示して確認を求めます。ユーザーはタイムスタンプを上書きできます。

ステップ 4: Bロールをマッピング

ユーザーがBロールファイルを目的と共に提供する場合:

[
  { path: "alphabet-screenshot.png", purpose: "レッスン1 — Alphabet ship beta" },
  { path: "clock-icon.mp4",         purpose: "レッスン2 — 24時間の図解" },
  { path: "team-meeting.png",       purpose: "レッスン3 — チームの壁を取り除く" }
]

マッピングロジック:

  • 各Bロールは、目的内のテキスト "レッスンN" に基づいて1つのシーンとマッチング
  • 画像 → そのシーンの全画面背景として使用(テキストのみの生成シーンを置き換え)
  • 動画 → 全画面シーン背景またはピクチャーインピクチャーオーバーレイとして使用(デフォルト: 全画面)
  • デフォルトのシーンエフェクト(パルスリング、コーナーマークなど)は、Bロール画像/動画の上にレイヤーされます

ユーザーがBロールを提供しない場合は、テキストのみのシーン(参考プロジェクト 3-bai-hoc/ と同様)を使用します — タイトル、大きな数字、サブテキストで構成されたテキストカードを生成します。

ステップ 5: プロジェクトファイルを生成(インフォグラフィックスタイル — デフォルト)

コンテンツ駆動型のモックアップBロールには infographic v2 ジェネレーターを使用します(Hostinger インスパイアスタイル: ダークガラスモーフィズム + ネオングロー + UIモックアップ + フローティングデータバッジ):

python3 .claude/skills/mkt-hyperframe-talking-head-video/scripts/scaffold_infographic_v2.py \
  --output workspace/content/YYYY-MM-DD/<slug>/compositions/ \
  --scenes scenes.json

scenes.json スキーマ(シーンごと、mockup_variant + content を含む):

{
  "scenes": [
    {
      "kind": "lesson",
      "num": 1,
      "start": 12.71,
      "end": 26.40,
      "kicker": "AIコンサル",
      "heading": "1つの業界に対するAIコンサル",
      "accent_words": [2],
      "mockup_variant": "post-stack",
      "content": { "posts": [...] },
      "badges": [
        { "pos": "tr", "color": "orange", "icon": "📅", "num": "30", "label": "日間" }
      ]
    },
    { "kind": "recap", "mockup_variant": "team-grid", "content": {...} },
    { "kind": "cta", "mockup_variant": "comment-box", "content": {...} }
  ]
}

7つのモックアップバリアント — シーンのセマンティクスに合うものを選択:

シーンタイプバリアント使用シーン
パーソナルブランディング / 投稿post-stack3つのソーシャルカードスタック、上部ハイライト、エンゲージメント表示
AI検索 / GEOai-windowChatGPTスタイルウィンドウ、関連カードハイライト
音声 / 電話 / 通話phone-calliPhoneモックアップ、波形+エージェントバブル+スロットグリッド
分析 / ダッシュボードdashboard統計、クリエイティブグリッド、折れ線グラフ付きガラスカード
プロダクト / SaaSローンチapp-cardアイコン、統計、オプションのメタファー行付きアプリカード
前後比較のまとめteam-grid40ドットグリッドモーフ、アニメーションカウントダウン+乗数
CTA「コメントX」comment-boxコメントボックスモックアップ+2つのギフトカード+CTAピル

完全なコンテンツスキーマ+デザイントークン: references/infographic-design-system.md を参照。

共通シェル要素(全シーンに自動適用): ラジアルグラデーション背景+シアングリッド線+10個のSVGパーティクル(ドリフトループ)+ビネット+トピックピル(オレンジグロー)+ブランドタイトル110px(単語ごとにスラムイン、アクセントグラデーション)。

フローティングバッジ(シーンあたり1〜4個、オプション): ヒーローモックアップの周囲に130pxの円形バッジ、アイコン+数字+ラベル、カラーコード(シアン/紫/オレンジ/緑)、対応するグロー、画面外からアニメーション+ボブループ。

レガシージェネレーター(非推奨)

scaffold_project.py(リング/コーナー/ライトスイープの抽象装飾) — 後方互換性のために維持されていますが、新規動画には推奨しません。新しい動画には scaffold_infographic_v2.py を使用してください。

各シーンには:

  • .scene-content へのパンチズームエントランス(交互にズームイン1.12 / ズームアウト0.92)
  • エレメントエントランス: アイブロウ → 番号 → タイトル(単語ごとにスラムイン) → サブテキスト
  • シーン中のアンビエントエフェクト(パルスリング、ブレス、ドリフトなど)
  • 終了アニメーションなし — クリップ終了、フレームワークが非表示

サブコンポジションルール: 内部タイムラインは RELATIVE 0 → data-duration、絶対値ではありません。data-composition-src="compositions/<name>.html" data-start = scene.start でルートにマウント。

ステップ 6: SFXをコピー

mkdir -p workspace/video-projects/<slug>/sfx
SFX_SRC="$(git rev-parse --show-toplevel)/.claude/skills/mkt-hyperframe-talking-head-video/assets/sfx"
cp "$SFX_SRC"/{camera-flash.mp3,"búng tay.mp3","Whoosh sound effect (1).mp3",Laser.mp3,ting.mp3,"Discord Notification - Sound Effect.mp3"} workspace/video-projects/<slug>/sfx/

6つのSFX標準マッピング:

時間ファイル音量タイミング
0.0scamera-flash.mp30.32フックオープナー — ソース動画パンチズーム @0s と同期
レッスン1開始 − 0.05sbúng tay.mp3 (スナップ)0.30レッスン1表示
レッスン2開始 − 0.05sWhoosh sound effect (1).mp30.22レッスン2トランジション
レッスン3開始 − 0.05sLaser.mp30.28レッスン3パンチ
まとめ開始 − 0.05sting.mp30.20まとめ表示
CTA開始Discord Notification - Sound Effect.mp30.28CTA通知感

SFX音量ルール(references/sfx-library.md による): フック 0.25-0.35、トランジション 0.15-0.2、CTA 0.25。SFXは最大5〜6個、1.5秒以上の間隔を空ける。

ステップ 7: Lint + プレビューを開く

cd workspace/content/YYYY-MM-DD/<slug>/
npx hyperframes lint

警告は許容:

  • composition_file_too_large — 情報のみ、ルートでは無視して問題ありません
  • composition_self_attribute_selector — 情報のみ、インフォグラフィックモックアップはスコープ化された [data-composition-id="..."] セレクターを使用

エラーは拒否:

  • gsap_animates_clip_element — クリップの visibility/display をアニメーションさせないでください — opacity のみアニメーション可能
  • root_composition_missing_data_start — サブコンポは内部 div に data-start="0" が必要
  • media_missing_data_start — <audio> SFX は data-start 属性を持つ必要があります(HFネイティブスケジューリング、JSトリガーは使用不可)
  • キャプション同期の問題 — clean_transcript.py スクリプトを再実行

重要: キャプションのZオーダー

キャプションサブコンポは、レッスンサブコンポ(全画面の暗い背景を持つ)の上にレンダリングされるように、最も高い data-track-index でマウントする必要があります。そうしないと、キャプションがBロールの背後に隠れます。

<!-- レッスン/まとめ/CTA マウント: track-index 40-47 -->
<div class="clip split-mount" data-composition-src="compositions/fs-lesson-1.html" data-start="..." data-track-index="40"></div>
<!-- ... -->
<!-- キャプションは最後に track 60 + インラインz-index で -->
<div class="clip captions-mount"
     data-composition-src="compositions/captions.html"
     data-start="0" data-duration="..." data-track-index="60"
     style="z-index: 100;"></div>

ステップ 7.5: スプリットスクリーン+全顔ブレスレイアウト(トーキングヘッド+Bロールに推奨)

トーキングヘッドとBロールモックアップの両方を表示する必要がある動画にはこれを使用してください — Bロールが顔を覆い隠す全画面表示の代わりに。

アーキテクチャ:

  • 顔動画はイントロ中はデフォルトで全画面
  • Bロール出現時: 顔は下半分(1080x960)に縮小、Bロールは上半分(スケール0.5)にレンダリング
  • 各Bロール終了時(次のシーンの1.5秒前): 顔が全画面に拡大(「ブレス」モーメント) → 感情的な決めゼリフを捉える
  • キャプションは中央(分割モード)と下部(全顔モード)で自動的にアニメーション

スプリットスクリーンが組み込まれたルートindex.htmlを生成:

python3 .claude/skills/mkt-hyperframe-talking-head-video/scripts/generate_root_index.py \
  --output workspace/content/YYYY-MM-DD/<slug>/index.html \
  --scenes scenes.json \
  --total-duration 108.92 \
  --header-label "6 AI BUSINESS 2026" \
  --footer-handle "@tranvanhoang.com"

scenes.json にはシーンごとに brollEnd + hasBreath を含める必要があります。編集ルール(全画面 vs 分割のタイミング)、CSSについては references/split-screen-pacing.md を参照してください。

ステップ 8: ルート合成を構築

最終的なindex.html構造(スプリットスクリーン推奨、ステップ7.5):

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <meta name="hyperframes-spec" content="v1.0.0" />
  <title>3-bai-hoc — HyperFrames Preview</title>
  <link rel="stylesheet" href="https://unpkg.com/hyperframes/dist/hyperframes.css" />
  <link rel="stylesheet" href="compositions/global.css" />
</head>
<body>
  <!-- フェイスカムレイヤー(全画面デフォルト、Bロール中は下半分にトリミング) -->
  <div class="clip" data-src="source.mp4" data-start="0" data-duration="108.92"
       data-track-index="30" data-geometry="fullscreen" data-picture-in-picture="source:split-full"
       style="z-index: 1; object-fit: cover;"></div>

  <!-- レッスン/まとめ/CTA モックアップ(トラック40〜47) -->
  <div class="clip split-mount" data-composition-src="compositions/fs-lesson-1.html" data-start="12.71" data-duration="13.69" data-track-index="40" data-geometry="split-top"></div>
  <div class="clip split-mount" data-composition-src="compositions/fs-lesson-2.html" data-start="26.40" data-duration="15.13" data-track-index="41" data-geometry="split-top"></div>
  <div class="clip split-mount" data-composition-src="compositions/fs-lesson-3.html" data-start="41.53" data-duration="14.69" data-track-index="42" data-geometry="split-top"></div>
  <div class="clip split-mount" data-composition-src="compositions/fs-recap.html" data-start="56.22" data-duration="13.99" data-track-index="43" data-geometry="split-top"></div>
  <div class="clip split-mount" data-composition-src="compositions/fs-cta.html" data-start="70.21" data-duration="38.71" data-track-index="44" data-geometry="split-top"></div>

  <!-- SFXオーディオ(トラック50) -->
  <div class="clip" data-src="sfx/camera-flash.mp3" data-start="0" data-duration="3" data-track-index="50" data-volume="0.32"></div>
  <!-- ... -->

  <!-- キャプション(トラック60、常に上部) -->
  <div class="clip captions-mount" data-composition-src="compositions/captions.html" data-start="0" data-duration="108.92" data-track-index="60" style="z-index: 100;"></div>
</body>
</html>

トラックインデックスガイドライン:

レイヤートラックインデックス範囲Z範囲
フェイスカムソース30〜391〜10
Bロール/モックアップシーン40〜4711〜50
SFXオーディオ50〜59(該当なし)
キャプション60+100〜

ステップ 9: ハンドオフ

✅ プロジェクト準備完了: workspace/video-projects/<slug>/
📊 プレビュースタジオを開いています...
npx hyperframes preview

プレビュースタジオURLが準備できました:
http://localhost:3000/?project=workspace/video-projects/<slug>/

📋 ユーザーへの指示:
1. ブラウザでプレビュースタジオを開く
2. 各シーンのタイミングとキャプションの同期を確認
3. 問題がなければ: `npx hyperframes render` を実行してMP4をエクスポート
4. 調整が必要なら: ファイルを直接編集するか、新しいプロンプトで依頼

references/infographic-design-system.md — インフォグラフィックモックアップのデザイントークンとコンテンツスキーマの完全なリファレンス。 references/split-screen-pacing.md — 全画面 vs 分割モードの編集ルール。 references/sfx-library.md — SFX音量ガイドラインと配置ルール。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Best practices for Remotion - Video creation in React

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Scaffold trang `/admin` CRM-style trực quan vào Next.js project (Supabase backend) — KHÔNG còn variant Vercel KV. Layout 1CRM-inspired: sidebar 3 tab (Tổng quan / Khách hàng / Email marketing) + popup nhập mã đăng nhập. **Tab Tổng quan**: 4 KPI cards (Tổng leads / Đã thanh toán / Tỷ lệ chuyển đổi / Doanh thu) có delta arrow vs kỳ trước, line chart leads+paid+revenue theo ngày dùng `recharts`, donut trạng thái paid/pending/expired, period selector pill 7d/30d/90d, list 5 thanh toán gần nhất. **Tab Khách hàng**: bảng leads + search + filter trạng thái + filter ngày + CSV export. **Tab Email marketing**: form soạn chiến dịch (tên + tiêu đề + body chọn định dạng **văn bản thường HOẶC HTML** + placeholder `{{name}}` + audience 4 loại all/paid/pending/last_days + tên người gửi) — có nút **Xem trước** mở modal iframe render đúng email thật (text → auto convert + wrap khung; HTML fragment → wrap khung, HTML đầy đủ giữ nguyên) → gửi bulk qua SMTP (reuse `nodemailer` của `biz-email-setup` — KHÔN

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Deploy landing page / website (React, Next.js, Vite, static HTML) lên Vercel — tự kiểm tra Vercel CLI hoặc Vercel MCP đã cài chưa, nếu chưa thì cài qua npm/pnpm và hướng dẫn user authenticate (vercel login), tự detect framework (Next.js / Vite / CRA / static), auto-generate vercel.json khi cần, chạy `vercel --prod`, trả về live URL + inspect URL + hướng dẫn custom domain. USE WHEN user says 'deploy lên vercel', 'đẩy landing page lên vercel', 'publish website', 'go live', 'deploy nextjs', 'deploy react', 'deploy vite', 'tạo URL live', 'đưa lên production', 'biz-deploy-vercel', 'host landing page', 'vercel deploy', 'ship lên vercel', 'đẩy code lên vercel'. Skill này áp dụng cho cả case dùng Vercel CLI lẫn Vercel MCP server.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Setup SMTP-based email auto-responder cho landing page bán hàng — tự động gửi email sau khi user điền form (tên/SĐT/email), KHÔNG cố định vào provider nào. Skill này (1) hỏi user chọn SMTP provider (Gmail/Google Workspace, Resend SMTP, SendGrid, Mailgun, Brevo, Zoho, hoặc SMTP custom của hosting VN) và detect Next.js stack đang dùng, (2) đọc context từ `offer.json` + `conversion-copy.md` (từ `/biz-offer-alex-hormozi`) HOẶC đọc trực tiếp Next.js project đã build qua `ui-ux-pro-max` (file `app/page.tsx`) HOẶC đọc HTML landing page đã deploy để hiểu offer, dream outcome, mechanism, bonus. Lưu ý: skill `biz-sales-page-layout` đã DEPRECATED 2026-05-14 — pipeline mới skip layout/copy.json, (3) **draft 2 email**: email A — auto-responder gửi cho lead (warm welcome + deliver lead magnet/booking confirm/payment link tuỳ offer type), email B — notification gửi cho owner (lead alert + thông tin liên hệ), (4) **show draft cho user duyệt và chỉnh sửa** trước khi wire vào code, (5) cài `nodemailer`

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Cài chatbot AI dạng floating widget góc dưới phải vào project Next.js có sẵn (App Router hoặc Pages Router), responsive đầy đủ web + tablet + mobile, gọi LLM qua OpenRouter (mặc định google/gemini-3-flash-preview, có thể đổi sang anthropic/claude-sonnet-4.6), streaming response, RENDER MARKDOWN trong assistant bubble (bold / list / link / code) qua react-markdown + remark-gfm — KHÔNG hiện raw **bold** dạng text — có knowledge base từ FAQ + tài liệu sản phẩm/khóa học do user cung cấp để chatbot tự động trả lời khách hàng, và TỰ ĐỘNG EXTRACT + LƯU LEAD (tên + SĐT + email) vào Upstash Redis/Vercel KV dưới namespace `chat-lead:{phone}` khi user cung cấp đầy đủ thông tin trong chat — dedupe theo SĐT, TTL 90 ngày, fire-and-forget không block stream. Skill tự detect số lượng project Next.js — nếu có nhiều hơn 1 sẽ hỏi user chọn project nào để cài; tự detect TypeScript/JS, App Router/Pages Router, Tailwind/CSS module, KV/Upstash availability (skip auto-save nếu chưa có); tự install react-markd

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Đóng gói offer **không thể chối từ** (grand slam offer) theo phương pháp Alex Hormozi ($100M Offers) — nhận input pains/gains/customer jobs theo Value Proposition Design (Osterwalder 2014) + sản phẩm/dịch vụ, rồi sinh ra: (1) markdown report tiếng Việt đầy đủ Value Equation scoring + Core Offer + 3-4 Bonus stack + Guarantee + Urgency + Pricing, (2) offer.json structured cho pipeline downstream (`ui-ux-pro-max` build sales page production-ready), (3) conversion copy block (headline + subheadline + CTA) sẵn sàng paste landing page. 2 input mode: (B) user paste sẵn pains + gains + product, (C) user chỉ có sản phẩm — skill phỏng vấn theo VPD framework để surface pain/gain trước. Bonus stack mode hybrid: skill brainstorm 5-7 candidate có justification value rồi user pick/chỉnh 3-4 cái. Tiếng Việt thuần (xưng anh/chị), giá VND charm pricing (X99K), 3-tier decoy structure. USE WHEN user says 'đóng gói offer', 'tạo offer', 'thiết kế offer Hormozi', 'grand slam offer', 'value stack', 'offer sta

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Nâng cấp copy sales page tiếng Việt — biến copy có sẵn (từ `offer.json` + `conversion-copy.md` của `/biz-offer-alex-hormozi`, HOẶC từ Next.js project đã build qua `ui-ux-pro-max`, HOẶC user paste block copy bất kỳ) thành **copy chất lượng cao chốt đơn**: headline punchy hơn, pain agitation đau hơn, mechanism rõ hơn, benefit cụ thể hơn, FAQ xử lý đúng objection của thị trường VN, CTA mạnh hơn. Skill này có 3 INTENSITY LEVEL: (1) **Polish** — light edit + power word + sửa nhịp; (2) **Conversion-optimized** — rewrite 5 block critical + tạo A/B variants cho hero/CTA; (3) **Sales-letter** — long-form story-driven full rewrite kèm P.S.. Mỗi section áp dụng đúng formula thuyết phục (PAR cho pain, BAB cho solution, FEP cho benefit, PVEN cho final CTA, Star-Chain-Hook cho testimonial). Output gồm 4 file: `copy-upgraded.md`, `copy-variants.md` (A/B test bank — 3 hero + 3 CTA + 3 final-CTA), `copy-changes.md` (diff Trước/Sau + lý do), `copy.json` (structured downstream). Giọng văn tiếng Việt thuầ

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

⚠️ DEPRECATED (2026-05-14) — Skill này KHÔNG còn trong pipeline chuẩn. Quy trình mới đã bỏ bước wireframe markdown trung gian: sau `/biz-offer-alex-hormozi` đi THẲNG sang `ui-ux-pro-max` để build Next.js sales page production-ready (có design language nhất quán: style + palette + font pairing, không phải Tailwind defaults). Lý do deprecate: wireframe markdown làm thêm 1 bước trung gian không tạo giá trị — `ui-ux-pro-max` đọc trực tiếp `offer.json` đã đầy đủ anchor + core + bonus + guarantee + urgency + pricing rồi ra HTML production luôn. Chỉ dùng skill này KHI user EXPLICITLY yêu cầu wireframe markdown để review/in/share trước khi build code (rare case). KHÔNG trigger trên các keyword 'tạo sales page', 'tạo landing page bán hàng' nữa — những keyword đó giờ trigger `ui-ux-pro-max`.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

End-to-end Sepay VietQR payment infrastructure cho landing page Next.js — guide user setup Sepay account + bank linking + scaffold đầy đủ payment flow trong project. Skill này xử lý 7 phase: (0) detect Next.js stack + **HỎI user chọn lead store backend** (Vercel KV hoặc Supabase Free Postgres — default recommend Supabase do free tier rộng hơn ~50× + có SQL + admin UI), (1) GUIDE user đăng ký Sepay account tại my.sepay.vn + link bank account VN (Vietcombank/Techcombank/MB/ACB/VPBank/BIDV/...) + lấy API key + setup webhook URL trên Sepay dashboard, (2A nếu chọn KV) setup Vercel KV (install `@vercel/kv` + KV namespace + 4 env vars KV_*), (2B nếu chọn Supabase) setup Supabase project (tạo project tại Singapore region + chạy migration SQL tạo 4 bảng leads/phone_index/order_counter/webhook_dedup với pg_cron TTL cleanup + RLS deny-all + lấy SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY + Vercel Cron ping `/api/health` mỗi 6 ngày chống auto-pause), (3) scaffold `lib/leads-store.ts` (thin re-export

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Setup Telegram bot notification cho thanh toán thành công từ Sepay webhook trong Next.js project. Skill này: (1) hướng dẫn user 3 bước tạo Telegram bot riêng qua @BotFather + lấy bot token + chat_id (qua @userinfobot cho chat 1-1, hoặc /getUpdates API cho group), (2) tạo helper function `sendTelegramNotification()` reusable trong `lib/telegram.ts`, (3) detect existing Sepay webhook route trong project (thường là `/api/sepay-webhook`, `/api/payment-success`, hoặc tương đương) và wire Telegram call CÙNG CHỖ với email auto-responder (Resend) — gửi parallel qua `Promise.allSettled` để Telegram fail KHÔNG block 200 response trả Sepay (Sepay sẽ retry webhook nếu nhận non-200, gây duplicate notification), (4) draft message format mặc định tiếng Việt: emoji + tên khách + SĐT + email + amount (charm pricing VND định dạng `499.000đ`) + tên sản phẩm + timestamp giờ VN dd/mm/yyyy HH:mm, (5) update `.env.local` với `TELEGRAM_BOT_TOKEN` + `TELEGRAM_CHAT_ID`, add vào `.gitignore`, nhắc user paste vào

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Convert a single MP3 voiceover file into a single HeyGen avatar lip-sync MP4 video. Single-purpose — no planning, no SRT, no chunking, no Remotion compositing. Hybrid path — REST upload (helper script) + HeyGen MCP for video creation, because the post-2026 MCP no longer exposes an asset-upload tool. Reads avatar look pool (`HEYGEN_AVATAR_LOOKS`) from `.env` and HeyGen API key (`HEYGEN_API_KEY`) for the upload step. USE WHEN user says "tạo video heygen từ mp3", "mp3 to heygen", "heygen mp4 từ audio", "convert mp3 sang heygen video", "tạo avatar video từ file mp3", "lip sync mp3 heygen", "biến mp3 thành video heygen", or any time the user has exactly one MP3 file and wants exactly one HeyGen avatar MP4 out.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Demand-side market research cho digital product / service ở Việt Nam — đo cầu thật + WTP + channel-market fit + defensibility qua keyword volume, marketplace sales (Shopee/Unica/Edumall/Gitiho/KyNa), community signal (FB groups, TikTok hashtag, Zalo OA), competitor pricing, unit economics — không phải macro PESTEL. Output: keyword portfolio + Niche Score 100 điểm 7-dimension có evidence + go/no-go decision + falsification protocol. Force triangulate ≥3 sources cho mỗi claim quan trọng. USE WHEN user says 'nghiên cứu thị trường', 'market research', 'validate niche', 'keyword research', 'demand validation', 'niche có nên làm không', 'có ai làm chưa', 'thị trường đủ lớn không', 'có lời không', 'chọn ngách', 'kiểm tra cầu'. Cũng trigger khi user mô tả 1 ý tưởng kinh doanh cụ thể và muốn check feasibility. Skill này KHÔNG fit: high-ticket transactional sale (BĐS, ô tô), B2B enterprise (sales cycle 6+ tháng), hyper-local geo micro-market (1 toà nhà, 1 phường). KHÔNG làm: macro PESTEL/Porter

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Transcribe an MP3 voiceover into an SRT subtitle file and a word-level segments JSON using local OpenAI Whisper. Input is a single MP3 path; output is `<stem>.srt` + `<stem>_segments.json` written next to the MP3 (or to a custom output dir). USE WHEN the user says 'extract srt from mp3', 'trích srt từ mp3', 'transcribe voiceover', 'tạo file srt và segments', 'whisper transcribe', 'bóc transcript có timestamp', 'extract voiceover segments', 'tách SRT từ audio', or any time a downstream skill (plan-short-video-edit, heygen-remotion-short-video-editor) needs an SRT + word-level segments JSON from a voiceover MP3 and one does not already exist.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Convert Vietnamese/English script text to MP3 voiceover using ElevenLabs TTS API. Calls POST /v1/text-to-speech/{voice_id}, streams audio bytes, writes MP3 directly. Locked to Hoang's brand voice ID by default. USE WHEN user says 'tạo mp3 elevenlabs', 'elevenlabs tts', 'eleven labs voice', 'text to speech elevenlabs', 'tạo voiceover elevenlabs', 'đọc text bằng elevenlabs', 'tts elevenlabs to mp3', 'eleven labs script to mp3', 'voiceover bằng elevenlabs', 'giọng elevenlabs'.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

End-to-end orchestrator: **script → final MP4 16:9 (1920×1080) podcast-keynote**.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

End-to-end short-video pipeline — từ kịch bản (Việt/Anh) ra MP4 TikTok/Reels 9:16 hoàn chỉnh. Orchestrator 3 phase ghép skill có sẵn — (1) TTS provider chọn được giữa `mkt-elevenlabs-tts-to-mp3` (default, voice của Hoàng) hoặc `mkt-video-script-to-mp3` (MiniMax speech-2.8-hd), (2) checkpoint user duyệt MP3, (3) `heygen-mp3-to-mp4` lip-sync avatar HeyGen, (4) delegate Phase 3 packaging cho sub-agent `mkt-full-video-phase3-packager` (transcribe + scene outline + checkpoint + fan-out N scene writers parallel + scaffold + preview Studio). API key + voice ID cho cả 2 provider lưu ở `.env`. USE WHEN user nói "tạo full video từ script", "script to tiktok video", "pipeline full video heygen + hyperframe", "tạo video từ kịch bản đến mp4", "elevenlabs heygen hyperframe full pipeline", "minimax heygen pipeline", "kịch bản ra video tiktok", hoặc có sẵn 1 script + (optional) ảnh b-roll và muốn ra MP4 9:16 đóng gói có captions, SFX, b-roll.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Build a TikTok/Reels/YouTube **landscape 16:9 (1920×1080)** short video from a pre-recorded talking-head MP4 using HyperFrames — transcribe Vietnamese audio, scaffold a complete preview-ready 1920×1080 project with a slide pane (1200px) on the left and a floating avatar frame on the right, GSAP timeline có SPLIT↔PIP transitions (slide full-screen + avatar PIP corner thumbnail), breathing yoyo zoom + beat-driven punch-in trên avatar, 5 scene compositions kiểu "tier-row" pattern (post-stack hook / chats-stack problem / hero-orb solution / counter-row recap / terminal-row CTA), optional cream-paper editorial infographic image slots với `<img onerror>` fallback, 6 SFX wired tại scene boundaries, **NO captions** (giọng avatar là spine). USE WHEN user nói "edit video 16:9 từ HeyGen MP4", "scaffold project landscape", "podcast keynote editor", "talking head + slide editor", "build hyperframes 1920×1080", "tạo project 16:9 từ avatar mp4", "scaffold 16:9 hyperframes", "hyperframe landscape vide

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Audit bài Facebook / Reels / YouTube để phát hiện 4 downward drivers (over-branding, over-production, stock imagery, standardized aesthetic) + frequency-over-quality. Mỗi anti-pattern bị drop ~75% performance nếu hiện diện. USE WHEN user says 'audit content', 'check anti pattern', 'content có lỗi gì không', 'kiểm tra over branding', 'vì sao video bị chết', 'vì sao post không ai xem', 'content audit', 'kiểm tra chất lượng content'.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Tìm viral pattern ở ngành khác (bác sĩ, luật sư, tài chính, bất động sản, thủ công) có thể apply cho niche AI/automation của Hoang. Ngách AI educator VN còn ít format được khai thác — cross-industry adaptation là blue ocean. USE WHEN user says 'tìm format ngành khác', 'cross industry research', 'học format từ ngành khác', 'blue ocean format', 'tìm format chưa ai làm', 'adapt format từ niche khác', 'cross industry viral'.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Rewrite CTA kiểu autocratic (Mua ngay! Follow ngay! Đăng ký liền!) sang 3 variants Democratic / Benevolent / Laissez-faire — reach 85% dân số thay vì chỉ 5% (action-based). Áp dụng cho landing page, caption FB, CTA video, email. USE WHEN user says 'rewrite cta', 'sửa cta', 'cta không autocratic', 'viết lại kêu gọi hành động', 'cta cho landing page', 'cta nhẹ nhàng hơn', 'inclusive cta', 'cta democratic benevolent'.

関連スキル