关于 Substack Publisher MCP
Substack Publisher MCP 将 MCP 客户端连接到 Substack 官方 Publisher API,以只读方式查询出版物和订阅者数据。它支持多个出版物,可搜索文章、读取内容与互动数据,并查询订阅者。
主要功能
- 01列出出版物和已发布文章
- 02搜索并读取文章内容
- 03查看文章互动统计
- 04获取订阅者数量和记录
- 05选择已配置的出版物
适用场景
- 01按主题或日期查找文章
- 02查看打开、点击和浏览数据
- 03跟踪订阅者数量变化
- 04通过邮箱查询订阅者
MCP 相关
向 Claude、Cursor 等 MCP 客户端提供只读工具,用于查询 Substack 官方 Publisher API。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
substack-publisher-mcp
Substack 官方 Publisher API 的 MCP 服务
**注意:**这是一个非官方的社区开发工具,与 Substack, Inc. 无关,未获其认可或支持。
一个用于 Substack 官方 Publisher API 的 MCP 服务。通过 Claude、Cursor 或任何 MCP 客户端搜索和阅读文章、获取文章分析数据和订阅者数量,以及查询订阅者。所有工具均为只读。

为什么选择此服务?
| substack-publisher-mcp | 其他 Substack MCP 服务 | |
|---|---|---|
| API | 官方 Publisher API | 非官方内部 API |
| 身份验证 | API 密钥(稳定) | 浏览器 Cookie(脆弱) |
| 稳定性 | 官方且有文档说明的 API | Substack 更改内部实现时会失效 |
| 多出版物 | 内置支持 | 不支持 |
先决条件
- Node.js 22+。 使用
node --version检查;如果尚未安装,请从 nodejs.org 安装。 - Substack Publisher API 密钥。 在你的出版物 Substack 控制面板中生成。如果那里没有 Publisher API 选项,可能是你的出版物尚未启用该功能;请查看 Publisher API 文档了解是否可用。
快速开始
1. 安装
git clone https://github.com/dkships/substack-publisher-mcp.git
cd substack-publisher-mcp
npm install && npm run build
2. 配置 MCP 客户端
将以下内容添加到客户端的 MCP 配置文件中(如果文件不存在,请创建该文件):
| 客户端 | 配置文件 |
|---|---|
| Claude Desktop(macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop(Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Code | 项目目录中的 .mcp.json |
| Cursor | .cursor/mcp.json |
{
"mcpServers": {
"substack": {
"command": "node",
"args": ["/path/to/substack-publisher-mcp/dist/index.js"],
"env": {
"SUBSTACK_API_KEY": "your-api-key-here"
}
}
}
}
**Claude Code 用户:**在服务配置中添加
"type": "stdio"。
编辑配置后,重启 MCP 客户端——服务会在启动时加载。
3. 开始使用
向 Claude(或你的 MCP 客户端)提问:
- “我配置了哪些 Substack 出版物?”
- “显示我上个月的文章”
- “查找我关于定价的文章”
- “打开 slug 为 my-latest-post 的文章”
- “我最新的文章有多少次打开和点击?”
- “过去 30 天的订阅者数量是多少?”
- “查询订阅者 [email protected]”
通过 AI Agent 或注册表安装?请查看 llms-install.md,了解精简的机器可读设置指南。
工具
| 工具 | 说明 | 关键参数 |
|---|---|---|
list_publications | 列出已配置的出版物 | 无 |
list_posts | 列出已发布的文章 | startDate、endDate、sortBy、type、maxResults、next |
search_posts | 对已发布的文章进行全文搜索 | query(必填)、maxResults(1-100) |
get_post | 根据 URL slug 获取文章及其正文 | urlSlug(必填)、bodyFormat |
get_post_stats | 获取文章的互动数据 | urlSlug(必填) |
get_subscriber_counts | 按类型获取每日订阅者数量 | startDate、endDate |
get_subscriber | 通过电子邮件查询订阅者 | email(必填) |
除 list_publications 外,如果配置了多个出版物,所有工具都接受可选的 publication 参数。
默认情况下,get_post 以 Markdown 格式返回文章正文。Substack 会将正文作为 JSON 编码的 ProseMirror 文档发送,通常大小约为 Markdown 的两倍。传入 bodyFormat: "prosemirror" 可获取原始文档,传入 "none" 则仅获取元数据。
日期筛选条件使用 YYYY-MM-DD 格式。在 list_posts 中,endDate 不包含在内;在 get_subscriber_counts 中则包含在内。
示例响应
get_subscriber_counts
[
{
"date": "2025-01-15",
"total_email_subscribers": 25000,
"paid_subscribers": 500,
"free_trial_subscribers": 10,
"comp_subscribers": 50,
"gift_subscribers": 15,
"lifetime_subscribers": 0,
"founding_subscribers": 25
}
]
get_post_stats
{
"clicks": 320,
"opens": 5400,
"post_id": 12345678,
"recipients": 10000,
"views": 6100,
"new_free_subscriptions": 80,
"new_paid_subscriptions": 5,
"estimated_revenue_increase": 400
}
list_posts
{
"posts": [
{
"post_id": 12345678,
"title": "My Latest Post",
"audience": "only_paid",
"subtitle": "A deep dive into the topic",
"postDate": "2025-01-15T12:00:00.000Z",
"urlSlug": "my-latest-post",
"coverImage": "https://substackcdn.com/image/..."
}
],
"next": "abc123cursor"
}
最后一页的 next 为 null。
多个出版物
如果你管理多个 Substack 出版物,请使用 SUBSTACK_API_KEY_<NAME> 模式为每个出版物配置单独的 API 密钥:
{
"mcpServers": {
"substack": {
"command": "node",
"args": ["/path/to/substack-publisher-mcp/dist/index.js"],
"env": {
"SUBSTACK_API_KEY_MAIN": "your-main-blog-key",
"SUBSTACK_API_KEY_TECH": "your-tech-newsletter-key",
"SUBSTACK_API_KEY_COMPANY": "your-company-updates-key"
}
}
}
}
然后指定要查询的出版物:
“显示 main 的订阅者数量” “列出 tech 出版物的近期帖子”
使用 list_publications 查看所有已配置的出版物名称。
故障排除
| 问题 | 解决方案 |
|---|---|
Unauthorized 错误 | 确认 API 密钥正确。密钥直接放在 authorization 标头中,无需 Bearer 前缀。 |
启动时出现 ... duplicates publication ... 或 ... ignoring it | 两个环境变量映射到了同一个出版物名称(名称不区分大小写,且 SUBSTACK_API_KEY 对应 default),或者密钥格式错误。请重命名或移除多余的变量。 |
| 服务无法启动 | 确保克隆后运行了 npm run build。服务从 dist/ 而非 src/ 运行。 |
No API keys configured | 在 MCP 客户端配置中设置 SUBSTACK_API_KEY 或 SUBSTACK_API_KEY_<NAME>。 |
| 客户端中未显示服务 | 检查配置文件是否为有效的 JSON(末尾不能有逗号),然后重启客户端。 |
command not found / spawn node ENOENT | 未安装 Node.js,或 Node.js 不在 PATH 中。请检查 node --version。 |
| 仍无法解决 | 查看客户端的 MCP 日志。macOS 上的 Claude Desktop:~/Library/Logs/Claude/mcp*.log。 |
API 参考
此服务封装了 Substack Publisher API。有关可用数据和速率限制的详情,请参阅 Substack 文档。
贡献
请参阅 CONTRIBUTING.md 了解相关指南。
许可证
MIT 许可证。详情请参阅 LICENSE。
Substack 是 Substack, Inc. 的商标。本项目与 Substack, Inc. 无关。使用 Substack 名称仅用于描述目的。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。