关于 PostPulse
PostPulse 是通过 PostPulse 平台管理社交账号和帖子的 MCP 服务。支持在 10 个社交平台排期发布、上传媒体、连接账号,以及查询帖子状态和指标。
主要功能
- 01在 10 个平台排期发布帖子
- 02通过 URL 或数据上传图片和视频
- 03列出并连接社交账号
- 04查询帖子状态、链接和指标
- 05使用 OAuth 2.0 身份验证
适用场景
- 01向已连接的社交账号排期发布帖子
- 02为计划发布的帖子上传媒体
- 03重新连接需要授权的账号
- 04查看发布结果和帖子指标
MCP 相关
通过托管或自托管的服务将 MCP 客户端连接到 PostPulse。提供账号管理、媒体上传、排期发布和帖子查询工具,以及账号资源;使用 OAuth 2.0 身份验证。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.post-pulse.comclaude mcp add --transport http postpulse https://mcp.post-pulse.com{"mcpServers":{"postpulse":{"type":"http","url":"https://mcp.post-pulse.com"}}}在 Cursor 中打开{"servers":{"postpulse":{"type":"http","url":"https://mcp.post-pulse.com"}}}在 VS Code 中打开{"mcpServers":{"postpulse":{"type":"http","url":"https://mcp.post-pulse.com"}}}{"mcpServers":{"postpulse":{"serverUrl":"https://mcp.post-pulse.com"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
PostPulse MCP Server
一个 MCP(Model Context Protocol)服务,可将 AI 助手连接到 PostPulse——一个社交媒体管理平台。通过自然语言安排帖子发布时间、上传媒体,并管理 Instagram、Facebook、YouTube、TikTok、Threads、LinkedIn、Pinterest、X(Twitter)、Bluesky 和 Telegram 上的账户。
功能
- 多平台发帖 — 通过单一界面为 10 个社交媒体平台安排帖子发布时间
- 媒体管理 — 通过 URL 或二进制数据上传图片和视频,用于帖子
- 账户管理 — 列出并管理所有已连接的社交媒体账户
- 查看帖子 — 按日期范围列出帖子,并查看每个平台上的帖子状态、公开链接、错误和指标
- 在聊天中连接社交账户 — 获取安全链接,无需打开 PostPulse 应用即可连接或重新连接账户
- OAuth 2.0 身份验证 — 通过基于 Auth0 的令牌验证安全访问
- 可流式 HTTP 传输 — 现代 MCP 传输协议,确保通信可靠
支持的平台
| 平台 | 发布位置 | 内容类型 | 要求 |
|---|---|---|---|
| Feed、Reels、Stories | 图片、视频 | 商业账户 | |
| Feed、Reels、Stories | 图片、视频 | 公共主页 | |
| YouTube | 视频、Shorts | 视频 | 频道 |
| TikTok | 视频、轮播 | 图片、视频 | 账户 |
| Threads | 帖子 | 图片、视频 | 账户 |
| 帖子 | 图片、视频 | 个人账户 | |
| Pin | 图片、视频、轮播(2–5 张图片) | Board | |
| X (Twitter) | 帖子 | 图片、视频 | 账户 |
| Bluesky | 帖子 | 图片 | 账户 |
| Telegram | 消息 | 文本、图片、视频 | 频道/聊天 |
快速开始
托管服务(推荐)
PostPulse 在 https://mcp.post-pulse.com 提供托管的 MCP 服务——无需进行任何设置。将 MCP 客户端指向此 URL,并通过 OAuth 进行身份验证。
MCP 客户端配置示例:
{
"mcpServers": {
"postpulse": {
"url": "https://mcp.post-pulse.com"
}
}
}
通过 Smithery 安装
你也可以通过 Smithery 安装:
npx -y @smithery/cli install post-pulse/mcp-server --client claude
自行托管
如果你更希望自行运行服务:
- 克隆代码库:
git clone https://github.com/PostPulse/mcp-server-postpulse.git
cd mcp-server-postpulse
- 安装依赖并构建:
npm install
npm run build
- 启动服务:
npm start
也可以使用 Docker:
docker build -t mcp-server-postpulse .
docker run -p 3000:3000 mcp-server-postpulse
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
HOST | 0.0.0.0 | 服务绑定地址 |
PORT | 3000 | 服务端口 |
PUBLIC_URL | — | 面向公众的 URL(用于 OAuth 元数据发现) |
POSTPULSE_AUTH_ISSUER | https://auth.post-pulse.com/ | Auth0 颁发者 URL |
POSTPULSE_AUTH_US_JWKS_URI | https://dev-yb150m5gz2ss41sl.us.auth0.com/.well-known/jwks.json | 美国 Auth0 租户的 JWKS;留空则停用美国密钥集 |
POSTPULSE_AUTH_US_ISSUERS | POSTPULSE_AUTH_ISSUER 的值 | 以逗号分隔的可信美国密钥颁发者 |
POSTPULSE_AUTH_EU_JWKS_URI | — | 欧盟 Auth0 租户的 JWKS;留空则停用欧盟密钥集 |
POSTPULSE_AUTH_EU_ISSUERS | — | 以逗号分隔的可信欧盟密钥颁发者 |
POSTPULSE_AUDIENCE | https://api.post-pulse.com | API 受众 |
POSTPULSE_API_URL | https://api.post-pulse.com | PostPulse API 基础 URL |
REDIS_URL | — | 用于会话/事件持久化的 Redis 连接 URL(必需) |
工具
list_accounts
列出所有已连接的社交媒体账号及其 ID、平台、用户名和显示名称。在安排帖子或访问聊天前,先使用此工具发现可用账号。
**参数:**无
**返回:**账号对象的 JSON 数组(id、platform、username、name、needsReauthorization)。新用户尚无账号:结果为 [],并附带使用 connect_account 的提示。needsReauthorization: true 的账号必须先通过 connect_account 重新连接,才能发布帖子;结果会在第二个文本块中列出这些账号。
connect_account
获取安全的 PostPulse 链接,可直接在聊天中将社交媒体账号连接(或重新连接)到 PostPulse。用户在任意浏览器中打开链接后,会进入 PostPulse 页面,该页面会显示此社交媒体账号将关联到哪个 PostPulse 账号(邮箱地址经遮盖)。用户点击 Continue 并在平台上批准访问权限后,页面会显示“账号已连接 — 请返回聊天”。此工具不会等待连接完成:用户表示操作完成后,调用 list_accounts 确认账号已连接。
参数:
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
platform | string | 二选一 | INSTAGRAM、FACEBOOK、YOUTUBE、TIKTOK、THREADS、LINKEDIN、X_TWITTER、BLUE_SKY、TELEGRAM、PINTEREST |
accountId | number | 二选一 | 重新连接现有账号(从 list_accounts 获取,通常是 needsReauthorization: true 的账号)。平台类型取自该账号 |
行为:
- 对于新连接,工具会先检查用户是否可以添加账号(套餐或额度)。如果不可以,会返回原因和账单页面链接。
- 链接只能使用一次,与用户的 PostPulse 账号绑定,有效期为 24 hours;只有用户在页面上点击 Continue 后,平台授权流程才会开始。不得分享此链接:完成连接的人会将自己的社交媒体账号关联到此 PostPulse 账号。
- 如果短时间内请求了过多链接,工具会提示等待几分钟后重试。
- Telegram 无法通过链接连接:工具会返回前往 https://post-pulse.com/app/accounts 连接的说明。
- 新建 Facebook 连接时,每个所选 Page 都会创建一个
FACEBOOK_PAGE账号:可直接向其发布帖子,无需调用list_chats。对于TELEGRAM和重新连接的FACEBOOK账号,之后需要调用list_chats选择频道或 Page。 - 支持 URL 模式 elicitation 的客户端还会显示原生的“打开此链接”对话框;文本结果中始终也会包含该链接。
- 在浏览器中发生的错误(账号数量限制、账号已被其他 PostPulse 用户使用、链接已过期)会显示在页面上,而不会由工具返回。
list_chats
列出具有子目的地的账号的发布目的地。Facebook 账号发布到 Pages,Telegram 账号发布到 频道或聊天,Pinterest 账号发布到 画板。在这些平台上安排帖子前,请先调用此工具——在 schedule_post 中将返回的 id 用作 facebookPageId、telegramChannelId 或 pinterestBoardId。
仅支持平台为 FACEBOOK、TELEGRAM 或 PINTEREST 的账号。其他平台(包括代表单个 Page 的账号 FACEBOOK_PAGE)没有子目的地,应直接向其发布帖子。
参数:
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
accountId | number | 是 | 从 list_accounts 获取的账号 ID |
**返回:**目的地对象的 JSON 数组(id、title、type、platform)。
upload_media
上传媒体文件(图片、视频),以供已排期的帖子使用。支持两种模式:从公开 URL 导入(自动处理),或直接以 base64 上传二进制数据。返回一个媒体键,可在 schedule_post 中引用。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
mediaUrl | string | 否 | 要导入的媒体文件的公开 URL |
mediaData | string | 否 | 以 base64 编码的媒体文件内容 |
mediaType | string | 否 | MIME 类型(例如,image/jpeg、video/mp4)。使用 mediaData 时必填 |
mediaName | string | 否 | 上传媒体的文件名 |
必须提供 mediaUrl,或同时提供 mediaData 和 mediaType。
schedule_post
将社交媒体帖子排期到一个或多个已连接的账号。支持平台专属选项,例如发布类型(动态、短视频、快拍)、视频标题和话题标签。帖子使用 ISO-8601 时间戳排期到未来时间。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
accountId | number | 是 | 来自 list_accounts 的账号 ID |
platform | string | 是 | 目标平台:INSTAGRAM、FACEBOOK、TELEGRAM、YOUTUBE、TIKTOK、THREADS、LINKEDIN、PINTEREST、X_TWITTER、BLUE_SKY |
content | string | 否 | 帖子文本/说明文字 |
mediaPaths | string[] | 否 | upload_media 返回的媒体键 |
scheduledTime | string | 是 | ISO-8601 时间戳(例如,2025-01-15T10:00:00Z) |
facebookPageId | string | 是(Facebook) | 来自 list_chats 的 Facebook 公共主页 ID。平台为 FACEBOOK 时必填 |
telegramChannelId | string | 是(Telegram) | 来自 list_chats 的 Telegram 频道/聊天 ID。平台为 TELEGRAM 时必填 |
pinterestBoardId | string | 是(Pinterest) | 来自 list_chats 的 Pinterest 画板 ID。平台为 PINTEREST 时必填 |
publicationType | string | 否 | FEED、REELS 或 STORY(Instagram/Facebook,默认为 FEED) |
title | string | 否 | 视频标题(YouTube、TikTok)或 Pin 标题(Pinterest,最多 100 个字符) |
topicTag | string | 否 | 话题标签(Threads) |
link | string | 否 | 点击 Pin 时打开的目标 URL(Pinterest) |
altText | string | 否 | Pin 图片的替代文本(Pinterest) |
boardSectionId | string | 否 | 画板中的分区(Pinterest) |
list_posts
按日期范围(根据排期时间)列出已排期或已发布的帖子,按时间从早到晚排列:ID、整体状态、排期时间、平台和文本。该 API 不支持分页,因此单次调用最多覆盖 93 天;更长的时间段需拆分为多次调用。未设置排期时间的草稿不会列出。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
fromDate | string | 是 | ISO-8601 日期(2026-10-01,该 UTC 日期的起始时间)或时间戳 |
toDate | string | 是 | ISO-8601 日期(2026-10-31,该 UTC 日期的结束时间)或时间戳 |
platform | string | 否 | 仅列出此平台的帖子,平台名称以 list_accounts 返回值为准 |
status | string | 否 | DRAFT、SCHEDULED、AWAITING_MEDIA、MEDIA_IMPORT_FAILED、IN_PROGRESS、COMPLETED、FAILED 或 PARTIALLY_COMPLETED |
get_post
获取一条帖子及其在每个账号上的结果:平台、状态、已发布帖子的公开链接(url)、平台帖子 ID、错误消息、文本、附加媒体(文件名和类型),以及 PostPulse 最新的指标:
impressions、engagements、likes、shares、comments和profileClicks,这些指标适用于所有平台。平台未报告的指标为null;lastUpdatedTime;platformAnalytics:平台针对该帖子的自有分析数据,使用平台的字段名称,例如 TikTok 上的view_count,或 Threads 上的views和quotes。字段取决于平台和帖子类型,因此不要期待固定的字段集合。平台未报告任何数据时,该值为null。
每次调用都会从平台刷新已发布帖子的指标。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
postId | number | 是 | 来自 list_posts 或 schedule_post 的帖子 ID |
资源
postpulse://accounts
一个 MCP 资源,提供所有已连接社交媒体账号的列表。以 JSON 格式返回与 list_accounts 工具相同的数据,包括 needsReauthorization。
身份验证
此服务使用 Auth0 提供的 OAuth 2.0。OAuth 元数据可通过 /.well-known/oauth-protected-resource 和 /.well-known/oauth-authorization-server 发现。
无需现有的 PostPulse 账号:通过 MCP 客户端登录(使用 Google 或无密码电子邮件验证码)即可在首次使用时创建 PostPulse 账号。随后,用户可通过 connect_account 连接社交账号。
动态客户端注册(DCR)
支持 OAuth 的 MCP 客户端可以通过动态客户端注册(RFC 7591)自动注册。服务会在其 OAuth 元数据中公布 registration_endpoint,因此符合规范的客户端(例如 Claude Desktop、Cursor 等)会处理整个 OAuth 流程——注册、授权和令牌交换——用户无需进行任何手动设置。
预注册的客户端凭据
如果你已通过 PostPulse Developer Portal 创建客户端凭据,可以将 MCP 客户端配置为直接使用这些凭据,而非使用 DCR。在针对 PostPulse 授权服务器的 OAuth 授权码流程中,传入你的 client_id 和 client_secret。
HTTP 端点
| 路径 | 用途 |
|---|---|
POST /、POST /sse | MCP Streamable HTTP 传输(初始化 + 消息),需要 Bearer 令牌 |
带有 Mcp-Session-Id 的 GET /、GET /sse | 现有会话的 SSE 流 |
带有 Accept: text/html 的 GET /、GET /sse | 面向浏览器和爬虫的简易落地页(链接到设置指南和 API 文档)。没有会话时,任何其他 Accept 请求仍会得到 400 |
GET /health | 健康检查(ok) |
GET /robots.txt | User-agent: * / Disallow: / — 此主机不是网站 |
GET /.well-known/* | OAuth 元数据和 Smithery 服务卡片 |
| 其他所有路径 | 404({"error":"Not found"} 或面向 HTML 客户端的纯文本) |
每个响应都带有 X-Robots-Tag: noindex, nofollow,确保搜索引擎不会将此主机编入索引。
示例工作流
与 PostPulse MCP 服务的典型交互:
- 列出账号,查找已连接的社交媒体个人资料
- 连接账号(如果缺少相应平台),使用
connect_account - 上传媒体(可选),准备图片或视频
- 安排帖子,添加内容、媒体和未来的发布时间
User: "Schedule an Instagram reel for tomorrow at 9am with the video at https://example.com/video.mp4 and caption 'Check this out!'"
首次运行(新用户)
User: "Post 'Hello LinkedIn!' to my LinkedIn tomorrow at 10:00 UTC"
Assistant: list_accounts → [] ("No social accounts are connected yet")
connect_account(platform: LINKEDIN) → link
"Open this link, check the PostPulse account on the page, approve access on LinkedIn, then tell me when you are done."
User: "Done"
Assistant: list_accounts → [{ id: 123, platform: LINKEDIN, ... }]
schedule_post(accountId: 123, platform: LINKEDIN, content: "Hello LinkedIn!", scheduledTime: ...)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。