For one person the engine is small: a queue, a composer with per-network limits and a worker that posts at the right minute. Networks with open tokens, such as Bluesky, Mastodon, Telegram, Discord and LinkedIn, can be wired in a weekend, and an MCP server and CLI let an agent draft into it. The weak part is everything behind a platform review: Instagram, TikTok, YouTube, Facebook and Pinterest need approved developer apps, and X charges per post, more with a link. post2all publishes through its own approved integrations, so you pay $9 to skip that paperwork.
Before you buildpost2all has no free plan, only a 7-day trial with 30 posts. If you post to Bluesky, Mastodon and LinkedIn only, building your own costs nothing in fees.
Build me a social post scheduler that an AI agent can use, to replace post2all. Requirements: - Node.js 22 + TypeScript: a Fastify server with a small React dashboard built with Vite, a CLI (`npm run cli -- draft|list|cancel`) and an MCP server over stdio (`@modelcontextprotocol/sdk`). `npm start` serves http://127.0.0.1:4950 and runs the publish worker. - Storage: better-sqlite3 in ./data/posts.db: accounts (network, handle, token encrypted with AES-256-GCM using TOKEN_KEY from .env), posts (text per account, media paths, scheduled_at in UTC, status draft / approved / sending / sent / failed, created_by human or agent) and one result row per account with the post URL. - One adapter interface, publish(post, account), and six adapters: Bluesky (`@atproto/api`, app password), Mastodon (`masto`), LinkedIn personal profile (OAuth 2, w_member_social), Telegram channel (Bot API), Discord channel (webhook URL) and X (API v2, with the per-post cost shown first). - Agent safety: posts made through the CLI or MCP are always drafts. Only the dashboard, behind one password from .env, can approve a draft for scheduling. The MCP tools read the calendar, create and edit drafts and cancel, and cannot approve or publish. - Composer: per-account text with live counts (X 280, Bluesky 300, Mastodon read from the instance, LinkedIn 3,000, Telegram 4,096, Discord 2,000), up to 4 images with alt text, and a pre-publish check that blocks over-length text and missing alt text. - Calendar: a week view in TIMEZONE from .env with drag to reschedule, and weekly queue slots. - Reliability: set status to sending before the API call so nothing posts twice; three retries with backoff; a post stuck in sending after a crash waits for a manual decision. - Single user. No accounts, no telemetry, local-first: outbound calls go only to the networks I connect. - Out of scope: Instagram, TikTok, YouTube, Facebook, Pinterest (they need platform app review), analytics, teams. - README: how to get each token, the LinkedIn redirect URI, an MCP config snippet for Claude Code, and where the data lives.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own post2all.
Extend the post scheduler in this folder. Requirements: - Before publishing, resize and recompress images with `sharp` to each network's limits (store the limits in a table in the code with a source link in a comment). - Keep originals; write per-network copies to ./data/media/<post-id>/<network>/. - Reject unsupported formats with a clear message in the composer. - Add tests with a large PNG and a small JPEG. - Update the README.
Add multi-part posts to the post scheduler in this folder. Requirements: - A composer mode for threads: an ordered list of texts posted as replies on Bluesky, Mastodon and X, and as one long post on LinkedIn. - If part 3 fails, stop, mark the rest as pending, and offer to resume from part 3 without reposting parts 1 and 2. - Show a per-part status in the calendar. - Update the README.
Add a weekly summary to the post scheduler in this folder. Requirements: - Every Monday at 08:00 in TIMEZONE, send an email through SMTP settings in .env listing last week's posts per account with links, plus failures and their error text. - Add the upcoming week's scheduled posts and any drafts waiting for approval. - Switch it off with one .env flag; send nothing when there is nothing to report. - Update the README.
Posting to a dozen networks means a dozen developer apps and review processes, each changing its rules. $9 buys connections that already pass those reviews, plus a calendar, per-account captions and an API that Claude or ChatGPT can drive, with no per-seat charge.
Estimate · A $5 VPS or a machine you leave on, plus X's per-post fees if you use it. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| 7-day trial | $0/workspace | $0/workspace | 30 successful posts in total, 5 X-post units, at most 50 posts created including drafts. |
| Creator | $9/workspace | $7.50/workspace | 10 connected social accounts, unlimited drafts and members, content calendar, per-account captions, analytics, API and MCP access, 200 X posts a month. |
| Business | $19/workspace | $15.83/workspace | 30 connected accounts, 2 profiles, unlimited members, 600 X posts a month. |
| Agency | $39/workspace | $32.50/workspace | 100 connected accounts, 10 profiles, unlimited members, 1,200 X posts a month. |
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Publishing to Instagram, TikTok, YouTube, Facebook and Pinterest without your own platform approvals, Analytics across channels.
About $9 a month on the Creator plan, $108 a year (checked 2026-10-19).
Publishing to Instagram, TikTok, YouTube, Facebook and Pinterest without your own platform approvals; Analytics across channels; Profiles to separate clients or brands, and unlimited team members; A hosted queue that keeps running when your machine is off; The vendor's CLI, skills and MCP server tested against real agents. If any of those matter to you, keep paying.
Yes: Postiz (open source), Mixpost (open source).