Skip to content

Campaigns ​

Campaigns organize social posts, target channels, media preparation, schedules, and per-channel publishing results. They are separate from generation projects: project/library media can be reused in posts, but a campaign has its own records and lifecycle.

Campaign Lifecycle ​

A campaign stores a name, description, status, posts, and a set of connected social accounts.

  • Active campaigns can schedule and publish posts.
  • Pausing/archiving a campaign prevents the scheduler from publishing its posts until the campaign becomes active again.
  • Deleting a campaign removes its posts, media records, and execution history, including campaign-owned uploaded objects.

Assigning a channel targets that social account for posts in the campaign. Disconnecting the account removes its stored tokens and stops campaigns from targeting it; it does not delete posts already published on the social platform.

Posts ​

A post contains optional text, ordered media, a status, an optional schedule, and one execution record per target social account.

The editor:

  • Requires at least text or media.
  • Accepts image and video uploads, and media picked from libraries and project albums — including the image and video results of ComfyUI and Civitai projects.
  • Lets you remove and drag to reorder media.
  • Supports up to four media items in the current post editor.
  • Saves without a time as a draft.
  • Rejects a scheduled time less than about five minutes in the future in the UI.

Post media moves through pending, processing, ready, or failed. Images are processed into platform-ready assets; current video/GIF processing preserves the uploaded source while marking it ready. A post cannot be scheduled or published while attached media is unready.

Post and Execution States ​

Post status summarizes the whole post:

StatusMeaning
draftEditable and not scheduled
scheduledWaiting for its due time
queuedFan-out to channel execution records has begun
completedAt least one channel execution posted successfully and all executions settled
failedPublishing could not produce a successful result

Each target channel has a separate execution with pending, publishing, posted, or failed status, attempt count, retry time, error, and remote URL/ID. The post detail screen shows these per-channel results.

Scheduling and Send Now ​

When a scheduled post becomes due, the scheduler:

  1. Verifies the campaign is active.
  2. Verifies it has at least one active connected account.
  3. Verifies all media is ready.
  4. Creates or resets one execution per target account.
  5. Queues executions for publishing.

Executions use retry/backoff metadata for transient failures and rate limits. Authentication failures trigger one reactive token refresh when the platform supports it. Final post status is calculated only after all executions settle.

Send Now uses the same target-account fan-out without waiting for the schedule. Sending a completed post again creates another publishing attempt and may create another live social post.

Batch Actions ​

The campaign Batch Actions view supports searchable, paginated post selection and:

  • Batch schedule with a time assigned to each post.
  • Batch unschedule, which returns scheduled posts to draft.
  • Batch Send Now for an active campaign.
  • Batch AI text generation.
  • Batch set text, which writes one identical text to every selected post.
  • Creating one new draft post per selected/uploaded media item.

Batch operations report skipped items individually—for example, already completed posts, invalid dates, or media that is still processing.

Batch Media Post Creation ​

The media batch screen queues uploads or owned media from libraries/albums and creates one post per media item. Local files are encoded and sent once; the server processes the batch asynchronously while the browser polls progress.

Optional per-user watermark settings are applied to image media during processing. Thumbnail previews show the queued source and the resulting draft posts remain editable.

An external MCP client can do the same with create_posts_from_files: it uploads the files, then creates one draft post per image or video, with the watermark applied as on this screen. See file uploads.

Batch AI Text Generation ​

Select posts, then choose an assistant-capable provider/model and a reusable prompt from a text library or enter instructions directly. The task can optionally include each post's images as model context.

Batch Set Text ​

When every selected post should carry the same caption, Set Text writes it directly—no model, no queue. Enter the text, apply it, and the posts are updated in one request; any text those posts already had is replaced.

The server processes the selected post IDs asynchronously and reports per-post success/failure. Generated text replaces the targeted post's text; it does not automatically schedule or send the post.

Connected Channels ​

The current channel adapters are:

  • X (Twitter) — OAuth 2.0, media upload, and post creation. See X Setup.
  • Threads (Meta) — long-lived token flow, public media fetching, and container publishing. See Threads Setup.

Access and refresh tokens are encrypted at rest. The scheduler proactively refreshes eligible tokens before expiry, and the publisher can retry after an authentication failure.

Platform rules still apply. For example, character limits, media combinations, account access tier, and rate limits can cause one channel execution to fail while another succeeds.

Public Media URLs ​

Threads and other server-fetch platforms require an internet-reachable, time-limited URL. Remix Studio signs objects from the main storage bucket.

WARNING

S3_PUBLIC_ENDPOINT must resolve publicly to the same stored objects. An internal endpoint such as http://minio:9000 is valid for the Remix Studio container but cannot be fetched by a social platform.

X uploads media bytes through its API and therefore has different delivery mechanics, but its size/format rules still apply.

Watermark Settings ​

Campaign media watermarks are per-user settings shared with the image-export watermark screen. They include text, position, padding, font size, opacity, and color.

Watermarking creates a processed post asset; it does not overwrite the original library/album source. Video watermarking is not part of the current image watermark utility.

Tracking Activity ​

  • Scheduled Posts lists and searches upcoming posts across campaigns.
  • Campaign History shows completed/failed posts and channel errors.
  • Post Detail shows media, schedule controls, generated text actions, and every channel execution. Copy ID for AI in its header, and on each post row, copies campaign:<campaignId>/post:<postId> for the assistant or an MCP client to act on.
  • Campaign cards summarize total, completed, and scheduled ranges.

These pages, the campaigns list and the campaign page refresh on their own when posts change elsewhere: when the scheduler publishes them, when their media finishes processing, and when another tab, the assistant or an MCP client edits them.

Released under the MIT License.