← Volver al catálogo

📧 Email Weekly Digest (newsletter dominical)

Archivo: agentes/marketing/email-weekly-digest.ts · Plist: _(ninguno)_ · Horario: Diseñado para domingos 18:00; hoy se ejecuta manualmente (no hay plist cargado)

Qué hace

Genera y envía la newsletter semanal a la base de clientes con consentimiento de marketing. El contenido incluye los 3 últimos artículos del blog "news", el producto más vendido de los últimos 7 días y un CTA a la tienda. Redacta el email completo (HTML responsive, paleta RifKings) con IA y lo manda por Gmail SMTP (gratis, ~500/día) o Resend. Para no superar el límite de Gmail, si hay >400 suscriptores segmenta solo a clientes VIP+Recurrentes.

Cómo funciona

1. Carga .env y estado en data/email-digest-state.json.

2. Localiza el blog con handle news y trae sus 3 últimos artículos.

3. Calcula el top producto de la semana sumando line_items de pedidos de 7 días.

4. Genera el HTML del email y el subject con gemini-cli (modelo sonnet).

5. Carga clientes con email_marketing_consent.state === 'subscribed' o accepts_marketing.

6. Guarda el HTML como draft en agentes/marketing/output/digest-YYYY-MM-DD.html.

7. Envío: Gmail SMTP (throttle 250ms, tope seguridad 450 envíos; segmenta a tags ltv_vip/ltv_recurrente si >400 opt-in) o Resend (lotes de 50). Persiste estado y notifica (sales_email_digest).

Datos/APIs

  • Shopify Admin API (2024-10): blogs, articles, orders, products, customers, customers/search.
  • gemini-cli local (modelo sonnet) para HTML + subject.
  • Gmail SMTP (tools/gmail-sender.ts) o Resend.
  • notify-router → evento sales_email_digest.
  • Vars .env: SHOPIFY_STORE, SHOPIFY_ACCESS_TOKEN, GMAIL_USER+GMAIL_APP_PASSWORD o RESEND_API_KEY+RESEND_FROM.

Cómo probarlo

cd /Users/user/rifai-agents && npx tsx agentes/marketing/email-weekly-digest.ts

Espera: carga de blogs/top producto/suscriptores, generación del HTML guardado en agentes/marketing/output/, y envío real a los opt-in si hay Gmail/Resend configurado (¡cuidado, envía a clientes reales!). Si no hay sender, deja el HTML como draft y avisa.

Si se rompe / recuperar

  • Sin plist. Para programarlo crear com.rifai.email-digest (StartCalendarInterval domingo 18:00) y launchctl load ~/Library/LaunchAgents/com.rifai.email-digest.plist.
  • Logs: /Users/user/rifai-agents/logs/email-weekly-digest.log (al lanzar manual).
  • Drafts HTML: agentes/marketing/output/digest-*.html. Estado: data/email-digest-state.json.
  • Si falla por blog: requiere que exista un blog con handle news.

Cómo replicarlo

  • Parser .env estándar.
  • 3 fuentes de contenido: blogs news, top producto 7d, lista de opt-in.
  • LLM local sonnet con system prompt "newsletter dominical premium".
  • Segmentación por tags LTV cuando la base es grande (Gmail 500/día).
  • Envío Gmail con throttle o Resend en lotes, + draft HTML local + estado JSON.