内容
Substack API MCP
<p align="center">
<img src="assets/claude-substack.jpg" alt="Claude + Substack" width="720" />
</p>
Substack 没有提供用于发布帖子的原生公共 API。
但是作者仍然需要一种方法来通过 AI 代理(Cursor、Claude 和其他 MCP 主机)起草、发布和安排帖子。**这就是通过任何代理发布到 Substack 的 MCP 服务器。**
**没有有效的 `APISUBSTACK_API_KEY`(`ask_*`)不会启动。 在此处获取 API 密钥: [apisubstack.com](https://apisubstack.com/).**
## 为什么存在
| 现实 | 我们构建的内容 |
|---|---|
| 没有官方的 Substack 作者写入/发布 API | 一个发布 MCP,以便代理可以创建草稿,现在发布和安排 |
| 作者居住在浏览器编辑器中 | 作者改为通过他们的代理发布 |
| Session-cookie 身份验证是当今的实际路径 | `substack.sid` + 您的出版物 URL,由 API Substack 密钥控制 |
## 示例
- [ignalex.substack.com](https://ignalex.substack.com/)
## 工具列表
| 工具 | 描述 |
|---|---|
| `test_connection` | 验证 `substack.sid` 并返回配置文件 |
| `create_post` | 创建草稿 / 立即发布 / 安排(+ 可选标签) |
| `get_draft` | 通过 ID 获取草稿 |
| `update_draft` | 更新草稿字段 |
| `publish_post` | 发布现有草稿 |
| `schedule_post` | 安排现有草稿 |
| `delete_draft` | 删除草稿 |
| `list_tags` | 列出出版物标签 |
| `create_tag` | 创建标签 |
| `set_tags` | 确保 + 附加标签 |
| `get_post_tags` | 列出帖子/草稿上的标签 |
## 安装
```bash
cd /path/to/Substack-API-MCP
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
```
## 身份验证环境变量
1. 在 [apisubstack.com](https://apisubstack.com/) 上登录,开始免费试用,生成一个 `ask_*` API 密钥。
2. 复制您的 Substack `substack.sid` cookie:
- 打开 Chrome 并登录到 Substack。
- 打开 DevTools → **应用程序** → **Cookie**。
- 选择 `https://substack.com`(或您的出版物主机,例如 `https://yourname.substack.com`)。
- 找到名为 `substack.sid` 的 cookie 并复制其 **值**。
3. 导出:
```bash
export APISUBSTACK_API_KEY="ask_YOUR_KEY"
export SUBSTACK_PUBLICATION_URL="https://yourname.substack.com"
export SUBSTACK_SID="YOUR_SUBSTACK_SID_VALUE"
# 可选
# export SUBSTACK_USER_ID="123456"
```
Cookie 过期。如果您遇到 `401/403` 错误,请刷新 `substack.sid` 并重试。
## 运行
```bash
substack-api-mcp
# 或
python -m substack_api_mcp
```
## Cursor / Claude 桌面配置
参见 `mcp.example.json`:
```json
{
"mcpServers": {
"substack-api": {
"command": "/ABSOLUTE/PATH/TO/Substack-API-MCP/.venv/bin/substack-api-mcp",
"args": [],
"env": {
"APISUBSTACK_API_KEY": "ask_YOUR_KEY",
"SUBSTACK_PUBLICATION_URL": "https://yourname.substack.com",
"SUBSTACK_SID": "YOUR_SUBSTACK_SID_VALUE"
}
}
}
}
```
使用绝对路径。在配置更改后重新启动主机。
## 许可证
自行承担风险。与 Substack 无关。构建它是为了让作者在 Substack 本身不提供原生发布 API 时,可以代理发布。