cueframe 0.3.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +56 -30
- package/dist/analyze-4EGOBMRV.js +2 -0
- package/dist/chunk-3QSA3EBY.js +0 -0
- package/dist/chunk-QKQNZIRI.js +12 -0
- package/dist/cueframe.js +35 -58
- package/dist/supportedAgents.js +0 -0
- package/package.json +23 -17
- package/skills/_connect.md +3 -21
- package/skills/add-music-bed/SKILL.md +3 -0
- package/skills/brand-reel/SKILL.md +3 -0
- package/skills/clip-a-talking-head/SKILL.md +6 -2
- package/skills/composing-video/SKILL.md +61 -37
- package/skills/cueframe-brand-demo/SKILL.md +14 -13
- package/skills/cueframe-cli/SKILL.md +54 -44
- package/skills/cueframe-component-authoring/SKILL.md +10 -9
- package/skills/cueframe-product-video/SKILL.md +8 -7
- package/skills/every-format-from-one-edit/SKILL.md +3 -0
- package/skills/extracting-brand-kits/SKILL.md +1 -1
- package/skills/launch-video/SKILL.md +3 -0
- package/skills/make-a-social-reel/SKILL.md +3 -0
- package/skills/rebrand-a-video/SKILL.md +3 -0
- package/skills/video-craft-standards/SKILL.md +4 -3
- package/dist/analyze-4EZTZEAG.js +0 -2
- package/dist/chunk-4FMFWW74.js +0 -12
|
@@ -7,14 +7,24 @@ description: Use when editing, clipping, or rendering video via the CueFrame CLI
|
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
The `cueframe` CLI drives the CueFrame platform from the terminal. Optimized for agents — every command supports `--json` (NDJSON event stream) and the binary self-describes via `cueframe describe --json`.
|
|
10
|
+
The `cueframe` CLI drives the CueFrame platform from the terminal. Optimized for agents — every command supports `--json` (NDJSON event stream) and the binary self-describes via `npx -y cueframe describe --json`.
|
|
11
|
+
|
|
12
|
+
**Run it as `npx -y cueframe …` — every command in this skill is written that way, and
|
|
13
|
+
that form is executable verbatim.** There is no `cueframe` on your PATH unless you put it
|
|
14
|
+
there: `npx -y cueframe install` wires the MCP server and drops these skills, but npx
|
|
15
|
+
unpacks to an ephemeral cache, so it installs no binary. `npx` re-resolves the current
|
|
16
|
+
version on each call (~0.5s warm, ~5s cold), which also means these commands never go
|
|
17
|
+
stale. If you are running many in a row and want to skip that, `npm i -g cueframe` once
|
|
18
|
+
and drop the `npx -y ` prefix — but it needs a user-writable npm prefix (a default Linux
|
|
19
|
+
install fails `EACCES` on `/usr/local/lib/node_modules`), so it is an optimization, not
|
|
20
|
+
the documented path.
|
|
11
21
|
|
|
12
22
|
**The framework is three verbs:** `upload` (register media) → `composition put` (author the timeline) → `render` (→ MP4). The `Composition` is the contract — render takes the saved composition, nothing else. Everything domain-specific (AI clip suggestions, FCPXML/Premiere export) is a **use-case on-ramp** layered on top, not part of the core.
|
|
13
23
|
|
|
14
24
|
**Core principle — discover, don't guess.** Never author a composition from the
|
|
15
|
-
examples below alone. The live contract is `cueframe schema composition` (prints
|
|
25
|
+
examples below alone. The live contract is `npx -y cueframe schema composition` (prints
|
|
16
26
|
the real wire schema the server enforces); confirm any draft with
|
|
17
|
-
`cueframe composition validate -b @file.json` BEFORE you render. Validation is
|
|
27
|
+
`npx -y cueframe composition validate -b @file.json` BEFORE you render. Validation is
|
|
18
28
|
free and instant; a render is neither. The examples here are orientation — the
|
|
19
29
|
schema is the source of truth.
|
|
20
30
|
|
|
@@ -30,20 +40,20 @@ clip suggestion required.
|
|
|
30
40
|
# Commands run against production; auth is stored in ~/.cueframe/auth.json.
|
|
31
41
|
|
|
32
42
|
# 1. Register media (one or many — mixed video / image / audio).
|
|
33
|
-
cueframe upload "/path/to/source.mp4" --json # → mediaItemId (process_complete)
|
|
43
|
+
npx -y cueframe upload "/path/to/source.mp4" --json # → mediaItemId (process_complete)
|
|
34
44
|
|
|
35
45
|
# 2. Create a project (sets aspect/format).
|
|
36
|
-
cueframe project create -n "promo" -a 9:16 --json # → projectId
|
|
46
|
+
npx -y cueframe project create -n "promo" -a 9:16 --json # → projectId
|
|
37
47
|
|
|
38
48
|
# 3. Author the composition: tracks of clips (per-clip reframe/trim), optional
|
|
39
49
|
# captions (captions.segments), brandKitId. The composition is the SSOT.
|
|
40
50
|
# Discover the live schema, then validate the draft BEFORE saving/rendering:
|
|
41
|
-
cueframe schema composition # → live wire schema
|
|
42
|
-
cueframe composition validate -b @composition.json # → ✓ valid | per-field errors (no render)
|
|
43
|
-
cueframe composition put <projectId> -b @composition.json # ETag auto
|
|
51
|
+
npx -y cueframe schema composition # → live wire schema
|
|
52
|
+
npx -y cueframe composition validate -b @composition.json # → ✓ valid | per-field errors (no render)
|
|
53
|
+
npx -y cueframe composition put <projectId> -b @composition.json # ETag auto
|
|
44
54
|
|
|
45
55
|
# 4. Render the saved composition to MP4. SSE-watches + downloads when done.
|
|
46
|
-
cueframe render <projectId> -o ./out.mp4 --json
|
|
56
|
+
npx -y cueframe render <projectId> -o ./out.mp4 --json
|
|
47
57
|
# → render_queued → render_progress* → render_complete
|
|
48
58
|
#
|
|
49
59
|
# `render` takes ONLY a projectId and renders the SAVED composition (tracks +
|
|
@@ -52,14 +62,14 @@ cueframe render <projectId> -o ./out.mp4 --json
|
|
|
52
62
|
# a hand-authored composition; if absent, the clip is rendered without captions.
|
|
53
63
|
|
|
54
64
|
# Reattach to an in-flight render later (e.g. after disconnect):
|
|
55
|
-
cueframe render watch <renderId> -p <projectId> -o ./out.mp4 --json
|
|
65
|
+
npx -y cueframe render watch <renderId> -p <projectId> -o ./out.mp4 --json
|
|
56
66
|
```
|
|
57
67
|
|
|
58
68
|
## Anatomy of a composition.json
|
|
59
69
|
|
|
60
70
|
This section orients you to the shape; the authoritative contract is
|
|
61
|
-
`cueframe schema composition` (the live wire schema) — run it when a field is
|
|
62
|
-
unclear, and `cueframe composition validate -b @file.json` to check a draft.
|
|
71
|
+
`npx -y cueframe schema composition` (the live wire schema) — run it when a field is
|
|
72
|
+
unclear, and `npx -y cueframe composition validate -b @file.json` to check a draft.
|
|
63
73
|
|
|
64
74
|
`composition put` takes the **bare** `Composition` object (no wrapper; the CLI POSTs
|
|
65
75
|
the `@file` verbatim and handles the ETag). Minimal valid shape:
|
|
@@ -126,18 +136,18 @@ the composition yourself (above).
|
|
|
126
136
|
|
|
127
137
|
```bash
|
|
128
138
|
# 1. Upload + chain the AI clip pass.
|
|
129
|
-
cueframe upload "/path/to/source.mp4" --analyze --json # mediaItemId + suggestions
|
|
130
|
-
# (or run it explicitly: cueframe analyze <mediaItemId> --wait --json)
|
|
139
|
+
npx -y cueframe upload "/path/to/source.mp4" --analyze --json # mediaItemId + suggestions
|
|
140
|
+
# (or run it explicitly: npx -y cueframe analyze <mediaItemId> --wait --json)
|
|
131
141
|
|
|
132
142
|
# 2. List clip suggestions (publicId sug_…, title, startMs/endMs, score).
|
|
133
|
-
cueframe clips <mediaItemId> --json
|
|
143
|
+
npx -y cueframe clips <mediaItemId> --json
|
|
134
144
|
|
|
135
145
|
# 3. Create a project AND author its composition from the chosen suggestion.
|
|
136
|
-
cueframe project create -n "paul-klein-shorts" -a 9:16 --from-suggestion <sug_…> --json
|
|
137
|
-
# (or, on an existing project: cueframe composition from-suggestion <projectId> -s <sug_…>)
|
|
146
|
+
npx -y cueframe project create -n "paul-klein-shorts" -a 9:16 --from-suggestion <sug_…> --json
|
|
147
|
+
# (or, on an existing project: npx -y cueframe composition from-suggestion <projectId> -s <sug_…>)
|
|
138
148
|
|
|
139
149
|
# 4. Render — same framework verb as above.
|
|
140
|
-
cueframe render <projectId> -o ./out.mp4 --json
|
|
150
|
+
npx -y cueframe render <projectId> -o ./out.mp4 --json
|
|
141
151
|
```
|
|
142
152
|
|
|
143
153
|
Both flows converge on `composition put` → `render`; the on-ramp just authors the
|
|
@@ -154,50 +164,50 @@ video and composites it (the shared renderer never runs your code).
|
|
|
154
164
|
|
|
155
165
|
```bash
|
|
156
166
|
# 1. Scaffold a workspace (writes cueframe.json + cueframe/components/). Idempotent.
|
|
157
|
-
cueframe init --json
|
|
167
|
+
npx -y cueframe init --json
|
|
158
168
|
|
|
159
|
-
# 2a.
|
|
160
|
-
|
|
161
|
-
cueframe eject cinematic-title --json
|
|
169
|
+
# 2a. Scaffold a component in cueframe/components/<id>/ as owned, editable source.
|
|
170
|
+
npx -y cueframe new component my-badge --json
|
|
162
171
|
|
|
163
|
-
# 2b. …or
|
|
164
|
-
|
|
172
|
+
# 2b. …or FORK a built-in: discover ids from the catalog (npx -y cueframe api GET /v1/components),
|
|
173
|
+
# fetch that primitive's source with the `get_component_source` tool, and paste it into
|
|
174
|
+
# cueframe/components/my-badge/index.tsx as your starting point.
|
|
165
175
|
|
|
166
176
|
# 3. Edit cueframe/components/<id>/ — it's standard Remotion. The component is mounted
|
|
167
177
|
# ({ durationInFrames, params }) at render; params are your composition's clip params.
|
|
168
178
|
|
|
169
179
|
# 4. Publish to CueFrame so it can render (uploads index.tsx as the component's tsxSource).
|
|
170
|
-
cueframe push
|
|
171
|
-
cueframe sync --json # every component in the workspace
|
|
180
|
+
npx -y cueframe push my-badge --json # one component
|
|
181
|
+
npx -y cueframe sync --json # every component in the workspace
|
|
172
182
|
|
|
173
183
|
# 5. Reference the component id in your composition (as an alpha-layer clip), then render
|
|
174
184
|
# with the same verb. Preview a single component first via the MCP preview_component loop.
|
|
175
|
-
cueframe render <projectId> -o ./out.mp4 --json
|
|
185
|
+
npx -y cueframe render <projectId> -o ./out.mp4 --json
|
|
176
186
|
```
|
|
177
187
|
|
|
178
188
|
## Quick reference
|
|
179
189
|
|
|
180
190
|
| Need to… | Command |
|
|
181
191
|
|---|---|
|
|
182
|
-
| See every command + flags | `cueframe describe --json` |
|
|
183
|
-
| (Re)install/update this skill | `cueframe install` (→ `~/.claude/skills/cueframe-cli`) |
|
|
184
|
-
| List projects | `cueframe list -n 50` |
|
|
185
|
-
| List your media | `cueframe clips` (no mediaId arg) |
|
|
186
|
-
| Discover the live composition schema | `cueframe schema composition` |
|
|
187
|
-
| Validate a draft (no save, no render) | `cueframe composition validate -b @plan.json` |
|
|
188
|
-
| Read composition + ETag | `cueframe composition get <projectId> --json` |
|
|
189
|
-
| Write composition | `cueframe composition put <projectId> -b @plan.json` (ETag auto) |
|
|
190
|
-
| Export to Final Cut | `cueframe export fcpxml <projectId> -s <sug> --wait -o cut.zip` |
|
|
191
|
-
| Export to Premiere | `cueframe export premiere <projectId> -s <sug> --wait -o cut.zip` |
|
|
192
|
-
| Anything not wrapped | `cueframe api GET /v1/... -i` (escape hatch, like `gh api`) |
|
|
193
|
-
| Validate a composition without mutating | `cueframe composition validate -b @plan.json` |
|
|
192
|
+
| See every command + flags | `npx -y cueframe describe --json` |
|
|
193
|
+
| (Re)install/update this skill | `npx -y cueframe install` (→ `~/.claude/skills/cueframe-cli`) |
|
|
194
|
+
| List projects | `npx -y cueframe list -n 50` |
|
|
195
|
+
| List your media | `npx -y cueframe clips` (no mediaId arg) |
|
|
196
|
+
| Discover the live composition schema | `npx -y cueframe schema composition` |
|
|
197
|
+
| Validate a draft (no save, no render) | `npx -y cueframe composition validate -b @plan.json` |
|
|
198
|
+
| Read composition + ETag | `npx -y cueframe composition get <projectId> --json` |
|
|
199
|
+
| Write composition | `npx -y cueframe composition put <projectId> -b @plan.json` (ETag auto) |
|
|
200
|
+
| Export to Final Cut | `npx -y cueframe export fcpxml <projectId> -s <sug> --wait -o cut.zip` |
|
|
201
|
+
| Export to Premiere | `npx -y cueframe export premiere <projectId> -s <sug> --wait -o cut.zip` |
|
|
202
|
+
| Anything not wrapped | `npx -y cueframe api GET /v1/... -i` (escape hatch, like `gh api`) |
|
|
203
|
+
| Validate a composition without mutating | `npx -y cueframe composition validate -b @plan.json` |
|
|
194
204
|
|
|
195
205
|
## Auth
|
|
196
206
|
|
|
197
207
|
Commands run against production. Authenticate once:
|
|
198
208
|
|
|
199
|
-
- `cueframe login` — OAuth device flow (laptops).
|
|
200
|
-
- `cueframe auth <cf_live_… key>` — save a static API key (CI / headless).
|
|
209
|
+
- `npx -y cueframe login` — OAuth device flow (laptops).
|
|
210
|
+
- `npx -y cueframe auth <cf_live_… key>` — save a static API key (CI / headless).
|
|
201
211
|
|
|
202
212
|
Creds are stored in `~/.cueframe/auth.json`; the key can also come from the `CUEFRAME_API_KEY` env var.
|
|
203
213
|
|
|
@@ -215,11 +225,11 @@ Errors come as `{"event":"error", "phase":"<step>", "message":"...", "code":"...
|
|
|
215
225
|
|
|
216
226
|
| Mistake | Reality |
|
|
217
227
|
|---|---|
|
|
218
|
-
| Reaching for `curl …/v1/...` because the CLI didn't have a command | Use `cueframe api METHOD /v1/...` — same auth, same JSON pipeline. |
|
|
219
|
-
| Polling for render completion with a sleep loop | `cueframe render` already SSE-watches and exits when done. Use `render watch <id>` to reattach. |
|
|
228
|
+
| Reaching for `curl …/v1/...` because the CLI didn't have a command | Use `npx -y cueframe api METHOD /v1/...` — same auth, same JSON pipeline. |
|
|
229
|
+
| Polling for render completion with a sleep loop | `npx -y cueframe render` already SSE-watches and exits when done. Use `render watch <id>` to reattach. |
|
|
220
230
|
| Skipping `--json` and trying to parse human output | Human output is for humans. Agents always use `--json`. |
|
|
221
231
|
| Hand-editing the composition without an ETag | `composition put` GETs the ETag for you; `from-suggestion` rebuilds from a clip. Don't hand-craft unless you have to. |
|
|
222
|
-
| Calling `cueframe render <projectId> <suggestionId>` (old two-positional shape) | `render` takes ONLY a projectId; commander rejects the extra arg. It renders the SAVED composition — author it first via `composition put` (hand-author) or `project create --from-suggestion <sug>` (clip-finder on-ramp). |
|
|
232
|
+
| Calling `npx -y cueframe render <projectId> <suggestionId>` (old two-positional shape) | `render` takes ONLY a projectId; commander rejects the extra arg. It renders the SAVED composition — author it first via `composition put` (hand-author) or `project create --from-suggestion <sug>` (clip-finder on-ramp). |
|
|
223
233
|
| Assuming `render` needs a clip suggestion / that captions only come from a suggestion | No — `render` renders the saved composition directly; a suggestion is optional. Captions come from `composition.captions` (author them in the `put` JSON). The clip-suggestion on-ramp just fills those captions for you by slicing the transcript at author time. |
|
|
224
234
|
|
|
225
235
|
## When this skill applies (routing)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cueframe-component-authoring
|
|
3
|
-
description: Use when authoring, forking, or customizing a CueFrame motion-graphics component/primitive/graphic — e.g. "customize the cinematic-title primitive", "make my own animated lower-third", "fork a CueFrame template and edit it", "author a custom graphic and render it". Covers both the MCP agent path (get_component_source → create_component) and the CLI repo path (cueframe
|
|
3
|
+
description: Use when authoring, forking, or customizing a CueFrame motion-graphics component/primitive/graphic — e.g. "customize the cinematic-title primitive", "make my own animated lower-third", "fork a CueFrame template and edit it", "author a custom graphic and render it". Covers both the MCP agent path (get_component_source → create_component) and the CLI repo path (get_component_source → npx -y cueframe new component → push). Use BEFORE hand-writing a component from scratch — forking a built-in is usually the faster start.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# CueFrame component authoring (fork / customize / own)
|
|
@@ -39,14 +39,15 @@ Source lives in `cueframe/components/<id>/` (the `cueframe.json` workspace); edi
|
|
|
39
39
|
standard Remotion, push to render.
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
cueframe init --json # scaffold cueframe.json + cueframe/components/
|
|
43
|
-
cueframe
|
|
44
|
-
#
|
|
42
|
+
npx -y cueframe init --json # scaffold cueframe.json + cueframe/components/
|
|
43
|
+
npx -y cueframe new component my-badge --json # scaffold a component in the workspace
|
|
44
|
+
# to start from a built-in instead of a blank file: fetch its source with the
|
|
45
|
+
# `get_component_source` tool and paste it into cueframe/components/my-badge/index.tsx
|
|
45
46
|
# …edit cueframe/components/<id>/ in your editor (standard Remotion)…
|
|
46
|
-
cueframe push
|
|
47
|
-
# or: cueframe sync --json
|
|
47
|
+
npx -y cueframe push my-badge --json # upload index.tsx as the component tsxSource
|
|
48
|
+
# or: npx -y cueframe sync --json # push every component in the workspace
|
|
48
49
|
# reference the component id in your composition, then render:
|
|
49
|
-
cueframe render <projectId> -o ./out.mp4 --json
|
|
50
|
+
npx -y cueframe render <projectId> -o ./out.mp4 --json
|
|
50
51
|
```
|
|
51
52
|
|
|
52
53
|
The CLI writes a 3-file layout (`index.tsx` = renderable module + adapter; `_config.ts` + `config.ts`
|
|
@@ -62,6 +63,6 @@ follow-up — today you choose from prose + params + source, or compose+`preview
|
|
|
62
63
|
## Don't
|
|
63
64
|
- Don't expect a forked primitive to use rich named props — it's adapted to `({durationInFrames,
|
|
64
65
|
params})`; read `params` inside.
|
|
65
|
-
- Don't hand-roll a graphic from zero when a built-in is close — fork it (
|
|
66
|
-
`cueframe
|
|
66
|
+
- Don't hand-roll a graphic from zero when a built-in is close — fork it (fetch the source with
|
|
67
|
+
`get_component_source`, paste it into a `npx -y cueframe new component` scaffold) and edit.
|
|
67
68
|
- Don't `create_component` a fresh id each fix iteration — `update_component` (same id) is the loop.
|
|
@@ -50,7 +50,7 @@ style's) over each window. Result → `source.reframe.segments` on the clip.
|
|
|
50
50
|
## 3. Compose
|
|
51
51
|
|
|
52
52
|
One video track, the screen recording as a media clip carrying the reframe.
|
|
53
|
-
`cueframe composition put <projectId> -b @composition.json` (see `cueframe-cli`).
|
|
53
|
+
`npx -y cueframe composition put <projectId> -b @composition.json` (see `cueframe-cli`).
|
|
54
54
|
Choose `-a 16:9` for landscape product video, `9:16` for social.
|
|
55
55
|
|
|
56
56
|
## 4. Polish — layer overlay primitives (this is what makes it look "produced")
|
|
@@ -77,21 +77,21 @@ Simultaneous overlays go on **separate tracks** — clips on one track can't ove
|
|
|
77
77
|
|
|
78
78
|
## 5. Render
|
|
79
79
|
|
|
80
|
-
`cueframe render <projectId> -o out.mp4 --json`. Verify the output (ffprobe +
|
|
80
|
+
`npx -y cueframe render <projectId> -o out.mp4 --json`. Verify the output (ffprobe +
|
|
81
81
|
sample frames) before declaring done.
|
|
82
82
|
|
|
83
83
|
## Worked examples — composition JSON
|
|
84
84
|
|
|
85
85
|
These are **orientation, not the contract.** The live wire schema is
|
|
86
|
-
`cueframe schema composition`, and the way to know a draft is correct is
|
|
87
|
-
`cueframe composition validate -b @composition.json` — it runs the same
|
|
86
|
+
`npx -y cueframe schema composition`, and the way to know a draft is correct is
|
|
87
|
+
`npx -y cueframe composition validate -b @composition.json` — it runs the same
|
|
88
88
|
validator the server enforces, with no save and no render. Discover + validate
|
|
89
89
|
before you render; never spend a render to find a schema mistake.
|
|
90
90
|
|
|
91
91
|
Each block below is a complete `@composition.json` (the bare object `composition put`
|
|
92
92
|
accepts: top-level `v`, `format`, `tracks`, optional `captions`). All five validate
|
|
93
93
|
against the real wire schema + save invariants (swap the `<…MediaId>` placeholders for
|
|
94
|
-
real `cueframe upload` ids). Conventions that keep them valid:
|
|
94
|
+
real `npx -y cueframe upload` ids). Conventions that keep them valid:
|
|
95
95
|
|
|
96
96
|
- Tracks hold **`contents`** (not `clips`); each clip wraps a `source`.
|
|
97
97
|
- A clip's `source.kind` must match the track `kind`: `media` → `video`/`image`/`audio`
|
|
@@ -267,9 +267,10 @@ Talking-head with an `active-speaker` reframe and a `heroText` title at `zPlane:
|
|
|
267
267
|
- **Picture-in-picture / inset cards render** — per-clip output-space placement
|
|
268
268
|
(`region:{x,y,w,h}` in `[0,1]` + `fit`) is wired for PiP / inset / split-screen,
|
|
269
269
|
for video, image, and overlay clips. Set `region`/`fit` on the **clip** (siblings
|
|
270
|
-
of `source`, not inside it —
|
|
270
|
+
of `source`, not inside it — as an agent, patch them with an `apply_composition`
|
|
271
|
+
`clip.update` op: `{ type: 'clip.update', clipId, patch: { region, fit } }`); two
|
|
271
272
|
clips with different placement composite by track order instead of occluding the
|
|
272
273
|
background. See EX3 / EX4 below.
|
|
273
274
|
- This recipe lives in a skill on purpose: the engine stays use-case-free; the
|
|
274
275
|
product opinions (style, which primitives, layout) live here and ship via
|
|
275
|
-
`cueframe install`. Add sibling recipes (`cueframe-podcast-clip`, …) the same way.
|
|
276
|
+
`npx -y cueframe install`. Add sibling recipes (`cueframe-podcast-clip`, …) the same way.
|
|
@@ -25,6 +25,9 @@ approaches and CueFrame isn't connected:
|
|
|
25
25
|
run `npx -y cueframe install` — it detects what is on the machine and wires each one.
|
|
26
26
|
- **ChatGPT:** the CLI cannot wire it (there is no local config to write) — add
|
|
27
27
|
`https://api.cueframe.ai/v1/mcp` as a custom connector instead.
|
|
28
|
+
- **No account at all (pay-per-call):** connect
|
|
29
|
+
`https://api.cueframe.ai/v1/mcp/x402` — no sign-up, no API key; priced calls
|
|
30
|
+
settle per-call in USDC over x402 from the agent's wallet.
|
|
28
31
|
<!-- /cueframe:connect -->
|
|
29
32
|
|
|
30
33
|
Then straight to deriving — this whole job is minutes when the master is good.
|
|
@@ -22,7 +22,7 @@ they go straight to storage via presigned PUTs.
|
|
|
22
22
|
|
|
23
23
|
## 0. Prereqs
|
|
24
24
|
|
|
25
|
-
- An API key with `projects:write`
|
|
25
|
+
- An API key with `projects:write`. `create_brand_kit` gates on the `brand_kits` entitlement, which EVERY plan grants including free, and it costs no credits — so brand kits are not a paywall to route around. (`get_account` confirms it; a 402 names the feature.)
|
|
26
26
|
- `ffmpeg` locally, and the reference video file (download it first if it's a URL).
|
|
27
27
|
- Know the org's IDENTITY kit if one exists (`get_profile` → brandKits). Inspiration NEVER overwrites identity: logo, brand fonts, and identity color slots come from the existing kit (or stay for the user to fill) — extraction contributes the LANGUAGE only.
|
|
28
28
|
|
|
@@ -24,6 +24,9 @@ approaches and CueFrame isn't connected:
|
|
|
24
24
|
run `npx -y cueframe install` — it detects what is on the machine and wires each one.
|
|
25
25
|
- **ChatGPT:** the CLI cannot wire it (there is no local config to write) — add
|
|
26
26
|
`https://api.cueframe.ai/v1/mcp` as a custom connector instead.
|
|
27
|
+
- **No account at all (pay-per-call):** connect
|
|
28
|
+
`https://api.cueframe.ai/v1/mcp/x402` — no sign-up, no API key; priced calls
|
|
29
|
+
settle per-call in USDC over x402 from the agent's wallet.
|
|
27
30
|
<!-- /cueframe:connect -->
|
|
28
31
|
|
|
29
32
|
Keep the momentum — the video plan is the hard part, the connection is not.
|
|
@@ -24,6 +24,9 @@ When the first real tool call is imminent and CueFrame isn't connected:
|
|
|
24
24
|
run `npx -y cueframe install` — it detects what is on the machine and wires each one.
|
|
25
25
|
- **ChatGPT:** the CLI cannot wire it (there is no local config to write) — add
|
|
26
26
|
`https://api.cueframe.ai/v1/mcp` as a custom connector instead.
|
|
27
|
+
- **No account at all (pay-per-call):** connect
|
|
28
|
+
`https://api.cueframe.ai/v1/mcp/x402` — no sign-up, no API key; priced calls
|
|
29
|
+
settle per-call in USDC over x402 from the agent's wallet.
|
|
27
30
|
<!-- /cueframe:connect -->
|
|
28
31
|
|
|
29
32
|
Thirty seconds, then straight back to the reel — treat it as a detour, never a gate.
|
|
@@ -25,6 +25,9 @@ approaches and CueFrame isn't connected:
|
|
|
25
25
|
run `npx -y cueframe install` — it detects what is on the machine and wires each one.
|
|
26
26
|
- **ChatGPT:** the CLI cannot wire it (there is no local config to write) — add
|
|
27
27
|
`https://api.cueframe.ai/v1/mcp` as a custom connector instead.
|
|
28
|
+
- **No account at all (pay-per-call):** connect
|
|
29
|
+
`https://api.cueframe.ai/v1/mcp/x402` — no sign-up, no API key; priced calls
|
|
30
|
+
settle per-call in USDC over x402 from the agent's wallet.
|
|
28
31
|
<!-- /cueframe:connect -->
|
|
29
32
|
|
|
30
33
|
Then back to the brand — most of this job is a kit definition and an audit.
|
|
@@ -103,9 +103,10 @@ Everything in §1, plus:
|
|
|
103
103
|
- **MUST** Active-speaker reframe (`focus: active-speaker` / `face`) — a
|
|
104
104
|
moving camera, not a static center crop.
|
|
105
105
|
- **MUST** Captions timed to the real transcript (`captions.fromTranscript`).
|
|
106
|
-
The behind-the-speaker LOOK is an overlay text layer at
|
|
107
|
-
`zPlane:"behind-subject"` where the footage allows
|
|
108
|
-
|
|
106
|
+
The focused behind-the-speaker LOOK is an overlay text layer at
|
|
107
|
+
`zPlane:"behind-subject"` where the footage allows. Use caption-layer
|
|
108
|
+
`zPlane:"behind-subject"` only when the user explicitly wants every running
|
|
109
|
+
caption behind the speaker and the legibility gate accepts it.
|
|
109
110
|
- **MUST** Dead air and false starts cut (`addExcludedRange` /
|
|
110
111
|
`cutAndRipple`).
|
|
111
112
|
|
package/dist/analyze-4EZTZEAG.js
DELETED