Skip to main content
Glama

Distill

Un servidor MCP de Claude Code que convierte artículos guardados en podcasts generados por IA, adaptados a tus intereses.

Guarda artículos a lo largo del día. Genera un podcast conversacional de dos presentadores bajo demanda. El MP3 se guarda en ~/Downloads, suena un aviso y la cola se vacía. Todo es local.

Instalación

git clone <this repo> ~/code/distill
cd ~/code/distill
npm install

Related MCP server: MCP Podcast Scraper

Registrar en Claude Code

Añade Distill como servidor MCP. La forma más sencilla: desde el directorio donde quieras mantener tu cola (tu "proyecto de lectura"):

claude mcp add distill -- node /absolute/path/to/distill/index.js

O añádelo manualmente a tu ~/.claude.json / .mcp.json del proyecto:

{
  "mcpServers": {
    "distill": {
      "command": "node",
      "args": ["/absolute/path/to/distill/index.js"]
    }
  }
}

Distill lee y escribe archivos en el directorio de trabajo actual donde se inició Claude Code, por lo que tu cola y tus transcripciones residen junto al proyecto en el que estés. Si deseas una cola global única, configura DISTILL_PROJECT_ROOT:

{
  "mcpServers": {
    "distill": {
      "command": "node",
      "args": ["/absolute/path/to/distill/index.js"],
      "env": { "DISTILL_PROJECT_ROOT": "/Users/you/distill-home" }
    }
  }
}

Reinicia Claude Code. Confirma con /mcp: deberías ver distill conectado.

Configuración

Modo fácil: ejecuta /distill:setup dentro de Claude Code. Te guiará a través de tus intereses, estilo del programa, proveedor de TTS y clave API, una pregunta a la vez.

Modo manual: en la primera ejecución, Distill escribe un archivo .distill predeterminado en la raíz del proyecto. Edítalo directamente:

INTERESTS=entrepreneurship, cybersecurity, AI, startups
SHOW_STYLE=The Briefing
TTS_PROVIDER=openai
OPENAI_API_KEY=sk-...
OUTPUT_DIR=~/Downloads

Consulta .distill.example para ver un ejemplo completo anotado.

Nota sobre la estructura del sistema de archivos

La especificación describe .distill como un archivo y como un directorio. Dado que eso no es posible, Distill utiliza:

  • .distill — archivo de configuración (formato dotenv)

  • .distill-data/ — directorio de datos (queue.json, transcripts/)

Comandos de barra diagonal (Slash commands)

Claude Code expone los prompts de MCP con el prefijo /mcp__<servidor>__<prompt>, por lo que todos los comandos de Distill comienzan con /mcp__distill__:

Comando

Qué hace

/mcp__distill__setup

Configuración interactiva inicial (intereses, estilo, TTS, clave API)

/mcp__distill__save <url>

Obtiene y pone en cola un artículo

/mcp__distill__queue-list

Muestra la cola actual

/mcp__distill__queue-clear

Vacía la cola (sin podcast)

/mcp__distill__podcast <url>

Genera un podcast a partir de un solo artículo

/mcp__distill__digest

Genera un podcast a partir de la cola y luego la vacía

/mcp__distill__interests-add <tag>

Añade un interés

/mcp__distill__interests-remove <tag>

Elimina un interés

/mcp__distill__interests-list

Muestra los intereses actuales

Consejo: normalmente puedes escribir las primeras letras (p. ej., /distill-pod) y dejar que el autocompletado rellene el resto.

Todos los comandos también funcionan como lenguaje natural:

"Guarda esto en mi cola de podcasts: https://…" "Haz un análisis profundo (Deep Dive) de mi cola" "Ignora mis intereses habituales, céntrate en el ángulo técnico"

Estilos de programa

Estilo

Dinámica de presentadores

Ambiente

The Briefing

Presentador + corresponsal

Limpio, noticiero

The Debate

Escéptico vs optimista

Directo, de opinión

The Deep Dive

Experto + aprendiz curioso

Educativo

The Watercooler

Dos colegas charlando

Informal

Sobrescribe por sesión: "Hazlo con estilo Debate".

Proveedores de TTS

Proveedor

Notas

openai

Recomendación predeterminada. Requiere OPENAI_API_KEY.

elevenlabs

Voces más naturales. Requiere ELEVENLABS_API_KEY.

inworld

Enfocado en personajes. Requiere INWORLD_API_KEY.

system

say de macOS. Gratuito, robótico. Requiere ffmpeg (o sox) para producir MP3: brew install ffmpeg.

Cómo funciona

  • Obtención de artículos: @mozilla/readability + jsdom — elimina navegación/anuncios/pies de página y devuelve texto limpio.

  • Generación de guiones: el prompt de MCP le dice al propio LLM de Claude Code que lea la cola, cargue el estilo del programa y escriba el guion del diálogo en línea. No se necesita una clave API de Claude separada.

  • TTS: síntesis por turno (una llamada API por turno de diálogo, para que cada presentador tenga su propia voz), luego concatenado en un solo MP3.

  • Transcripción: copia de texto plano guardada en .distill-data/transcripts/ para depuración.

  • Notificación: afplay de macOS reproduce un sonido corto del sistema cuando el MP3 está listo.

Arquitectura y costes

Distill es un servidor MCP local basado en stdio. Todo se ejecuta en la máquina del usuario. No hay backend alojado.

 ┌───────────────┐   stdio    ┌───────────────┐    HTTPS     ┌──────────┐
 │ Claude Code   │◀──────────▶│ distill MCP   │────────────▶│ TTS API  │
 │ (your LLM)    │            │ (node process)│              │ (yours)  │
 └───────────────┘            └───────────────┘              └──────────┘
        │                            │
        │                            ▼
        │                   .distill  / .distill-data/
        ▼
  writes script,
  calls tools

Quién paga qué:

Coste

Pagado por

LLM que escribe el diálogo

El usuario — se ejecuta dentro de su sesión de Claude Code, en su suscripción de Claude / facturación de API

Generación de audio TTS

El usuario — pone su propia OPENAI_API_KEY / ELEVENLABS_API_KEY / INWORLD_API_KEY en .distill

Alojamiento

Nadie — los servidores MCP stdio no necesitan un servidor

Esto significa que cualquiera que haga un fork o instale Distill simplemente clona el repositorio y apunta Claude Code hacia él. Sin cuenta, sin registro, nada que desplegar.

Alcance

  • Solo Claude Code — no es una CLI independiente

  • Solo inglés

  • macOS asumido para el sonido del sistema

  • Sin soporte para artículos renderizados con JS o tras muros de pago

  • Sin programación — generación bajo demanda

Solución de problemas

  • /mcp muestra distill como fallido — comprueba la ruta absoluta a index.js en tu configuración de MCP y que npm install se haya ejecutado en el directorio de distill.

  • "Could not extract readable content" — la página probablemente tiene un muro de pago o está renderizada con JS. No hay reintento en la v1.

  • El TTS falla con "missing API key" — descomenta exactamente una línea TTS_PROVIDER= en .distill y asegúrate de que su *_API_KEY correspondiente esté configurada.

  • El TTS system falla con "requires ffmpeg or sox" — brew install ffmpeg.

Related MCP Connectors

Related MCP Servers