Communitygithub.com

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

TikTok/Reels/YouTube **16:9 (1920×1080)** 풍경 숏폼 비디오를 사전 녹화된 토킹헤드 MP4로부터 HyperFrames을 사용해 제작합니다. 베트남어 음성을 텍스트로 변환하고, 좌측에 슬라이드 패널(1200px), 우측에 떠다니는 아바타 프레임이 있는 완전한 1920×1080 프로젝트를 구성하며, SPLIT↔PIP 전환(전체 화면 슬라이드 + PIP 코너 썸네일 아바타), 호흡 요요 줌 및 비트 기반 펀치인, 5가지 장면 구조(티어-로우 패턴), 크림 페이퍼 편집 인포그래픽 이미지 슬롯, 6개의 SFX, **자막 없음**을 구현합니다.

MKT.LANDINGPAGE.SKILLS란 무엇인가요?

이 스킬은 16:9(1920×1080) 가로 레이아웃의 숏폼 비디오를 자동으로 제작하는 HyperFrames 기반 편집기입니다. 입력으로 `voiceover.mp3`, `source.mp4`, `script.txt`가 포함된 워크스페이스 폴더를 받아, 즉시 `npx hyperframes preview`로 미리보기 가능한 완전한 프로젝트로 스캐폴딩합니다. 파이프라인은 순차적 스크립트 호출로 구성됩니다: (1) Whisper를 통한 베트남어 오디오의 단어 수준 전사, (2) 전사본 정리, (3) 미리 정의된 지식 비디오 스켈레톤(훅, 문제, 해결책, 요약, CTA)에 기반한 5개 장면 감지, (4) 프로젝트 스캐폴딩(메타데이터, SFX, 로고 포함), (5) N개의 병렬 LLM 하위 에이전트가 각 장면별 고유 HTML 파일을 제작 (장면 메타포에 맞춰 8가지 프로덕션 패턴 중 하나를 자유롭게 적응 및 선택), (6) GSAP 타임라인(SPLIT↔PIP 전환, 호흡 줌, 비트 펀치인, 하이브리드 훅 시각적 줌)과 6개의 SFX 및 크림 페이퍼 B-roll 이미지 레이어를 포함한 루트 `index.html` 생성, (7) 선택적 인포그래픽 슬롯 스캐폴딩, (8) 린트 및 미리보기 단계로 마무리됩니다. 최종 결과물은 사전 렌더링 없이 Studio URL을 제공하며, 사용자 확인 후 렌더링이 이루어집니다. 이 스킬은 `mkt-full-video-with-11-hyperframe-heygen-16-9` 오케스트레이터 아래에서 동작하며, TTS 및 아바타 생성 이후의 Phase 3(전사, 스캐폴딩, 린트, 미리보기)을 담당합니다.

지원 대상✓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 아래의 운영 레이어입니다. 오케스트레이터가 Phase 1(TTS) + Phase 2(HeyGen 아바타)를 처리한 후 폴더를 이 스킬에 넘겨 Phase 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              # N에 관계없이 장면당 1개 파일
│   ├── scene-2.html              # 병렬 LLM 하위 에이전트가 작성 (Phase 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개 장면을 미리 정의한 경우 자동 감지를 건너뜀. 스키마: Step 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. [선택 사항 CHECKPOINT]    ── 사용자가 개요 검토 / kicker, heading 수정
    │
    ▼
5. scaffold_project.py        ── scenes.json (전체 스키마) 작성, sfx/ + logos/ + avatar.jpg + yt-lower-third.html 생성
    │
    ▼
6. 🔥 LLM 하위 에이전트 FANOUT 🔥 ── 오케스트레이터가 단일 메시지에서 N개의 병렬 범용
                                  에이전트(장면당 1개)를 생성하고, 각 에이전트는
                                  visual-plan.json + references/composition-patterns.md를 참조하여
                                  compositions/scene-{num}.html을 작성합니다.
                                  NOT generate_compositions.py (Jinja2 생성기
                                  DEPRECATED — 5개 아키타입으로 축소되어 장면별
                                  메타포를 적용할 수 없고, 6개 이상의 장면이 있는 리스트클을 망가뜨림).
    │
    ▼
7. generate_root_index.py     ── 슬라이드 마운트(모든 장면에 대해 scene-{num}.html 마운트,
                                  kind→fs-lesson 매핑 없음) + 아바타 프레임(claude-orange #d97757 브랜드 테두리) +
                                  GSAP 타임라인(SPLIT↔PIP, 호흡, 펀치인, PIP_EVENTS, 하이브리드 훅 줌) +
                                  6개 SFX 연결 + 루트의 크림 페이퍼 b-roll 이미지 레이어(전체 1920×1080)를 포함한 index.html 작성
    │
    ▼
8. [선택 사항] scaffold_infographic_slots.py
                              ── <img onerror> 플레이스홀더 추가 + prompts.md 작성
                                  (장면 메타포별 크림 페이퍼 편집)
    │
    ▼
9. lint_and_preview.py        ── npx hyperframes lint → 오류 0개, 그런 다음 미리보기
    │
    ▼
HAND-OFF — Studio URL 출력; 사용자 검토; 오케스트레이터가 렌더링 결정.

미리보기 우선 규칙(협상 불가): 스킬은 Step 9에서 Studio URL을 출력하며 종료됩니다. MP4 렌더링은 사용자가 명시적으로 확인한 후에만 실행됩니다 — 해당 단계는 오케스트레이터 또는 사용자 수동 작업에 속합니다.

Step 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} 단어 수준 항목의 배열.

Step 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. (16:9에서는 caption-groups.json 없음 — 자막이 꺼져 있음.)

Step 3: detect_scenes.py

transcript-cleaned.json + script.txt를 읽어 표준 지식 비디오 스켈레톤을 사용하여 5개 장면 경계를 추론합니다:

#종류기본 kicker 힌트변형
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" }
]

CHECKPOINT — 검토를 위해 개요를 사용자에게 출력합니다. 사용자는 kicker/heading/variant를 인라인으로 편집한 후 계속할 수 있습니다. 스킬이 --auto(오케스트레이터 모드)로 호출된 경우 체크포인트를 건너뜁니다.

Step 4: scaffold_project.py

scenes-outline.json을 읽고 각 장면을 다음으로 보강합니다:

  • accent_words — heading에서 파생(숫자 + 마지막 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 하단 3분의 1assets/compositions/yt-lower-third.html<workspace>/compositions/yt-lower-third.html구독 배너 마운트, 비디오의 마지막 3초

스킬 번들에 소스 에셋이 없으면 자동으로 레거시 워크스페이스 경로(workspace/assets/...)로 자동 폴백합니다. 둘 다 없으면 해당 에셋은 건너뛰어집니다(컴포지션이 정상적으로 저하됨 — 로고 대신 텍스트 아바타, 하단 3분의 1 없음).

Step 5: 🔥 LLM 하위 에이전트 FANOUT (컴포지션 작성) 🔥

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 Step 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 / vaultBrand logo inside the orb glow (기본 Claude).
CTA terminal-row기본적으로 로고 없음.

하위 에이전트는 assets/logos/가 없으면 텍스트 아바타로 폴백합니다(깜빡임 없음).

패턴 참조 (8개 아키타입, 하위 에이전트가 선택 및 적용)

오케스트레이터의 references/composition-patterns.md는 8개의 프로덕션 테스트 패턴을 제공합니다:

패턴최적 사용내부 모티프
tier-row before-afterHook 대비2개의 티어 행(이전 rose/red + 이후 lime/green) + 문자 + 항목
chats-stackProblem / 실패 / Edit-Regen 데모사용자 행 + 2-3개 AI 실패 행 + 끊어진 체인 스탬프
hero-orb + spec-trioSolution / 메커니즘 / 중앙 볼트빛나는 구체 + 작업 아이콘 + 3개의 사양 티어 행
counter-rowRecap / 숫자 증명큰 카운터(FROM → TO) + 클라이언트 + 델타 태그
comment-terminalCTA / "comment X"티어 문자 + macOS 터미널 모형 + 2개의 기프트 카드
stats-3card지식 소개 / 3가지 사실 공개// LBL + 그래드 숫자가 있는 3열 랜딩 스타일
comparison-2col"When to use which"2열 Yes/Yes 칩
image-slot(DEPRECATED — 루트 레이어의 이미지)—

하위 에이전트는 자유롭게 적용합니다: 예: hero-orb → "vault + 5 chat spokes", stats-3card → "two-clock-comparison", comparison-2col → "3-tier vehicle cards". 패턴 문서는 골격(HTML + CSS + GSAP)을 제공하고, LLM이 창의적인 맞춤화를 수행합니다.

Step 6: generate_root_index.py

scenes.json + transcript의 total_duration을 읽고 assets/templates/index.html.j2를 렌더링합니다:

  • #slide-bg, #heygen-bg, #avatar-frame > .avatar-breathing > .avatar-punch > #v-source가 있는 1920×1080 루트
  • <audio id="a-source">가 원본 source.mp4 오디오(트랙 1)를 추적함
  • 절대 data-start(장면 경계)가 있는 6개의 <audio> SFX 연결
  • 왼쪽 상단의 브랜드 마크
  • GSAP 블록:
    • 초기 진입(아바타 페이드인, 브랜드 페이드인)
    • SPLIT/PIP 상수 + goPIP(t) / goSplit(t) 헬퍼
    • scenes.json의 장면별 pip_events에 의해 구동되는 PIP_EVENTS 배열
    • ".avatar-breathing"의 "Hybrid Hook" 시각적 줌 전략:
      • 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) for transition be

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

관련 스킬