关于 pendpost
pendpost 是面向开发者、代理机构和技术型个体经营者的本地优先社交媒体规划器。AI Agent 可起草、检查和安排多平台内容,但必须经人工批准后才能发布。
主要功能
- 01跨社交平台起草与排期
- 02人工审批发布门槛
- 03品牌规则与文案检查
- 04发布节奏熔断与暂停
- 05本地运行并提供网页面板
适用场景
- 01安排多个社交平台的营销活动
- 02让 Agent 起草内容并由人员审核
- 03按品牌规则检查社交文案
MCP 相关
pendpost 通过 stdio 和 streamable-HTTP 提供 MCP 服务,供兼容客户端调用。其工具覆盖内容规划、检查、审批、排期和发布,且写入操作遵循人工审批门槛。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
pendpost
由 Agent 操作的社交媒体,并设有人类审批关卡。
pendpost 是一款免费、开源(MIT)、本地优先的社交媒体规划工具,AI Agent 可借助它在 Instagram、Facebook、LinkedIn、YouTube、X、Telegram、Discord、Mastodon 和 Nostr 上起草并安排帖子,也可在 WordPress 和 Ghost 上发布长篇博客;Reddit、Pinterest、TikTok 和 Google Business Profile 目前处于 Beta 阶段。所有内容都须通过由你掌控的人类审批关卡。它原生支持 MCP:AI Agent 可以起草、检查、安排并将帖子加入队列,但只有经过人工审批,内容才会发布。它专为开发者、代理机构和技术型独立创业者打造,让 Agent 代劳,却不必把账号控制权交给它们,也不必担心账号被标记。
pendpost 的不同之处(不只是排程工具)
大多数“AI 社交媒体”工具都是在排程工具上附加了 Agent。pendpost 则恰恰相反。它是一个围绕 Agent 与人工协作工作流设计的运营层,提供了排程工具所不具备的功能:
- 人工审批关卡。 每条帖子都有审批状态(
draft、approved、rejected),并采用默认拒绝策略:未经审批的帖子不会发布。plan_create_post始终会创建草稿,只有approve_post或reject_post能更改其状态。帖子在获批前绝不会发布。默认情况下由你审批;自动审批仅限所有者使用,且可随时撤销。 - 防封号断路器。 遇到 Meta 错误 368(操作受限)时,断路器会触发并停止 Meta 通道,且绝不会自动恢复,因为 368 不包含机器可读的解除时间。通道受阻期间,健康探测不会发送任何 Graph 流量。频率上限会延后突发操作,而非丢弃;你也可以随时使用通道暂停紧急开关。
- 文风检查。 发布前会根据
rules.json中可编辑的规则检查文案。文风检查层会标记英文 AI 写作的典型特征。错误会阻止发布;警告仅供参考。 - 如实说明原生排程。 对于支持原生排程的平台(YouTube 的
publishAt、Mastodon、WordPress、Ghost),pendpost 会将帖子交给平台自带的排程工具,因此即使你的电脑关机,帖子也会按时发布。Instagram、Facebook、LinkedIn 和 X 上的帖子则由 pendpost 在指定时间发布:启用可选的全天候云服务后由该服务发布;否则,在 pendpost 运行期间由你的电脑发布,或由常开主机发布。它会如实说明各平台实际支持哪些封面和缩略图机制。 - 双界面。 Web 控制面板和任意 MCP 客户端都通过同一套契约操作。奇偶一致性测试会确保每项功能都同时提供给两种界面。
- 德语和瑞士本地化。 控制面板、摘要和通知可使用英语或地道的瑞士德语(
de-CH,采用规范的变音符号和瑞士 24 小时制日期格式);可在 Settings 中设置语言。请参阅本地化文档。
快速开始
一行命令,无需设置:
npx pendpost
# then open http://127.0.0.1:8090
无需账户,无需注册——pendpost 在本地运行并立即启动。你可以马上起草、审批并安排完整的营销活动;首次运行会在 data/plans 中生成示例营销活动“Acme Launch”,让你立即看到实际内容。准备好发布时,再在 Setup 中连接平台;在此之前,渠道处于已启用但未认证状态,因此发布会等待连接,而不会弄虚作假。
更喜欢 git 或 docker?
# git
git clone https://github.com/pendpost/pendpost pendpost
cd pendpost
npm start # or: node bin/pendpost.mjs (builds the dashboard on first run)
# then open http://127.0.0.1:8090
# docker
docker compose up
# then open http://127.0.0.1:8090
控制面板
规划器和审批队列是你日常使用的两个界面:在左侧起草并安排发布时间,在右侧审批或拒绝。右侧的任何内容都不能自行通过审批。
| 规划器 | 审批队列 |
|---|---|
![]() | ![]() |
MCP 客户端
最简单的方式会自动启动:pendpost 通过原生 stdio 使用 MCP,因此客户端会为你启动服务——无需预先启动任何内容。
Claude Desktop(一键安装):安装附在每个 GitHub 版本中的 pendpost .mcpb 捆绑包。它会自动启动 npx -y pendpost --stdio,并在同一进程中打开审批面板。
任何 stdio MCP 客户端:
{
"mcpServers": {
"pendpost": { "command": "npx", "args": ["-y", "pendpost", "--stdio"] }
}
}
高级 / 开发者(HTTP 传输):pendpost 也通过 /mcp 提供可流式 HTTP 上的 MCP。需要先通过 npx pendpost 运行服务:
claude mcp add --transport http pendpost http://127.0.0.1:8090/mcp
AI 辅助设置(Claude for Chrome)
要在真实平台上开始使用,需要在每个服务商的门户中创建开发者应用,并完成一次 OAuth 授权流程。pendpost 让 Agent 可以驱动此过程:在控制面板 Setup 页面中,每张未完成的卡片上都有一个 Copy AI prompt 按钮,可复制一条可直接粘贴且安全处理机密信息的提示词,供 Claude for Chrome 为对应平台操作门户。你需要在每个登录 / 授权关卡进行身份验证,凭证由 CLI 在本地生成——绝不会经过 Agent 或聊天。AGENTS.md 中记录了适用于任何 Agent 的相同设置约定。
MCP 工具的作用
每项功能都是一个 MCP 工具,控制面板也会与之对应。只读工具绝不会发布内容;写入工具会创建草稿,并受上述审批规则约束。按功能分组如下:
- 读取和检查:
plan_list、plan_get、account_status、assets_list、activity_log、validate_media、platform_validate、pendpost_health、publish_preview、brand_lint、generate_digest、config_get、clients_overview。 - 创作:
plan_create_post、plan_update_post、plan_delete_post、campaign_create、campaign_set_active。 - 审批(人工把关):
approve_post、reject_post。内容在获批前不会发布;默认由你审批。 - 安排时间和发布:
scheduler_set、publish_due_run、reschedule、unschedule、mark_posted、verify_post。 - 封面和资源:
set_cover、clear_cover、asset_upload、rename_asset、delete_asset。 - 洞察和安全:
fetch_insights、token_refresh、pendpost_record_block、health_recheck、meta_lane_set。 - 配置和客户端:
config_set、client_create、client_update、client_archive、client_list、client_set_active。
权威工具数量及读写分类根据 lib/mcp.mjs 得出,并由 test/parity-check.mjs 验证(参见 MCP 文档)。每个工具在 tools/list 中还带有 readOnlyHint/destructiveHint/title 注释。
正式上线
准备好发布后,在 Setup 中连接各个平台(或者将 .env.example 复制为 .env,并仅填写你使用的平台所需的信息)。只要存在平台凭据,该平台就会开始发布;在此之前,该平台处于已启用但未通过身份验证的状态,发布会等待连接。(PENDPOST_MODE=mock 仅作为测试/演示用的固定配置,所有渠道都会通过无需凭据的模拟驱动程序运行。)
每个平台都有一个交互式设置流程,会将配置写入 .env:
# Meta (Facebook + Instagram). A System User token is preferred for automation.
node scripts/meta-social.mjs setup-system-user \
--system-user-token <T> --page-id <ID> --app-id <ID> --app-secret <S>
# (or `node scripts/meta-social.mjs setup` for a long-lived Page token)
# LinkedIn (after creating an OAuth app)
node scripts/linkedin-social.mjs auth
# YouTube (after creating an OAuth client)
node scripts/yt-social.mjs auth
# X (Twitter), OAuth 2.0 PKCE (browser). OAuth 1.0a needs no command - see below.
node scripts/x-social.mjs auth
# Static-credential lanes (no browser): paste the credential into .env (or use
# the dashboard Setup form), then validate with the engine's auth command.
node scripts/telegram-social.mjs auth # TELEGRAM_BOT_TOKEN + TELEGRAM_CHANNEL_ID
node scripts/discord-social.mjs auth # DISCORD_WEBHOOK_URL
node scripts/mastodon-social.mjs auth # MASTODON_INSTANCE_URL + MASTODON_ACCESS_TOKEN
node scripts/wordpress-social.mjs auth # WORDPRESS_SITE_URL + _USERNAME + _APP_PASSWORD
node scripts/ghost-social.mjs auth # GHOST_SITE_URL + GHOST_ADMIN_API_KEY
node scripts/nostr-social.mjs keygen --save && node scripts/nostr-social.mjs auth # + NOSTR_RELAYS
要运行多个客户端?在上面的任意命令后添加 --client <client-id>,即可将凭据写入该客户端的 .env(单客户端安装无需此参数;pendpost_health 的 connectAction 会自动补上该参数)。
X (Twitter) 支持两种身份验证方式;推荐使用 OAuth 1.0a,因为它无需浏览器,也能避开某些应用在 X 的 OAuth 2.0 授权页面上遇到的 ERR_TOO_MANY_REDIRECTS 问题。
- OAuth 1.0a(推荐,无需浏览器)。 在 X 开发者门户中:(1) 先将应用的 User authentication settings 设置为 Read and Write;(2) 然后在 Keys and tokens 下生成/重新生成 API Key/Secret 和 Access Token/Secret;(3) 将这四项全部粘贴到
.env,分别设为X_API_KEY、X_API_SECRET、X_ACCESS_TOKEN、X_ACCESS_TOKEN_SECRET。设置好X_ACCESS_TOKEN_SECRET后,该渠道即会启用,无需运行auth命令。运行node scripts/x-social.mjs probe验证(会输出connected as @handle)。常见问题,按发生顺序排列:- 四项值必须来自同一个应用,且必须属于同一次生成。
- 重新生成 API Key/Secret 会使 Access Token/Secret 失效——因此务必在 API Key/Secret 之后重新生成 Access Token/Secret,切勿反过来。
- 哪怕只有一个字符错误,也会返回
401 "Could not authenticate you"(代码 32),看起来像是访问令牌问题。请直接从门户复制这些值,不要手动输入。
- OAuth 2.0 PKCE(浏览器)。 创建一个 OAuth 2.0 机密客户端,回调地址设为
http://localhost:8087/callback,作用域设为tweet.read tweet.write users.read media.write offline.access,然后运行node scripts/x-social.mjs auth。访问令牌有效期约为 2 小时,刷新令牌会轮换;pendpost 会在每次运行前自动刷新这两个令牌。
各平台环境变量的完整列表请参阅 .env.example。
品牌检查 + 人性化处理
标题在发布前会经过品牌检查。规则集位于 rules.json,可直接编辑。每条规则都是一个对象,包含 id、severity(error 会阻止发布,warn 仅作提示)、matcher(正则表达式,或平台感知的内置规则,例如 captionLength、hashtagCount、allCaps、brokenLink)和 hint。默认规则还包含人性化检查规则,用于标记英文 AI 写作特征(AI 常用词汇、破折号、否定式平行结构、刻意凑成三项的赘述、填充语与模糊表达、夸张的宣传措辞)。要禁用规则,请删除其对象;要添加规则,请追加对象。工作区根目录中的 rules.json 会覆盖随附的默认规则。brand_lint 同时也是 MCP 工具和控制面板编辑器中的检查面板。
架构
pendpost 是一个零依赖的 Node 进程(server.mjs),提供四种接口:/api 上的 REST API、/mcp 上的 MCP 服务(可流式传输的 HTTP、JSON-RPC 2.0,共 134 个工具)、通过范围请求流式传输 data/ 下本地文件的 /media,以及用于提供构建后 React 控制面板的 /(文件位于 app/dist)。后端逻辑位于 lib/*.mjs。scripts/ 中有 14 个发布引擎,每个平台一个(meta-social.mjs 负责 Facebook 和 Instagram);每个引擎都会在计划程序触发时或按需作为子进程启动,并输出一个 JSON 封装对象。计划和状态均保存在本地 JSON 文件中。包含 .env、config.json、state.json 和 data/ 的工作区根目录可通过 PENDPOST_ROOT 覆盖(默认值:安装目录)。
平台
Instagram、Facebook、LinkedIn、YouTube、X、Telegram、Discord、Mastodon、Nostr、WordPress 和 Ghost 已正式上线。Reddit、Pinterest、TikTok 和 Google Business Profile 处于 Beta 阶段。每个引擎都会处理自己的身份验证、发布、原生排期、封面/缩略图机制和只读数据洞察。YouTube、Mastodon、WordPress 和 Ghost 支持原生排期,因此即使 pendpost 未运行,这些帖子也会按时发布。Instagram、Facebook、LinkedIn、X、Telegram、Discord 和 Nostr 由 pendpost 自行在预定时间发布:通过你电脑上的调度器,或可选的 24/7 云服务。
安全
pendpost 默认绑定到 127.0.0.1(回环地址),绝不会主动连接外部服务,并且只会将密钥保存在你自己的 .env 文件中(该文件已列入 gitignore)。完整的安全说明以及如何报告漏洞,请参阅 SECURITY.md。
隐私政策
pendpost 在你自己的设备上运行,不会向我们(Nomadik GmbH)发送任何数据。
- **收集哪些数据:**仅限你提供的数据。计划、草稿、媒体和活动历史记录保存在本地
data/文件夹中,你的平台凭据保存在你自己的.env文件中。 - **如何使用和存储数据:**所有内容都保留在你的设备上。内容只会发送到你所连接的社交平台,以发布你批准的帖子。
- **第三方:**你连接的 MCP 客户端(例如 Claude Desktop 或 Cursor)及其 AI 模型提供商会看到你的 Agent 通过 pendpost 工具读取的内容,并受你自己的账户及其条款约束。Radar 会读取你开启的来源中的公开帖子。
- **数据保留:**你的数据会一直保留,直到你删除该文件夹;我们不会保留副本。可选的 24/7 云服务会在你订阅期间保留计划、加密令牌和审计记录;你离开后,会在短暂的安全保留期结束后删除所有托管副本。
- **联系:**[email protected]
完整政策请参阅 pendpost.com/privacy。
参与 pendpost 的建设
pendpost 以开源方式开发,我们欢迎你的反馈。有三种参与方式,而且都不会让应用主动连接外部服务:
- **快速反馈或想法:**使用仪表板中的 Share feedback 链接(该链接会在浏览器中打开预填好的 GitHub 页面,绝不会发送你的
.env文件或任何密钥),在 Discussions 中发帖,或使用反馈问题表单。 - **Bug 或功能请求:**提交 issue 并选择相应表单。
- 更深入的提案(新的集成接口、对核心工作方式的更改):提交 RFC。请参阅
docs/rfcs/README.md。
没有账户?pendpost.com 上的简短反馈表单可以帮你转发到 GitHub。需要帮助时,请参阅 SUPPORT.md;有关完整反馈流程的运作方式,请参阅 docs/specs/feedback-pipeline.md。
状态
pendpost 由一个小团队利用业余时间维护,目前仍处于早期阶段。请预期会有一些不够完善之处,并相应调整对响应时间的预期。
文档
完整参考文档位于 docs.pendpost.com(源文件位于 site-docs/)。营销信息、定价和所有下载选项均位于 pendpost.com。
许可证
MIT,Copyright 2026 Nomadik GmbH。请参阅 LICENSE。提交拉取请求前,也请阅读 DISCLAIMER.md 中的负责任使用说明以及 CONTRIBUTING.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

