Skip to main content

Scheduler

Use the Scheduler app when humans need a web UI for connected accounts, composing posts, drafts, previews, publishing, and scheduling. It is also the account hub for MCP and for CLI mode that uses Scheduler-connected accounts.

Open the hosted app at schedule.simplepost.dev.

What to do in the app

  1. Sign in.
  2. Open Accounts.
  3. Connect the social accounts you want to post to.
  4. Open the compose screen.
  5. Select accounts, write the post, attach media if needed, and save a draft, publish now, or schedule for later.

Connected accounts are available to:

  • The Scheduler compose UI.
  • The remote MCP server at /mcp.
  • The CLI after simplepost connect.

X credits

X API access is paid separately by X. The hosted Scheduler tracks X posting credits so one user cannot accidentally consume unlimited X posting capacity.

  • New users start with 10 X posting credits.
  • One selected X account costs one credit per post attempt.
  • If you select multiple X accounts, each selected X account consumes one credit.
  • When credits reach zero, Scheduler blocks posts that include X accounts.
  • Non-X platforms do not consume X posting credits.

For self-hosted deployments, the credit count lives on the user.xPostingCredits column in the Scheduler database. Top up by updating that column directly or building an admin workflow around it.

Daily rate limits

Scheduler also checks per-platform daily posting limits before publishing. The current defaults are:

PlatformPosts per 24 hours
X50
YouTube2
Facebook10
Instagram10
Telegram50
TikTok5
Bluesky50
Threads25
LinkedIn5
Pinterest50

These are Scheduler-level guardrails, not a promise that each social platform will accept every post. The social platforms can still apply their own quota, moderation, app-review, or account-level limits.

MCP from Scheduler

The Scheduler app hosts the MCP server:

https://schedule.example.com/mcp

The MCP server uses OAuth through the Scheduler app. The AI client never receives raw social platform credentials. Users connect accounts in Scheduler first, then authorize the AI client.

Read MCP for client setup, tools, scopes, and recommended agent workflow.

Self-host the Scheduler

From the core repo:

yarn install
cp scheduler/.env.example scheduler/.env

Fill in scheduler/.env, then run:

yarn workspace @simple-post/scheduler db:migrate
yarn workspace @simple-post/scheduler dev

Required environment:

Variable / serviceWhy
DATABASE_URL (Postgres)Users, sessions, accounts, posts, and schedules.
S3_STORAGE_*Uploaded media and thumbnails. See media storage.
BETTER_AUTH_SECRETApp auth and session signing.
SCHEDULER_ENCRYPTION_KEYEncrypts connected account secrets. Generate with openssl rand -base64 32.
RESEND_API_KEY, RESEND_FROM_ADDRESSEmail login.
SCHEDULED_POST_DISPATCH_SECRETBearer token for the dispatch endpoint described below.
NEXT_PUBLIC_APP_URLPublic origin used for OAuth callbacks, CLI authorization, and MCP metadata. Defaults to http://localhost:3000.
Social platform apps*_CLIENT_ID / *_CLIENT_SECRET for X, Google, Meta (Facebook + Instagram + Threads), TikTok, LinkedIn, Pinterest, and Bluesky. See scheduler/.env.example for the full list.