---
name: stream_content
short_description: "Distill long event or stream recordings into content blocks and clip candidates."
description: "Use for stream/event recordings that need holding screens, dead air, real content, and publishable clip candidates separated into reviewable artifacts."
---

# Stream Content

Use this pack when a long event, webinar, livestream, panel, or conference
recording needs to become reviewable publishing material.

## Capabilities

| Capability | Kind | What it does |
|---|---|---|
| `stream_content.distill` | Orchestrator | Distill a long recording into labeled segments, clip candidates, and reviewable artifacts. |
| `stream_content.segment_map` | Action | Build a labeled segment map when full distillation is unnecessary. |
| `stream_content.clip_candidates` | Action | Generate scored clip candidates from an existing transcript and optional segment map. |

## Quick Start

```python
import astrid.sdk as sdk
result = sdk.invoke(
    "stream_content.distill",
    inputs={
        "video": "sources/event.mp4",
        "transcript": "runs/transcript.json",
        "brief": "brief.md",
    },
    out="runs/stream-content",
)
```

Omit `--transcript` to run `editorial.transcribe` first. Use `--no-scenes` to
skip scene detection. Use `--dry-run` to emit the plan without executing it.

## Output Contract

The orchestrator writes:

- `segment_map.json`: `version`, `source`, `duration`, and gapless `segments`
  with `start`, `end`, `kind`, `label`, `confidence`, and `signals`.
- `segments/`: extracted `content` and `screening` clips plus `segments.json`.
- `candidates.json`: scored clip windows sorted by descending score.
- `review.html`: static local review page with segment links and candidate
  playback.

Use `stream_content.segment_map` directly when you only need the labeled
timeline. Use `stream_content.clip_candidates` directly when you already have a
transcript and optional segment map.
