Communitygithub.com

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

TikTok/Reels/YouTubeの**ランドスケープ16:9 (1920×1080)** ショート動画を、録画済みのトーキングヘッドMP4からHyperFramesを使って構築します。ベトナム語の音声を文字起こしし、左側にスライドパネル(1200px)、右側にフローティングアバターフレームを備えたプレビュー可能な1920×1080プロジェクトを生成。GSAPタイムラインによるSPLIT↔PIPトランジション(フルスクリーンスライド+アバターPIPコーナーサムネイル)、ブリージングヨーヨーズーム、アバター上でのビート駆動パンチイン、5つのシーン構成(「tier-row」パターン:ポストスタックフック / チャットスタック問題 / ヒーローオーブ解決 / カウンター行まとめ / ターミナル行CTA)、オプションのクリームペーパー編集用インフォグラフィックス画像スロット(`<img onerror>`フォールバック付き)、シーン境界に6つのSFXをワイヤリング。**キャプションなし**(アバター音声が主軸)。ユーザーが「HeyGen MP4から16:9動画を編集」「プロジェクトをランドスケープでスキャフォールド」「ポッドキャストキーノートエディター」「トーキングヘッド+スライドエディター」「hyperframes 1920×1080を構築」「アバターMP4から16:9プロジェクトを作成」「16:9 hyperframesをスキャフォールド」「hyperframeランドスケープビデオ」などと言った場合に使用。

MKT.LANDINGPAGE.SKILLS とは?

このスキルは、録画済みのトーキングヘッドMP4(例:HeyGenアバター)を入力として、16:9(1920×1080)のランドスケープ短尺動画用の完全なHyperFramesプレビュープロジェクトを生成する専門的なエディターです。ユーザーはオーケストレータースキル `mkt-full-video-with-11-hyperframe-heygen-16-9` のフェーズ3として利用するか、`voiceover.mp3`、`source.mp4`、`script.txt` が格納されたワークスペースフォルダーを直接指定できます。パイプラインは、ベトナム語音声のWhisper文字起こし、スクリプトからの5シーン構成の自動検出、LLMサブエージェントによる各シーンHTMLの並行作成、ルートインデックスHTMLの生成(SPLIT↔PIPトランジション、ブリージングズーム、ビート駆動パンチイン、6つのSFXを含むGSAPタイムライン)、そしてオプションのインフォグラフィックススロット追加とリンター+プレビュー実行というステップで構成されます。**プレビュー優先ルール**のもと、Studio URLで終了し、ユーザーが明示的に確認してからMP4レンダリングに進みます。各シーンは8つのプロダクションパターン(例:tier-row、chats-stack、hero-orb)から自由に適応され、静的な5つのアーキタイプに縛られない独自のメタファー表現が可能です。

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

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

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

ドキュメント

mkt-hyperframe-talking-head-video-16-9

専用の 16:9 (1920×1080) ランドスケープエディター — 入力は voiceover.mp3 + source.mp4 + script.txt が既に存在する1つのワークスペースフォルダーで、出力はその同じフォルダーに npx hyperframes preview を実行する準備が整ったHyperFramesプレビュープロジェクトが完全にスキャフォールドされた状態になります。

これはオーケストレーター mkt-full-video-with-11-hyperframe-heygen-16-9 配下の 運用レイヤー です。オーケストレーターはフェーズ1(TTS)+ フェーズ2(HeyGenアバター)を処理し、フェーズ3(文字起こし + スキャフォールド + リンター + プレビュー)のためにフォルダーをこのスキルにハンドオフします。


このスキルが生成するもの

<workspace_folder>/
├── voiceover.mp3                 # 入力(そのまま)
├── source.mp4                    # 入力(HeyGenアバターのリップシンク、そのまま)
├── script.txt                    # 入力(そのまま)
├── transcript.json               # 生成 — Whisperの単語レベル出力
├── transcript-cleaned.json       # 生成 — ベトナム語タイポ修正済み
├── scenes-outline.json           # 生成 — チェックポイント前のアウトライン(5シーン)
├── scenes.json                   # 生成 — シーンごとの最終メタデータ
├── index.html                    # 生成 — ルートコンポジション 1920×1080
├── compositions/
│   ├── scene-1.html              # シーンごとに1ファイル、Nに関わらず
│   ├── scene-2.html              # 並列LLMサブエージェントによって作成(フェーズ3d)
│   ├── scene-3.html              # Pythonテンプレートによる生成ではありません(非推奨)
│   ├── ...
│   └── scene-N.html
├── sfx/                          # スキルアセットからの6つのSFX(シンボリックリンク/コピー)
│   ├── camera-flash.mp3
│   ├── Whoosh sound effect (1).mp3
│   ├── búng tay.mp3
│   ├── Laser.mp3
│   ├── ting.mp3
│   └── Discord Notification - Sound Effect.mp3
└── (オプション) infographics/
    ├── 1.png  2.png  3.png       # --with-infographics が指定された場合
    └── prompts.md                # シーンごとのクリームペーパー編集用プロンプト

キャンバス:

  • ルート: data-width="1920" data-height="1080"。
  • アバターフレームデフォルトSPLIT: top:100, left:1290, width:540, height:880, borderRadius:32。
  • アバターフレームPIPコーナー: top:600, left:1540, width:320, height:420, borderRadius:20。
  • スライドマウント: 1200×1080 SPLIT、PIP中は 1920×1080 にアニメーション可能。
  • 各コンポジションの固有サイズ: data-width="1200" data-height="1080"(マウントの100%を埋め、マウントが広がると拡大)。

必要な入力(ワークスペースフォルダー規約)

ファイル必須備考
voiceover.mp3はいElevenLabs TTSの出力(Hoàngの声)。
source.mp4はいHeyGenアバターのリップシンク。現在は9:16ポートレート — ランドスケープフレームでは object-fit: cover; object-position: center 25% を使用して適切にクロップします。詳細は references/source-mp4-cropping.md を参照。
script.txtはいvoiceover.mp3 を生成したベトナム語スクリプト。タイポ修正とシーン見出しの導出に使用します。
scenes-outline.jsonいいえユーザーが5つのシーンを事前定義している場合、自動検出をスキップします。スキーマ: ステップ3を参照。

スラッグ = ワークスペースフォルダーのベース名(導出は不要)。すべてのスクリプトはそのフォルダー内で読み書きします。スクリプトは --workspace <path> フラグを受け入れ、デフォルトではCWDを使用します。


パイプライン(順次スクリプト呼び出し)

voiceover.mp3 + source.mp4 + script.txt
    │
    ▼
1. transcribe_audio.py        ── Whisper VN → transcript.json(単語レベル)
    │
    ▼
2. clean_transcript.py        ── Whisperアーティファクトを除去、VN辞書を適用
    │
    ▼
3. detect_scenes.py           ── transcript + script.txt → scenes-outline.json(5シーン)
    │
    ▼
4. [オプション チェックポイント]  ── ユーザーがアウトラインを確認/キッカー、見出しを編集
    │
    ▼
5. scaffold_project.py        ── scenes.json(完全スキーマ)を書き込み、sfx/ + logos/ + avatar.jpg + yt-lower-third.html を作成
    │
    ▼
6. 🔥 LLM サブエージェント ファンアウト 🔥 ── オーケストレーターがN個の並列汎用
                                  エージェント(シーンごとに1つ)を1つのメッセージで起動し、それぞれが
                                  visual-plan.json + references/composition-patterns.md を基に
                                  compositions/scene-{num}.html を作成します。
                                  generate_compositions.py(Jinja2生成器
                                  非推奨 — 5つのアーキタイプに縮退、シーン固有の
                                  メタファーに適応できず、6シーン以上のリスト形式で破綻)。
    │
    ▼
7. generate_root_index.py     ── スライドマウント(ALLシーンの scene-{num}.html をマウント、
                                  kind→fs-lesson マッピングなし)+
                                  アバターフレーム(claude-orange #d97757 ブランドボーダー)+
                                  GSAPタイムライン(SPLIT↔PIP、ブリージング、パンチイン、
                                  PIP_EVENTS、ハイブリッドフックズーム)+6つのSFXワイヤリング+
                                  ルート(フル1920×1080)のクリームペーパーb-roll画像レイヤーを含む
                                  index.html を書き込みます
    │
    ▼
8. [オプション] scaffold_infographic_slots.py
                              ── <img onerror> プレースホルダーを追加し、prompts.md を書き込み
                                  (シーンのメタファーごとのクリームペーパー編集用)
    │
    ▼
9. lint_and_preview.py        ── npx hyperframes lint → エラー0、その後プレビュー
    │
    ▼
ハンドオフ — Studio URL が表示され、ユーザーが確認し、オーケストレーターがレンダリングを決定します。

プレビュー優先ルール(譲れません): スキルはステップ9でStudio URLを表示して終了します。MP4レンダリングはユーザーの明示的な確認後にのみ実行されます — そのステップはオーケストレーターまたはユーザーの手動操作に属します。

ステップ1: transcribe_audio.py

python3 scripts/transcribe_audio.py --workspace <folder>

既存のスキル mkt-ai-video-extract-srt-segment をローカルで利用可能な場合はラップし、そうでない場合は whisper CLIを直接使用します:

whisper voiceover.mp3 --model medium --language vi --word_timestamps True \
  --output_format json --output_dir .

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

出力: transcript.json — {text, start, end} 形式の単語レベルエントリの配列。

ステップ2: clean_transcript.py

兄弟の9:16エディター(mkt-hyperframe-talking-head-video/scripts/clean_transcript.py)からロジックを再利用します。U+FFFDを除去し、VN単語レベルおよびフレーズレベルの辞書(alphabit→Alphabet、Cod→Codeなど)を適用し、3〜5単語のフレーズにグループ化します。出力: transcript-cleaned.json。(caption-groups.jsonはありません — 16:9ではキャプションはオフです。)

ステップ3: detect_scenes.py

transcript-cleaned.json + script.txt を読み取り、標準的な知識動画の骨格を使用して5つのシーン境界を推論します:

#Kindデフォルトキッカーヒントバリアント
1hookスクリプトの最初の文tier-row(kind=hook によるポストスタック風)
2problemスクリプトが「ChatGPT/AI cũ」「khó」「đứt mạch」「vấn đề」…に移行する箇所chats-stack
3solutionスクリプトがツール/方法を紹介する箇所hero-orb
4recapスクリプトが数値結果を示す箇所(「X tiếng」「Y khách hàng」)counter-row
5ctaコメント/保存/フォローのトリガーを含む最後の文terminal-row

スクリプトに明確な5つのパートがない場合、より少ない数(最低3)を出力し、ユーザーに警告します。ヒューリスティック: トランスクリプトを文境界で約5つのチャンクに分割し、シーン3(通常最も長い解決策)に1.5倍の重みを付けます。

出力 scenes-outline.json:

[
  { "num": 1, "kind": "hook",     "start": 0.07,  "end": 13.73, "kicker": "...", "heading": "...", "variant": "tier-row" },
  { "num": 2, "kind": "problem",  "start": 13.73, "end": 27.37, "kicker": "...", "heading": "...", "variant": "chats-stack" },
  { "num": 3, "kind": "solution", "start": 27.37, "end": 47.75, "kicker": "...", "heading": "...", "variant": "hero-orb" },
  { "num": 4, "kind": "recap",    "start": 47.75, "end": 53.80, "kicker": "...", "heading": "...", "variant": "counter-row" },
  { "num": 5, "kind": "cta",      "start": 53.80, "end": 60.68, "kicker": "...", "heading": "...", "variant": "terminal-row" }
]

チェックポイント — アウトラインを表示し、ユーザーが確認できるようにします。ユーザーはキッカー/見出し/バリアントをインライン編集してから続行できます。スキルが --auto(オーケストレーターモード)で呼び出された場合はチェックポイントをスキップします。

ステップ4: scaffold_project.py

scenes-outline.json を読み取り、各シーンを以下の情報でエンリッチします:

  • accent_words — 見出しから派生(数値 + 最後の2〜3の名詞を抽出)
  • content — パターン固有のスキーマ(assets/templates/ を参照)
  • badges — シーンごとに1〜3つのフローティングバッジ
  • brollEnd、hasBreath — SPLIT↔PIPスケジューリング用
  • pip_events — シーン内の accent_words タイミングから派生

scenes.json を書き込みます。また、スキルにバンドルされた assets/ から以下の自己完結型アセットをワークスペースに自動コピーします:

アセットソース宛先目的
6つのSFXファイルassets/sfx/<workspace>/sfx/ビート音(camera-flash、whoosh、búng-tay、Laser、ting、Discord-notification)
ブランドロゴassets/logos/{chatgpt,gemini,claude,claude-code}.{png,jpg}<workspace>/assets/logos/コンポジションに自動添付(chats-stackアバター、hero-orb、tier-rowツールバッジ)
アバターassets/avatar.jpg<workspace>/assets/avatar.jpgyt-lower-third購読バナーのチャンネルサムネイル
YT lower-thirdassets/compositions/yt-lower-third.html<workspace>/compositions/yt-lower-third.html購読バナーマウント、動画の最後の3秒間

スキルバンドルにソースアセットがない場合、静かにレガシーワークスペースパス(workspace/assets/...)にフォールバックします。どちらにも見つからない場合、そのアセットはスキップされます(コンポジションはグレースフルデグラデーション — ロゴの代わりにテキストアバター、lower-thirdなし)。

ステップ5: 🔥 LLM サブエージェント ファンアウト(コンポジション作成) 🔥

generate_compositions.py は非推奨です。 呼び出さないでください。PythonのJinja2生成器はすべてのシーンを5つの固定アーキタイプ(hook→tier-row、problem→chats-stack、solution→hero-orb、recap→counter-row、cta→terminal-row)のいずれかに縮退させ、シーン固有のメタファー(例:「scroll-tape-wasted」、「two-clock-comparison」、「right-tool-vehicles」)に適応できず、6シーン以上のリスト形式(複数の tip-N が同じファイル名に縮退→上書き)で破綻します。

正規の方法: オーケストレーター(またはユーザー)が 単一メッセージ で N個の並列 general-purpose エージェント(シーンごとに1つ)を起動し、それらが同時に実行されるようにします。各サブエージェント:

  1. visual-plan.json(パス: <workspace>/visual-plan.json、シーンインデックス num-1)から自身のシーンブロックを読み取ります
  2. オーケストレータースキルのリファレンス: references/composition-patterns.md(8つのプロダクション実績パターン)、references/slide-design-tokens.md(パレット + タイポグラフィ)を読み取ります
  3. そのシーンのメタファーに適したパターンを選択し、自由に適応します(hero-orb は vault+spokes に、stats-3card は two-clock-comparison になり得ます)
  4. compositions/scene-{num}.html をスクラッチから以下の状態で作成します: 1200×1080 ビューポート、[data-composition-id="scene-{num}"] によるスコープ付きCSS、window.__timelines["scene-{num}"] に登録されたGSAPタイムライン、!important なし、埋め込み image-slot なし(クリームペーパー画像はルートレイヤーのみ)

結果: 各シーンは独自の、メタファーに適合したコンポジションファイルを取得します。衝突なし、退屈な5アーキタイプの固定化なし。

サブエージェントの完全なプロンプトテンプレートについては、オーケストレーターの mkt-full-video-with-11-hyperframe-heygen-16-9/SKILL.md ステップ4dを参照してください。

コンポジション内のブランドロゴ(サブエージェントはこれらを参照)

サブエージェントは、パターンが必要とする場合にブランドロゴを埋め込みます。ロゴは <workspace>/assets/logos/ にあります:

パターン使用箇所ブランド要素
Hook tier-row「after」tool-badge ピル(右上) — Claudeロゴ + 名前。
Problem chats-stack 失敗行ChatGPT/Geminiロゴが、name がキーワードに一致した場合に自動添付されます(chatgpt/gpt → chatgpt.png; gemini/google → gemini.jpg)。
Solution hero-orb / vaultオーブグロー内のブランドロゴ(デフォルトClaude)。
CTA terminal-rowデフォルトではロゴなし。

assets/logos/ が存在しない場合(ちらつきなし)、サブエージェントはテキストアバターにフォールバックします。

パターンリファレンス(8つのアーキタイプ、サブエージェントが選択し適応)

オーケストレーターの references/composition-patterns.md には、8つのプロダクションでテストされたパターンが含まれています:

パターン最適な用途内部モチーフ
tier-row before-afterフックのコントラスト文字 + アイテムを持つ2つのティア行(before rose/red + after lime/green)
chats-stack問題 / 失敗 / Edit-Regenデモユーザー行 + 2〜3のAI失敗行 + 破損チェーンスタンプ
hero-orb + spec-trio解決策 / メカニズム / 中央保管庫発光オーブ + タスクアイコン + 3つのスペックティア行
counter-rowまとめ / 数字の証明大きなカウンター(FROM → TO)+ クライアント + デルタタグ
comment-terminalCTA / 「comment X」ティア文字 + macOSターミナルモック + 2枚のギフトカード
stats-3card知識紹介 / 3つの事実の公開ランディングスタイルの3列、// LBL + グラデーション数字付き
comparison-2col「どちらを使うべきか」2列のYes/Yesチップ
image-slot(非推奨 — 画像はルートレイヤー)—

サブエージェントは自由に適応します: 例: hero-orb →「vault + 5 chat spokes」、stats-3card →「two-clock-comparison」、comparison-2col →「3-tier vehicle cards」。パターンドキュメントは骨格(HTML + CSS + GSAP)を提供し、LLMがクリエイティブな調整を行います。

ステップ6: generate_root_index.py

scenes.json + トランスクリプトからの total_duration を読み取り、assets/templates/index.html.j2 をレンダリングします:

  • 1920×1080のルート、#slide-bg、#heygen-bg、#avatar-frame > .avatar-breathing > .avatar-punch > #v-source を含む
  • <audio id="a-source"> は元のsource.mp4オーディオ(トラック1)を追跡
  • 6つの <audio> SFXが絶対 data-start(シーン境界)でワイヤリング
  • 左上のブランドマーク
  • GSAPブロック:
    • 初期エントランス(アバターフェードイン、ブランドフェードイン)
    • SPLIT/PIP定数 + goPIP(t) / goSplit(t) ヘルパー
    • scenes.json のシーンごとの pip_events によって駆動される PIP_EVENTS 配列
    • .avatar-breathing 上の 「ハイブリッドフック」ビジュアルズーム戦略:
      • HOOKシーン: シーン期間中に1.0 → 1.10 のスローランプ(ドラマ構築、power2.in)
      • HOOK→BODYトランジション: 1.10 → 1.0 へのスナップリセット(緊張解放、0.5秒 power3.in)
      • BODYシーン(2..N-1)のPIP-INイベント時: 1.06 パンチビート(リズム、power2.out → power3.out)
      • CTAシーン: 穏やかな1.0 → 1.04 プッシュ(クローズ、sine.inOut)
    • トランジション開始時の .avatar-punch 上のシーン開始毎の小さなパンチ(1.06)

…

[翻訳のために切り詰められています]

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

Pipeline đóng gói: từ MP4 quay sẵn (talking head 9:16) tới HyperFrames preview project hoàn chỉnh có captions, SFX, zoom hooks, b-roll toàn cảnh có hiệu ứng rich, và CTA finale.

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'.

関連スキル