Layers

Social Distribution Overview

Generate, schedule, and publish posts to Instagram and TikTok.

View as Markdown

The Social Distribution layer is the engine for organic social. It pairs with the Social Content layer (which generates posts) to deliver:

  1. AI-generated posts (image, carousel, video) tailored per platform.
  2. Scheduling — posts are spread across daily time slots.
  3. Publishing — automatic direct publish or manual (Instagram: pending-manual queue; TikTok: pushed to the app's drafts inbox).
  4. Analytics & UGC discovery feeding back into ad eligibility.

How it fits together

Social Content layer  →  generates content_containers

ads_content (organic_score = 7.0)

Social Distribution layer  →  computes daily slots

attach-to-schedule  →  reserves a slot for each ready container

process-due (runs every minute) →  publishes due slots

platform_posts  →  metrics synced via Graph API / TikTok API / SIFT

Platforms

Only Instagram and TikTok are wired up end-to-end for generation, scheduling, publishing, and metrics. YouTube Shorts, X (Twitter), and LinkedIn are not supported at this time — there are no OAuth flows, publishers, or metric collectors for them.

PlatformFeed postReel / VideoCarousel / SlideshowStories
InstagramYesYes (Reels)Yes (carousel)No
TikTokn/aYesYes (photo slideshow)n/a

Note: Instagram publishing is direct-to-feed via the Graph API in automatic mode. TikTok automatic mode publishes publicly; manual mode (the default) pushes to the creator's drafts inbox for them to finalise in the TikTok app.

Modes

The distributionMode config controls posting time selection:

  • automatic — Layers picks default times based on account temperature (cold = 1 slot/day, warm = 2, hot = 3).
  • custom — you supply an array of HH:MM times in the project timezone (config.schedule.times).
  • manual — the scheduler does not create slots; you schedule each post yourself.

Publishing behaviour is controlled separately via each scheduled post's posting_mode metadata (automatic vs not). generationMode (automatic | manual) controls whether unfilled slots trigger content generation.

Where to next

On this page