Brevecast

Actualizado 5 junio 2026 · 9 min de lectura

Cómo crear una newsletter desde un podcast con IA

Las mejores newsletters de curaduría hacen una cosa bien: filtrar información. Escuchan 10 podcasts para que tú solo recibas los 3 insights que importan. El problema es que el curador gasta 10+ horas semanales escuchando para producir una edición.

Con un pipeline automático (resumen IA + template + envío), puedes crear una newsletter de curaduría de podcasts en 45 minutos en vez de 4 horas.

El pipeline completo

El flujo es lineal:

  1. Detectar episodio nuevo → monitorear feed RSS.
  2. Resumir → enviar a Brevecast API.
  3. Formatear → insertar en template de newsletter.
  4. Revisar + enviar → 5 min de revisión humana + publicar.

Paso 1: Monitorear feeds RSS

Cada podcast tiene un feed RSS. Con Python y feedparser, puedes detectar episodios nuevos automáticamente.

import feedparser
import json
from datetime import datetime, timedelta

FEEDS = [
    {"name": "Entiende Tu Mente", "url": "https://feeds.example.com/etm.xml"},
    {"name": "Kaizen Empresarial", "url": "https://feeds.example.com/kaizen.xml"},
    {"name": "Podcast Insider", "url": "https://feeds.example.com/insider.xml"},
]

def get_new_episodes(feeds, since_hours=48):
    """Obtiene episodios publicados en las últimas N horas."""
    cutoff = datetime.now() - timedelta(hours=since_hours)
    episodes = []
    for feed_info in feeds:
        feed = feedparser.parse(feed_info["url"])
        for entry in feed.entries[:5]:
            published = datetime(*entry.published_parsed[:6])
            if published > cutoff:
                # Buscar enclosure de audio (MP3)
                audio_url = None
                for link in entry.get("links", []):
                    if link.get("type", "").startswith("audio/"):
                        audio_url = link["href"]
                        break
                if audio_url:
                    episodes.append({
                        "podcast": feed_info["name"],
                        "title": entry.title,
                        "audio_url": audio_url,
                        "published": published.isoformat(),
                    })
    return episodes

new_eps = get_new_episodes(FEEDS)
print(f"Encontrados {len(new_eps)} episodios nuevos")

Paso 2: Resumir con Brevecast API

Cada episodio detectado se envía a la API de Brevecast para obtener un resumen ejecutivo.

import httpx

BREVECAST_URL = "https://brevecast.4l3.org"

def summarize_episode(audio_url: str) -> dict:
    """Envía un episodio a Brevecast y obtiene el resumen."""
    r = httpx.post(
        f"{BREVECAST_URL}/v1/summarize",
        json={"url": audio_url, "voice": "es-MX-Jorge"},
        timeout=300,  # Podcasts largos tardan más
    )
    r.raise_for_status()
    return r.json()

# Resumir cada episodio nuevo
summaries = []
for ep in new_eps:
    result = summarize_episode(ep["audio_url"])
    summaries.append({
        **ep,
        "summary_text": result.get("summary", ""),
        "summary_audio": result.get("audio_url", ""),
    })
    print(f"Resumido: {ep['title']}")

Paso 3: Formatear la newsletter

Con los resúmenes listos, genera el cuerpo de la newsletter usando un template simple.

def format_newsletter(summaries: list, edition: int) -> str:
    """Genera el HTML de la newsletter."""
    items_html = ""
    for s in summaries:
        items_html += f"""
        <div style="margin-bottom:24px;padding:16px;
                     border:1px solid #e2e8f0;border-radius:8px">
          <h3 style="margin:0 0 4px">{s['podcast']}: {s['title']}</h3>
          <p style="color:#64748b;font-size:13px;margin:0 0 8px">
            Publicado {s['published'][:10]}
          </p>
          <p>{s['summary_text'][:500]}...</p>
          <a href="{s['summary_audio']}">Escuchar resumen (5 min)</a>
        </div>
        """

    return f"""
    <h1>Podcast Digest #{edition}</h1>
    <p>Los {len(summaries)} mejores episodios de esta semana,
       resumidos en 5 minutos cada uno.</p>
    {items_html}
    <p style="color:#94a3b8;font-size:12px">
      Resúmenes generados con Brevecast.
    </p>
    """

html = format_newsletter(summaries, edition=1)
print("Newsletter lista para enviar")
Tip editorial: No publiques el resumen crudo. Añade 2-3 líneas de tu propia perspectiva en cada item. Eso transforma curaduría automática en curaduría con criterio, que es mucho más valiosa para tus lectores.

Paso 4: Enviar con cron

Un cron semanal ejecuta el pipeline completo. El borrador queda listo para tu revisión final.

# crontab -e
# Todos los lunes a las 7am generar borrador
0 7 * * 1 cd /path/to/project && python3 pipeline.py

Opciones de envío según tu plataforma:

Caso de uso real: newsletter semanal de negocios

Imagina una newsletter llamada “Podcast Digest MX” que cura los 5 mejores podcasts de negocios en español cada semana:

  1. Feeds monitoreados: 15 podcasts de negocios/emprendimiento en español.
  2. Filtro: Solo episodios con invitados destacados o temas trending.
  3. Resumen: Brevecast genera resumen de cada episodio seleccionado.
  4. Edición humana: 30 min para agregar contexto, opinión y links.
  5. Envío: Todos los lunes a las 7am.

Tiempo total por edición: 45 minutos (vs 4+ horas sin automatización).

Modelo de negocio: Gratis hasta 1,000 subs. Después: sponsor slots a $50-200/edición.

Consideraciones éticas

Empieza con 3 resúmenes gratis
Envía la URL de cualquier podcast y recibe el resumen en minutos.
Probar Brevecast →

Siguientes pasos