Communitygithub.com

Biz Next.js Chatbot OpenRouter — 一鍵安裝 AI 聊天機器人浮動視窗到網站

在現有 Next.js 專案(App Router 或 Pages Router)中安裝一個右下角浮動的 AI 聊天機器人小工具,支援 Web/平板/手機響應式設計,並能自動擷取並儲存潛在客戶名單。

Biz Next.js Chatbot OpenRouter — 一鍵安裝 AI 聊天機器人浮動視窗到網站 是什麼?

這項技能可將 AI 聊天機器人直接整合到您現有的 Next.js 專案中。它會建立一個右下角的浮動小工具,在所有裝置(手機、平板、電腦)上都能完美響應。聊天機器人透過 OpenRouter API 驅動,預設使用快速且經濟的 `google/gemini-3-flash-preview` 模型,但您可以隨時切換到更強大的 `anthropic/claude-sonnet-4.6`。 它最突出的特點是能夠智慧處理回覆:所有來自機器人的訊息都會使用 `react-markdown` 和 `remark-gfm` 正確渲染 Markdown 格式(粗體、清單、程式碼區塊),因此您永遠不會看到像 `**bold**` 這類的原始文字。此外,這項技能會建立一個「知識庫」,其中包含您提供的常見問題 (FAQ) 與產品文件,讓機器人能夠像專業客服人員一樣回答問題。 最強大的功能是它的潛在客戶開發能力。當使用者在對話中提供姓名、電話號碼和電子郵件時,聊天機器人會自動偵測並將這些資料(以電話號碼去重)儲存到 **Upstash Redis** 或 **Vercel KV** 中,有效期限為 90 天。此程序完全在背景進行,不會阻擋訊息串流。您可以直接在 `/admin` 儀表板中檢視這些潛在客戶。 整個過程高度自動化:它會智慧偵測專案是使用 TypeScript 還是 JavaScript、App Router 還是 Pages Router、Tailwind 還是 CSS 模組,並且只會詢問四個必要的問題:要安裝在哪個專案(如果有多個)、FAQ、產品文件,以及品牌調性。

相容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/lexuanthanhhy/MKT.LANDINGPAGE.SKILLS/tree/main/.claude/skills/biz-nextjs-chatbot-openrouter

在你喜歡的 AI 中提問

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

說明文件

Biz Next.js Chatbot OpenRouter — 一鍵安裝 AI 聊天機器人浮動視窗到網站 是做什麼的?

這項技能會將一個 AI 聊天機器人浮動小工具 安裝到您現有的 Next.js 專案中。小工具位於右下角,在三個螢幕尺寸上都具有完整的響應式設計。它透過 OpenRouter 呼叫 LLM,並使用您提供的 FAQ + 課程/產品文件作為知識庫。在機器人對話氣泡中,它使用 react-markdown + remark-gfm 渲染 Markdown 格式(數字/價格的粗體、項目符號清單、可點擊的連結、行內程式碼)。當使用者在聊天中提供完整資訊時,系統會自動擷取並儲存潛在客戶名單(姓名 + 電話 + 電子郵件)到 KV 儲存(Upstash Redis / Vercel KV)中。管理員可以透過 /admin 儀表板檢視這些名單。目標是:讓個人創業者 / 課程創作者能夠在銷售課程的登陸頁面上,擁有24/7 自動支援機器人 + 被動式客戶名單擷取,不錯過任何透過聊天來詢問的客戶。

核心理念:自動偵測所有可能的項目 (Next.js 版本, App/Pages Router, TS/JS, Tailwind/CSS),只詢問使用者真正需要的 4 件事:(1) 如果有多個專案要選哪個,(2) FAQ,(3) 產品文件,(4) 語調/品牌名稱。其餘的由程式碼搞定→幾分鐘內上線。

何時使用

使用者想要:

  • 為銷售課程/服務的登陸頁面添加一個 AI 客戶支援聊天機器人
  • 減少回覆重複問題(價格、學習路徑、退款、適合對象...)的負擔
  • 需要一個右下角、不遮擋內容的緊湊聊天小工具
  • 需要聊天機器人準確理解他們的課程/產品內容(由 FAQ 驅動)
  • 已經有一個 Next.js 專案(剛執行完 /biz-sales-page-layout 或舊專案)

何時不該使用

  • 專案不是 Next.js (純 React Vite, Vue, Svelte, 純 HTML) → 此技能專為 Next.js 設計。可以改寫,但非最佳解。
  • 需要具有 RAG(檢索增強生成)且知識庫有數千頁的聊天機器人 → 需要向量資料庫 (Pinecone/Supabase pgvector),此技能使用簡單的 system prompt,適合 ≤ 20K token 的知識。
  • 需要語音/多模態(傳送圖片)聊天機器人 → 此技能僅限文字。
  • 需要將每個使用者的聊天記錄儲存到資料庫 → 此技能為無狀態、短暫的 session,但未來可以擴展。
  • 後端不適用於 Vercel(需要長輪詢、持久 WebSocket) → OpenRouter 串流在 Vercel Edge 上運行良好,但如果需要專用的 WebSocket 則有所不同。

使用者將獲得的輸出

技能執行完成後:

  1. 使用者 Next.js 專案中的新檔案:

    • components/Chatbot.tsx (或 .jsx) — 小工具 UI(透過 react-markdown + remark-gfm 渲染 markdown)
    • app/api/chat/route.ts (App Router) 或 pages/api/chat.ts (Pages Router) — 呼叫 OpenRouter 的 API 代理 + 串流結束後自動擷取潛在客戶
    • lib/chatbot-knowledge.ts (或 .js) — 知識庫 + system prompt(包含回覆格式區塊 + 主動潛在客戶蒐集區塊)
    • lib/chat-lead.ts — 僅在專案有 KV/Upstash 時建立 — 擷取器與儲存器,根據電話號碼去重,TTL 90 天,命名空間 chat-lead:{phone}
    • Markdown 樣式 .chatbot-md 附加到 app/globals.css (來自 templates/chatbot-markdown-styles.css)
    • 建立/附加 .env.local,包含 OPENROUTER_API_KEY= (預留位置)
    • .env.example (如果尚不存在) 用來記錄環境變數
    • 將 <Chatbot /> 掛載到 app/layout.tsx 或 pages/_app.tsx
  2. 額外安裝的套件 (透過從 lockfile 偵測到的套件管理員):

    • react-markdown — 安全地渲染 markdown(不需要 dangerouslySetInnerHTML)
    • remark-gfm — GitHub Flavored Markdown (表格、自動連結、刪除線)
  3. Session 結束時的明確指引:

    • 使用者需要自行完成的 3 個步驟:(a) 取得 OpenRouter API 金鑰,(b) 貼到 .env.local,(c) npm run dev 進行測試
    • 如何在 Gemini 和 Sonnet 之間切換模型
    • 未來如何更新知識庫

工作流程

步驟 1 — 偵測 Next.js 專案

尋找 Next.js 專案候選項目。執行:

# 在 dependencies 中尋找包含 "next" 的 package.json,最大深度為 4
find /Users/tonyhoang/Documents/GitHub -maxdepth 4 -name "package.json" -not -path "*/node_modules/*" 2>/dev/null | xargs grep -l '"next"' 2>/dev/null | head -20

(如果使用者位於特定的工作目錄,則優先從 cwd 向下尋找;如果找不到,則回退到 ~/Documents/GitHub。)

分支判斷:

  • 0 個專案:通知使用者並停止。建議:「您有任何 Next.js 專案嗎?如果沒有,希望我先用 /biz-sales-page-layout 建立一個新的,然後再回來嗎?」
  • 1 個專案:在繼續之前先與使用者確認路徑:「我將把聊天機器人安裝到 [路徑]。可以嗎?」
  • ≥ 2 個專案:列出帶有編號的路徑和名稱(來自 package.json 的 name),讓使用者選擇:「我發現有 N 個 Next.js 專案。您想安裝到哪一個?」

步驟 2 — 探查專案上下文

在使用者確認專案後,讀取:

  1. package.json → 檢查:

    • TypeScript (deps 中是否有 typescript?)
    • Tailwind (devDeps 中是否有 tailwindcss?)
    • 套件管理員 (lockfile: pnpm-lock.yaml → pnpm, yarn.lock → yarn, 預設 npm)
    • Next.js 版本
  2. 目錄結構 → 檢查:

    • app/ 目錄存在 → App Router
    • pages/ 目錄存在 (且沒有 app/) → Pages Router
    • 兩者都存在 → 新的檔案優先使用 App Router (Next.js 正在遷移)
    • src/ 包裝 → 調整路徑 (例如 src/app/, src/components/)
  3. tsconfig.json → 檢查路徑別名 (@/* → ./src/* 還是 ./*)

  4. .env.local, .env.example → 檢查是否已存在

  5. KV/Upstash 可用性 (用於自動潛在客戶擷取):

    • package.json 中有 @upstash/redis 或 @vercel/kv → 有 KV → 建立 chat-lead.ts 並連接到路由
    • 有檔案 src/lib/kv.ts (或 lib/kv.ts) 匯出 kv → 直接使用現有的輔助函數 (camp pattern)
    • 沒有 KV → 跳過建立 chat-lead.ts,通知使用者:「專案尚未設定 KV — 自動潛在客戶擷取未啟用。我可以先執行 /biz-setup-sepay-payment 來安裝 KV,然後再回來啟用潛在客戶擷取,或者直接跳過。」

將這些觀察結果記錄成一個小表格,供後續步驟使用。

步驟 3 — 從使用者收集知識庫

向使用者詢問 4 個問題 (合併在一則訊息中,讓使用者一次性回答,減少來回次數):

為了讓聊天機器人準確回答,我需要 4 樣東西:

1. **FAQ** — 常見問題與解答清單(價格、學習路徑、退款、適用對象、學習時間、課後支援等)。
   請直接貼在這裡,或者提供檔案路徑 (.md / .txt / .docx)。

2. **產品/課程文件** — 課程的詳細描述:名稱、每個模組的內容、學習成果、講師、獎勵、多個 tier 的價格。
   同樣可以貼上或提供檔案路徑。

3. **品牌名稱 + 語調** — 品牌/課程名稱,讓聊天機器人可以用來稱呼(例如「AI Mastery 的助理」)。機器人使用的語調:友善的「您」(預設) / 正式 / 隨意的「你」。

4. **模型** — 預設為 `google/gemini-3-flash-preview` (快速、便宜、足以應付支援)。想要使用 `anthropic/claude-sonnet-4.6` (品質更高,貴約 10 倍) 還是初期聊天量仍然很低,請告訴我。

您可以一次回答嗎?

當使用者回覆時:

  • 如果只提供檔案路徑 → 使用 Read 工具讀取該檔案。
  • 如果直接貼上內容 → 使用貼上的內容。
  • 如果使用者說「幫我自動生成預留的內容」 → 建立通用的 FAQ 預留位置,並標記 // TODO: user fill in 以便使用者知道需要更新。
  • 如果沒有品牌名稱 → 預設為「AI 助理」並使用「您」來稱呼。

步驟 4 — 生成檔案到專案中

讀取此技能 templates/ 中的範本,並適配到專案中。範本:

  • templates/chatbot-knowledge.ts — 匯出知識庫 + systemPrompt 的模組。在此注入 FAQ、產品資訊、品牌名稱和語調。包含回覆格式區塊 (markdown 規則) + 主動潛在客戶蒐集區塊 (教導 LLM 在偵測到購買意圖時索取姓名/電話/電子郵件,當使用者提供時感謝並確認,不要說「已儲存到資料庫」)。
  • templates/Chatbot.tsx — 小工具元件,以 Tailwind 為主。已匯入 react-markdown + remark-gfm,使用 <ReactMarkdown remarkPlugins={[remarkGfm]}> 渲染助手訊息 (僅限助手 — 使用者訊息仍為純文字 whitespace-pre-wrap)。如果專案沒有 Tailwind → 回退到 templates/Chatbot-noTailwind.tsx + templates/chatbot.module.css。
  • templates/chat-route-app.ts — App Router 的 API 路由 (app/api/chat/route.ts)。包含 persistLeadIfReady 鉤子,在串流關閉後以 fire-and-forget 方式執行 — 不會阻塞回應。
  • templates/chat-route-pages.ts — Pages Router 的 API 路由 (pages/api/chat.ts)。
  • templates/chat-lead.ts — 僅在專案有 KV/Upstash 時建立 — 使用正則表達式擷取越南電話號碼 + 電子郵件 + 姓名 (啟發式規則,如 "tên X" / "tôi là X" / "tên: X"),saveChatLead 根據電話號碼去重,TTL 90 天,金鑰命名空間 chat-lead:{phone}。
  • templates/chatbot-markdown-styles.css — 用於類別 .chatbot-md 的 CSS 程式碼片段。必須附加到 app/globals.css (或 src/app/globals.css / styles/globals.css) 的結尾。在附加之前,根據專案的品牌調色板更改強調色 (#fde68a / #f59e0b)。
  • templates/env-instructions.md — 取得 OpenRouter 金鑰的說明片段,在最後一步使用。

適配範本時的規則:

  1. TS vs JS:如果專案只有 JS,則將副檔名 .ts/.tsx → .js/.jsx 並移除型別註解 (不僅是重新命名檔案)。讀取範例檔案,解析,移除型別,然後寫入。

  2. 路徑別名:如果 tsconfig 將 @/* 映射到 ./src/*,則範本中的匯入必須使用 @/lib/chatbot-knowledge,並且檔案應放置在 src/lib/。如果沒有別名,則使用相對路徑。

  3. 模型:將預留位置 __MODEL_ID__ 替換為使用者選擇的模型 (google/gemini-3-flash-preview 或 anthropic/claude-sonnet-4.6)。

  4. 品牌:替換 __BRAND_NAME__, __BRAND_TUNE__。

  5. 知識:從 FAQ + 產品資訊中建構 systemPrompt,格式清晰 (參見範本)。保留 systemPrompt 中的回覆格式區塊 — 這是教導 LLM 輸出適合小型聊天氣泡的 markdown (使用粗體代替標題,使用簡短的單行項目符號) 的關鍵。

  6. 安裝 markdown 渲染套件 (強制 — 如果跳過,聊天機器人會在氣泡中顯示原始的 **bold** 而不是粗體):

    # 偵測 lockfile → 選擇正確的套件管理員
    npm install react-markdown remark-gfm
    # 或:pnpm add react-markdown remark-gfm
    # 或:yarn add react-markdown remark-gfm
    
  7. 附加 markdown 樣式:讀取 templates/chatbot-markdown-styles.css,根據專案的品牌調色板切換強調色 (檢查 globals.css 尋找 --color-primary 或類似變數),然後附加到 app/globals.css (或 src/app/globals.css / styles/globals.css) 的結尾。

  8. 掛載小工具:

    • App Router:編輯 app/layout.tsx (或 src/app/layout.tsx),加入 import Chatbot from '@/components/Chatbot' 並在 </body> 之前加入 <Chatbot />。編輯前讀取目前的 layout.tsx 以保留 metadata、字型和 providers。
    • Pages Router:編輯 pages/_app.tsx,包裝 return:<><Component {...pageProps} /><Chatbot /></>。先讀取 _app,保留現有的 providers。
  9. 自動潛在客戶擷取連線 (僅在步驟 2 中偵測到 KV 時執行):

    • 將 templates/chat-lead.ts 複製到 lib/chat-lead.ts (或 src/lib/chat-lead.ts)。
    • 如果專案尚未有 lib/kv.ts → 建立:import { Redis } from "@upstash/redis"; export const kv = Redis.fromEnv();
    • 路由處理器匯入:import { extractLeadFromMessages, saveChatLead } from "@/lib/chat-lead"。
    • 在串流迴圈中:追蹤 assistantText (累積差異),當串流關閉時 → 呼叫 persistLeadIfReady(history, assistantText) (fire-and-forget,請勿在回應路徑中使用 await)。
    • System prompt:確保 chatbot-knowledge.ts 中已有主動潛在客戶蒐集區塊 (範本中已包含)。
    • 向使用者確認:「我已啟用自動潛在客戶擷取 — 當客戶在聊天中貼上姓名/電話/電子郵件時,系統會自動儲存到 KV 命名空間 chat-lead:{電話}。您可以透過 /admin 檢視潛在客戶 (如果您已安裝 /biz-admin-leads-dashboard)。」

步驟 5 — 設定 .env.local + .gitignore

  1. 檢查 .env.local 是否已存在?

    • 否:建立新檔案,內容如下:
      # OpenRouter API 金鑰 — 請到 https://openrouter.ai/keys 取得
      OPENROUTER_API_KEY=
      
      # 可選:用於 OpenRouter 追蹤來源的網站 URL (有助於改善速率限制)
      NEXT_PUBLIC_SITE_URL=http://localhost:3000
      
    • 是:如果上述 2 個變數不存在則附加,不要覆蓋現有變數。
  2. 更新 .env.example (如果不存在則建立):

    OPENROUTER_API_KEY=sk-or-v1-xxxxx
    NEXT_PUBLIC_SITE_URL=https://your-domain.com
    
  3. 檢查 .gitignore 是否已有 .env.local?如果沒有 → 附加 .env.local 和 .env*.local。

步驟 6 — 向使用者報告

輸出 1 則清晰的摘要訊息,包含 4 個部分:

✅ 聊天機器人已成功安裝到 [專案名稱]

📁 已建立的檔案:
  - components/Chatbot.tsx (透過 react-markdown + remark-gfm 渲染 markdown)
  - app/api/chat/route.ts
  - lib/chatbot-knowledge.ts
  - app/globals.css (附加 markdown 樣式 .chatbot-md)
  - .env.local (預留位置)

📦 已安裝的套件:react-markdown, remark-gfm

🔑 您需要自行完成的 3 個步驟,聊天機器人才能運作:

1. 取得 OpenRouter API 金鑰:
   - 前往 https://openrouter.ai → 註冊 (可以使用 Google 登入)
   - 前往 https://openrouter.ai/keys → 建立金鑰
   - 儲值點數 (https://openrouter.ai/credits) — Gemini 3 Flash 很便宜,$5 足夠執行數千次聊天
   - 複製格式為 `sk-or-v1-xxxxx` 的金鑰

2. 貼到 `.env.local` 檔案中:
   OPENROUTER_API_KEY=sk-or-v1-xxxxx-貼到這裡

3. 執行測試:
   [npm/pnpm/yarn] run dev
   開啟 http://localhost:3000 → 點擊右下角的泡泡

🔄 在 Gemini ↔ Sonnet 之間切換模型:
  開啟 `app/api/chat/route.ts`,修改檔案頂部的 `model:` 變數。
  - `google/gemini-3-flash-preview` (預設,$0.075/100 萬輸入 token,快速)
  - `anthropic/claude-sonnet-4.6` (進階,約 $3/100 萬輸入 token,品質更好)

📚 日後更新知識庫:
  編輯 `lib/chatbot-knowledge.ts` — 新增/修改 FAQ 和 productInfo,儲存,熱重載即可。

行動優先響應式設計

小工具必須達到 3 個斷點:

斷點行為
≤ 640px (手機)點擊泡泡 → 開啟全螢幕覆蓋層 (z-index 9999),標題列有 X 關閉按鈕。輸入框固定在底部,具有 safe-area-inset 以避免被鍵盤遮擋。
641–1023px (平板)面板 380px × 70vh,固定在右下角,邊距 16px。
≥ 1024px (桌上型)面板 400px × 600px,固定在右下角,邊距 24px。泡泡為 60px 圓形。

**

…

[為便於翻譯而截斷]

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

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

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

相關技能