# Social Distribution Overview (/docs/social/overview)



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 [#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 [#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.

| Platform  | Feed post | Reel / Video | Carousel / Slideshow  | Stories |
| --------- | --------- | ------------ | --------------------- | ------- |
| Instagram | Yes       | Yes (Reels)  | Yes (carousel)        | No      |
| TikTok    | n/a       | Yes          | Yes (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 [#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 [#where-to-next]

* [Connect your first social account](/docs/social/connect-instagram).
* [Configure your brand voice](/docs/social/brand-voice).
* [Read the day-in-the-life walkthrough](/docs/social/day-in-life).
