# Content Generation (/docs/social/content-generation)



The Social Content layer turns your brand brief into ready-to-publish
posts. Find generated content at
`/project/{projectId}/content/generated`.

## Inputs [#inputs]

The generator reads:

* **Brand brief** — name, description, voice, target audience (from
  [project settings](/docs/projects/settings-general)).
* **Banned phrases** — strict deny list.
* **Reference posts** — URLs you've pinned. The model studies pacing
  and hook structure.
* **Media library** — product shots, app screenshots, lifestyle, logo
  (from [media settings](/docs/projects/settings-media)).
* **Influencers** — synthetic personas for UGC remixes.
* **Products** — your product catalog.

## Media types [#media-types]

`content_containers.media_type` is one of:

* **`image`** — static image or a multi-image Instagram carousel.
* **`video`** — Instagram Reel or TikTok video, 9:16.
* **`slideshow`** — TikTok photo slideshow.

There is no separate YouTube, X, or LinkedIn media flow — generation
targets Instagram + TikTok only.

## Generation cadence [#generation-cadence]

Generation is driven by the Social Distribution layer, not scheduled
independently. When `generationMode = "automatic"`:

1. `social-distribution-plan` computes how many slots are empty over
   the dynamic horizon (at least 3 days).
2. It calls `computeGenerationCount` to derive
   `generateCount = max(missingSlots - inFlight, 0)`.
3. Generation is kicked off for that count.
4. New `content_containers` attach to the earliest empty slot via
   `attach-to-schedule`.

With `generationMode = "manual"` (the default on new installs) you
trigger generation yourself from the content tab.

## Manual generation [#manual-generation]

Click **Create new** in the generated content tab. Pick the media type,
optionally supply a reference asset or specific products/personas, and
generate.

## Reviewing drafts [#reviewing-drafts]

Each generated container has a detail panel with media, caption, cost,
and provenance (prompt, inputs, model).

## Edit before publish [#edit-before-publish]

Inline editing of caption. For media changes, use
[Regeneration](/docs/social/regeneration).

## Approval gate [#approval-gate]

If the Social Distribution layer is in `manual` `distributionMode`, or
the scheduled post is in `pending_manual` status, you approve from the
scheduled-posts view before it publishes. See
[Approval workflow](/docs/social/approval).
