Communitygithub.com

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Erstellt ein **16:9 (1920×1080) Kurzvideo** für TikTok/Reels/YouTube aus einer vorab aufgezeichneten Talking-Head-MP4 mit HyperFrames – transkribiert vietnamesisches Audio, erstellt ein komplettes Vorschau-Projekt mit einer Folienfläche (1200px) links und einem schwebenden Avatar-Rahmen rechts, inklusive GSAP-Timeline mit SPLIT↔PIP-Übergängen und 5 Szenenkompositionen.

Was ist MKT.LANDINGPAGE.SKILLS?

Dieses Skill ist ein spezialisierter **16:9 Landschaftseditor** für Talking-Head-Videos, die mit HeyGen oder ähnlichen Avatar-Tools erstellt wurden. Es nimmt einen Arbeitsordner mit einer MP4-Datei, einer MP3-Audiodatei und einem Skript entgegen und erstellt automatisch ein vollständiges HyperFrames-Vorschauprojekt im Querformat (1920×1080). Der Ablauf ist streng sequenziell: Transkription des vietnamesischen Audios mit Whisper, Bereinigung von Transkriptionsfehlern (speziell für die vietnamesische Sprache), automatische Erkennung und Unterteilung in fünf narrative Szenen (Hook, Problem, Lösung, Zusammenfassung, Handlungsaufforderung) und schließlich die Erstellung aller HTML-Dateien für die Vorschau. Ein besonderes Merkmal ist die Verwendung von **LLM-Sub-Agenten**, die parallel jede einzelne Szene gestalten – anstatt auf starre Vorlagen zurückzugreifen, kann jeder Agent das visuelle Design der Szene an die spezifische Metapher des Skripts anpassen. Das Skill endet mit einer HyperFrames-Studio-Vorschau; die endgültige MP4-Renderung erfolgt erst nach expliziter Bestätigung durch den Benutzer.

Funktioniert mit✓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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

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

Dedizierter 16:9 (1920×1080) Landschaftseditor — Eingabe ist ein vorhandener Arbeitsordner mit voiceover.mp3 + source.mp4 + script.txt, Ausgabe ist derselbe Ordner, der vollständig als HyperFrames-Vorschauprojekt (npx hyperframes preview) eingerichtet ist.

Dies ist eine operative Ebene unter dem Orchestrator mkt-full-video-with-11-hyperframe-heygen-16-9. Der Orchestrator übernimmt Phase 1 (TTS) + Phase 2 (HeyGen-Avatar) → übergibt den Ordner an dieses Skill für Phase 3 (Transkribieren + Einrichten + Linting + Vorschau).


Was dieses Skill produziert

<workspace_folder>/
├── voiceover.mp3                 # Eingabe (unverändert)
├── source.mp4                    # Eingabe (HeyGen-Avatar-Lip-Sync, unverändert)
├── script.txt                    # Eingabe (unverändert)
├── transcript.json               # generiert — Whisper-Ausgabe auf Wortebene
├── transcript-cleaned.json       # generiert — bereinigt von vietnamesischen Tippfehlern
├── scenes-outline.json           # generiert — Vorschaugliederung (5 Szenen)
├── scenes.json                   # generiert — endgültige Metadaten pro Szene
├── index.html                    # generiert — Hauptkomposition 1920×1080
├── compositions/
│   ├── scene-1.html              # 1 Datei pro Szene, unabhängig von der Anzahl N
│   ├── scene-2.html              # erstellt von parallelen LLM-Sub-Agenten (Phase 3d)
│   ├── scene-3.html              # NICHT von Python-Vorlagen generiert (veraltet)
│   ├── ...
│   └── scene-N.html
├── sfx/                          # 6 SFX als Symlink/Kopie aus Skill-Assets
│   ├── camera-flash.mp3
│   ├── Whoosh sound effect (1).mp3
│   ├── búng tay.mp3
│   ├── Laser.mp3
│   ├── ting.mp3
│   └── Discord Notification - Sound Effect.mp3
└── (optional) infographics/
    ├── 1.png  2.png  3.png       # falls --with-infographics
    └── prompts.md                # Redaktionelle Aufforderungen im Cream-Paper-Stil pro Szene

Leinwand:

  • Root: data-width="1920" data-height="1080".
  • Avatar-Rahmen Standard SPLIT: top:100, left:1290, width:540, height:880, borderRadius:32.
  • Avatar-Rahmen PIP-Ecke: top:600, left:1540, width:320, height:420, borderRadius:20.
  • Folienhalterung: 1200×1080 SPLIT, animierbar auf 1920×1080 während PIP.
  • Eigene Größe jeder Komposition: data-width="1200" data-height="1080" (füllt 100% der Halterung, dehnt sich aus, wenn die Halterung breiter wird).

Benötigte Eingaben (Arbeitsordner-Konvention)

DateiErforderlichHinweis
voiceover.mp3JaElevenLabs TTS-Ausgabe (Hoàngs Stimme).
source.mp4JaHeyGen-Avatar-Lip-Sync. Derzeit 9:16 Hochformat — der Landschaftsrahmen verwendet object-fit: cover; object-position: center 25%, um es vernünftig zuzuschneiden. Siehe references/source-mp4-cropping.md.
script.txtJaVietnamesisches Skript, das voiceover.mp3 erzeugt hat. Wird für die Rechtschreibkorrektur und die Ableitung von Szenenüberschriften verwendet.
scenes-outline.jsonNeinWenn der Benutzer 5 Szenen vordefiniert hat, wird die automatische Erkennung übersprungen. Schema: siehe Schritt 3.

Slug = Basisname des Arbeitsordners (keine Ableitung erforderlich). Alle Skripte lesen/schreiben innerhalb dieses Ordners. Skripte akzeptieren das Flag --workspace <path> und verwenden standardmäßig das aktuelle Arbeitsverzeichnis (CWD).


Die Pipeline (sequentielle Skriptausführung)

voiceover.mp3 + source.mp4 + script.txt
    │
    ▼
1. transcribe_audio.py        ── Whisper VN → transcript.json (Wortebene)
    │
    ▼
2. clean_transcript.py        ── Whisper-Artefakte entfernen, VN-Wörterbuch anwenden
    │
    ▼
3. detect_scenes.py           ── Transkript + script.txt → scenes-outline.json (5 Szenen)
    │
    ▼
4. [optionaler KONTROLLPUNKT] ── Benutzer überprüft die Gliederung / bearbeitet Kicker, Überschrift
    │
    ▼
5. scaffold_project.py        ── schreibt scenes.json (vollständiges Schema), erstellt sfx/ + logos/ + avatar.jpg + yt-lower-third.html
    │
    ▼
6. 🔥 LLM-SUB-AGENT-FANOUT 🔥 ── Der Orchestrator startet N parallele Allzweck-Agenten
                                  (1 pro Szene) in einer einzigen Nachricht, jeder erstellt
                                  compositions/scene-{num}.html basierend auf
                                  visual-plan.json + references/composition-patterns.md.
                                  NICHT generate_compositions.py (Jinja2-Generator
                                  VERALTET — reduziert sich auf 5 Archetypen, kann nicht an
                                  szenenspezifische Metaphern anpassen, bricht bei Listen mit 6+ Szenen).
    │
    ▼
7. generate_root_index.py     ── schreibt index.html mit Folienhalterung (lädt scene-{num}.html
                                  für ALLE Szenen, keine kind→fs-lesson-Zuordnung) +
                                  Avatar-Rahmen (Claude-Orange #d97757 Markenrand) +
                                  GSAP-Timeline (SPLIT↔PIP, Atmung, Punch-In,
                                  PIP_EVENTS, hybrider Hook-Zoom) + 6 SFX verdrahtet +
                                  Cream-Paper-B-Roll-Bildebene auf Root (volle 1920×1080)
    │
    ▼
8. [optional] scaffold_infographic_slots.py
                              ── fügt <img onerror>-Platzhalter hinzu + schreibt prompts.md
                                  (Cream-Paper-Redaktion pro Szenenmetapher)
    │
    ▼
9. lint_and_preview.py        ── npx hyperframes lint → 0 Fehler, dann Vorschau
    │
    ▼
ÜBERGABE — Studio-URL wird ausgegeben; Benutzer überprüft; Orchestrator entscheidet über Rendering.

Vorschauregel (nicht verhandelbar): Das Skill endet bei Schritt 9 mit der Studio-URL. Die MP4-Renderung erfolgt erst nach expliziter Bestätigung des Benutzers – dieser Schritt gehört zum Orchestrator oder zur manuellen Benutzeraktion.

Schritt 1: transcribe_audio.py

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

Verwendet das vorhandene Skill mkt-ai-video-extract-srt-segment, falls lokal verfügbar; anderenfalls Rückgriff auf whisper CLI direkt:

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

NIEMALS --model medium.en für vietnamesische Audiodaten verwenden – .en übersetzt anstatt zu transkribieren. Immer --language vi.

Ausgabe: transcript.json — Array mit {text, start, end}-Einträgen auf Wortebene.

Schritt 2: clean_transcript.py

Verwendet die Logik des verwandten 9:16-Editors (mkt-hyperframe-talking-head-video/scripts/clean_transcript.py) erneut. Entfernt U+FFFD, wendet ein VN-Wörterbuch auf Wort- und Phrasenebene an (alphabit→Alphabet, Cod→Code, usw.), gruppiert in 3-5-Wort-Phrasen. Ausgabe: transcript-cleaned.json. (Kein caption-groups.json — Untertitel sind bei 16:9 AUS.)

Schritt 3: detect_scenes.py

Liest transcript-cleaned.json + script.txt → leitet 5 Szenengrenzen unter Verwendung eines standardmäßigen Knowledge-Video-Skeletts ab:

#ArtStandard-Kicker-HinweisVariante
1HookErster Satz des Skriptstier-row (Post-Stack-Gefühl durch kind=hook)
2ProblemWo das Skript zu „ChatGPT/AI cũ“, „khó“, „đứt mạch“, „vấn đề“… übergehtchats-stack
3LösungWo das Skript das Tool/die Methode vorstellthero-orb
4ZusammenfassungWo das Skript ein numerisches Ergebnis zeigt („X tiếng“, „Y khách hàng“)counter-row
5CTALetzter Satz mit Kommentar/speichern/folgen-Auslöserterminal-row

Wenn das Skript keine klaren 5 Teile hat, werden weniger ausgegeben (mindestens 3) und der Benutzer gewarnt. Heuristik: Transkript an Satzgrenzen in ~5 Blöcke aufteilen, gewichtet mit 1,5x für Szene 3 (Lösung ist normalerweise am längsten).

Ausgabe 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" }
]

KONTROLLPUNKT — Gliederung zur Überprüfung durch den Benutzer ausgeben. Benutzer können Kicker/Überschrift/Variante inline bearbeiten und dann fortfahren. Kontrollpunkt überspringen, wenn das Skill mit --auto (Orchestrator-Modus) aufgerufen wird.

Schritt 4: scaffold_project.py

Liest scenes-outline.json → reichert jede Szene an mit:

  • accent_words — von der Überschrift ableiten (Zahlen + letzte 2-3 Nomen extrahieren)
  • content — musterspezifisches Schema (siehe assets/templates/)
  • badges — 1-3 schwebende Abzeichen pro Szene
  • brollEnd, hasBreath — für SPLIT↔PIP-Planung
  • pip_events — von accent_words-Timing innerhalb der Szene abgeleitet

Schreibt scenes.json. Kopiert außerdem automatisch diese eigenständigen Assets aus den skill-gebündelten assets/ in den Arbeitsordner:

AssetQuelleZielZweck
6 SFX-Dateienassets/sfx/<workspace>/sfx/Beat-Sounds (Kamera-Blitz, Whoosh, Finger-Schnippen, Laser, Ting, Discord-Benachrichtigung)
Markenlogosassets/logos/{chatgpt,gemini,claude,claude-code}.{png,jpg}<workspace>/assets/logos/Automatisch an Kompositionen angehängt (Chats-Stack-Avatare, Hero-Orb, Tier-Row-Tool-Abzeichen)
Avatarassets/avatar.jpg<workspace>/assets/avatar.jpgKanal-Thumbnail für das YT-Lower-Third-Abo-Banner
YT Lower-Thirdassets/compositions/yt-lower-third.html<workspace>/compositions/yt-lower-third.htmlAbo-Banner-Halterung, letzte 3s des Videos

Wenn ein Quell-Asset im Skill-Bundle fehlt, erfolgt ein stiller Rückgriff auf den Legacy-Arbeitsordner-Pfad (workspace/assets/...). Wenn keines gefunden wird, wird dieses Asset übersprungen (Kompositionen degradieren elegant – Text-Avatare anstelle von Logos, kein Lower-Third).

Schritt 5: 🔥 LLM-SUB-AGENT-FANOUT (Kompositionserstellung) 🔥

generate_compositions.py ist VERALTET. Rufen Sie es nicht auf. Der Python-Jinja2-Generator reduziert jede Szene auf einen von 5 festen Archetypen (Hook → tier-row, Problem → chats-stack, Lösung → hero-orb, Zusammenfassung → counter-row, CTA → terminal-row), kann nicht an szenenspezifische Metaphern angepasst werden (z. B. „scroll-tape-wasted“, „two-clock-comparison“, „right-tool-vehicles“) und bricht bei Listen mit 6+ Szenen (mehrere tip-N reduzieren sich auf denselben Dateinamen → Überschreibung).

Kanonische Methode: Der Orchestrator (oder Benutzer) startet N parallele general-purpose-Agenten (1 pro Szene) in einer einzigen Nachricht, sodass sie gleichzeitig laufen. Jeder Sub-Agent:

  1. Liest seinen Szenenblock aus visual-plan.json (Pfad: <workspace>/visual-plan.json, Szenenindex num-1)
  2. Liest Referenzen aus dem Orchestrator-Skill: references/composition-patterns.md (8 produktionserprobte Muster), references/slide-design-tokens.md (Palette + Typografie)
  3. Wählt das richtige Muster für die Metapher seiner Szene aus – passt frei an (hero-orb kann zu vault+spokes werden, stats-3card kann zu two-clock-comparison werden)
  4. Erstellt compositions/scene-{num}.html von Grund auf mit: 1200×1080 Viewport, bereichsbezogenem CSS via [data-composition-id="scene-{num}"], GSAP-Timeline registriert unter window.__timelines["scene-{num}"], kein !important, kein eingebetteter image-slot (Cream-Paper-Bild lebt nur auf der Root-Ebene)

Das Ergebnis: Jede Szene erhält eine einzigartige, metapherangepasste Kompositionsdatei. Keine Kollisionen, keine langweilige 5-Archetypen-Beschränkung.

Siehe die mkt-full-video-with-11-hyperframe-heygen-16-9/SKILL.md des Orchestrators, Schritt 4d, für die vollständige Sub-Agent-Prompt-Vorlage.

Markenlogos in Kompositionen (Sub-Agenten referenzieren diese)

Sub-Agenten betten Markenlogos ein, wenn ihr Muster sie benötigt. Logos befinden sich unter <workspace>/assets/logos/:

MusterverwendungMarkenelement
Hook Tier-Row „nachher“tool-badge-Pille (oben rechts) – Claude-Logo + Name.
Problem Chats-Stack-Fail-ZeilenChatGPT/Gemini-Logos automatisch angehängt, wenn name mit einem Schlüsselwort übereinstimmt (chatgpt/gpt → chatgpt.png; gemini/google → gemini.jpg).
Lösung Hero-Orb / VaultMarkenlogo im Inneren des Orb-Leuchtens (Standard Claude).
CTA Terminal-RowStandardmäßig keine Logos.

Sub-Agenten greifen auf Text-Avatar zurück, wenn assets/logos/ nicht existiert (kein Flackern).

Musterreferenz (8 Archetypen, Sub-Agenten wählen aus + passen an)

Die references/composition-patterns.md des Orchestrators enthält 8 produktionserprobte Muster:

MusterAm besten geeignet fürInternes Motiv
tier-row before-afterHook-Kontrast2 Tier-Rows (vorher rosa/rot + nachher limette/grün) mit Buchstabe + Elementen
chats-stackProblem / Fehler / Edit-Regen-DemoBenutzerzeile + 2-3 AI-Fail-Zeilen + Broken-Chain-Stempel
hero-orb + spec-trioLösung / Mechanismus / zentrales VaultLeuchtender Orb + Aufgaben-Symbole + 3 Spezifikations-Tier-Rows
counter-rowZusammenfassung / ZahlenbeweisGroßer Zähler (VON → BIS) + Kunden + Delta-Tag
comment-terminalCTA / „Kommentar X“Tier-Buchstabe + macOS-Terminal-Mock + 2 Geschenkkarten
stats-3cardWissenseinführung / 3-Fakten-Enthüllung3 Spalten im Landing-Stil mit // LBL + Farbverlaufsnummer
comparison-2col„Wann was verwenden“2-Spalten Ja/Ja-Chips
image-slot(VERALTET — Bild auf Root-Ebene)—

Sub-Agenten passen frei an: z. B. hero-orb → „Vault + 5 Chat-Spokes“, stats-3card → „two-clock-comparison“, comparison-2col → „3-stufige Fahrzeugkarten“. Das Musterdokument gibt das Skelett (HTML + CSS + GSAP) vor, das LLM übernimmt die kreative Anpassung.

Schritt 6: generate_root_index.py

Liest scenes.json + total_duration aus dem Transkript → rendert assets/templates/index.html.j2:

  • 1920×1080 Root mit #slide-bg, #heygen-bg, #avatar-frame > .avatar-breathing > .avatar-punch > #v-source
  • <audio id="a-source"> verfolgt das Audio der ursprünglichen source.mp4 (Spur 1)
  • 6 <audio> SFX verdrahtet mit absoluten data-start (Szenengrenzen)
  • Markenzeichen oben links
  • GSAP-Block:
    • Anfänglicher Eintritt (Avatar-Einblendung, Marken-Einblendung)
    • SPLIT/PIP-Konstanten + goPIP(t) / goSplit(t)-Helfer
    • PIP_EVENTS-Array, gesteuert von den szenenspezifischen pip_events aus scenes.json
    • „Hybride Hook“-visuelle Zoom-Strategie auf .avatar-breathing:
      • HOOK-Szene: Langsamer Anstieg 1,0 → 1,10 über die Szenendauer (Spannungsaufbau, power2.in)
      • HOOK→BODY-Übergang: Schneller Reset 1,10 → 1,0 (Spannung lösen, 0,5s power3.in)
      • BODY-Szenen (2..N-1) bei PIP-IN-Ereignissen: 1,06 Punch-Beats (Rhythmus, power2.out → power3.out)
      • CTA-Szene: Sanfter Push 1,0 → 1,04 (Abschluss, sine.inOut)
    • Pro-Szenen-Start kleiner Punch (1,06) auf .avatar-punch für Übergangsbeat

(Ab hier gekürzt, das Original endet hier.)

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

Verwandte Skills