Communitygithub.com

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

端到端短影音製作管線——從腳本(越南文/英文)產出格式為 9:16 的 TikTok/Reels MP4 影片。採用 3 階段協調器,結合現有技能:(1) TTS 提供者可在 `mkt-elevenlabs-tts-to-mp3`(預設,使用 Hoàng 的聲音)或 `mkt-video-script-to-mp3`(MiniMax speech-2.8-hd)之間選擇;(2) 使用者檢查點:審核 MP3;(3) `heygen-mp3-to-mp4` 使用 HeyGen 進行 avatar 嘴型同步;(4) 將第 3 階段的包裝工作委派給子代理 `mkt-full-video-phase3-packager`(負責轉錄、場景大綱、檢查點、並行 N 個場景編寫者、框架組裝及預覽 Studio)。兩個提供者的 API 金鑰和語音 ID 儲存在 `.env` 中。當使用者說:「從腳本建立完整影片」、「腳本轉 TikTok 影片」、「HeyGen + HyperFrame 完整影片管線」、「從腳本到影片 MP4」、「ElevenLabs HeyGen HyperFrame 完整管線」、「MiniMax HeyGen 管線」、「腳本轉 TikTok 影片」、或已有腳本及(可選)B-Roll 圖片,並希望產出附帶字幕、音效、B-Roll 的 MP4 9:16 影片時使用。

MKT.LANDINGPAGE.SKILLS 是什麼?

這是一個端到端的協調技能,專為將文字腳本(越南文或英文)轉換為可發佈於 TikTok 或 Reels 的 9:16 格式 MP4 影片而設計。它提供了一個結構化的三階段管線,整合了多個子技能。第一階段處理文字轉語音(TTS),使用者在 ElevenLabs(預設,使用特定品牌聲音)和 MiniMax(更經濟實惠,越南語聽起來更自然)之間進行選擇。第二階段使用 HeyGen API 將產生的 MP3 與一個具有嘴型同步功能的虛擬角色影片配對。第三階段由一個專門的子代理處理,負責自動轉錄、智慧場景分割、並行撰寫場景內容(類似於扇出模式),並組裝最終的 HyperFrame 預覽。此協調器包含兩個關鍵的使用者檢查點:一個是在 MP3 生成之後,讓使用者可以批准或要求重新生成語音;另一個則是在場景大綱準備完成後(可跳過)。它整合了 B-Roll 素材,並確保最終產出是帶有字幕和音效的專業級影片。API 金鑰和語音 ID 等敏感配置是透過環境變數管理,而非硬編碼。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lexuanthanhhy/MKT.LANDINGPAGE.SKILLS/tree/HEAD/.claude/skills/mkt-full-video-with-11-hyperframe-heygen

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

mkt-full-video-with-11-hyperframe-heygen

端到端協調器:腳本 → 最終 TikTok/Reels MP4 9:16。

管線包含 2 個使用者檢查點:

  1. MP3 檢查點(協調器)— 在第 1 階段後,使用者審核旁白。
  2. 場景大綱檢查點(第 3 階段子代理)— 使用者在扇出內容編寫者之前,審核場景結構和變體。如果使用者傳入 auto_scenes=true,則可跳過。

使用時機

  • 使用者有少於或等於 5000 個字元的越南文/英文腳本,並希望產出完整的 TikTok 影片
  • 有(可選的)圖片或影片 B-Roll 及其使用目的
  • 希望從腳本一路完成到 Studio 預覽

請勿在以下情況使用此技能:

  • 使用者已有 MP3 → 直接使用 heygen-mp3-to-mp4
  • 使用者已有說話頭部 MP4 → 直接使用 mkt-hyperframe-talking-head-video
  • 使用者需要 HeyGen 自行朗讀文字(不經由 ElevenLabs)→ 使用 heygen-script-to-mp4
  • 腳本超過 5000 個字元 → 以語義進行分割,然後為每個區段調用管線

管線概覽

腳本(文字 + 可選 B-Roll + tts_provider)
    │
    ▼
第 1 階段 ── TTS (elevenlabs | minimax) ──► voiceover.mp3
    │                                         │
    │                                         ▼
    │                              檢查點 #1 — 使用者聆聽並批准 MP3
    │                                         │
    │                                         ▼ (確定)
第 2 階段 ── heygen-mp3-to-mp4 ──────────► source.mp4 (9:16 嘴型同步)
    │
    ▼
第 3 階段 ── 生成代理 mkt-full-video-phase3-packager(隔離環境)
            │
            ├─ 轉錄 + 清理 + 分組字幕
            ├─ 偵測場景邊界 + 分類 mockup_variant
            ├─ 檢查點 #2 — 使用者審核場景大綱
            ├─ 扇出 N 個通用子代理(每個場景一個)並行
            │   → 每個子代理根據變體模式建立內容 JSON
            ├─ 合併 → scenes.json
            ├─ 並行:搭建子組件 + 複製音效 + 注入字幕
            ├─ 生成根目錄 index.html
            └─ 語法檢查 + 預覽 Studio
    │
    ▼
使用者審核預覽 → "渲染" → 最終 MP4

檢查點規則: 協調器管理檢查點 #1 (MP3)。第 2 階段 → 第 3 階段自動執行。檢查點 #2(場景大綱)由第 3 階段子代理管理。最終的渲染閘門在 Studio。

輸入

輸入必要格式 / 範例
腳本文字是檔案路徑 (.txt/.md) 或內嵌字串。少於或等於 5000 個字元。
專案 Sluf否自動從腳本前 5 個字衍生。小寫、ASCII、連字號。
B-Roll 列表否陣列 [{path: "...", purpose: "課程 1 — 說明 X"}, ...]。
tts_provider否elevenlabs(預設 — Hoàng 的聲音,富有表現力)或 minimax(speech-2.8-hd,較便宜,越南語更自然)。使用者說「用 minimax」/「用 eleven」→ 據此設定。
語音 ID 覆蓋否覆蓋 .env 的預設值。ElevenLabs 讀取 ELEVENLABS_VOICE_ID,MiniMax 讀取 MINIMAX_VOICE_ID。CLI 標誌 --voice_id 同時適用於兩者。
語音設定覆蓋否ElevenLabs:{stability, similarity_boost, style}。MiniMax:{speed, vol, pitch}。
虛擬角色外觀否從 HEYGEN_AVATAR_LOOKS 環境變數中取一個 ID(.env 檔案,以逗號分隔)。如果未選擇,則隨機選取。
auto_scenes否預設 false。設為 true 可跳過第 3 階段的場景大綱檢查點。

工作區佈局

workspace/content/YYYY-MM-DD/<slug>/
├── script.txt              # 第 0 階段
├── voiceover.mp3           # 第 1 階段
├── source.mp4              # 第 2 階段
├── broll/                  # 使用者提供的 B-Roll(複製)
├── transcript.json         # 第 3 階段
├── caption-groups.json     # 第 3 階段
├── scenes-outline.json     # 第 3 階段 — 檢查點前的大綱
├── scenes/                 # 第 3 階段 — 每個場景的扇出內容在此寫入
│   ├── scene-1.json
│   └── ...
├── scenes.json             # 第 3 階段 — 合併後的最終版本
├── compositions/           # 第 3 階段 — HF 子組件
├── sfx/                    # 第 3 階段 — 6 個音效
└── index.html              # 第 3 階段 — 根組件

YYYY-MM-DD = 今天日期 (UTC+7)。

工作流程

步驟 0 — 設定

  1. 驗證 len(script_text) <= 5000。超過 → 停止,要求使用者以語義分割。
  2. 如果缺少 Slug,則衍生:取前 5 個字 → 轉小寫 → 移除變音符號 → 空格轉連字號。
  3. 解析 TTS 提供者 — 從使用者輸入讀取 tts_provider(預設 elevenlabs)。如果使用者說「用 minimax」/「換成 minimax」→ minimax。如果使用者說「用 eleven」/「elevenlabs」→ elevenlabs。驗證 .env 中是否存在對應的 API 金鑰:
    • elevenlabs → 需要 ELEVENLABS_API_KEY(可選 ELEVENLABS_VOICE_ID 來覆蓋預設值 K7ewtjKRNtwwt3lKQ6M0)。
    • minimax → 需要 MINIMAX_API_KEY(可選 MINIMAX_VOICE_ID 來覆蓋預設值 moss_audio_c56d6120-ef9c-11f0-9649-8ee40147f116)。 缺少金鑰 → 停止,通知使用者將其加入 .env。
  4. 建立 workspace/content/YYYY-MM-DD/<slug>/。儲存 script.txt。
  5. 如果使用者有 B-Roll:建立 <folder>/broll/,複製檔案並保留原始檔名。
  6. 通知使用者:「工作區已建立在 <folder>。TTS 提供者:<elevenlabs|minimax>。開始第 1 階段。」

步驟 1 — 第 1 階段:腳本 → MP3 (TTS)

根據 tts_provider 執行恰好一個分支:

分支 A — ElevenLabs(預設):

uv run .claude/skills/mkt-elevenlabs-tts-to-mp3/scripts/text_to_mp3.py \
  --file workspace/content/YYYY-MM-DD/<slug>/script.txt \
  -o workspace/content/YYYY-MM-DD/<slug>/voiceover.mp3

語音 ID:自動從 .env 讀取 ELEVENLABS_VOICE_ID(若無則使用預設的 Hoàng 品牌聲音)。CLI 覆蓋:--voice_id <id>。 語音設定:如果使用者要求調整,則加入 --stability / --similarity_boost / --style。

分支 B — MiniMax:

uv run .claude/skills/mkt-video-script-to-mp3/scripts/text_to_mp3.py \
  --file workspace/content/YYYY-MM-DD/<slug>/script.txt \
  -o workspace/content/YYYY-MM-DD/<slug>/voiceover.mp3

語音 ID:自動從 .env 讀取 MINIMAX_VOICE_ID(若無則使用預設值 moss_audio_…)。CLI 覆蓋:--voice_id <id>。 語音設定:--speed(預設 1.08)、--vol、--pitch、--language_boost Vietnamese。

輸出檔名不可變更:兩個分支皆為 voiceover.mp3,以便第 2 階段 (HeyGen) 找到正確路徑。

完成後,檢查時長(兩個提供者通用):

uv run .claude/skills/heygen-mp3-to-mp4/scripts/check_duration.py \
  workspace/content/YYYY-MM-DD/<slug>/voiceover.mp3

TOO_LONG → 停止,通知使用者 MP3 超過 HeyGen 的 5 分鐘限制,要求精簡腳本。

步驟 2 — 檢查點 #1:使用者聆聽 MP3

由協調器管理的唯一停止點。 以如下格式通知使用者:

## 旁白準備就緒 — 請幫助審核

**檔案:** `workspace/content/YYYY-MM-DD/<slug>/voiceover.mp3`
**時長:** <X.X> 秒
**大小:** <Y.Y> MB
**提供者:** <`elevenlabs` | `minimax`>
**語音:** <`ElevenLabs 品牌聲音 - Hoàng (K7ewtjKRNtwwt3lKQ6M0)`> 或 <`MiniMax speech-2.8-hd (moss_audio_…)`>(如果使用者覆蓋,則從 `.env` 的語音 ID 取得)

請開啟檔案試聽。回覆下列其中一項:
- **`OK`** / **`繼續`** → 我將執行第 2 階段 (HeyGen 虛擬角色嘴型同步)
- **`重新生成`** +(可選)原因 → 我將調整語音設定並重新生成 MP3
- **`修改腳本`** + 新內容 → 我將儲存新腳本並重新執行第 1 階段

停止工具呼叫。 等待使用者明確回覆。

當使用者說 OK → 執行第 2 階段。 當使用者說 重新生成 → 以新的設定重新執行目前提供者的 TTS 腳本,返回檢查點。如果使用者說「換成 minimax」/「試試 eleven」→ 切換 tts_provider,重新執行第 1 階段。 當使用者修改腳本 → 覆寫 script.txt,從頭開始重新執行第 1 階段(使用相同提供者)。

步驟 3 — 第 2 階段:MP3 → HeyGen MP4(自動)

根據子技能 heygen-mp3-to-mp4:

  1. 選擇虛擬角色 ID — 從 .env 讀取 HEYGEN_AVATAR_LOOKS(逗號分隔),如果使用者未指定則隨機選取:

    HEYGEN_AVATAR_LOOKS=$(grep '^HEYGEN_AVATAR_LOOKS=' .env | cut -d'=' -f2- | tr -d '"' | tr -d "'")
    echo "$HEYGEN_AVATAR_LOOKS" | tr ',' '\n' | awk 'BEGIN{srand()} {a[NR]=$0} END{print a[int(rand()*NR)+1]}'
    

    如果環境變數缺失/為空 → 停止並通知使用者將 HEYGEN_AVATAR_LOOKS=<id1>,<id2> 加入 .env。在呼叫 MCP 前通知使用者選擇哪個。

  2. 上傳 MP3 到 HeyGen(透過 MCP upload_asset,資產類型 audio)。不要使用 curl https://upload.heygen.com/...。

  3. 建立虛擬角色影片(透過 MCP generate_avatar_video):

    character: { type: avatar, avatar_id: <選擇的>, scale: 1.0 }
    voice:     { type: audio, audio_asset_id: <上傳結果> }
    dimension: { width: 720, height: 1280 }   # 9:16
    title:     "<slug>-<時間戳記>"
    
  4. 輪詢狀態 每約 10 秒 → completed(最多 10 分鐘)。failed → 停止,顯示錯誤。

  5. 下載 MP4 → workspace/content/YYYY-MM-DD/<slug>/source.mp4(檔名不可變更):

    uv run .claude/skills/heygen-mp3-to-mp4/scripts/download_video.py \
      "<video_url>" "workspace/content/YYYY-MM-DD/<slug>/source.mp4"
    
  6. 通知使用者一行:「第 2 階段完成 — <路徑>(虛擬角色 <id>,<時長> 秒,<大小> MB)。正在生成第 3 階段的封裝器…」

此處不停止。 自動進入第 3 階段。

步驟 4 — 第 3 階段:生成封裝器子代理

使用 Task 工具,設置 subagent_type: "mkt-full-video-phase3-packager"。傳遞一個包含子代理所需輸入的獨立提示。範例:

工作區:workspace/content/2026-05-03/hom-nay-minh-chia-se/
Slug:hom-nay-minh-chia-se
腳本:<完整腳本文字>
B-Roll:[
  {"path": "workspace/content/2026-05-03/hom-nay-minh-chia-se/broll/alphabet.png", "purpose": "課程 1"},
  ...
]
auto_scenes:false
header_label:"3 個 AI 課程"
footer_handle:"@tranvanhoang.com"

根據您的代理定義執行完整的第 3 階段封裝管線。預覽開啟時回傳 Studio URL。

子代理:

  • 轉錄 source.mp4,建立場景大綱
  • 除非 auto_scenes: true,否則停止要求使用者批准大綱(檢查點 #2)
  • 並行扇出 N 個場景內容編寫者
  • 合併 + 框架組裝 + 語法檢查 + 開啟預覽
  • 回傳 Studio URL

當子代理運行時,協調器的唯一工作是將使用者回覆轉發給子代理(場景大綱檢查點的使用者回覆將到達此對話;如果子代理仍在活動,則將其路由到子代理,否則視為後續指示)。

步驟 5 — 交接

當子代理回傳 Studio URL 時,格式化最終報告:

## 完整影片管線完成 — 預覽已就緒

**工作區:** `workspace/content/YYYY-MM-DD/<slug>/`

**第 1 階段 (`<elevenlabs|minimax>`):** voiceover.mp3 — <D1> 秒, <S1> MB(語音 ID `<id>`)
**第 2 階段 (HeyGen):** source.mp4 — 虛擬角色 `<avatar_id>`, <D2> 秒, <S2> MB
**第 3 階段 (HyperFrames):** <N> 個場景(<列出變體>), <K> 個字幕組, 6 個音效

**Studio URL:** http://localhost:3002

請開啟瀏覽器查看時間軸。當一切沒問題時,說 **`渲染`** → 我將執行 `npx hyperframes render` 輸出 1080×1920 30fps 的 MP4。

此處停止。 不要自動渲染。使用者確認後才呼叫 npx hyperframes render。

關鍵協調規則

  1. 2 個使用者檢查點,1 個協調器閘門 — 協調器僅在第 2 步驟 (MP3) 停止。場景大綱檢查點由第 3 階段子代理管理。渲染閘門在使用者端的 Studio。

  2. 路徑約定不可變更 — 旁白必須是 voiceover.mp3,說話頭部必須是 source.mp4。HF 子技能預期檔名 source.mp4。

  3. 僅限 HeyGen MCP — 絕不要使用 curl https://api.heygen.com/...。這是 heygen-mp3-to-mp4 的硬性限制。

  4. 語音 ID 儲存在 .env,而非硬編碼在技能中。 ElevenLabs 讀取 ELEVENLABS_VOICE_ID(若無則使用 K7ewtjKRNtwwt3lKQ6M0)。MiniMax 讀取 MINIMAX_VOICE_ID(若無則使用 moss_audio_…)。每次呼叫可透過 --voice_id 覆蓋。管線在第 0 步驟和檢查點 #1 明確報告已選擇的提供者和語音 ID。

  5. 腳本長度硬上限 5000 個字元 — 在第 0 步驟迅速失敗。

  6. MP3 時長少於或等於 300 秒 — HeyGen 單一影片上限。第 1 階段後立即檢查。

  7. 預覽優先 — 第 3 階段 不會 自動渲染。請參考 feedback_hyperframes_workflow.md。

  8. 第 3 階段隔離 — 第 3 階段在獨立的子代理環境中運行。HF 技能主體 + 4 個參考文件(約 40KB)會載入到子代理,而非主協調器中。

失敗模式與備援方案

症狀處理方式
腳本 > 5000 個字元停止,要求使用者以語義分割
ElevenLabs API 失敗報告錯誤,建議檢查 .env 中的 ELEVENLABS_API_KEY(可選 ELEVENLABS_VOICE_ID)。或切換至 tts_provider=minimax 重新執行第 1 階段
MiniMax API 失敗報告錯誤,建議檢查 .env 中的 MINIMAX_API_KEY(可選 MINIMAX_VOICE_ID)。或切換至 tts_provider=elevenlabs 重新執行第 1 階段
MP3 在第 1 階段後 > 300 秒停止管線,建議使用 heygen-short-video(分段處理)
HeyGen MCP 未連接停止,通知執行 claude mcp list 以驗證
HeyGen 渲染失敗顯示錯誤,建議透過 mcp__heygen__get_current_user 檢查額度
第 3 階段子代理失敗讀取錯誤追蹤,建議使用者使用 mkt-hyperframe-talking-head-video 技能單獨重新執行第 3 階段
場景編寫者回傳格式錯誤的 JSON子代理會自動為該場景重新生成(非協調器需處理的問題)
使用者否決 MP3 語音返回第 1 階段並調整語音設定

端到端範例

使用者:

這裡有腳本,執行完整管線產出 TikTok 影片。附上 2 張 B-Roll 圖片,用於課程 1 和課程 2。 腳本:「Hôm nay mình chia sẻ 3 bài học từ Anthropic. Bài học đầu tiên là Alphabet ship beta. Bài học thứ 2 là 24h…」 B-Roll:alphabet.png(課程 1),clock.png(課程 2)

管線:

  1. 步驟 0 — slug hom-nay-minh-chia-se。資料夾 workspace/content/2026-05-03/hom-nay-minh-chia-se/。儲存 script.txt,複製 B-Roll。
  2. 步驟 1 — text_to_mp3.py → voiceover.mp3(45 秒, 0.7MB)。
  3. 步驟 2 — 檢查點 #1 — 通知使用者路徑和時長。等待回覆。
  4. 使用者:OK。
  5. 步驟 3 — 選擇虛擬角色(從 HEYGEN_AVATAR_LOOKS 隨機選取,例如 66e75e22…)。上傳 MP3 → asset_id。生成影片 → 輪詢 → 下載 source.mp4(45 秒, 7.5MB)。
  6. 步驟 4 — 生成 mkt-full-video-phase3-packager 子代理。
  7. 子代理轉錄(35 秒),建立大綱(3 個課程 + 回顧 + 結尾行動呼籲),顯示大綱 → 檢查點 #2。
  8. 使用者:OK。
  9. 子代理並行扇出 5 個場景編寫者(約 8 秒牆壁時間 vs 約 40 秒序列化)。
  10. 子代理合併 → scenes.json → 框架組裝 + 音效 + 字幕

…

[為翻譯而截斷]

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

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

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

相關技能