# Viral Formats: Hook-Driven Shorts Without Copying

Turn a proven idea into your own editable short. A **format** is the skeleton (hook → proof → payoff → CTA). Your words, footage, and voice fill it. Planning is free ($0); nothing generates video until you approve a produce step.

**Status:** catalog, compile, decode, templatize, variants, gap proposals, idea mining, watchlists, and shortlists are live on all four doors (dashboard Studio → Viral formats, API, SDK, MCP, CLI). Produce (owned B-roll + consented avatar) and long-form render are later proofs.

**On this page:** the idea · make one today · jobs reference · beats rule · idea mining · limits.

## The idea in one paragraph

Every viral short has the same skeleton under different words: a hook in the first 3 seconds, a camera or information change about every 3 seconds, proof in the middle, and a payoff plus CTA at the end. CoreReflex stores those skeletons as named formats, checks your plan against them before you spend, and never pastes someone else's wording into your script.

## Step-by-step: make one today

1. **Open Studio → Viral formats.** Pick a format (e.g. `pov-vlog`, `faceless-text-chat`, or any v1 catalog id). The picker, the compiler, and the catalog are the same list: if the UI offers it, the compiler accepts it.
2. **Run `compile`.** Fill the slots that are yours (topic, angle, your proof). Leave the rest empty: missing required roles come back as named gaps, not silent filler.
3. **Close the gaps yourself.** `gaps` lists what is missing; `propose` returns labeled suggestions with text `null` until you `apply` your own copy. Nothing writes your script for you.
4. **Make variants.** `variants` turns one approved body into N hook variants (each variant keeps its own `hookCopy`). Persist with confirm to get an `editorHref` per variant.
5. **Produce (when qualified).** `produce` assembles only owned URLs plus a consented avatar. An avatar without consent is a `400`, not a render.

Four-door parity: dashboard inspector, `GET/POST /api/algorithms/viral-format`, SDK `viralFormatCatalog`/`compileViralFormat`, MCP catalog+compile tools, CLI `viral-format catalog|compile`.

## Jobs reference (what each job does)

| Job | Input → output | Rule that protects you |
|-----|----------------|------------------------|
| `compile` | slots → structured plan | catalog lists === compile enums; unknown roles rejected |
| `decode` | reference reel → evidence-only observations | never copies observation wording into your slots |
| `repurpose` | owned footage + format | refuses `sourceMode: reference` (no copying others' footage) |
| `snapshot` | composition → frozen structure | slot values frozen empty; persist+confirm writes a concept template |
| `transcript` | reel captions → mapped evidence | slots stay empty; paid STT/vision is a separate confirm |
| `produce` | filled slots + owned B-roll + consented avatar | avatar without consent is `400`; returns `documentId` + `editorHref` |
| `variants` | one body → N hook variants | original `hookCopy` required per variant |
| `propose` | gaps → labeled suggestions | suggestions carry text `null`, accepted `false` until you apply |
| `longform` | long catalog format (≥60s) | cold-open/chapter/callback/button markers; lands a text timeline |
| `watchlist` / `shortlist` / `develop` | idea mining (below) | normalize + score; no scraping; no reach claims |

Packs carry version 1; old `formatId`s are never removed (additive trend-pack updates only).

## The beats rule (why every 3 seconds)

Shorts are planned in 3-second beats (`BEAT_SEC = 3` in `src/algorithms/viral-beats.js`): a hook opens, each beat advances with a distinct purpose and a preflighted camera move, a payoff ends it. Partial beats and rational frame rates are exact (drift-free integer/rational frames). Overlays alone do not count as a camera change; locked overrides stay visible. This is the same rule [Short-Form Shorts](short-form-shorts.md) uses.

## Idea mining ($0, no scraping)

A video idea is seven bricks: **topic, angle, hook, story structure, visual format, key visuals, audio.**

1. **Mine outliers.** Score is views ÷ channel average (5× and 5% research defaults). No fetching from Instagram/TikTok/YouTube: you paste rows, CoreReflex normalizes and scores.
2. **Analyze patterns.** Counts brick *types*, not wording. Remix holds winning types and names gaps.
3. **Hold and remix.** Same-type cells carry every brick; other types carry topic + angle only and refuse held hooks/formats. Research never promises reach.

## Limits that protect you

- Decode and remix never paste source wording into your slots (anti-copy law).
- Repurpose refuses reference-source footage.
- Produce refuses unconsented avatars.
- Missing roles are named gaps, not guesses.
- Long-form pixel reopen/export is a later proof; today it lands an editable text timeline.

## Related pages

- [Short-Form Shorts](short-form-shorts.md): the 5/10/15/30/60s render path these formats compile onto.
- [Concept Templates](concept-templates.md): persisting a format as a reusable template.
- [Agent Tool Reference](agent-tools.md): the exact tool names on each door.
- [Coming Soon](coming-soon.md): produce/render proofs still open.
