Communitygithub.com

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

端到端編排器:**腳本 → 最終 MP4 16:9 (1920×1080) podcast 主題演講**。

MKT.LANDINGPAGE.SKILLS 是什麼?

此技能為一個端到端影片生成編排器,專門用於製作 16:9 橫向 (1920×1080) 的「談話頭像 + 投影片」知識型影片,風格類似 podcast 主題演講。其核心架構基於三個階段:首先透過 ElevenLabs 將腳本合成為 MP3 語音,接著使用 HeyGen 根據語音生成頭像影片,最後透過 HyperFrames 進行最終組合。此技能的主要創新點在於第三階段的組合方式,它不使用傳統的 Python 模板,而是為每個場景並行啟動一個 LLM 子代理,根據 `visual-plan.json` 獨立創作 HTML/CSS/GSAP 組合文件。這使得每個場景的視覺隱喻(如前後對比、中樞輻射、滾動膠帶等)都能獲得高度客製化的呈現,避免了固定模板的單調性。最終輸出會自動整合多種視覺特效,包括:右側的 HeyGen 頭像浮動圓角框(帶有品牌色邊框)、左側的現代 AI 風格內容投影片、全螢幕投影片重點強調時頭像縮小至角落的畫中畫(PIP)效果、頭像的呼吸式縮放動畫、可選的奶油色紙張風格插圖底層、逐句淡入淡出的字幕覆蓋層,以及 YouTube 訂閱提示。此技能支援簡歷模式,若 MP3 和原始影片已存在,可直接跳至第三階段進行重構。它特別擅長處理包含 5 個以上提示的清單式知識分享、案例研究、工具對比等主題,其輸出的 `scene-{num}.html` 命名規則使其能靈活支援任意數量的場景。與其同系列專注於 9:16 豎直短影音的技能不同,此版本專為橫向的 YouTube、LinkedIn 影片或 podcast 剪輯而設計。

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

在你喜歡的 AI 中提問

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

說明文件

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

端到端編排器:腳本 → 最終 MP4 16:9 (1920×1080) podcast 主題演講。

輸出為一個 1920×1080 的 MP4 檔案,格式為「談話頭像 + 投影片」— HeyGen 頭像位於右側的浮動圓角框內(帶有 Claude 橙色品牌邊框),左側為現代 AI / Claude 編輯風格的內容投影片,並在投影片需要全螢幕強調時有畫中畫(PIP)縮小效果。所有組合皆自動內建以下模式 — 無需手動編輯。

自動內建模式(第三階段輸出)

每個由編排器生成的影片都會自動包含:

  1. 每個場景的組合 HTML — 由並行 LLM 子代理(每個場景一個子代理,在一則訊息中同時展開)創作,而非使用 Python 模板:

    • 輸出:compositions/scene-1.html … compositions/scene-N.html(每個場景一個檔案,唯一檔名,適用於任意 N)
    • 每個子代理會讀取其場景區塊(來自 visual-plan.json)和參考文件(references/composition-patterns.md、slide-design-tokens.md、infographic-prompt-template.md),然後從頭創作 HTML/CSS/GSAP — 為該場景的特定隱喻選擇合適的模式,不限於 5 個固定原型
    • 為何使用 LLM 而非 Python:HyperFrames 擁有無數的視覺思考模式(前後對比、中樞輻射、雙時鐘比較、三層比較、滾動膠帶、英雄球體規格三重奏、終端模擬、禮物盒……)。Python 生成器只會 5 個固定原型 → 很無聊,無法適應場景特定的隱喻,例如「浪費時間的滾動膠帶」或「正確工具的車輛」。每個場景由 LLM 創作,足以實現設計意圖。
    • 品牌標誌自動附加:編排器會將品牌背景(claude / chatgpt / gemini / claude-code)傳給子代理,子代理在 assets/logos/ 中參考標誌,並在模式需要時嵌入到組合中(光球、工具徽章藥丸、失敗行圖示)
  2. 「混合鉤子」視覺縮放策略 應用於 .avatar-breathing(第三階段步驟 3e,透過 generate_root_index.py 實現):

    • HOOK(鉤子)場景:在場景持續時間內緩慢從 1.0 增加至 1.10(營造戲劇性)
    • HOOK→BODY(鉤子到主體):瞬間重置回 1.10 → 1.0(釋放張力)
    • BODY(主體)場景:在 PIP-IN(畫中畫進入)事件時產生 1.06 的節拍衝擊(創造節奏)
    • CTA(行動呼籲)場景:溫和地從 1.0 推到 1.04(結尾)
    • 取代了平板的「呼吸式彈跳」— 每個場景原型都有自己獨特的縮放動態
  3. 奶油色紙張 B-Roll 畫中畫切換層(分工架構 — 重要):

    • HTML 組合(投影片掛載層)承載 資料 / 層級字母 / 項目 / 徽章 / 標題 / 品牌標誌 — 永遠顯示
    • <img class="broll-image"> 奶油色紙張編輯插圖負責承載 隱喻 / 情感 — 以完整 1920×1080 舞台顯示,在其場景的畫中畫視窗期間淡入,其餘時間淡出
    • 每個層級負責傳達一半不同的訊息(HTML = "WHAT(什麼)",圖片 = "WHY/FEELS(為什麼/感覺)")
    • 關鍵: 圖片僅存在於根層級(index.html 中的 <img id="broll-N">)。組合 HTML 不得嵌入 <div class="image-slot"> — 這會將 16:9 圖片塞進小框 → 很難看。組合只是純資料層。
    • 圖片來源:規劃技能會寫入 prompts.md → 使用者透過 AI33/Nano Banana Pro 或 mkt-broll-image 生成 1.png-N.png
    • 完整 1920×1080 舞台,object-fit: contain,奶油色 #F0EEE6 信箱模式會無縫融合
  4. 頭像框品牌色邊框(第三階段步驟 3e,透過 generate_root_index.py 實現):

    • 預設拆分狀態:Claude 橙色 #d97757,3px 實線 + 6px 光暈 + 80px 外發光(溫暖的品牌框,不使用白色邊框)
    • PIP(畫中畫)狀態:紫色 #a78bfa,3px 實線 + 6px 光暈 + 60px 發光(頭像縮小時的重點提示)
    • 可依品牌覆蓋:如果使用者選擇 chatgpt/gemini/claude-code 品牌重點,生成器會使用對應的重點色
  5. 字幕覆蓋層(當 compositions/captions.html 存在時預設開啟):

    • 底部中央藥丸形,位於 bottom: 100px,使用 Inter 600 38px 白色字體,搭配深紫羅蘭色邊框藥丸背景
    • 逐句淡入淡出(0.18 秒),每個段落結束時強制 tl.set 清除
    • 由 generate_captions.py 從固定的 Jinja 模板和每個影片的 captions.json(或 Whisper 分段作為後備)生成
    • 由 generate_root_index.py 自動掛載,z-index 為 28;可使用 --no-captions 停用
    • 詳見下方第三階段步驟 3e 的步驟 2
  6. YouTube 訂閱下三分之一,顯示在最後 3 秒(預設開啟):

    • 組合 yt-lower-third.html 掛載在 data-start = total_duration - 3.0s
    • 滑入動畫 + 訂閱按鈕按下 + 已訂閱狀態切換
    • z-index 60(在所有圖層之上),pointer-events: none
    • 頻道名稱 + 訂閱者數量已寫入 compositions/yt-lower-third.html(如果使用者想重新命名,可以編輯)
    • 停用:generate_root_index.py --no-yt-lower-third。自訂持續時間:--yt-lower-third-duration 4.5

所有 6 種模式皆自動內建 — 編排器無需額外步驟。使用者只需渲染 1.png-N.png(第三階段步驟 3.5),分工效果才會完全顯現。如果跳過圖片生成,影片仍能透過純 HTML 組合(圖片圖層透明度為 0)正常播放。

與 9:16 同系列技能的差異

mkt-full-video-with-11-hyperframe-heygen (9:16)-16-9(此技能)
比例1080×1920 直立1920×1080 橫向
佈局頭像全螢幕 + 字幕條 + B-Roll 切換左側投影片面板 (1200) + 右側頭像浮動框 (540×880)
字幕掛載有(TikTok 風格的逐字顯示)預設無字幕(投影片在視覺上傳達訊息)
PIP(畫中畫)機制無SPLIT(拆分)↔ PIP(畫中畫)轉場 — 投影片擴展至 1920,頭像縮小至 320×420 角落
頭像動態靜態全螢幕呼吸式彈跳 + 場景起始推入
投影片風格基於變體的模型(文章堆疊、AI 視窗、應用卡片……)LLM 創作的每個場景組合 + 現代 AI 調色盤 + 根層級的奶油色紙張 B-Roll
組合創作Python 模板N 個並行 LLM 子代理(每個場景一個)
渲染用途TikTok/Reels/ShortsPodcast 主題演講 / YouTube 知識型 / LinkedIn
HeyGen 渲染720×1280 直立仍是 720×1280 直立(透過 object-position: center 25% 裁切到橫向頭像框 — 不是 1280×720!)

為所有橫向知識型影片選擇此技能。為所有直立短影音選擇同系列技能。

何時使用

  • 使用者有越南文腳本(60–150 秒),希望製作橫向 podcast 主題演講形式的知識型影片
  • 使用者希望輸出帶有「Claude AI / Anthropic 編輯」風格:深色投影片背景、霓虹發光層級字母、玻璃卡片、根層級的奶油色紙張資訊圖表
  • 主題為知識分享 / 案例研究 / 前後對比 / 工具比較 / 5 個以上提示的清單 — 適合投影片驅動,支援任意 N 個場景(3、5、7、10……)
  • 發布頻道:橫向 YouTube、LinkedIn 影片、Podcast 剪輯、嵌入網站
  • 使用者已有 MP3 + source.mp4,想重新規劃第三階段 → 編排器跳過第一、二階段,直接進入第三階段

不要在以下情況使用此技能:

  • 使用者需要 TikTok/Reels/Shorts 直立影片 → 使用同系列的 9:16 技能
  • 腳本 > 5000 字元 → 先進行語義分割
  • 主題為純視覺重內容(蒙太奇、音樂錄影帶)— 此技能最佳化用於談話頭像 + 投影片

管線概覽

腳本(越南文,≤ 5000 字元)
    │
    ▼
[階段 0.5 簡歷偵測 — 如果 voiceover.mp3 + source.mp4 已存在 → 跳過第一、二階段]
    │
    ▼
階段 1 ── mkt-elevenlabs-tts-to-mp3 ─────► voiceover.mp3
    │                                          │
    │                             檢查點 #1 — 使用者聆聽 + 檢查 MP3
    │                                          │
    │                                          ▼ (OK)
階段 2 ── heygen-mp3-to-mp4 ─────────────► source.mp4(720×1280 直立,唇形同步)
    │                                          (不渲染 1280×720)
    │
    ▼
階段 3a ── 轉錄 (Whisper) → voiceover.srt + transcript.json
階段 3b ── plan_visuals.py → visual-plan.json + prompts.md
              (規劃技能:mkt-plan-short-video-edit-16-9)
              檢查點 #2 — 使用者檢查計畫
    │
    ▼(LLM 根據每個場景的隱喻/層級字母/項目自訂 visual-plan.json)
    │
階段 3c ── apply_plan_to_scenes.py → scenes.json(編輯器相容)
階段 3d ── 🔥 展開 N 個並行 LLM 子代理(每個場景一個)🔥
              → compositions/scene-1.html … scene-N.html
              (每個子代理:讀取 visual-plan 場景區塊 + 參考文件 → 從頭創作 HTML/CSS/GSAP)
階段 3e ── scaffold_project.py(sfx/ + logos/ + avatar.jpg + yt-lower-third.html)
            generate_root_index.py → index.html(1920×1080,掛載 scene-N.html、broll 圖層、PIP、音效、品牌標記、Claude 橙色頭像邊框)
階段 3f ── lint + 預覽(Studio @ http://localhost:3002)
            (可選階段 3.5:透過 AI33/Nano 生成 1.png-N.png 奶油色紙張圖片)
    │
    ▼
使用者檢查預覽 Studio → "render" → npx hyperframes render → out.mp4 1920×1080

檢查點:

  • #1 MP3 語音 — 編排器閘門(如果是簡歷模式則跳過)。
  • #2 視覺計畫 — 階段 3b 閘門(如果 auto_scenes=true 則可跳過)。
  • 渲染閘門 — 使用者在 Studio 中確認後才渲染。

輸入

輸入必要格式 / 範例
主題 (Topic)是簡短標題("Claude AI 的優點", "5 個節省 Claude Token 的技巧")
品牌強調 (Brand emphasis)是claude / chatgpt / gemini / claude-code / generic — 決定重點色調色盤 + 標誌 + 頭像邊框顏色
腳本文本 (Script text)是(簡歷模式除外).txt/.md 檔案或行內文字。越南文。≤ 5000 字元
輸出縮寫 (Output slug)否從主題自動衍生。小寫 ASCII,使用連字號。
場景數量 (Number of scenes)否預設 5(鉤子 / 問題 / 解決方案 / 回顧 / 行動呼籲)。可依長度設為 3–10。5 個以上提示的清單 OK — 為每個提示、1 個鉤子和 1 個行動呼籲各展開 1 個子代理。
頭像外觀 (Avatar look)否從 HEYGEN_AVATAR_LOOKS 環境變數中取 1 個 ID。如果未選擇則隨機。
資訊圖表模式 (Infographic mode)否now(立即透過 mkt-broll-image 生成圖片)/ scaffold(僅寫入 prompts.md,使用者稍後手動生成)/ none。預設為 scaffold。
auto_scenes否預設為 false。設為 true 可跳過場景大綱檢查點。
start_at否phase_1(預設)/ phase_2 / phase_3。簡歷模式進入點。
skip_phase_1 / skip_phase_2否簡歷模式的布林快捷方式(可替代 start_at=phase_3)。

工作區佈局

workspace/content/YYYY-MM-DD/<slug>/
├── script.txt                  # 階段 0 — 使用者提供的純文字
├── script-tagged.txt           # 階段 1a — 腳本 + ElevenLabs v3 音訊標籤 ([excited], [sigh]…)
├── voiceover.mp3               # 階段 1b
├── voiceover.srt               # 階段 3a (Whisper)
├── voiceover_segments.json     # 階段 3a(字詞層級區段)
├── source.mp4                  # 階段 2(720×1280 直立 — 不要渲染橫向)
├── transcript.json             # 階段 3a(whisper 字詞)
├── transcript-cleaned.json     # 階段 3a(手動修正錯字)
├── scenes-outline.json         # 階段 3b — 檢查點前的大綱
├── visual-plan.json            # 階段 3b — 完整的機器可讀計畫(規劃器輸出)
├── scenes.json                 # 階段 3c — 編輯器相容的視覺計畫扁平化版本
├── prompts.md                  # 階段 3b — 奶油色紙張編輯提示(每個場景一個)
├── 1.png  2.png  ... N.png     # 階段 3.5 — 奶油資訊圖表圖片(每個場景一個),根層級 B-Roll 圖層
├── captions.json               # 階段 3e(可選)— 由編排器策劃的 [{text,start,end},...];如果缺少,則回退到 voiceover_segments.json
├── compositions/
│   ├── scene-1.html            # 階段 3d — LLM 創作,1200×1080 原生橫向
│   ├── scene-2.html            # 每個場景一個檔案,無論 N 為何
│   ├── ...
│   ├── scene-N.html
│   ├── captions.html           # 階段 3e — 從 captions.html.j2 + captions.json(或 Whisper 區段)生成
│   └── yt-lower-third.html     # 階段 3e — 從技能資產自動複製
├── assets/
│   └── logos/                  # 階段 3e — 自動複製(claude.png, chatgpt.png, gemini.jpg, claude-code.png)
├── sfx/                        # 階段 3e — 6 個預設音效
└── index.html                  # 階段 3e — 根組合 1920×1080

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

工作流程

步驟 0 — 設定 + 簡歷偵測

  1. 驗證 len(script_text) <= 5000(如果是簡歷模式且無腳本輸入則跳過)。超過 → 停止。
  2. 如果缺少 slug,則從主題衍生。
  3. 建立 workspace/content/YYYY-MM-DD/<slug>/。儲存 script.txt(如果是簡歷模式且腳本已存在則跳過)。
  4. 選擇品牌重點色調色盤(參見 references/slide-design-tokens.md)。
  5. 簡歷偵測 — 檢查 voiceover.mp3 和 source.mp4 是否存在。如果兩者都存在則跳過第一、二階段並將 start_at 設為 phase_3。
  6. 詢問使用者 Number of scenes(如果未提供)。
  7. 詢問品牌強調(如果未提供)。

步驟 1 — 語音合成(如果未跳過)

  1. 如果 voiceover.mp3 不存在:執行 mkt-elevenlabs-tts-to-mp3,傳遞 script.txt(階段 1a:script-tagged.txt;階段 1b:voiceover.mp3)。
  2. 檢查點 #1 — [等等,我需要播放 MP3 給你聽。聽完後,請回覆 "OK" 或 "RETAKE"(重新錄製)。如果 RETAKE,請提供修正後的腳本或標籤。]

步驟 2 — 頭像影片生成(如果未跳過)

  1. 如果 source.mp4 不存在:執行 heygen-mp3-to-mp4,傳遞 voiceover.mp3 → 生成 source.mp4(720×1280 直立 — 重要:要求 HeyGen 不要渲染 1280×720 橫向!)。
  2. 此步驟無使用者檢查點 — HeyGen 渲染通常足夠好。如果出現奇怪的口型不同步錯誤,使用者可以要求重試。

步驟 3a — 轉錄

  1. 在 voiceover.mp3 上執行 Whisper → voiceover.srt + transcript.json。
  2. 建立 transcript-cleaned.json(將常見品牌名稱的錯誤拼寫修正為正確的商業大小寫,例如 "Claude", "Anthropic", "HeyGen", "ElevenLabs")。

步驟 3b — 規劃

  1. 在 transcript-cleaned.json 上執行規劃器(mkt-plan-short-video-edit-16-9)→ visual-plan.json + prompts.md。
  2. 檢查點 #2 — [讀取 visual-plan.json 給使用者聽(JSON 格式,每個場景一個區塊):
    • 對於每個場景區塊,顯示 name + metaphor + tier_letter + items + tool_badge。
    • 詢問:「這個視覺計畫好嗎?你要為任何場景更改隱喻、層級字母或項目嗎?還是我們進入第三階段?」]
  3. 根據使用者回饋自訂 visual-plan.json。如果是清單,展開以包含所有提示場景 + 維持鉤子 + 行動呼籲。

步驟 3c — 轉換

  1. 執行 apply_plan_to_scenes.py(從 visual-plan.json 讀取 → 寫入 scenes.json)。

步驟 3d — 🔥 展開 LLM 組合 🔥

  1. FAN_OUT 每個場景一個 LLM 子代理:
    • 每個子代理收到:
      • visual-plan.json 中該場景的區塊
      • 參考文件內容:
        • references/composition-patterns.md(模式定義)
        • references/slide-design-tokens.md(品牌設計權杖)
        • references/infographic-prompt-template.md(資訊圖表提示結構)
      • 品牌強調(claude / chatgpt / gemini / claude-code / generic)
      • 簡短指示:「你是一個 HTML/CSS/GSAP 動畫專家。為場景 {num} 創作一個 1200×1080 的組合,名稱為 '{name}',隱喻為 '{metaphor}'。調色盤來自設計權杖。如果模式需要,請在 assets/logos/ 中找到正確的品牌標誌並內嵌。輸出名為 compositions/scene-{num}.html 的檔案,不要包在 Markdown 程式碼區塊內。直接寫入磁碟。」
    • 每個子代理寫入 compositions/scene-{num}.html
  2. 收集生成的檔案列表。

步驟 3e — 建立專案

  1. 執行 scaffold_project.py:
    • 將 sfx/ 複製到工作區(6 個預設音效)
    • 將 logos/ 複製到 assets/logos/(根據品牌強調)
    • 從 source.mp4 提取第一幀作為 avatar.jpg
    • 將 yt-lower-third.html 複製到 compositions/
  2. 執行 generate_captions.py:
    • 從 voiceover_segments.json 生成 captions.json,時間戳轉換為秒。
    • 從 Jinja 模板(constants/captions.html.j2)生成 compositions/captions.html。使用 --no-captions 跳過。
  3. 執行 generate_root_index.py:
    • 生成 index.html (1920×1080)
    • 掛載所有 compositions/scene-{num}.html 作為序列場景
    • 為根層級奶油 B-Roll 圖片(1.png-N.png)新增 <img> 標籤,如果不存在則透明度設為 opacity: 0
    • 掛載 PIP 機制(場景轉換時 .avatar 的 SPLIT↔PIP 寬度變換 + .avatar-breathing 的縮放)
    • 根據品牌強調掛載品牌標記(如果 claude 則 Clippy,如果其他則文字標誌)
    • 將 .avatar-frame 邊框顏色設為品牌強調的匹配色(Claude 橙色、ChatGPT 綠色、Gemini 藍色、Claude Code 紫色)
    • 掛載字幕(如果生成)
    • 掛載 yt-lower-third.html 在 data-start = total_duration - 3.0s
    • 設定 SFX 觸發(場景進入 / PIP 事件)

步驟 3f — 預覽 + 迭代

  1. 執行 lint 檢查(npx hyperframes lint 或手動 HTML 驗證)。
  2. 啟動 Studio:cd workspace/content/YYYY-MM-DD/<slug>/ && npx hyperframes studio --port 3002。
  3. 提供使用者預覽連結。等待 OK 或 REVISE。如果 REVISE,更新特定場景 HTML 或根索引。

步驟 3.5 — 奶油紙張圖片(可選)

  1. 如果 infographic_mode 為 now:執行 mkt-broll-image,傳遞 prompts.md → 生成 1.png-N.png。
  2. 如果 infographic_mode 為 scaffold:通知使用者 prompts.md 已準備好。等待使用者手動透過 AI33/Nano Banana Pro 生成 1.png-N.png。
  3. 更新 index.html 以將對應 #broll-{num} 的 opacity 設為 1(或讓使用者操作)。

步驟 4 — 渲染

  1. 當使用者說「render」時:執行 cd workspace/content/YYYY-MM-DD/<slug>/ && npx hyperframes render --output out.mp4。
  2. 輸出:workspace/content/YYYY-MM-DD/<slug>/out.mp4(1920×1080)。
  3. 向使用者總結輸出檔案路徑。

參考文件

references/composition-patterns.md

HyperFrames 場景的視覺思考模式庫。每個場景都匹配一個隱喻。

  • before-after(前後對比):雙欄並排。左 = 之前(灰色/紅色調),右 = 之後(綠色/亮色調)。GSAP 從中間分割揭示。
  • hub-and-spokes(中樞輻射):中央圓形(核心概念)→ 向外輻射的子節點(項目)。GSAP 從中心縮放。
  • two-clock-comparison(雙時鐘比較):兩個並排的時鐘/時間軸。GSAP 獨立動畫指針。
  • three-tier-comparison(三層比較):三張並排卡片,標題 + 3 個項目要點。GSAP 從底部淡入。
  • scroll-tape(滾動膠帶):水準滾動的項目(如收據/膠帶)。GSAP 滾動到中間顯示每個項目。
  • hero-orb-spec-trio(英雄球體規格三重奏):中央發光球體(隱喻)+ 左右兩側各一個規格藥丸。GSAP 球體脈動。
  • terminal-mock(終端模擬):偽終端(黑色背景,綠色文字)。GSAP 打字機效果在指令後。
  • gift-box(禮物盒):中央禮物盒,打開時顯示內容。GSAP 盒蓋滑動 + 內容縮放。
  • fail-row(失敗行):一行紅色 X 標記 + 一個綠色勾(成功)。GSAP 逐個顯露,最後一個成功。
  • stagger-cards(交錯卡片):卡片從底部交錯進入。GSAP stagger: 0.15。

每個模式都使用來自 slide-design-tokens.md 的品牌特定 CSS 變數。

references/slide-design-tokens.md

:root {
  --brand-primary: #d97757;           /* Claude 橙色 */
  --brand-secondary: #a78bfa;         /* Claude 紫色 */
  --brand-accent: #f59e0b;            /* Claude 琥珀色 */
  --slide-bg: #1c1917;                /* 石板深色(所有投影片背景) */
  --slide-text: #fafaf9;              /* 石板 50(主要文字) */
  --slide-text-secondary: #a8a29e;    /* 石板 400(次要文字) */
  --card-bg: #292524;                 /* 石板 800(卡片背景) */
  --card-border: #44403c;             /* 石板 700(卡片邊框) */
  --tier-letter-glow: #d97757;        /* 與品牌主要相同(層級字母光暈) */
  --tool-badge-bg: #d97757;           /* 藥丸背景 */
  --tool-badge-text: #1c1917;         /* 藥丸文字 */
  --broll-fallback: #F0EEE6;          /* 奶油色信箱模式背景 */
}

references/infographic-prompt-template.md

為場景 {num}({name},隱喻:{metaphor})建構一個奶油色紙張繪圖提示。輸出僅為提示文字,無 Markdown。

"柔和、極簡的墨水繪圖,奶油色紙張背景(#F0EEE6),精緻的棕色墨水線條,描繪 {metaphor}。風格讓人聯想到 Christoph Niemann 的編輯插圖。單個焦點物體居中,帶有微妙的陰影和污漬紋理。無文字。無鮮豔顏色。"

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

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

相關技能