A scheduler for your own handful of profiles is a queue, a composer and a worker that posts on time, and that part is an afternoon. The weekend goes into the networks: every one wants its own developer app and token refresh, Instagram publishing needs a professional account and public image URLs, TikTok holds unaudited apps to private posts, and X charges per post. Bluesky, Mastodon, LinkedIn and a Facebook Page are within reach of one agent session; the full set Publer covers is not.
Before you buildPubler Free covers 3 accounts and 10 queued posts each. If you post to a few profiles and don't need X or bulk uploads, you may not need to pay.
Build me a personal bulk social post scheduler to replace Publer. Requirements:
- Node.js 22 + TypeScript: a Fastify API and a React UI built with Vite. `npm start` serves
http://localhost:4910 and runs a publish worker in the same process, polling every 30 seconds.
- Storage: better-sqlite3 in ./data/scheduler.db: workspaces, accounts (network, handle, token
encrypted with AES-256-GCM using TOKEN_KEY from .env), posts (text, media paths, scheduled_at in
UTC, status draft / scheduled / sending / sent / failed, one result row per account), weekly
queue slots, recycle rules and RSS feeds. Images go to ./data/media/.
- One adapter interface, publish(post, account) returning the post URL, and four adapters:
Bluesky (`@atproto/api`, app password), Mastodon (`masto`, instance URL and access token),
LinkedIn personal profile (OAuth 2, w_member_social) and a Facebook Page (Graph API, a Page
token from a Development-mode Meta app you own).
- Bulk scheduling: upload a CSV (date, time, text, image_path, networks), show a preview table
with per-row errors, and create up to 500 posts only when every row is valid. Serve a template.
- Queue: weekly posting slots per account; "add to queue" takes the next free slot. A week
calendar view where dragging a post to another slot changes its time.
- Recycling and RSS: mark a sent post as evergreen with a repeat interval; the worker queues a
copy with one {a|b|c} spintax variant, never twice within 30 days. Feeds (`rss-parser`) are
checked every 30 minutes and new items become drafts, never posted without approval.
- Reliability: set status to sending before the API call so nothing posts twice; retry three
times (1, 5 and 30 minutes); a post stuck in sending after a crash waits for manual confirmation.
- Single user. No accounts, no telemetry, local-first. Outbound calls: the four networks and
your feeds only.
- Out of scope: X (paid API), Instagram, TikTok, YouTube, analytics, team approvals, AI writing.
- README: how to get each token or developer app, the redirect URIs, 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 Publer.
Add an Instagram adapter to the scheduler in this folder. Requirements: - Use the Instagram API with Facebook Login for one professional account linked to a Facebook Page, from a Development-mode Meta app I own. Keep the Page token encrypted like the others. - Media must be a public URL when posting: serve ./data/media through the tunnel base URL in PUBLIC_URL (.env) and delete nothing until the post is confirmed. - Post single images and carousels of up to 10; check /content_publishing_limit before sending and refuse with a clear message when under 5 slots are left. - Show the container status while it processes; poll until FINISHED or time out after 5 minutes. - Update the README with the Meta app setup and the professional-account requirement.
Add a link-in-bio page to the scheduler in this folder. Requirements: - A public route /links rendering a mobile-first page from SQLite: avatar, name, bio and an ordered list of links, edited in the admin UI with drag to reorder. - Count clicks per link through a redirect route /l/<id>; store only the date and link id, no IP address or user agent. - One option to show my last five sent posts on the page, pulled from the posts table. - Plain HTML and one CSS file, under 30 KB with no external requests. - Update the README.
Add post metrics to the scheduler in this folder. Requirements: - For Bluesky and Mastodon posts, fetch likes, reposts and replies 1 hour, 1 day and 7 days after sending, using each network's public API. - Store each reading in a metrics table and show them in the post detail view. - A page that ranks weekdays and hours by median engagement over the last 90 days, and says "not enough data" below 20 posts. - Back off on HTTP 429 and never fetch more than 100 posts per run. - Update the README.
What Publer sells is network access that someone else keeps working: the approved apps, token refresh and platform rule changes across a dozen networks, for a few dollars an account. Agencies add workspaces and approvals on top, and solo creators don't want to own a server just to post on time.
Estimate · Runs on your own machine or a $5 VPS. X is the exception: it bills per post through its API, so it is left out. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0/workspace | $0/workspace | 1 user, 1 workspace, up to 3 social accounts excluding X, 10 scheduled posts per account at a time, 25 saved drafts, 24-hour published post history. |
| Professional | $5 | $4 | Unlimited scheduling and drafts, X/Twitter, unlimited workspaces and media storage, bulk scheduling, RSS automations, first comments and threads, eternal post history. |
| Business | $10 | $8 | Everything in Professional plus unlimited AI prompts, analytics and reports, best times to post, competitor analysis, hashtag tools, recycling with spintax, and the API and MCP server. |
| Enterprise | custom | — | Everything in Business plus volume discounts, 1:1 onboarding, prioritized support, unlimited daily posting, bank or wire transfer payments. |
Free keeps 3 social accounts (not X), 10 scheduled posts per account at a time, 25 drafts and a 24-hour post history.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Instagram, TikTok, YouTube, Pinterest, Google Business and X posting without your own approved apps, Analytics, best-time suggestions and competitor tracking.
About $5 a month on the Professional (1 social account) plan, $60 a year (checked 2026-10-19).
Instagram, TikTok, YouTube, Pinterest, Google Business and X posting without your own approved apps; Analytics, best-time suggestions and competitor tracking; Team workspaces with approval workflows and client access; The mobile app, browser extension and Canva integration; The Linkie link-in-bio page and the AI assistant. If any of those matter to you, keep paying.
Yes: Postiz (open source), Mixpost (open source), Buffer Free (free).