Publishing, drafts & scheduling

Three modes

  • Draft — stage content on the platform without publishing. The safe default, and the only mode on the free tier.
  • Publish — attempt a real post. Works only on platforms that support automatic publishing; on manual platforms it falls back to a draft (see below).
  • Schedule — save a content snapshot plus the resolved target list, and publish automatically at a set time.

What happens to each target

When you publish, OmniPost runs every target through the same ordered checks and returns a structured result. A skipped target is not written to your records and does not affect safety counters. The order:

  1. Content type — a target that can't take your content type (e.g. a video on a text-only platform) → UNSUPPORTED_TYPE.
  2. Length — over the soft limit only adds a CONTENT_LENGTH_WARNING; it never blocks.
  3. Policy — your safety rules (below) may skip it: BLACKOUT, CIRCUIT_OPEN, DAILY_LIMIT, or DEDUP.
  4. LicensingPLATFORM_NOT_LICENSED (platform needs Pro), FEATURE_NOT_AVAILABLE (free tier can only draft), or QUOTA_EXCEEDED (monthly quota used up).
  5. Validation — for a real publish, missing required fields → VALIDATION_FAILED with the list of what's missing.
  6. Login — not logged in → NEED_LOGIN.
  7. Publish — the adapter runs; success is recorded, and a draft copy is kept so you can promote it later.

The result you get back

Every target returns something like: platform, account, success, stage (draft or published), published (true/false), a post or editor URL, a record id, and — when relevant — a code, error, missing fields, or a length warning.

The key promise: stage is published only when a real automatic publish succeeded. Otherwise it's draft. Choosing "Publish" on a manual platform returns published: false with MANUAL_PUBLISH and an editor URL — never a false "done".

Result codes

  • UNSUPPORTED_TYPE — the platform doesn't accept this content type.
  • CONTENT_LENGTH_WARNING — over the soft length estimate (not blocked).
  • BLACKOUT / CIRCUIT_OPEN / DAILY_LIMIT / DEDUP — skipped by your policy.
  • PLATFORM_NOT_LICENSED / FEATURE_NOT_AVAILABLE / QUOTA_EXCEEDED — a plan limit.
  • VALIDATION_FAILED — a real publish is missing required fields.
  • NEED_LOGIN — no valid session for this account.
  • MANUAL_PUBLISH — drafted on a manual platform; publish it by hand.
  • MANUAL_ONLY / DRAFT_NOT_FOUND — returned by promote-draft in edge cases.

Two-step publishing

Some workflows draft first and publish later. Create drafts, review them, then promote a specific draft to a real post by its record id. Manual-only platforms decline the promote step with MANUAL_ONLY.

Multiple accounts and groups

Address targets by platforms (all logged-in accounts on a platform), targets (a specific account like csdn:a2), or groups (a saved, named set of accounts) — combined and de-duplicated. Creating and editing account groups is a Pro feature; using them to publish is not restricted.

Safety policy

A per-account, optionally per-platform policy governs risky automation:

  • Daily limit per account (default off).
  • De-duplicate the same title on the same account within N hours (default 24h, on).
  • Circuit breaker — after N consecutive failures, pause that platform (default 5 failures, 30-minute cooldown).
  • Blackout hours — never publish during set hours.

Blocked posts are only reported, never recorded — so they don't pollute your history or trip the breaker.

Scheduling

A scheduled task locks its target accounts and a content snapshot at creation time (later group edits don't change it). A background runner checks every 30 seconds; tasks missed while the app was closed run on the next launch. You can view, run now, reschedule, edit, or cancel pending tasks. Scheduling is a Pro feature.

Plans

  • Free — the 8 core developer platforms, up to 3 accounts, 30 posts/month, drafts only.
  • Pro — all platforms, up to 20 accounts, 1000 posts/month, real publishing, agent automation, scheduling, and account groups.

Pricing is being finalized — request access.