pendpost
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**Agent-operated social media with a human approval gate.**
pendpost is a free, open-source (MIT), local-first social media planner where an AI agent drafts and schedules posts across Instagram, Facebook, LinkedIn, YouTube, X, Telegram, Discord, Mastodon, and Nostr, plus long-form blogs on WordPress and Ghost, with Reddit, Pinterest, TikTok, and Google Business Profile in beta, all behind a human approval gate you control. It is MCP-native: AI agents draft, lint, schedule, and queue your posts, but nothing goes live until a human approves it. It is built for developers, agencies, and technical solopreneurs who want agents to do the work without handing them the keys, and without getting accounts flagged.
Why pendpost is different (not just a scheduler)
Most "AI social" tools are schedulers with an agent bolted on. pendpost is the opposite. It is an operations layer designed around the agent-plus-human workflow, and these are the parts a scheduler does not give you:
- **Human approval gate.** Every post carries an approval state (draft, approved, rejected) and is fail-closed: a post with no approval will not publish. plan_create_post always creates a draft, and only approve_post or reject_post can flip it. Nothing publishes until it's approved. By default that's you; auto-approve is owner-only and revocable.
- **Anti-ban circuit breakers.** A Meta error 368 (an action block) trips a breaker that halts the Meta lane and never auto-resumes, because 368 carries no machine-readable clear time. Health probes send zero Graph traffic while blocked. A cadence cap defers bursts rather than dropping them, and a lane pause kill switch is always available.
- **Humanizer brand-lint.** Captions are checked before publish against editable rules in rules.json. The humanizer layer flags English AI-writing tells. Errors block publish; warnings are advisory.
- **Honest native scheduling.** Where a platform supports it (Facebook scheduled posts, YouTube publishAt), pendpost uses native scheduling, so those posts fire even when your computer is off. Instagram, LinkedIn, and X have no native scheduling, so pendpost must be running to publish them; run it on an always-on host to cover those too. It stays honest about which cover/thumbnail mechanics actually apply per platform.
- **Dual interface.** A web dashboard and any MCP client drive the same contract. A parity test enforces that every capability ships on both faces.
- **German and Swiss localization.** Run the dashboard, digest, and notifications in English or real Swiss German (de-CH, with proper umlauts and 24-hour Swiss dates); set the language in Settings. See the localization docs.
Quickstart
One line, no setup:
No account, no signup - pendpost runs locally and starts immediately. You can draft, approve, and schedule a full campaign right away; the first run ships an example "Acme Launch" campaign in data/plans, so you see real content at once. Connect a platform in **Setup** when you are ready to publish - until then a lane is live-but-unauthenticated, so publishing simply waits for the connection rather than faking it.
Prefer git or docker?
The dashboard
The planner and the approval queue are the two screens you live in: draft and schedule on the left, approve or reject on the right. Nothing on the right can approve itself.
| Planner | Approval queue |
| --- | --- |
| | |
MCP clients
The easiest path self-boots: pendpost speaks MCP over native stdio, so the client launches the server for you - nothing to start first.
Claude Desktop (one-click): install the pendpost .mcpb bundle attached to each GitHub release. It self-boots npx -y pendpost --stdio and opens the approval dashboard in the same process.
Any stdio MCP client:
Advanced / dev (HTTP transport): pendpost also serves MCP over streamable-HTTP at /mcp. This needs the server already running via npx pendpost: