---
title: "Сценарний медіапайплайн"
description: "Схемокерована генерація сценарних відео — JSON-запит, біблія персонажів, stills першого кадру, I2V, мініатюри, CLI run-scripted-video"
locale: "uk"
---
# Сценарний медіапайплайн (Ring Media Conductor)

Незалежний від провайдера, схемокерований пайплайн для маркетингових і пояснювальних роликів. Креативний агент створює один **`scripted-video-generation-request-.json`**; **`ring-video-create`** послідовно виконує:

1. **Still першого кадру** (`firstFramePrompt` → ImageConductor)
2. **Відео I2V** (grok-imagine-video-1.5 @ 480p, коли це draft + image)
3. **Необов’язкова мініатюра** (детерміновані текстові накладки через `next/og`)

  
- **[ring-video-create](/docs/mcp/ring-video-create.md)** — Довідник інструмента MCP (перевантажений шлях сцени).

  
- **[Генеративні відео](/docs/development/generative-videos.md)** — Пресети VideoConductor і режими ремастерингу.

## Архітектура

```text
Creative agent → scripted-video-generation-request.json
  → run-scripted-video.mjs (CLI) OR ring-video-create (MCP)
    → VideoConductor.generate
      → ImageConductor (firstFramePrompt)
      → xAI I2V (compiled ACTION/DIALOGUE prompt)
      → thumbnail compositor (optional)
    → manifest v3 + ring-filebase URLs
```

| Артефакт | Шлях |
|----------|------|
| JSON Schema | `lib/media/scripted-video-generation.schema.json` |
| Валідація Zod | `lib/media/schemas.ts` |
| Компілятор prompt | `lib/media/prompt-compiler.ts` |
| Мініатюра | `lib/media/thumbnail.tsx` |
| Приклад запиту | `scripts/ring-viral-video/scripted-video-generation-request-hoa-nightclub.json` |
| Запускач CLI | `scripts/ring-viral-video/run-scripted-video.mjs` |
| Лінза режисера | `AI-LEGIOX/legiox-truth-lens/scripted-video-director.nodus.json` |

## Структура файлу запиту

```json
{
  "schemaVersion": "1.0",
  "requestId": "hoa-nightclub-viral-2026-06",
  "purpose": "viral-ad",
  "defaults": { "qualityMode": "draft", "aspectRatio": "16:9", "imageResolution": "2k" },
  "cast": [{ "id": "guy", "description": "…" }],
  "setting": "San Francisco nightclub at night…",
  "clips": [{
    "id": "03_sf_nightclub_ring_opener",
    "duration": 12,
    "firstFrame": { "imagePrompt": "{{girl}} and {{guy}} at bar…" },
    "scene": {
      "action": "{{guy}} gestures warmly…",
      "dialogue": [{ "speaker": "guy", "line": "So your HOA uses Ring?", "tone": "warmly" }]
    },
    "thumbnail": { "enabled": true, "overlays": [{ "text": "Your HOA on Ring", "role": "title" }] }
  }]
}
```

**Заповнювачі персонажів:** `{{guy}}`, `{{girl}}` під час компіляції розгортаються у `cast[].description`.

## Типи кліпів

| Тип | firstFrame | scene.dialogue | Режим відео |
|------|------------|----------------|------------|
| Монтаж / UI | не вказувати | необов’язковий | T2V `grok-imagine-video` @ 480p |
| Діалог | `imagePrompt` обов’язковий | обов’язковий | I2V `grok-imagine-video-1.5` @ 480p |

## CLI

```bash
cd ring-platform.org/scripts/ring-viral-video

# Full pipeline via MCP gateway (needs RING_MCP_ACCESS_KEY + dev server)
node run-scripted-video.mjs scripted-video-generation-request-hoa-nightclub.json --download

# Single clip
node run-scripted-video.mjs scripted-video-generation-request-hoa-nightclub.json --clip=03_sf_nightclub_ring_opener

# Remaster from manifest URL
node run-scripted-video.mjs request.json --remaster --clip=03_sf_nightclub_ring_opener --source-url=https://...
```

Маніфест v3 зберігає `firstFrameUrl`, `thumbnailUrl`, `pipelineRequestId`, `clipId` для кожного ключа оновлення `id::qualityMode`.

## MCP (один кліп)

```
ring-video-create \
  prompt "ACTION: … DIALOGUE: …" \
  firstFramePrompt "Cinematic still {{guy}} and {{girl}} at bar…" \
  qualityMode draft duration 12 purpose viral-ad clipId 03_sf_nightclub_ring_opener
```

Із `thumbnail.enabled` у body — дивіться [ring-video-create](/docs/mcp/ring-video-create.md).

## Робочий процес агента

Під час створення запитів звертайтеся до лінзи істини **`scripted-video-director`**. Перевіряйте за допомогою:

```typescript
import { scriptedVideoGenerationRequestSchema } from '@/lib/media/schemas'
scriptedVideoGenerationRequestSchema.parse(request)
```

## Середовище

```bash
XAI_API_KEY=…
RING_MCP_ACCESS_KEY=long-random-token
RING_API_BASE_URL=http://localhost:3000
FILE_BACKEND=ringbase
```

## Застаріле

`xai-video-jobs.json` + `generate-xai-videos.mjs` залишаються для пакетних запусків безпосередньо через xAI без gateway. Для нових кампаній віддавайте перевагу файлу сценарного запиту.
