返回市场
子栈-MCP-增强版

子栈-MCP-增强版

作者:ty13r5 星标更新:2025-07-09

项目介绍

Substack MCP Plus

npm 版本 npm 下载量 许可证: MIT MCP Python 测试

最先进的 Substack MCP 服务器。 使用完整的富文本格式,在几分钟内创建可发布的帖子,管理草稿,安排帖子等——所有这些都可以通过 Claude Desktop 或任何兼容 MCP 的客户端完成。

📋 要求

  • Python 3.10 或更高版本
  • Substack 帐户凭据:
    • 邮箱和密码(推荐)
    • 或会话令牌和用户 ID
  • 支持模型上下文协议(MCP)的大型语言模型客户端
    • 此 MCP 服务器已使用 Claude Desktop 进行了彻底测试

⚠️ 重要免责声明

这是一个非官方工具,与 Substack Inc. 没有任何关联。

  • 我们未得到 Substack 的认可或与其有联系
  • 该工具使用非官方的 python-substack
  • Substack 不提供公共 API;此工具使用逆向工程的端点
  • 如果 Substack 更改其私有 API,功能可能会中断
  • 自行承担风险并遵守 Substack 的服务条款使用

→ 查看所有已知问题和限制

🚀 零配置设置

1. 安装包

npm install -g substack-mcp-plus

2. 使用 Substack 认证

substack-mcp-plus-setup

设置向导将:

  • 打开浏览器进行安全登录
  • 处理验证码挑战
  • 存储加密凭证
  • 测试您的连接

3. 配置 Claude Desktop

在您的 Claude Desktop 配置中添加:

{
  "mcpServers": {
    "substack-mcp-plus": {
      "command": "substack-mcp-plus",
      "env": {
        "SUBSTACK_PUBLICATION_URL": "https://yourpublication.substack.com"
      }
    }
  }
}

就这样!自动检测 Python,设置虚拟环境,并安装依赖项。

🌟 为什么选择 Substack MCP Plus?

查看详细的功能比较 →

✨ 无缝认证

  • 基于浏览器的设置 - 无需 API 密钥或复杂配置
  • 验证码支持 - 自动处理安全挑战
  • 安全令牌存储 - 加密本地存储,不在配置文件中存储密码
  • 魔法链接和密码认证 - 适用于任何 Substack 帐户类型

📝 无与伦比的内容创作

  • 完整的富文本支持 - 标题、粗体、斜体、列表、代码块、图片
  • 多种格式 - 可以用 Markdown、HTML 或纯文本写作
  • 智能格式化 - 自动转换为 Substack 的原生格式
  • 付费墙标记 - 轻松区分免费和高级内容

⚡ 雷霆般的快速发布

  • 30 秒内创建草稿 - “关于 X 创建一篇帖子” → Substack 中的草稿准备就绪
  • 即时发布 - “发布我最新的草稿” → 立即对订阅者公开
  • 无需切换上下文 - 在 Claude Desktop 中编写、编辑和发布
  • 批量操作 - 几分钟内创建多个帖子,而不是几个小时
  • 从想法到发布 - 以前需要 30-60 分钟的工作现在只需 2-3 分钟

🎯 12 个强大的工具

创建、更新、发布、复制帖子等。这是目前最全面的 Substack 自动化工具包。

🛠 可用工具

所有 12 个工具一览:

  1. create_formatted_post - 创建富文本草稿
  2. update_post - 编辑现有草稿
  3. publish_post - 立即发布
  4. list_drafts - 查看草稿帖子
  5. list_published - 查看已发布帖子
  6. get_post_content - 读取完整帖子内容
  7. duplicate_post - 复制现有帖子
  8. upload_image - 上传到 Substack CDN
  9. preview_draft - 生成预览链接
  10. get_sections - 列出出版物部分
  11. get_subscriber_count - 查看订阅者统计信息
  12. delete_draft - 安全删除草稿

💬 期待的结果示例

这里是一些您可以对 Claude Desktop 说的话以及每个工具将执行的操作:

创建内容

您说:“创建一篇关于人工智能和未来工作的新 Substack 草稿” 会发生什么: 创建一个包含您内容的草稿帖子,返回帖子 ID 和 URL Claude 显示:“我已经创建了一个标题为‘人工智能和未来工作’的草稿帖子(ID:123456)”

您说:“写一篇在介绍后有付费墙的文章” 会发生什么: 创建一个带有免费预览内容和由 <!--paywall--> 分隔的高级内容的草稿 Claude 显示:“带有付费墙标记的草稿已创建。免费读者可以看到介绍,订阅者可以访问全部内容。”

管理帖子

您说:“给我看看我的最后 5 个草稿” 会发生什么: 列出您最近的草稿帖子及其标题、ID 和日期 Claude 显示: 一个格式化的列表如下:

1. “人工智能和未来工作”(ID:123456)- 2 小时前创建
2. “每周通讯 #42”(ID:123455)- 昨天创建
3. “书评:深度工作”(ID:123454)- 3 天前创建

您说:“更新草稿 123456 的副标题为‘自动化如何重塑职业生涯’” 会发生什么: 更新指定草稿的副标题字段 Claude 显示:“已更新帖子副标题。注意:这将替换整个副标题字段。”

您说:“发布我最新的草稿” 会发生什么: 立即将草稿发布给您的订阅者 Claude 显示:“帖子已发布!现在可以在 https://yourpub.substack.com/p/ai-and-future-work 上查看。”

内容操作

您说:“显示我在远程工作方面的已发布文章的内容” 会发生什么: 获取并显示帖子的完整格式化内容 Claude 显示: 以可读的 Markdown 格式显示完整的帖子内容

您说:“复制我最受欢迎的文章作为模板” 会发生什么: 创建一个新的具有相同内容但标题为“复制的 [原始]”的草稿 Claude 显示:“已创建草稿‘复制的您的热门文章’(ID:123457)”

您说:“上传我桌面上的图表图像” 会发生什么: 将图像上传到 Substack 的 CDN 并返回 URL Claude 显示:“图像已成功上传:https://substackcdn.com/image/...”

分析与管理

您说:“我有多少订阅者?” 会发生什么: 获取您当前的订阅者数量 Claude 显示:“您在 https://yourpub.substack.com 上有 1,234 名订阅者”

您说:“我的出版物有哪些部分?” 会发生什么: 列出您出版物的所有部分/类别 Claude 显示:“您的出版物有这些部分:通讯、论文、书评、播客”

您说:“为草稿 123456 生成预览链接” 会发生什么: 创建仅作者可见的预览链接用于分享 Claude 显示:“预览链接:https://yourpub.substack.com/p/ai-and-future-work?preview=true”

您说:“删除我之前创建的那个测试草稿” 会发生什么: 请求确认,然后永久删除草稿 Claude 显示:“您确定要删除‘测试帖子’吗?请确认。”

重要注意事项

  • 创建帖子时,所有格式(粗体、斜体、列表、代码块)都会被保留
  • 工具会自动处理认证 - 无需手动管理令牌
  • 草稿帖子会立即保存,并且可以在 Substack 的 Web 编辑器中编辑
  • 发布的帖子会立即对所有订阅者公开

💭 我们为什么要构建这个

“太多的想法,很少的时间来真正发布它们。”

我是一个产品人员,脑子里充满了无数的想法。在大型语言模型出现之前,写作是瓶颈。现在,有了 Claude 和 ChatGPT 在几分钟内就能生成详细的长篇文章,我意识到发布已经成为新的约束

旅程

在花了 2-3 个小时尝试设置现有的 Substack MCP 服务器(包括从浏览器开发者工具中窃取会话令牌!)之后,我们终于让它运行起来。我们非常兴奋……直到我们试图发布我们的第一篇帖子。

所有的格式都消失了。只有纯文本。

我们的希望破灭了,但正是这种失望带来了决心。为什么没有人基于经过实战考验的 python-substack 库进行构建?这就是我们的机会。

实验

作为一个自 2018 年以来就没有编写过生产代码的人,我想测试一个理论:AI 代理能否在适当的规划和测试驱动开发下构建高质量的生产软件?

答案是肯定的。使用 Claude Code 和严格的测试驱动开发:

  • 先编写失败的测试
  • 实现代码以通过这些测试
  • 没有幻觉,没有重大错误
  • 我就像“霍默·辛普森在运行核电站一样”

结果是什么? 在不到 24 小时内,我们构建了目前可用的最强大的 Substack MCP 服务器。而且我没有编写一行代码。

我们的愿景

这不仅仅是一个工具。它关乎:

  • 赋能创作者 无摩擦地发布想法
  • 激励开发者 在这个基础上构建
  • 证明可能 通过 AI 辅助开发
  • 设定标准 对于发布自动化应该是什么样子

因为当发布变得无摩擦时,想法就会自由流动。

→ 阅读我们的完整愿景 | → 查看开发路线图

📚 文档

对于详细的指南和文档,请参阅 docs 目录

📝 已知限制

→ 查看详细文档 KNOWN_ISSUES.md

格式和显示

  • 文本格式 显示为 Markdown 语法(**粗体***斜体*)而不是格式化文本
  • 链接 显示为 [文本](URL) 而不是可点击的链接
  • 图片 可能显示为 ![alt](URL) 而不是渲染的图片
  • 引用 显示带有 > 前缀而不是样式化的块

API 和功能限制

  • 没有速率限制 - 注意 Substack 的未记录的 API 限制
  • 订阅者计数 即使有活跃订阅者也可能显示为 0(API 限制)
  • 帖子调度 在 v1.0.3 中由于过时的 API 端点(404 错误)而被移除
  • 预览链接 是仅作者可见的(共享链接需要 UUID 访问,不可用)

未支持的功能

  • 没有协作帖子、线程或播客剧集
  • 除了订阅者计数之外没有分析(浏览次数、打开次数、互动)
  • 没有自定义 CSS、JavaScript 或嵌入内容(推文、视频)
  • 最大帖子大小限制未记录

技术限制

  • 使用 非官方逆向工程的 API,可能会在未经通知的情况下更改
  • python-substack 库 已超过两年未更新
  • 会话令牌过期需要重新认证
  • 部分具有高级安全性的帐户可能会出现问题

解决方法:使用此工具创建草稿,然后在发布前使用 Substack 的 Web 编辑器进行最终格式调整。

🔒 安全最佳实践

保护您的凭证

  1. 永远不要将您的 .env 文件提交 到版本控制中

    • 使用提供的 .env.example 作为模板
    • 创建自己的 .env 文件并填写实际凭证
    • .env 文件已经在 .gitignore 中以保护您
  2. 使用强且唯一的密码

    • 不要在其他地方重复使用您的 Substack 密码
    • 考虑使用密码管理器
    • 如果可用,请在您的 Substack 帐户上启用双因素身份验证
  3. 定期轮换凭证

    • 定期更改您的 Substack 密码
    • 如果使用会话令牌,请在过期时刷新它们
    • 如果怀疑凭证已被泄露,请立即更改

安全配置

配置您的 MCP 客户端时:

  • 将凭证存储在环境变量中,而不是在代码中
  • 使用最严格的文件权限配置文件
  • 避免日志或打印凭证
  • 分享配置示例时要谨慎

报告安全问题

发现安全漏洞?请不要创建公开问题。相反:

  1. 查看我们的 SECURITY.md 文件获取报告指南
  2. 私下报告以维护负责任的披露
  3. 在公开披露前允许时间修复

更多安全信息,请参阅我们的 安全策略

🎨 格式示例

标题和文本样式

# 主标题 (H1)
## 部分标题 (H2)
### 子部分 (H3)

常规文本带有 **粗体**,*斜体* 和 ***粗斜体*** 格式。

列表

无序列表:
- 第一项
- 第二项
- 第三项

有序列表:
1. 第一步
2. 第二步
3. 第三步

代码块

```python
def greet(name):
    return f"Hello, {name}!"
```

链接和图片

[访问我的网站](https://example.com)

![替代文本](https://example.com/image.jpg "可选标题")

付费墙标记

免费内容在这里...

<!--paywall-->

高级内容在这里...

🧪 开发

运行测试

# 运行所有测试
pytest

# 运行带覆盖率的测试
pytest --cov=src

# 运行特定测试文件
pytest tests/unit/test_markdown_converter.py

代码格式化

# 格式化代码
black src tests

# 类型检查
mypy src

📦 项目结构

substack-mcp-plus/
├── src/
│   ├── converters/      # 格式转换器(Markdown → Substack JSON)
│   ├── handlers/        # API 处理程序(认证、帖子、图片)
│   ├── tools/           # MCP 工具实现
│   └── server.py        # 主 MCP 服务器
├── tests/
│   ├── unit/           # 组件单元测试
│   └── integration/    # 端到端工作流测试
└── pyproject.toml      # 项目配置

🤝 贡献

我们欢迎贡献!请查阅:

快速步骤:

  1. TODO.md 中找到一个任务或创建一个问题
  2. 分叉仓库
  3. 创建一个功能分支(git checkout -b feature/amazing-feature
  4. 先编写测试(要求 TDD)
  5. 实现您的功能
  6. 运行测试确保一切通过
  7. 提交您的更改(git commit -m '添加精彩功能'
  8. 打开一个拉取请求

📄 许可证

本项目根据 MIT 许可证授权 - 详情见 LICENSE 文件。

🙏 致谢