Email Drafter — redactar el contenido del email en texto plano estructurado
Skill que redacta el contenido de un email de marketing como texto plano estructurado (HERO + CUERPO + CTA), con soporte para múltiples segmentos y variables dinámicas de Braze. Es la primera mitad del pipeline de emails de PedidosYa.
Redacta el contenido del email solo como texto plano estructurado: HERO, CUERPO, CTA. Soporta:
Múltiples segmentos (un mismo email para varias audiencias).
Variables dinámicas de Braze ({{first_name}}, {{user_country}}, etc).
Versiones por país (PedidosYa opera en varios países LATAM).
El output no incluye HTML, ni diseño, ni nada visual. Solo lo que el email dice.
Cuándo usarlo
Como primer paso del pipeline de emails. Después corre Email to HTML que toma este texto y lo convierte en HTML production-ready.
Decisión de diseño: separar contenido de presentación
La pregunta original era "cómo automatizamos crear un email". La respuesta común sería: un solo skill que toma brief y devuelve HTML. Lo descartamos.
Si todo está mezclado en un solo skill, cuando algo falla no sabés dónde se rompió: ¿el contenido está mal, o el HTML salió mal? Separar permite tocar una pieza sin romper la otra. Y permite que el equipo de contenido revise el copy antes de que se convierta en HTML.
---
name: email-drafter
description: >
Redacta contenido de texto para emails de marketing de productos financieros.
Genera SOLO texto plano estructurado (NO HTML). Crea emails concisos con header
llamativo (oferta al frente), cuerpo breve con beneficio o efemeride, y CTA claro.
Soporta multiples segmentos de audiencia y campanas custom.
Use when the user says "email", "mail", "correo", "campana", "armar un mail",
"redactar email", "email marketing", "crear email", "contenido de email".
argument-hint: <tipo de email o contexto de la campana>
user-invocable: true
allowed-tools: Read, Glob, Grep
---
> Este skill genera SOLO contenido de texto estructurado. Para convertirlo a HTML, usar `/email-to-html`.
## Input Check
Si `$ARGUMENTS` esta vacio o solo tiene whitespace, preguntar al usuario:
1. Que tipo de email necesita (upgrade de oferta, segmento estandar, segmento premium, u otro)
2. Si hay alguna efemeride o contexto especial para la campana
3. Si tiene datos especificos (monto, nivel de membresia, etc.)
Do NOT proceed with empty input.
Solicitud del usuario: `$ARGUMENTS`
## Step 1: Cargar contexto
Leer los archivos de referencia:
- `references/email-templates.md` — Campanas pasadas, estructura, tono, propuestas de valor
- `references/product-info.md` — Solo si se necesita info especifica del producto
> **Nota:** Adaptar las rutas a la estructura de tu proyecto. Lo importante es tener un archivo con templates de referencia y otro con informacion del producto.
## Step 2: Determinar el tipo de email
| Tipo | Cuando aplica |
|------|--------------|
| **Upgrade de Oferta** | El usuario ya tenia oferta y el monto aumento |
| **Segmento Estandar** | Usuario activo sin programa de fidelidad, con producto pre-aprobado |
| **Segmento Premium** | Usuario del programa de fidelidad, con descuento exclusivo |
| **Custom** | Efemeride, campana estacional, o contexto especial |
> **Personaliza tus segmentos:** Estos son ejemplos. Reemplaza con los segmentos reales de tu negocio.
## Step 3: Redactar el contenido
### Estructura obligatoria (3 bloques):
1. **HERO** — La oferta va al frente. Headline corto, impactante, con monto visible.
2. **CUERPO** — Maximo 2-3 oraciones. Beneficio puntual o efemeride. Empatico con el usuario.
3. **CTA** — Call-to-action directo y claro.
### Tono de voz:
- Directo y motivador, sin jerga tecnica o financiera
- Urgencia suave, nunca agresiva
- Empatico con el negocio del usuario
> **Personaliza el tono:** El ejemplo usa tratamiento informal en espanol rioplatense ("vos", "tenes", "podes"). Ajusta el registro al mercado y audiencia de tu marca.
### Variables dinamicas:
Usar variables con doble llave donde corresponda. Ejemplos:
| Variable | Descripcion |
|----------|-------------|
| `{{BUSINESS_NAME}}` | Nombre del negocio o razon social |
| `{{AMOUNT}}` | Monto de la oferta actual |
| `{{PREVIOUS_AMOUNT}}` | Monto de la oferta anterior (para upgrades) |
| `{{MEMBERSHIP_LEVEL}}` | Nivel de membresia o fidelidad |
| `{{DISCOUNT_PERCENT}}` | Porcentaje de descuento exclusivo |
> **Personaliza las variables:** Adapta los nombres de variables al sistema de envio que uses (ej: Mailchimp, SendGrid, Klaviyo). Si usas atributos custom, la sintaxis puede variar segun la plataforma.
## Step 4: Entregar en formato estructurado
Entregar el contenido en este formato exacto:
```
---
TIPO: [Upgrade de Oferta / Estandar / Premium / Custom]
SEGMENTO: [descripcion del segmento]
VARIABLES: [lista de variables usadas]
---
## HERO
- Badge: {{PRODUCT_NAME}}
- Headline: [texto del headline]
- Subline: [texto del subline, si aplica]
- CTA: [texto del boton]
## CUERPO
- Saludo: {{BUSINESS_NAME}}
- Texto: [texto principal del email]
- CTA: [texto del boton]
## TAGLINE
[frase de marca o propuesta de valor]
## BENEFICIOS — Card Izquierda
[contenido de la card izquierda]
- CTA: [texto del boton]
## BENEFICIOS — Card Derecha
[lista de beneficios o contenido de la card derecha]
## CIERRE
- Headline: [frase motivacional]
- Subline: [frase secundaria, si aplica]
- CTA: [texto del boton]
## AYUDA
[texto de cierre con link a ayuda]
```
## Step 5: Presentar y esperar aprobacion
Mostrar el contenido estructurado al usuario y preguntar:
**"Te comparto el contenido. Si lo aprobas, genero el HTML con la estructura de produccion."**
- Si el usuario aprueba (dice "dale", "ok", "aprobado", "si", "generar html", "maquetalo", o similar): invocar `/email-to-html` pasandole el contenido estructurado completo como argumento.
- Si el usuario pide cambios: ajustar el contenido segun el feedback y volver a presentar.
- NO generar HTML sin aprobacion explicita del usuario.
## Output Format
Entregar:
1. **Contenido estructurado** en el formato de arriba
2. **Resumen**: tipo, segmento, variables, propuestas de valor destacadas
3. **Pregunta de aprobacion** para disparar la conversion a HTML
NO generar HTML directamente. NO guardar archivos. Solo devolver el texto en la conversacion y esperar aprobacion.
## If Something Goes Wrong
- Si el tipo de email no esta claro, preguntar antes de redactar.
- Si faltan datos criticos (monto, segmento), preguntar.
- Si el usuario pide algo que contradice las reglas del producto, advertir y sugerir alternativa.