Skip to content

Commit 551bfef

Browse files
committed
Rewrite video-pipeline doc for framework neutrality
1 parent 75104f4 commit 551bfef

3 files changed

Lines changed: 106 additions & 126 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Initial public release.
3131
- `docs/why-this-exists.md`. The manifesto.
3232
- `docs/the-five-layer-prompt.md`. The methodology.
3333
- `docs/audit-trail-pattern.md`. Why brand-lock snapshots matter.
34-
- `docs/remotion-bridge.md`. How `shots.json` maps to Remotion components.
34+
- `docs/connecting-to-video-pipelines.md`. How `shots.json` maps to a programmatic video framework.
3535
- `docs/connecting-to-generators.md`. Where shotkit stops, where the pipeline starts.
3636

3737
### Worked examples
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Connecting to Video Pipelines
2+
3+
This is a pointer document. The skill pack stops at the `shots.json` spec. This doc explains how that spec maps to a programmatic video framework for teams that want to build the bridge themselves.
4+
5+
The actual implementation is intentionally not included. WhyStrohm runs the implementation as part of its commercial offering. The methodology is open.
6+
7+
## Why a programmatic video framework
8+
9+
Programmatic video frameworks render video from declarative components. Same shot data, same output, every time. Deterministic, version-controlled, scriptable. They pair naturally with the file-native, audit-rich approach in this skill pack.
10+
11+
Several mature React-based options exist as of 2026 (Remotion, Motion Canvas, and similar). The pattern below applies to any of them. The API surface differs, the architecture does not.
12+
13+
For teams not already using one, this is a path worth considering for high-volume programmatic video. For teams using a different toolchain (After Effects, Premiere, Resolve), the same `shots.json` is still readable as a script. The pattern below is one of several valid bridges.
14+
15+
## The mapping
16+
17+
`shots.json` maps to a top-level Composition. Each shot maps to a Sequence inside the composition. Each text overlay maps to a layer above the shot's image.
18+
19+
```
20+
shots.json Composition structure
21+
├── project --> Composition root (duration, fps, dimensions)
22+
├── series_lock --> Theme context (character, environment, lighting)
23+
├── shots[] --> Sequence per shot (start frame, duration, image)
24+
└── text-overlays[] --> Sequence per overlay above shot image
25+
```
26+
27+
The components a working bridge typically defines:
28+
29+
- **Storyboard root**, the top-level composition. Reads `shots.json`, renders all sequences.
30+
- **Shot wrapper**, single shot. Handles image loading, motion blur, transitions.
31+
- **Text overlay**, single text layer. Handles enter/exit animations, positioning.
32+
- **Brand theme**, context provider that exposes brand-lock palette, fonts, motion tokens.
33+
34+
Each is a thin wrapper over the framework's primitives. The complexity is in the data model, not the rendering.
35+
36+
## Animation patterns
37+
38+
The `enter.animation` and `exit.animation` fields in `text-overlays.json` map to standard easing patterns. Framework-agnostic:
39+
40+
| animation | Pattern |
41+
|---|---|
42+
| `fade-in` / `fade-out` | linear interpolate on opacity |
43+
| `slide-up` / `slide-down` | linear interpolate on translateY |
44+
| `type-on` | character-count slice based on frame |
45+
| `hard-cut` | conditional render gated by frame |
46+
47+
Any timeline-based renderer expresses these with a few lines of math. Differences across frameworks are surface-level.
48+
49+
## Series consistency
50+
51+
The `series_lock` fields don't render directly, they govern the rendering. A bridge implementation typically:
52+
53+
- Passes `series_lock.character` / `environment` / `lighting` through context
54+
- Uses these for text overlay color selection (avoiding combinations that fail against the lighting)
55+
- Uses `color_grade` for global filter/grading on top of all sequences
56+
- Surfaces them as props for any custom shot components
57+
58+
## Brand-lock integration
59+
60+
Brand-lock palette and typography typically get loaded as design tokens at composition mount. A common pattern:
61+
62+
1. Read `brand-lock.snapshot.md` at build time
63+
2. Parse the palette table into CSS custom properties
64+
3. Parse typography into web-font definitions
65+
4. Expose to child components via context
66+
67+
This means the same composition can render against different brand-locks. Swap the snapshot, get a different brand's video.
68+
69+
## Audio
70+
71+
`shots.json` doesn't include audio. Most bridge implementations handle audio separately:
72+
73+
- VO comes from a separate `vo.json` or `vo/` directory keyed by `shot_id`
74+
- Music comes from a single track with start/end timestamps
75+
- Sound design lives in a downstream `audio.json`
76+
77+
A serious bridge merges these into the composition at render time. The skill pack doesn't reach into audio because the audio production workflow varies too much across teams to encode into a methodology.
78+
79+
## Why we're not including the implementation
80+
81+
Three reasons:
82+
83+
**Operational specifics vary.** Every team has different deployment targets, brand-loading strategies, audio workflows, render infrastructure. A reference implementation would need to be either too opinionated or too abstract.
84+
85+
**The methodology is what matters.** The architectural decisions, separating brand-lock from series-lock from shot-spec from text-layer, survive any implementation. The implementation is plumbing.
86+
87+
**Operating it well is part of the value WhyStrohm delivers.** The infrastructure that runs hundreds of rendered videos per month against the methodology is the product offering.
88+
89+
## Worth building yourself if
90+
91+
- You render more than 10 videos per month
92+
- You have 3+ active brands needing consistent output
93+
- You have engineers comfortable with React and CI/CD
94+
- You have specific custom rendering needs that no SaaS handles
95+
96+
## Not worth building yourself if
97+
98+
- You render fewer than 10 videos per month
99+
- You have one brand, infrequent updates
100+
- You don't have engineering capacity for a Node/React video pipeline
101+
- You're happy with manual editorial assembly
102+
103+
The skill pack works without a programmatic video framework. The bridge is for teams scaling beyond manual assembly.
104+
105+
WhyStrohm runs this commercially as a managed service for founder-led brands.

docs/remotion-bridge.md

Lines changed: 0 additions & 125 deletions
This file was deleted.

0 commit comments

Comments
 (0)