Skip to main content
Glama

Distill

MCP-сервер для Claude Code, который превращает сохраненные статьи в разговорные подкасты, адаптированные под ваши интересы.

Сохраняйте статьи в течение дня. Создавайте разговорный подкаст с двумя ведущими по запросу. MP3-файл сохраняется в ~/Downloads, воспроизводится звуковой сигнал, очередь очищается. Все работает локально.

Установка

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

Related MCP server: MCP Podcast Scraper

Регистрация в Claude Code

Добавьте Distill как MCP-сервер. Самый простой способ — из директории, где вы хотите хранить свою очередь (ваш «проект для чтения»):

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

Или добавьте вручную в ~/.claude.json / .mcp.json проекта:

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

Distill читает и записывает файлы в текущую рабочую директорию, из которой был запущен Claude Code, поэтому ваша очередь и транскрипты находятся рядом с проектом, в котором вы работаете. Если вы хотите использовать единую глобальную очередь, установите DISTILL_PROJECT_ROOT:

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

Перезапустите Claude Code. Проверьте с помощью /mcp — вы должны увидеть подключенный distill.

Настройка

Простой режим: выполните /distill:setup внутри Claude Code. Он проведет вас через настройку интересов, стиля шоу, TTS-провайдера и API-ключа, задавая по одному вопросу за раз.

Ручной режим: при первом запуске Distill создает файл .distill по умолчанию в корне проекта. Отредактируйте его напрямую:

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

Полный пример с комментариями смотрите в .distill.example.

Примечание о структуре файловой системы

В спецификации .distill описывается и как файл, и как директория. Поскольку это невозможно, Distill использует:

  • .distill — файл конфигурации (формат dotenv)

  • .distill-data/ — директория данных (queue.json, transcripts/)

Слэш-команды

Claude Code предоставляет MCP-промпты с префиксом /mcp__<server>__<prompt>, поэтому все команды Distill начинаются с /mcp__distill__:

Команда

Что делает

/mcp__distill__setup

Интерактивная первичная настройка (интересы, стиль, TTS, API-ключ)

/mcp__distill__save <url>

Загрузить и добавить статью в очередь

/mcp__distill__queue-list

Показать текущую очередь

/mcp__distill__queue-clear

Очистить очередь (без создания подкаста)

/mcp__distill__podcast <url>

Создать подкаст из одной статьи

/mcp__distill__digest

Создать подкаст из очереди, затем очистить её

/mcp__distill__interests-add <tag>

Добавить интерес

/mcp__distill__interests-remove <tag>

Удалить интерес

/mcp__distill__interests-list

Показать текущие интересы

Совет: обычно можно ввести первые несколько букв (например, /distill-pod) и позволить автодополнению заполнить остальное.

Все команды также работают как естественный язык:

"Сохрани это в мою очередь подкастов: https://…" "Сделай глубокий разбор из моей очереди" "Пропусти мои обычные интересы, сосредоточься на техническом аспекте"

Стили шоу

Стиль

Динамика ведущих

Атмосфера

The Briefing

Ведущий + корреспондент

Чисто, новостной формат

The Debate

Скептик против оптимиста

Резко, субъективно

The Deep Dive

Эксперт + любознательный ученик

Образовательно

The Watercooler

Двое коллег беседуют

Неформально

Переопределение для сессии: "Сделай в стиле Debate".

TTS-провайдеры

Провайдер

Примечания

openai

Рекомендуемый по умолчанию. Требует OPENAI_API_KEY.

elevenlabs

Самые естественные голоса. Требует ELEVENLABS_API_KEY.

inworld

С акцентом на персонажей. Требует INWORLD_API_KEY.

system

macOS say. Бесплатно, роботизировано. Требует ffmpeg (или sox) для создания MP3: brew install ffmpeg.

Как это работает

  • Загрузка статьи: @mozilla/readability + jsdom — удаляет навигацию, рекламу, футеры и возвращает чистый текст.

  • Создание сценария: MCP-промпт дает указание LLM Claude Code прочитать очередь, загрузить стиль шоу и написать сценарий диалога. Отдельный API-ключ Claude не требуется.

  • TTS: синтез по частям (один API-запрос на реплику диалога, чтобы у каждого ведущего был свой голос), затем объединение в один MP3-файл.

  • Транскрипт: текстовая копия сохраняется в .distill-data/transcripts/ для отладки.

  • Уведомление: macOS afplay воспроизводит короткий системный звук, когда MP3 готов.

Архитектура и расходы

Distill — это локальный MCP-сервер на базе stdio. Все работает на машине пользователя. Хостинг-бэкенда нет.

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

Кто за что платит:

Расход

Кто платит

LLM, которая пишет диалог

Пользователь — работает внутри сессии Claude Code, по подписке / API-биллингу Claude

Генерация аудио TTS

Пользователь — использует свой OPENAI_API_KEY / ELEVENLABS_API_KEY / INWORLD_API_KEY в .distill

Хостинг

Никто — stdio MCP-серверам не нужен сервер

Это означает, что любой, кто делает форк или устанавливает Distill, просто клонирует репозиторий и указывает на него Claude Code. Никаких аккаунтов, регистраций, ничего не нужно развертывать.

Область применения

  • Только Claude Code — не является самостоятельным CLI

  • Только английский язык

  • Предполагается macOS для системного звука

  • Нет поддержки JS-рендеринга или статей за пейволлом

  • Нет планировщика — генерация по запросу

Устранение неполадок

  • /mcp показывает, что distill не удалось запустить — проверьте абсолютный путь к index.js в вашей конфигурации MCP и убедитесь, что npm install был выполнен в директории distill.

  • "Could not extract readable content" — страница, вероятно, за пейволлом или требует JS-рендеринга. В v1 повторных попыток нет.

  • TTS выдает ошибку "missing API key" — раскомментируйте ровно одну строку TTS_PROVIDER= в .distill и убедитесь, что соответствующий *_API_KEY задан.

  • system TTS выдает ошибку "requires ffmpeg or sox" — brew install ffmpeg.

Related MCP Connectors

Related MCP Servers