🎙️ Podcastfy: Alternativa Open Source a los Podcasts de NotebookLM

RESUMEN EJECUTIVO

Podcastfy (souzatharsis/podcastfy, +6,650 ⭐, licencia Apache 2.0) es la alternativa abierta, programable y multimodal a la función estrella de Google NotebookLM (Audio Overviews / Deep Dive Podcasts).

Permite convertir cualquier contenido multimodal —páginas web, PDFs, imágenes, vídeos de YouTube, texto plano o temas con búsqueda web en vivo— en un podcast conversacional cautivador entre dos presentadores con química natural, interrupciones, risas y analogías, disponible en múltiples idiomas (incluido español).

A diferencia de la herramienta cerrada de Google, Podcastfy es 100% personalizable: permite elegir el LLM (Gemini, Claude, GPT o local con Ollama), el motor de voz (EdgeTTS gratis, Gemini Studio MultiSpeaker, ElevenLabs, OpenAI) y la duración (cápsulas de 2-5 min o episodios completos de más de 30 minutos).


📋 Ficha Técnica y Recursos

ParámetroDetalle Técnico
Repositorio Oficialsouzatharsis/podcastfy (GitHub)
Autor PrincipalTharsis Souza (Coautor de LLMs: The Hard Parts, O’Reilly)
LicenciaApache License 2.0 (Uso comercial libre, integrable en SaaS propios)
Comunidad+6,650 estrellas y +770 forks en GitHub
DistribuciónPaquete PyPI (pip install podcastfy), CLI, FastAPI y Docker
Entradas MultimodalesURLs web, PDFs, Archivos de imagen (PNG/JPG), YouTube, Textos, Tópicos libres
Duración de AudioShorts (2–5 min) o Longform (30+ min con múltiples rondas)
Motores TTS SoportadosMicrosoft Edge TTS (100% gratis), Gemini Multi-Speaker, ElevenLabs, OpenAI TTS
Modelos de LenguajeGoogle Gemini (Recomendado), OpenAI, Anthropic Claude, o Local con Ollama / HuggingFace

⚖️ Cuadro Comparativo: Podcastfy vs. Google NotebookLM

Característica🎙️ Podcastfy.ai📓 Google NotebookLM
Licencia & Código🟢 Open Source (Apache 2.0)🔴 Cerrado y propietario
Interfaz & Automatización🟢 CLI, Python API, Docker, FastAPI🔴 Solo interfaz web de Google
Costo de Voces (TTS)🟢 $0 con EdgeTTS / Flexible con ElevenLabs🟡 Gratis mientras dure la beta
Soporte de Imágenes🟢 Sí: Analiza obras de arte, diagramas e infografías⚠️ Limitado a texto en documentos
Búsqueda Web en Vivo🟢 Sí: Genera episodios desde un tema con web ground🔴 Solo fuentes estáticas subidas
Personalización de Voces🟢 Total: Voces, acentos, velocidad, tono y roles🔴 Fijo (dos voces predeterminadas)
Privacidad & Modo Offline🟢 Posible con Ollama / HuggingFace local🔴 Todo viaja a servidores de Google
Formato de Duración🟢 Configurable (2–5 min cápsula o 30+ min extenso)🟡 Longitud automática (~10-15 min)

🏗️ Arquitectura y Flujo de Generación

flowchart TD
    subgraph Fuentes ["📥 Entradas Multimodales"]
        F1["🌐 Páginas Web / URLs"]
        F2["📄 Documentos PDF / Markdown"]
        F3["🖼️ Imágenes / Infografías / Arte"]
        F4["📺 Transcripciones de YouTube"]
        F5["💡 Tópico con Búsqueda Web en Vivo"]
    end

    Fuentes --> Extractor["🔍 Content Extractor & Parser"]
    
    subgraph Engine ["🧠 Orquestador de Conversación"]
        Extractor --> LLM["🤖 LLM (Gemini 2.5 / GPT-4o / Ollama)<br>Rol Presentador 1: Explicador Principal<br>Rol Presentador 2: Curioso / Preguntador"]
        Config["⚙️ YAML Config<br>(Tono, humor, idioma, analogías)"] --> LLM
        LLM --> Script["📝 Guion de Diálogo con Marcas Conversacionales"]
    end
    
    subgraph Audio ["🎙️ Síntesis de Voz Multihablante"]
        Script --> TTSSelector{"Motor TTS Elegido"}
        TTSSelector -->|100% Gratis| Edge["🔊 Microsoft Edge TTS<br>(Alvaro & Dalia / Jenny & Eric)"]
        TTSSelector -->|Ultra Natural| GeminiTTS["⚡ Gemini Studio MultiSpeaker"]
        TTSSelector -->|Emocional / Clon| Eleven["💎 ElevenLabs v2"]
        TTSSelector -->|Estándar| OpenAITTS["🤖 OpenAI tts-1-hd"]
    end
    
    Audio --> Merger["✂️ Ensamblado FFmpeg + Mensaje de Cierre"]
    Merger --> Final["🎧 Episodio Final MP3 + Transcripción TXT"]

🎭 Configuración del Diálogo y Personalidades (conversation_config.yaml)

Podcastfy permite definir la personalidad del podcast mediante archivos YAML:

# Estilo de conversación general
conversation_style: 
  - "engaging"
  - "fast-paced"
  - "enthusiastic"
 
# Roles de los dos presentadores
roles_person1: "presentador y divulgador técnico principal"
roles_person2: "entrevistador curioso, hace preguntas difíciles y analogías cotidianas"
 
# Estructura del episodio
dialogue_structure: 
  - "Introducción dinámica con gancho"
  - "Desglose de los puntos clave con debate"
  - "Conclusiones prácticas para la audiencia"
 
podcast_name: "Ryukami Tech Digest"
podcast_tagline: "Inteligencia Artificial y Desarrollo en tu idioma"
output_language: "Spanish"
 
# Técnicas de retención de audiencia
engagement_techniques: 
  - "preguntas retóricas"
  - "anécdotas y ejemplos del mundo real"
  - "humor ligero y reacciones espontáneas"
 
# Configuración del motor de síntesis de voz
text_to_speech:
  default_tts_model: "edge" # 'edge' para coste $0, 'gemini' o 'elevenlabs'
  edge:
    default_voices:
      question: "es-MX-DaliaNeural"     # Presentadora 2
      answer: "es-ES-AlvaroNeural"      # Presentador 1
  audio_format: "mp3"
  ending_message: "¡Hasta el próximo episodio de Ryukami Tech Digest!"

🛠️ Instalación y Uso en Linux Mint

1. Requisitos Previos

Instala FFmpeg y las herramientas del sistema:

sudo apt update
sudo apt install -y ffmpeg python3-pip python3-venv git

2. Instalación Directa con pip

# Crear entorno virtual aislado
python3 -m venv ~/podcastfy-env
source ~/podcastfy-env/bin/activate
 
# Instalar Podcastfy
pip install podcastfy

3. Configuración de Claves de API (.env)

Crea un archivo .env o exporta las variables según el proveedor que elijas:

# Recomendado: Gemini para redacción de guiones (rápido y con 1M de tokens)
export GEMINI_API_KEY="tu_clave_de_google_ai_studio"
 
# Opcional si usas OpenAI o ElevenLabs:
# export OPENAI_API_KEY="sk-..."
# export ELEVENLABS_API_KEY="..."

💻 Ejemplos Prácticos de Generación

A. Crear Podcast desde una o varias URLs (Modo CLI)

# Generar usando EdgeTTS gratuito (sin coste de voz)
podcastfy --url https://arxiv.org/abs/2301.00000 --tts-model edge

B. Generar a partir de un Tema con Búsqueda Web en Vivo

No necesitas tener un enlace previo; Podcastfy investiga en la web y arma el episodio:

podcastfy --topic "Avances de Gemini 4 Argon y agentes autónomos en 2026" --tts-model edge

C. Generar un Episodio Extenso de Formato Largo (+30 min)

podcastfy --url https://es.wikipedia.org/wiki/Inteligencia_artificial --longform --tts-model edge

D. Uso Programático en Scripts de Python

from podcastfy.client import generate_podcast
 
# Generar a partir de múltiples fuentes multimodales
audio_path = generate_podcast(
    urls=["https://github.com/souzatharsis/podcastfy"],
    image_paths=["/home/alexwce/Imagenes/arquitectura.png"],
    tts_model="edge",
    conversation_config={
        "output_language": "Spanish",
        "podcast_name": "Ryukami AI Cast"
    }
)
 
print(f"🎙️ Podcast generado exitosamente en: {audio_path}")

🧩 Ecosistema Multimedia en Ryukami Labs

HerramientaCaso de Uso PrincipalFormato Final
🎙️ PodcastfyPodcasts conversacionales multimodales (Estilo NotebookLM)Audio MP3 conversacional (2 personas)
✂️ AI YouTube Shorts GeneratorRecorte de vídeos largos a shorts virales 9:16 con face-trackingVídeos verticales MP4 9:16
🏭 Short Video FactoryFábrica de vídeos verticales en lote con B-roll y EdgeTTSLotes de vídeos MP4 9:16
🎙️ Kokoro TTSSíntesis de voz ultra-ligera y soberana local (82M)Audio WAV/MP3 mono/estéreo
🌐 OpenCreatorDoblaje, traducción y clonación labial multimodalVídeos completos traducidos

🔗 Referencias y Enlaces en la Bóveda