# How to Vibe Code Your Own BulkPublish (and Stop Paying for It)

> Compose once. Publish everywhere.

- Site: https://bulkpublish.com
- Category: Social Media & Marketing
- Platforms: Web app, CLI
- Verdict: **Serious undertaking** (35/100 vibecodeable)
- Estimated effort: 6+ weeks of part-time work

## Verdict

Building a personal-use clone of BulkPublish is a serious undertaking requiring weeks of painful API integration work, or you can keep paying $13.99/mo.

While building a local web UI with a single posting endpoint is simple, integrating and maintaining OAuth credentials, media upload processors, and rate limits across 14 fragmented social networks is a brutal administrative and engineering trap. Social platforms constantly change their API schemas, deprecate endpoints, and enforce strict video constraints. Unless you strictly scope your clone down to 2 or 3 networks you actually use, you will spend all your weekends debugging third-party 401 and 429 errors instead of scheduling content.

### What you can't replicate

- Production-ready OAuth app credentials and rate-limit quotas for 14 official social networks
- First-party verified marketplace listings on n8n, Zapier, and Make
- Inherited network trust and compliance vetting from Meta, Google, and ByteDance

## What it does

Multi-platform social media publishing, scheduling, and automation tool for humans and AI agents via API and Model Context Protocol (MCP).

### Core features

- Multi-platform OAuth connections for 14+ social networks
- Unified composer with platform-specific text and media customization
- Visual content calendar and scheduling engine
- Bulk import and CSV processing pipelines
- Model Context Protocol (MCP) server for Claude Code/Cursor integration
- First-party automation nodes for n8n, Zapier, Make, and IFTTT
- AI caption generation pipeline
- RSS-to-social auto-publishing workflows

## The business

### Pricing

- Free: $0
- Pro: $13.99/mo
- Business: $39.99/mo

Founded 2024.
Team size: Small indie team.

## The hard parts

- Maintaining OAuth token refreshes and shifting API limits across 14 independent social media platforms
- Handling heterogeneous media requirements (video codecs, thumbnail ratios, image limits per network)
- Building a bulletproof cron and queue scheduler for exact-minute multi-channel post delivery
- Developing and securing a Model Context Protocol (MCP) server for local IDE integrations

## How to vibe code BulkPublish

### Prerequisites

- Node.js (free): Required runtime for Next.js and TypeScript services
- GitHub (free): Source control and deployment pipeline triggers
- Anthropic API key (pay-as-you-go): Powers the AI caption generation and MCP assistant features

### Recommended AI tools

- Claude Code: Best-in-class agentic CLI for bootstrapping multi-file full-stack apps and debugging OAuth flows
- Cursor: Ideal AI code editor for refining UI components and checking differential edits

### Stack

- Frontend: Next.js with Tailwind CSS and shadcn/ui components
- Backend: Next.js Server Actions and API Routes with background job queues
- Database: Turso (SQLite at the edge)
- Auth: better-auth
- Payments: none
- Other: Vercel AI SDK, Model Context Protocol (MCP) SDK

### Hosting

- Vercel (Hosting the Next.js web application and serverless API endpoints): $0/mo (Hobby Tier)
- Turso (Storing user accounts, connected channels, and scheduled post payloads): $0/mo (Free Tier)

### Build guide

1. **Scaffold Project and Database Schema** — Initialize a Next.js project with TypeScript, Tailwind CSS, Turso database connection via Drizzle ORM, and better-auth configuration.

```
Initialize a new Next.js 16 project with App Router, TypeScript, and Tailwind CSS. Configure Drizzle ORM with Turso (libSQL) as the database driver. Set up better-auth for single-user email/password authentication. Create database tables for: users, channels (storing platform name, encrypted OAuth access tokens, refresh tokens, metadata), posts (storing content, status, scheduled_at timestamp, author_id), and media_items (storing file URLs and sizes). Ensure all database migrations run cleanly on startup. Write validation schemas using Zod for all table insertions.
```

2. **Build Multi-Platform Composer Interface** — Create a unified dashboard UI with a master text input and tabbed platform-specific overrides, character counters, and media preview attachments.

```
Build a responsive multi-platform post composer UI using shadcn/ui components and Tailwind CSS. The interface must feature a master text textarea that syncs to platform-specific preview tabs (supporting X/Twitter, LinkedIn, Bluesky, Mastodon, and Threads as a scoped personal set). Include live character count validation with visual warnings when exceeding platform limits (e.g., 280 for X). Add a media upload dropzone that stores assets locally or in object storage and attaches preview thumbnails to the post state.
```

3. **Implement Social OAuth and API Adapters** — Implement OAuth authentication flows and posting adapters for a focused set of target networks (e.g., X/Twitter, LinkedIn, Bluesky) to handle publishing.

```
Create a modular social media publishing service in TypeScript. Implement OAuth 2.0 connection handlers and posting adapters for X/Twitter API v2, LinkedIn Share API, and Bluesky AT Protocol. Each adapter must take a normalized post object (text and media URLs), format it according to the platform's exact payload rules, execute the API request with error handling, and return a standardized result object containing the external post ID or descriptive error strings. Store encrypted access tokens securely in the Turso database.
```

4. **Build Scheduling Engine and Cron Worker** — Implement a background processing loop or cron endpoint that checks for scheduled posts due for publication and dispatches them via the adapters.

```
Implement a scheduling worker system in Next.js API routes secured by a cron secret header. The endpoint must query the Turso database for posts where status is 'scheduled' and scheduled_at is less than or equal to the current UTC timestamp. For each due post, iterate over its target channels, call the corresponding platform publishing adapter, update the post status to 'published' or 'failed' with error logs, and handle automatic retries for transient network failures.
```

5. **Integrate AI Caption Generation and MCP Server** — Add AI caption generation using the Vercel AI SDK and build a local Model Context Protocol (MCP) server so coding agents can trigger posts directly.

```
Integrate the Vercel AI SDK into the composer UI to generate platform-optimized social media captions from a raw prompt using Anthropic Claude. Additionally, implement an MCP (Model Context Protocol) server endpoint in the application codebase using the official MCP SDK, exposing a tool called 'publish_social_post' that allows local AI coding agents (like Claude Code or Cursor) to authenticate via API key and schedule or publish posts directly from the terminal.
```

### Cost vs paying

**Starting costs (one-time):**

- AI coding assistant subscription (Claude Pro / Cursor): $20.00
- Total: $20.00 one-time

**Ongoing costs (monthly):**

- Vercel & Turso Hobby Tiers: $0.00
- Anthropic API usage for AI captions: ~$2.00/mo
- Total: ~$2.00/mo

- Paying for the SaaS instead: $13.99/mo
- Build time: 25-35 hours
- AI tool credits: $20
- Break-even: 2 months (if building for fun/learning; paying $13.99/mo is economically rational if you value your time)

## Sources

- [BulkPublish Homepage](https://bulkpublish.com)
- [BulkPublish Pricing](https://bulkpublish.com/pricing)