Skip to main content
Glama

Distill

一个 Claude Code MCP 服务器,可将保存的文章转换为根据您的兴趣定制的 AI 生成播客。

全天保存文章。按需生成双人对话式播客。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 已连接。

配置

简易模式: 在 Claude Code 中运行 /distill:setup。它会引导您逐个回答关于兴趣、节目风格、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__<server>__<prompt> 公开 MCP 提示词,因此所有 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

怀疑论者 vs 乐观主义者

犀利,观点鲜明

The Deep Dive

专家 + 好奇的学习者

教育性

The Watercooler

两位同事聊天

休闲

按会话覆盖:“把它做成辩论风格”。

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 提示词指示 Claude Code 自身的 LLM 读取队列、加载节目风格并内联编写对话脚本。无需单独的 Claude API 密钥。

  • TTS:逐轮合成(每个对话轮次进行一次 API 调用,因此每个主持人都有自己的声音),然后拼接成单个 MP3。

  • 脚本:纯文本副本保存到 .distill-data/transcripts/ 以供调试。

  • 通知:当 MP3 准备好时,macOS afplay 会播放简短的系统提示音。

架构与成本

Distill 是一个本地、基于 stdio 的 MCP 服务器。一切都在用户机器上运行。没有托管的后端。

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

费用承担:

成本

承担方

编写对话的 LLM

用户 — 它在他们的 Claude Code 会话中运行,使用他们的 Claude 订阅/API 计费

TTS 音频生成

用户 — 他们在 .distill 中填入自己的 OPENAI_API_KEY / ELEVENLABS_API_KEY / INWORLD_API_KEY

托管

无 — stdio MCP 服务器不需要服务器

这意味着任何分叉或安装 Distill 的人只需克隆仓库并将 Claude Code 指向它即可。无需账户,无需注册,无需部署。

范围

  • 仅限 Claude Code — 不是独立的 CLI

  • 仅限英语

  • 系统提示音假设为 macOS

  • 不支持 JS 渲染或付费墙文章

  • 无调度功能 — 按需生成

故障排除

  • /mcp 显示 distill 失败 — 检查 MCP 配置中 index.js 的绝对路径,并确保在 distill 目录中运行了 npm install。

  • “Could not extract readable content” — 页面可能被付费墙拦截或通过 JS 渲染。v1 版本不支持重试。

  • TTS 失败并提示“missing API key” — 在 .distill 中取消注释一行 TTS_PROVIDER= 并确保设置了对应的 *_API_KEY。

  • system TTS 失败并提示“requires ffmpeg or sox” — brew install ffmpeg。

Related MCP Connectors

Related MCP Servers