← Todas las recetasReceta · 18 de septiembre de 2025

El pipeline del podcast: de grabación a episodio publicado con IA local

Nuestro flujo completo real: cómo usamos nuestra propia IA para producir En Local — transcripción, acta, capítulos, show notes y publicación web, casi sin tocar nada.

Dificultadavanzada
Tiempo2 horas (setup único)
IngredientesWhisper · Ollama · Python · n8n · Astro

Esta es LA receta meta: la que produce este mismo podcast. Cada pieza la hemos probado en nuestro laboratorio. El resultado: de audio crudo a episodio publicado en la web con 15 minutos de trabajo humano.

El flujo completo

1. GRABACIÓN     → audio.mp3 (Toni + Jaume)
2. TRANSCRIPCIÓN → Whisper large-v3 local
3. LIMPIEZA      → LLM local quita muletillas, marca hablantes
4. SHOW NOTES    → LLM genera resumen, títulos, capítulos, links
5. WEB           → Markdown + frontmatter → Astro build
6. PUBLICACIÓN   → rsync al servidor → live

Pieza 1: Transcripción con diarización ligera

Whisper transcribe, pero no distingue quién habla. Truco nuestro: grabar cada micrófono a un canal separado (o pista separada con Audacity/OBS), transcribir cada pista por separado y unir por timestamps:

from faster_whisper import WhisperModel
model = WhisperModel("large-v3", device="cuda", compute_type="float16")

for pista, hablante in [("toni.wav", "Toni"), ("jaume.wav", "Jaume")]:
    segments, _ = model.transcribe(pista, language="es")
    for s in segments:
        print(f"[{s.start:.1f}] {hablante}: {s.text}")

Luego se ordenan todos los segmentos por start y ya tienes el diálogo completo.

Pieza 2: Show notes con el LLM local

Pásale la transcripción a tu modelo con este prompt (funciona sorprendentemente bien con modelos de 7-14B):

Eres el editor del podcast En Local. Con esta transcripción, genera en Markdown:

1. Título del episodio: gancho, máximo 8 palabras, sin clickbait.
2. Descripción: 2 frases para iTunes/web.
3. Capítulos con timestamps: "## 12:34 Título del tema" (usa los timestamps reales).
4. Menciones: herramientas, modelos y links mencionados en lista.
5. 3 frases destacables para redes sociales.

Transcripción:
<pega aquí la transcripción>

Pieza 3: El frontmatter automático

Otro prompt que convierte las show notes en el frontmatter de la web:

Convierte esto a frontmatter YAML válido para un post:
- title (sin comillas dobles internas)
- description (máximo 160 caracteres)
- pubDate: AAAA-MM-DD de hoy
- tags: máximo 4
Devuelve SOLO el bloque YAML entre ---.

Juntas ambos, pegas el Markdown debajo, guardas en src/content/episodios/ y:

npm run build
rsync -avz --delete dist/ miservidor:/tmp/stage/
ssh miservidor "echo TU_PASSWORD | sudo -S rsync -avz --delete /tmp/stage/ /www/wwwroot/llme.midominio.es/"

Pieza 4: El botón final (n8n)

Todo lo anterior encadenado en un workflow n8n: carpeta watch → Whisper → LLM → genera Markdown → SSH al server → build → deploy. El sueño: grabar, colgar el audio, y ver la web actualizarse.

Lo que todavía hacemos a mano (y por qué)

  • Revisar la transcripción: los nombres propios y anglicismos (¡“HuggingFace”!) Whisper los mata. 5 minutos de revisión evitan vergüenzas.
  • Aprobar las show notes: el modelo resumen bien pero los títulos los elegimos nosotros. La IA propone, el humano decide.
  • El audio no se toca: ni EQ ni magia (todavía). Falta tiempo.

Números reales del pipeline

  • Transcripción: 1 hora de audio en ~6 min (GPU) o ~40 min (CPU)
  • Show notes: ~2 min con un 14B local
  • Publicación web: <1 min (build + rsync)
  • Tiempo humano total: ~20 min por episodio