AutomatizaciónIntermedio30 min
IA para Email Marketing
Segmentación · personalización · A/B testing · campañas que convierten
EmailMarketingPersonalización
✓ Guía gratuita · Acceso completo
Mapa rápido · salta al paso que te interese
01
Segmentación automática con embeddings
En lugar de segmentar manualmente por demografía, usa embeddings del comportamiento del usuario para crear clusters naturales.
lib/email/segmentation.ts
import { generateEmbedding } from '@/lib/embeddings/generate'
import { kmeans } from 'ml-kmeans'
interface User {
id: string
interactions: string[] // Páginas visitadas, emails abiertos, etc.
}
export async function segmentUsers(users: User[], numSegments: number = 5) {
// 1. Crear embedding del comportamiento de cada usuario
const userEmbeddings = await Promise.all(
users.map(async (user) => {
const behaviorText = user.interactions.join(' ')
const embedding = await generateEmbedding(behaviorText)
return { userId: user.id, embedding }
})
)
// 2. Clustering con k-means
const vectors = userEmbeddings.map(u => u.embedding)
const result = kmeans(vectors, numSegments)
// 3. Asignar segmentos
return userEmbeddings.map((user, i) => ({
userId: user.userId,
segment: result.clusters[i],
}))
}02
Personalización de contenido por segmento
lib/email/personalize.ts
import Anthropic from '@anthropic-ai/sdk'
const anthropic = new Anthropic()
interface Segment {
id: number
description: string // ej: "Usuarios técnicos interesados en APIs"
}
export async function personalizeEmail(
baseContent: string,
segment: Segment
): Promise<string> {
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1000,
messages: [{
role: 'user',
content: `Adapta este email para el segmento descrito. Mantén el mensaje core pero ajusta el tono y ejemplos.
Segmento: ${segment.description}
Email original:
${baseContent}
Devuelve solo el email adaptado, sin explicaciones.`
}],
})
return response.content[0].type === 'text' ? response.content[0].text : baseContent
}03
Optimizador de subject lines
lib/email/subject-optimizer.ts
import Anthropic from '@anthropic-ai/sdk'
const anthropic = new Anthropic()
export async function generateSubjectVariants(
emailContent: string,
numVariants: number = 5
): Promise<string[]> {
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 500,
messages: [{
role: 'user',
content: `Genera ${numVariants} subject lines para este email.
Criterios:
- Máximo 50 caracteres
- Sin clickbait engañoso
- Variedad: urgencia, curiosidad, beneficio, pregunta, número
Email:
${emailContent}
Devuelve JSON: {"subjects": ["...", "..."]}`
}],
})
const text = response.content[0].type === 'text' ? response.content[0].text : '{"subjects":[]}'
return JSON.parse(text).subjects
}
// Uso con A/B testing
const variants = await generateSubjectVariants(emailContent)
// Enviar 10% a cada variante, medir open rate, enviar resto al ganadorTip Pro
Trackea open rates por segmento y subject line. Usa los datos para re-entrenar tus prompts de generación.
¿Quieres el sistema completo?
500+ páginas, 25 capítulos, código de producción, acceso a todas las guías del Arsenal.
Curso Completo · €29PayPal · Acceso inmediato