Renderz Studio
Academia
Proyectos
Servicios
Arsenal
Repo
Herramientas
Skills
El Oráculo
Guía Gratis
← El Arsenal
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

Segmentación IA

Clusters automáticos de audiencia

Personalización

Contenido adaptado por segmento

Subject line optimizer

A/B testing con LLM

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 ganador

Tip Pro

Trackea open rates por segmento y subject line. Usa los datos para re-entrenar tus prompts de generación.

Guías relacionadas

Pipeline de Contenido

Automatizar generación

Agentes Autónomos

VERA: el agente de newsletters

¿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 · €29

PayPal · Acceso inmediato

¿Hablamos?