[verdict][curated prompt][source: bulkpublish.com]
Can I vibecode BulkPublish?
// buildable in a weekend, but real gaps stay open
The part people picture is a weekend: a list of posts, a timer, one API call each. The part that eats the next six months is everything after the first successful post · staying authenticated to a dozen networks, learning each one's media rules the hard way, publishing that reports success and then quietly fails minutes later, retries that must never post twice, and a review process before some networks will accept a post at all. Build it for two accounts you control and it works. Build it for every network on the marketing page and you have taken a job.
confidence: high
what it is: Queue a spreadsheet of posts once and let it publish across every connected social account
Buildability index · an editorial game
- Price 13.99 $/month weight: plus 2
- Time multi-day weight: plus 1
- Category social media no weight
- Moat integrations · execution quality · infrastructure scale weight: minus 4
- Confidence high weight: plus 1
- What you lose 6 items weight: minus 3
- Site bulkpublish.com (si apre in una nuova scheda) no weight
The moat outweighs the price: rebuilding this is a project, not an evening.
Gioco editoriale: il verdetto dice se un agente può, l’indice se conviene.
// free tier: The free plan covers three channels, thirty posts a month, ten scheduled at a time and 100 MB of media, with repeat posts and RSS auto-publishing held back for paid plans.
What you build
Import a spreadsheet of captions and images, point each row at one or more connected accounts, and let it publish on schedule with a log of what landed.
what you need
- a developer app and API credentials per network (several need review before they will publish anything)
- somewhere always on for the schedule to fire
- somewhere to keep the posts and the media
- patience for the retry and duplicate-post edge cases
Bulk-first scheduler · the honest split between the one-weekend build and the multi-year integration bill is unusually clean here.
The prompt
A weekend with a coding agent. The gaps that stay are right below, under “what you lose”.
Build me a personal bulk social scheduler to replace BulkPublish. Requirements:
- Python 3.12 + FastAPI + SQLite, Jinja templates, no JavaScript framework.
One process on an always-on box, APScheduler ticking once a minute.
- Two networks only: Mastodon (access token) and Bluesky (app password).
One small module per network behind a single publish(post, account)
function so a third is addable later. Scaffold nothing I do not use.
- The main screen is a CSV importer. Columns: caption, image, send_at,
accounts. Show me every parsed row with a per-network character count and
a red flag on anything too long or missing a file, and import only the
rows that pass.
- Rows with no send_at fall into posting times I configure per account
(weekdays 09:00 and 17:00 in my timezone) and take the next free one.
- Each tick picks up due rows one at a time and flips the row to "sending"
in its own transaction before any network call, so a crash or a double
tick can never post the same row twice. Then "sent" with the live post
URL, or "failed" with the error text. Three retries, backing off, and
never a retry once a send is confirmed.
- Images copied into media/ beside the database, checked for type and size
at import, removed 90 days after the row sends.
- A history page: last 200 rows, status, error, link to the live post, and
a retry button.
- Out of scope, and say so plainly in the README: X, Instagram, LinkedIn
and TikTok (paid, approval-gated or review-gated APIs), analytics,
approvals, and more than one user.
- README covers getting a Mastodon token and a Bluesky app password.
Secrets in .env, localhost only, no accounts, no telemetry. Curated prompt: written and reviewed by hand for this app. In English on purpose — it is the language coding agents work best in.
What you lose
- staying connected · networks expire your auth and someone has to notice
- knowing a post is malformed before the network rejects it, not after
- an honest publish status when a network accepts the upload and fails minutes later
- analytics pulled back per post
- approvals, teams and multiple client workspaces
- the platform review process that gates posting on some networks entirely
Why people still pay
Because a scheduler is only worth anything when it is boring, and a self-built one stops being boring the first time a token expires overnight or a network changes its video rules without telling anyone. People pay so that maintenance is somebody else's Tuesday.
moat: Integrations Execution quality Infrastructure scale what a moat is
The moat is not the scheduler, it is the standing cost of a dozen platform integrations that change under you.
Free alternatives
Not in the mood to build it? These already exist, they are free or open source, and we checked them one by one.
Rejected (2) — and why
- Zapier free plan (si apre in una nuova scheda) — The usual DIY answer for bulk posting from a sheet, but the free tier is single-step Zaps with a monthly task cap · it is a trigger, not a scheduler, and it runs out mid-campaign.
- Meta Business Suite Planner (si apre in una nuova scheda) — Genuinely free and genuinely good, but only for Facebook and Instagram · it is not an alternative to posting everywhere at once.
Who has already built it
Starting from here is still vibecoding: the prompt is for when you want it exactly your way.
- Postiz (opens in a new tab) — Open-source multi-network scheduler · the most complete working example to read before starting. (alive)
- Mixpost (opens in a new tab) — Self-hosted scheduler with a smaller, more readable codebase than the alternatives. (alive)
Do you agree?
The vote balance
Ancora nessun voto: il tuo è il primo.
Nessun voto ancora — il primo pesa.