Communitygithub.com

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Configura un auto-responder por correo electrónico basado en SMTP para landing pages de ventas: envía correos automáticos después de que el usuario complete un formulario (nombre/teléfono/correo), sin depender de un proveedor específico.

¿Qué es MKT.LANDINGPAGE.SKILLS?

Esta habilidad te permite configurar un auto-responder de correo electrónico para landing pages de ventas, activado inmediatamente después de que un lead completa un formulario (nombre/teléfono/correo). La habilidad es agnóstica al proveedor SMTP: admite Gmail, Resend, SendGrid, Mailgun, Brevo, Zoho y servidores SMTP personalizados. Detecta automáticamente la pila del proyecto (Next.js, Vite, HTML estático) y extrae el contexto de la oferta de archivos como `offer.json`, `conversion-copy.md`, o del código de la landing page para redactar correos personalizados, no genéricos. La habilidad redacta dos correos: uno de bienvenida para el lead (con el lead magnet, confirmación de reserva o enlace de pago) y otro de notificación para el propietario del sitio. Muestra los borradores al usuario para su revisión y edición antes de implementar el código, e instala `nodemailer` para el envío. Admite flujos de pago de dos pasos (recordatorio previo al pago e incorporación posterior a la compra) y guía al usuario a través de siete fases: detección de la pila, selección del proveedor, recopilación del contexto, elección del patrón de correo, redacción, revisión y conexión del código. Se evita la dependencia de un proveedor al utilizar variables de entorno para las credenciales SMTP.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lexuanthanhhy/MKT.LANDINGPAGE.SKILLS/tree/main/.claude/skills/biz-email-setup

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Biz SMTP Form Autoresponder — Correo automático tras el envío del formulario

Esta habilidad convierte el formulario de registro en una landing page (nombre/teléfono/correo según el estándar de tráfico VN) en 2 correos automáticos justo después de que el usuario envíe el formulario: (A) un correo de bienvenida para el lead, (B) un correo de notificación para el propietario. Los correos se redactan específicamente para cada oferta basándose en el contexto disponible del pipeline biz-* (no un genérico "Gracias por registrarse, nos pondremos en contacto pronto" — eso es contenido que quema leads).

Filosofía: El auto-responder por correo es un momento dorado. El lead acaba de hacer clic en enviar y está en su pico de intención. El correo que llegue en 30 segundos debe (1) confirmar que el envío fue exitoso, (2) entregar lo prometido en la CTA (lead magnet / reserva / enlace de pago), (3) establecer expectativas claras sobre el siguiente paso. Un buen auto-responder puede convertir el 20-40% de los leads fríos en leads cálidos. Un correo genérico hace que el lead bloquee al remitente o olvide la marca en 24 horas.

Por qué SMTP (sin depender de un proveedor): SMTP es un estándar abierto: el usuario puede elegir el proveedor que mejor se adapte a su presupuesto, región y requisitos de cumplimiento. Gmail SMTP es gratuito para 500/día (suficiente para una landing page con <50 leads/día), Resend SMTP ofrece 3000/mes, SendGrid 100/día para siempre, Brevo (popular en VN) 300/día gratis, y los hosts de VN (Mắt Bão/PA/Inet) suelen incluir SMTP. El código usa nodemailer: cambiar de proveedor solo requiere modificar 4 variables de entorno, sin tocar el código. Se evita la dependencia de un proveedor.

Salida de la habilidad: parche de código + 2 borradores de correo HTML responsivo + lista de variables de entorno + plan de pruebas. La habilidad NO envía correos de prueba — el usuario debe confirmar los borradores primero, ya que el enlace del lead magnet, la voz de la marca y el tono de urgencia son activos del usuario.


Cuándo usar esta habilidad

  • El usuario acaba de implementar una landing page (a través de /biz-deploy-vercel) y el formulario envía datos a la nada.
  • El usuario tiene una landing page existente (Next.js, Vite o HTML estático en Vercel) y desea agregar un auto-responder por correo.
  • El usuario está creando un nuevo proyecto y desea integrar el correo desde el principio antes de implementar.
  • El usuario ya tiene Gmail/Google Workspace y quiere aprovechar el SMTP gratuito en lugar de crear una cuenta en un nuevo proveedor.
  • El usuario tiene un host en VN (Mắt Bão, PA, Inet) con un servidor SMTP existente que desea utilizar.

NO use esta habilidad cuando:

  • El usuario desea marketing por correo masivo (boletines, campañas de goteo de 7 a 30 días) → Mailchimp/ConvertKit/MailerLite son más adecuados.
  • El usuario desea un auto-responder por SMS/Zalo OA → caso de uso diferente.
  • El usuario desea integración con CRM (leads en Hubspot/Pipedrive/Notion DB) → otra habilidad.
  • El usuario necesita prospección por correo masivo → Instantly/Smartlead, no transaccional.

Flujo de trabajo general (7 fases)

Fase 0: DETECTAR PILA DEL PROYECTO (Next.js App / Pages / Vite / HTML estático)
       ↓
Fase 1: ELEGIR PROVEEDOR SMTP (Gmail / Resend SMTP / SendGrid / Mailgun / Brevo / Zoho / Personalizado)
       ↓
Fase 2: RECOPILAR CONTEXTO (offer.json + conversion-copy.md, o leer la app/page.tsx de Next.js, o leer el HTML implementado)
       ↓
Fase 3: ELEGIR PATRÓN DE CORREO (lead magnet / reserva / pago / nurturing)
       ↓
Fase 4: REDACTAR 2 CORREOS (auto-responder + notificación al propietario) — mostrar al usuario
       ↓
Fase 5: REVISIÓN Y EDICIÓN DEL USUARIO — iterar hasta que el usuario apruebe
       ↓
Fase 6: CONECTAR CÓDIGO (instalar nodemailer + ruta API + enlace al formulario + variables de entorno)
       ↓
Fase 7: CONFIGURACIÓN DEL PROVEEDOR + PLAN DE PRUEBAS — instrucciones para obtener credenciales SMTP, verificar el dominio (si es necesario), probar en vivo

Cada fase se detiene para que el usuario confirme — especialmente la Fase 1 (elección del proveedor), las Fases 4-5 (contenido del correo) y la Fase 7 (DNS del proveedor), ya que son activos de la marca del usuario. La generación de código en la Fase 6 es más proactiva.


Fase 0 — Detectar la pila del proyecto

Lea el archivo raíz del proyecto para determinar la pila. La pila determina: dónde se coloca la ruta API, la sintaxis de importación de nodemailer, y el tipo de enlace del formulario (fetch o form action).

Archivo detectadoPilaRuta de la APIEnlace del formulario
next.config.js/mjs/ts + carpeta app/Next.js App Routerapp/api/submit/route.tscomponente cliente fetch('/api/submit')
next.config.js/mjs/ts + carpeta pages/Next.js Pages Routerpages/api/submit.tscomponente cliente fetch('/api/submit')
vite.config.js/tsVite (React/Vue/Svelte)api/submit.js (función de Vercel)componente cliente fetch('/api/submit')
package.json sin framework, con index.htmlHTML estáticoapi/submit.js (función de Vercel)<script> en línea con fetch('/api/submit')
Sin proyecto local, solo URLPágina implementada existenteNecesita que el usuario clone el repositorio primero o indique la ruta del repositorio—

Lea más para determinar los campos del formulario:

  • Busque <form> en el código → enumere los elementos <input name="..."> existentes.
  • Valores predeterminados esperados (según la memoria del proyecto): name, phone, email. Algunas páginas agregan: company, message, budget, utm_source.
  • Si el formulario no existe → la habilidad creará un nuevo formulario con un mínimo de 3 campos (nombre/teléfono/correo) en la Fase 6.

Importante: Si el usuario no tiene un proyecto local (solo la URL implementada), deténgase y pregunte: "¿Tiene un repositorio local para que pueda conectar el código? Necesito editar el código fuente. Si solo tiene la URL, clone el repositorio e indíqueme la ruta." No es posible conectar solo con la URL.


Fase 1 — Elegir proveedor SMTP

Pregunte al usuario que elija uno de los 7 proveedores. Cada proveedor tiene una configuración SMTP diferente (host/puerto/auth). La habilidad completa automáticamente la plantilla de variables de entorno cuando el usuario elige.

#ProveedorNivel gratuitoAdecuado cuandoHost SMTPPuertoNotas
1Gmail / Google Workspace500/díaEl usuario ya tiene Gmail/Workspace, tráfico bajosmtp.gmail.com587 (STARTTLS)Obligatorio usar Contraseña de aplicación (2FA), NO usar la contraseña principal
2Resend SMTP3000/mesAlta capacidad de entrega + registros detallados, acepta configurar DNSsmtp.resend.com587Usuario = resend, Contraseña = clave API. Necesita verificar el dominio para enviar desde @marca.vn personalizado
3SendGrid SMTP100/día para siempreLa pila ya usa SendGrid, necesita webhookssmtp.sendgrid.net587Usuario = apikey literal, Contraseña = clave API
4Mailgun SMTP100/día × 3 mesesRegión UE/US, amigable para desarrolladoressmtp.mailgun.org (US) o smtp.eu.mailgun.org (UE)587Usuario/contraseña de la configuración del dominio de Mailgun
5Brevo (Sendinblue) SMTP300/día para siemprePopular en VN, nivel gratuito más amplio, con soporte en VNsmtp-relay.brevo.com587Usuario = correo de inicio de sesión, Contraseña = clave SMTP (diferente de la clave API)
6Zoho Mail SMTP5/día gratis, $1/usuario/mesEl usuario ya usa Zoho Workspacesmtp.zoho.com587Necesita Contraseña de aplicación si 2FA está activado
7SMTP personalizadoDepende del hostHosts de VN (Mắt Bão/PA/Inet/Nhân Hòa) incluyen SMTP, o usar Postfix autoalojadoEl usuario proporcionaEl usuario proporcionaEl usuario pega el host/puerto/usuario/contraseña completos

Recomendación predeterminada según el tipo de oferta:

  • Landing page con <50 leads/día, el usuario tiene Gmail → Gmail SMTP (sin costo, configuración en 5 minutos).
  • Landing page con >50 leads/día o que necesita capacidad de entrega profesional → Brevo (gratis 300/día, buena capacidad de entrega en VN) o Resend SMTP (3000/mes, registros detallados).
  • El usuario desea ser independiente del proveedor y podría autoalojar más adelante → SMTP personalizado desde el principio.

Formato de la pregunta para el usuario:

¿Qué proveedor SMTP desea usar para enviar los correos automáticos?

1. Gmail / Google Workspace (gratis 500/día, el más fácil si ya tiene Gmail)
2. Resend SMTP (gratis 3000/mes, alta capacidad de entrega, necesita verificar el dominio)
3. SendGrid SMTP (gratis 100/día para siempre, si ya conoce la API)
4. Mailgun SMTP (gratis 100/día × 3 meses)
5. Brevo / Sendinblue SMTP (gratis 300/día, popular en VN)
6. Zoho Mail SMTP (si ya usa Zoho Workspace)
7. SMTP personalizado (el host de VN que ya tiene / autoalojado)

Si no tiene ninguna cuenta, le recomiendo [Gmail si el tráfico es bajo / Brevo si necesita alta capacidad de entrega]. ¿Qué número elige?

Después de que el usuario elija → guárdelo para inyectarlo en la plantilla de variables de entorno en la Fase 6 y proporcionar instrucciones para obtener las credenciales del proveedor correcto en la Fase 7.

⚠️ Importante — seguridad: Las credenciales SMTP (especialmente la Contraseña de aplicación de Gmail) tienen permiso para enviar correos desde la cuenta del usuario. Nunca las codifique en el código fuente. Use siempre variables de entorno. Advierte al usuario que las rote inmediatamente si las confirma accidentalmente.


Fase 2 — Recopilar contexto

Objetivo: comprender la oferta lo suficientemente a fondo como para redactar correos no genéricos. 3 modos de entrada:

Modo A — Con artefactos del pipeline (el más completo)

El usuario acaba de ejecutar /biz-offer-alex-hormozi y/o ui-ux-pro-max → tiene archivos:

  • output/<slug-del-caso>/offer.json — segmento, resultado soñado, mecanismo, pila de bonificaciones, garantía, precios (FUENTE PRINCIPAL de información)
  • output/<slug-del-caso>/conversion-copy.md — bloque de héroe listo para pegar (titular, subtítulo, redacción de CTA)
  • output/<slug-del-caso>/landing-page/app/page.tsx — página de ventas actual de Next.js ya construida (léala para conocer las secciones y los campos del formulario que se utilizan)

⚠️ Actualización 2026-05-14: El pipeline anterior tenía layout.json + copy.json (de biz-sales-page-layout que está DEPRECATED) — el nuevo proceso OMITE esos 2 archivos. Solo necesita offer.json + leer page.tsx para tener suficiente contexto.

Lea las 3 fuentes anteriores. Extraiga para el correo:

  • Segmento + resultado soñado → personalice la línea de asunto ("[Nombre], la ruta de 8 semanas para AI Agent está lista" en lugar de "Bienvenido")
  • Nombre del mecanismo → refuércelo en el cuerpo ("El sistema PROMPT framework que está a punto de aprender...")
  • Pila de bonificaciones → enumérela en el correo (si la oferta es gratuita/de bajo precio con bonificaciones entregables de inmediato)
  • Texto de la garantía → cítelo textualmente en el correo para reducir la ansiedad
  • Redacción de la CTA → reflejarlo en la CTA final del correo

Modo B — Tiene landing page pero no archivos json

El usuario tiene HTML implementado pero no ejecutó biz-offer/biz-sales-page. La habilidad lee el HTML:

  • curl -s <URL> o lee el archivo index.html local
  • Analiza el h1 del héroe, el subtítulo, el texto del botón de CTA, el bloque de precios, el bloque de garantía
  • A partir de eso, infiere el tipo de oferta y el segmento

El Modo B es suficientemente bueno para el 80% de los casos, pero los correos son menos personalizados que en el Modo A. Sugiera al usuario: "Puede ejecutar /biz-offer-alex-hormozi para obtener el archivo offer.json y luego volver aquí; los correos serán mejores. O continuar con el Modo B."

Modo C — Sin nada

El usuario solo tiene el formulario HTML, sin contexto. La habilidad debe hacer 5 preguntas rápidas:

  1. ¿Qué producto/servicio vende? (1 frase)
  2. Después de que el usuario complete el formulario, ¿qué desea enviarle? (PDF descargable / enlace de reserva / enlace de pago / solo confirmación y llamada posterior)
  3. Nombre de la marca + nombre del remitente (que aparecerá en "De:")
  4. Correo en el que desea recibir notificaciones de nuevos leads
  5. Dominio que posee para verificar SPF/DKIM (si elige Resend/SendGrid/Mailgun/Brevo — Gmail no necesita)

Fase 3 — Elegir el patrón de correo

Modelo de 2 disparadores (para ofertas con flujo de pago): Para cursos de bajo precio / productos digitales con pago en línea, hay 2 disparadores en diferentes puntos, que envían 2 correos diferentes. No los combine en un solo correo.

El lead completa el formulario en la landing page
         ↓
   [Disparador A — /api/submit]
         ↓
   Correo P3 (RECORDATORIO PREVIO AL PAGO, breve)
         ↓
El lead completa el pago → webhook del proveedor de pago
         ↓
   [Disparador B — /api/payment-webhook]
         ↓
   Correo P5 (INCORPORACIÓN POSTERIOR A LA COMPRA, completo)

Reglas de contenido:

  • P3 (previo al pago): solo el enlace de pago + garantía breve + urgencia. NO enumere todos los entregables/la pila de bonificaciones — el lead aún no los ha "ganado", enumerarlos reduce la urgencia de pago.
  • P5 (posterior al pago): ENTREGUE TODO — enlace de acceso, todos los entregables, pila de bonificaciones, enlace del grupo, horario de oficina, 1 pregunta de seguimiento para personalizar. Este es el verdadero momento dorado.

(Lea la memoria feedback_email-autoresponder-2-stage-flow para obtener una justificación detallada).


A partir del contexto de la Fase 2, elija el patrón adecuado. Lea references/email-formulas.md para obtener una plantilla detallada en vietnamita.

PatrónDisparadorCuándo usarloSugerencia de asunto
P1 — Entrega de Lead MagnetEnvío del formularioOferta = descarga de PDF/ebook/plantilla/archivo de guión/lista de verificación gratuita"[Nombre], el documento [X] está listo — ábralo ahora 👇"
P2 — Confirmación de ReservaEnvío del formularioOferta = reserva de llamada/consulta/demostración/sesión de estrategia gratuita"[Nombre], confirmamos su registro para la sesión de consultoría — próximos pasos en el interior"
P3 — Recordatorio Previo al PagoEnvío del formulario (aún no pagó)Oferta = producto de bajo precio (199K-3M VND), el correo lleva al pago"[Nombre], enlace de pago para [Curso X] — precio promocional por 24h ⏰"
P4 — Nurturing (Próxima llamada de ventas)Envío del formularioOferta = coaching/agencia de alto precio 5M-50M+ VND, el equipo de ventas llamará en 24h"[Nombre], [Persona que llama] se comunicará en 24h — lista de verificación de preparación en el interior"
P5 — Incorporación Posterior a la CompraWebhook de pagoEl lead acaba de pagar — entregue todo el valor + 1 pregunta de personalización"🎉 Bienvenido [Nombre] al [Curso X] — desbloquee ahora"

Reglas para elegir el patrón:

  • Oferta = descarga/entrenamiento gratuito → solo P1 (1 disparador, 1 correo).
  • Oferta = reserva de llamada gratuita → solo P2 (1 disparador, 1 correo).
  • Oferta = bajo precio con pago en línea (Stripe/Momo/ZaloPay/Sepay) → P3 + P5 (2 disparadores, 2 correos).
  • Oferta = llamada de ventas de alto precio → solo P4, seguimiento por parte del equipo de ventas (la incorporación posterior al cierre del trato es un proceso diferente).

La habilidad sugiere el patrón adecuado + el motivo, y pregunta al usuario para confirmar. Ejemplo: "Según el archivo offer.json, este es un curso de 1.99M VND con integración de pago. Sugiero configurar 2 correos: P3 (recordatorio de pago al enviar el formulario) + P5 (incorporación después del pago + 1 pregunta de personalización). ¿Está de acuerdo o solo desea 1 correo P3 primero?"


Fase 4 — Redactar 2 correos

Genere 2 correos en vietnamita puro (tratamiento de anh/chị), HTML responsivo para móviles.

Correo A — Auto-responder para el lead

Estructura de 6 bloques (lea references/email-formulas.md para la redacción específica por patrón):

  1. Línea de asunto — personalizada con {{name}}, menos de 50 caracteres, con 1 emoji ligero al final si es adecuado para la voz de la marca (✉️ 👇 ✓), evite activadores de spam ("GRATIS", "$$$", "GARANTÍA" en mayúsculas).
  2. Texto de vista previa — 1 frase que se muestra debajo del asunto en la bandeja de entrada, que explica el valor del correo al abrirlo.
  3. Saludo — "Chào anh/chị {{name}}," — no "Dear", no "Xin chào quý khách".
  4. Cuerpo principal — según el patrón elegido. Reglas:
    • Corto (menos de 200 palabras).
    • Tener 1 enlace/botón CTA principal claro.
    • Hacer referencia específica al nombre de la oferta/mecanismo del contexto (no "nuestro producto").
    • Si es el Patrón P3/P4 → incluir 1 recordatorio de urgencia + 1 tranquilidad (garantía).
  5. Firma — Nombre del remitente + nombre de la marca + 1 enlace de contacto (Zalo/Teléfono/Sitio web).
  6. Pie de página — Dirección (requerida por las leyes antispam) + enlace de cancelación de suscripción (necesario para cumplimiento, aunque sea transaccional, es mejor tenerlo).

Correo B — Notificación para el propietario

Estructura (sin diseño complejo, solo texto plano o HTML mínimo):

  1. Asunto: "🚀 Nuevo lead [Nombre] — [Nombre de la oferta]"
  2. Cuerpo:
    • Información del lead: nombre, teléfono, correo, hora de envío.
    • Campos adicionales del formulario (si los hay).
    • Enlace directo a la bandeja de entrada del correo para seguimiento.
    • (Opcional) Resumen de la oferta: si el correo P3 se envió, qué contiene el enlace de pago.

Fase 5 — Revisión y edición del usuario

Muestre ambos borradores en un formato claro. Pregunte:

Aquí están los 2 borradores:

---
[Correo A] - Auto-responder para el lead:
Asunto: ...
Cuerpo:
...
---
[Correo B] - Notificación para usted:
Asunto: ...
Cuerpo:
...

¿Está de acuerdo con estos borradores?
1. Sí, continuar con la conexión del código.
2. Editar el Correo A (especifique los cambios).
3. Editar el Correo B (especifique los cambios).
4. Editar ambos. Los ajustaré según sus indicaciones.

Itere hasta que el usuario apruebe. No pase a la Fase 6 sin la confirmación del usuario.


Fase 6 — Conectar el código

Instale nodemailer + cree la ruta API + enlace al formulario.

6.1 — Instalar nodemailer

npm install nodemailer
# o
pnpm add nodemailer
# o si es HTML estático, asegúrese de que la función de Vercel tenga la dependencia en package.json de la carpeta api

6.2 — Crear el archivo de configuración SMTP

Cree lib/mail.ts (o el archivo correspondiente según la pila):

import nodemailer from 'nodemailer';

const transporter = nodemailer.createTransport({
  host: process.env.SMTP_HOST,
  port: Number(process.env.SMTP_PORT || '587'),
  secure: process.env.SMTP_SECURE === 'true',
  auth: {
    user: process.env.SMTP_USER,
    pass: process.env.SMTP_PASS,
  },
});

export async function sendEmail({
  to,
  subject,
  html,
  from,
}: {
  to: string;
  subject: string;
  html: string;
  from?: string;
}) {
  await transporter.sendMail({
    from: from || process.env.SMTP_FROM,
    to,
    subject,
    html,
  });
}

6.3 — Crear la ruta API

Next.js App Router (app/api/submit/route.ts):

import { NextRequest, NextResponse } from 'next/server';
import { sendEmail } from '@/lib/mail';

export async function POST(request: NextRequest) {
  const body = await request.json();
  const { name, phone, email } = body;

  // (Redactar el correo A aquí según el patrón elegido + el contexto)
  const leadEmailHtml = `...`; // Generado en la Fase 4
  // (Redactar el correo B aquí)
  const ownerEmailHtml = `...`; // Generado en la Fase 4

  try {
    await Promise.all([
      sendEmail({ to: email, subject: '...', html: leadEmailHtml }),
      sendEmail({ to: process.env.OWNER_EMAIL, subject: '...', html: ownerEmailHtml }),
    ]);

    return NextResponse.json({ success: true });
  } catch (error) {
    console.error('Error al enviar el correo:', error);
    return NextResponse.json({ success: false, error: 'Error al enviar el correo' }, { status: 500 });
  }
}

6.4 — Enlazar al formulario

Dependiendo de la pila, actualice el componente o el script del formulario para que llame a POST /api/submit con los datos del formulario.

6.5 — Agregar variables de entorno

Cree/actualice el archivo .env.local (o el archivo de variables de entorno correspondiente):

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
[email protected]
SMTP_PASS=xxxx xxxx xxxx xxxx (Contraseña de aplicación)
SMTP_FROM=Tu nombre <[email protected]>
[email protected]

Fase 7 — Configuración del proveedor + plan de pruebas

Proporcione instrucciones para obtener las credenciales correctas del proveedor elegido + verificar el dominio (si es necesario) + probar en vivo.

7.1 — Instrucciones para obtener credenciales por proveedor

ProveedorCómo obtener las credencialesVerificar dominio
GmailCrear Contraseña de aplicación (myaccount.google.com/apppasswords)No es necesario (Gmail lo maneja)
ResendCrear clave API en resend.com → SMTPAgregar registros SPF/DKIM para el dominio de envío
SendGridCrear clave API en app.sendgrid.com → Settings → API KeysAgregar registro SPF, (opcional) DKIM
MailgunEncontrar en Mailgun → Domains → (tu dominio) → SMTP credentialsAgregar registros SPF/DKIM/MX
BrevoSMTP key en brevo.com → SMTP & API → SMTPAgregar registros SPF/DKIM
ZohoZoho Mail → Settings → Mail Accounts → SMTPAgregar registros SPF/DKIM
PersonalizadoEl usuario proporciona host/puerto/usuario/contraseñaSegún el host

7.2 — Plan de pruebas

Pida al usuario que:

  1. Complete el formulario usted mismo con su propio nombre/teléfono/correo → compruebe que le lleguen ambos correos (el del lead a su correo principal, la notificación al correo del propietario).
  2. Verifique la carpeta de spam — si el correo cae en spam, verifique los registros SPF/DKIM.
  3. Pruebe la capacidad de respuesta en dispositivos móviles — abra el correo en el teléfono.
  4. Pruebe el enlace de cancelación de suscripción (si se implementó).
  5. Monitoree los registros del servidor durante 24 horas para detectar cualquier error de envío (timeout, rebote).

Apéndice: Referencias para redactar correos

Para obtener redacción detallada (específica para vietnamita) para cada patrón, consulte:

  • references/email-formulas.md — estructura P1-P5, ejemplos de líneas de asunto, cuerpo y CTA.
  • references/conversion-copy.md (del pipeline biz-offer) — para mantener la voz de la marca.
  • feedback_email-autoresponder-2-stage-flow — justificación del modelo de 2 disparadores.

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

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

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

Skills relacionados