@letta-ai/letta-code 0.34.28 → 0.34.30
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/dist/mcp-client.js +2 -2
- package/dist/mcp-client.js.map +1 -1
- package/dist/mcp-oauth.js +2 -2
- package/dist/mcp-oauth.js.map +1 -1
- package/dist/types/agent/memory-git-process.d.ts +10 -0
- package/dist/types/agent/memory-git-process.d.ts.map +1 -0
- package/dist/types/agent/memory-git.d.ts.map +1 -1
- package/dist/types/tools/impl/monitor-timeout.d.ts +3 -0
- package/dist/types/tools/impl/monitor-timeout.d.ts.map +1 -0
- package/dist/types/tools/impl/monitor.d.ts +1 -2
- package/dist/types/tools/impl/monitor.d.ts.map +1 -1
- package/dist/types/tools/impl/shell-runner.d.ts.map +1 -1
- package/dist/types/tools/impl/watch-pr.d.ts.map +1 -1
- package/dist/types/tools/impl/workflow.d.ts +1 -0
- package/dist/types/tools/impl/workflow.d.ts.map +1 -1
- package/dist/types/tools/script-tool-scope.d.ts +2 -0
- package/dist/types/tools/script-tool-scope.d.ts.map +1 -1
- package/dist/types/tools/workflow/types.d.ts +2 -0
- package/dist/types/tools/workflow/types.d.ts.map +1 -1
- package/dist/types/tools/workflow/workflow-engine.d.ts +1 -1
- package/dist/types/tools/workflow/workflow-engine.d.ts.map +1 -1
- package/dist/types/websocket/listener/durable-file-lock.d.ts +2 -0
- package/dist/types/websocket/listener/durable-file-lock.d.ts.map +1 -1
- package/dist/types/websocket/listener/queue.d.ts +0 -1
- package/dist/types/websocket/listener/queue.d.ts.map +1 -1
- package/dist/types/websocket/listener/types.d.ts +6 -0
- package/dist/types/websocket/listener/types.d.ts.map +1 -1
- package/letta.js +374 -229
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/scripts/run-api-integration-tests.ts +20 -1
- package/scripts/source-file-size-baseline.json +2 -2
- package/skills/video-generation/SKILL.md +21 -3
- package/skills/video-generation/references/cinematography.md +217 -0
- package/skills/video-generation/references/example-prompts.md +55 -0
- package/skills/video-generation/references/storytelling.md +269 -0
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@letta-ai/letta-code",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.30",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"packages": {
|
|
6
6
|
"node_modules/@alcalzone/ansi-tokenize": {
|
|
@@ -5633,7 +5633,7 @@
|
|
|
5633
5633
|
},
|
|
5634
5634
|
"": {
|
|
5635
5635
|
"name": "@letta-ai/letta-code",
|
|
5636
|
-
"version": "0.34.
|
|
5636
|
+
"version": "0.34.30",
|
|
5637
5637
|
"dependencies": {
|
|
5638
5638
|
"@cursor/sdk": "1.1.0",
|
|
5639
5639
|
"@earendil-works/pi-ai": "^0.99.1",
|
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import { join } from "node:path";
|
|
|
4
4
|
import {
|
|
5
5
|
initializeModelCatalog,
|
|
6
6
|
loadPersistedModelCatalog,
|
|
7
|
+
refreshModelCatalog,
|
|
7
8
|
} from "@/agent/remote-model-catalog";
|
|
8
9
|
import { getApiRequestConfig } from "@/backend/api/request";
|
|
9
10
|
import { settingsManager } from "@/settings-manager";
|
|
@@ -12,10 +13,28 @@ import { settingsManager } from "@/settings-manager";
|
|
|
12
13
|
// Warm it before parallel CLI startups so a failed refresh can use real data.
|
|
13
14
|
const cacheDir = await mkdtemp(join(tmpdir(), "letta-api-test-catalog-"));
|
|
14
15
|
process.env.LETTA_MODEL_CATALOG_CACHE_DIR = cacheDir;
|
|
16
|
+
// This one-time warmup is the only network fetch the shard depends on before
|
|
17
|
+
// any test runs, so a single slow response must not fail the whole shard.
|
|
18
|
+
const WARMUP_ATTEMPTS = 4;
|
|
19
|
+
const WARMUP_BACKOFF_MS = 3_000;
|
|
20
|
+
|
|
15
21
|
try {
|
|
16
22
|
await settingsManager.initialize();
|
|
17
|
-
await initializeModelCatalog();
|
|
18
23
|
const { baseUrl } = await getApiRequestConfig();
|
|
24
|
+
for (let attempt = 1; ; attempt++) {
|
|
25
|
+
if (
|
|
26
|
+
(await refreshModelCatalog({ force: true })) ||
|
|
27
|
+
loadPersistedModelCatalog(baseUrl)
|
|
28
|
+
) {
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
if (attempt >= WARMUP_ATTEMPTS) break;
|
|
32
|
+
console.warn(
|
|
33
|
+
`Model catalog warmup attempt ${attempt}/${WARMUP_ATTEMPTS} failed; retrying`,
|
|
34
|
+
);
|
|
35
|
+
await Bun.sleep(WARMUP_BACKOFF_MS * attempt);
|
|
36
|
+
}
|
|
37
|
+
await initializeModelCatalog();
|
|
19
38
|
if (!loadPersistedModelCatalog(baseUrl)) {
|
|
20
39
|
throw new Error(
|
|
21
40
|
"API integration catalog warmup did not persist a valid cache",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"src/agent/client-skills.test.ts": 1132,
|
|
3
|
-
"src/agent/memory-git.ts":
|
|
3
|
+
"src/agent/memory-git.ts": 2009,
|
|
4
4
|
"src/backend/local-backend.test.ts": 2472,
|
|
5
5
|
"src/backend/local/local-store.ts": 3260,
|
|
6
6
|
"src/backend/pi-stream-adapter.test.ts": 1255,
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"src/tools/manager.ts": 2608,
|
|
37
37
|
"src/tools/tool-execution-context.test.ts": 1092,
|
|
38
38
|
"src/types/protocol_v2.ts": 2409,
|
|
39
|
-
"src/websocket/listen-client-concurrency.test.ts":
|
|
39
|
+
"src/websocket/listen-client-concurrency.test.ts": 2519,
|
|
40
40
|
"src/websocket/listen-client-protocol.test.ts": 5664,
|
|
41
41
|
"src/websocket/listener/commands/memory.ts": 1114,
|
|
42
42
|
"src/websocket/listener/file-commands.ts": 1045,
|
|
@@ -36,7 +36,25 @@ curl -sS "${LETTA_BASE_URL%/}/v1/videos/models" \
|
|
|
36
36
|
|
|
37
37
|
Fields on each model worth knowing: `supported_resolutions`, `supported_aspect_ratios`, `supported_sizes`, `supported_durations` (often discrete like `[4,6,8]`, not a range), `supported_frame_images` (which `frame_type` values are accepted), `generate_audio` and `seed` (capability bools), `pricing_skus`, and `allowed_passthrough_parameters`. An out-of-set value returns a 400, so validate client-side.
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
## Choosing a model
|
|
40
|
+
|
|
41
|
+
Recommendation as of 2026-10-29. Video models move fast, so this will go stale; public leaderboards such as [Artificial Analysis](https://artificialanalysis.ai/video/leaderboard/text-to-video) are one rough signal of what's newer, not a verdict. Only pick models that `/v1/videos/models` lists.
|
|
42
|
+
|
|
43
|
+
- **Default, when quality matters and there's time:** `bytedance/seedance-2.5`. Top tier on the leaderboard, native audio, clips up to 30s. Renders take about 4–6 minutes.
|
|
44
|
+
- **Fast:** `minimax/hailuo-3-max` (MiniMax H3). Also top tier; renders in well under a minute. Use it for quick replies in a live thread or for iterating on a prompt, then rerun the final cut on Seedance.
|
|
45
|
+
- Other top-tier models on the endpoint include `alibaba/wan-3.0`, `black-forest-labs/flux-3-video` and `heygen/heygen-video-1`. Some providers filter prompts more strictly than others; if one rejects a prompt, try another model rather than rewording around the filter.
|
|
46
|
+
- `heygen/avatar-iv` makes a talking head from one photo.
|
|
47
|
+
|
|
48
|
+
## Writing the prompt
|
|
49
|
+
|
|
50
|
+
For a single clip, read [references/cinematography.md](references/cinematography.md).
|
|
51
|
+
For multiple shots or a sequence, read
|
|
52
|
+
[references/storytelling.md](references/storytelling.md).
|
|
53
|
+
|
|
54
|
+
For worked examples at the right level of detail, see
|
|
55
|
+
[references/example-prompts.md](references/example-prompts.md).
|
|
56
|
+
|
|
57
|
+
A timestamped shot list ending on the payoff helps multi-beat clips.
|
|
40
58
|
|
|
41
59
|
## Full workflow (drop-in)
|
|
42
60
|
|
|
@@ -44,8 +62,8 @@ Models include `google/veo-3.1`, `bytedance/seedance-2.5`, `kwaivgi/kling-v3.0-p
|
|
|
44
62
|
#!/usr/bin/env bash
|
|
45
63
|
set -euo pipefail
|
|
46
64
|
|
|
47
|
-
PROMPT="
|
|
48
|
-
MODEL="
|
|
65
|
+
PROMPT="A golden retriever bounds across wet sand at golden hour to catch a tennis ball mid-air, spray flying off its fur. Low tracking shot at dog height, 35mm, shallow depth of field, warm backlight and lens flare, waves and the ball's thud in the audio. Ends on the dog trotting back toward camera, ball in mouth."
|
|
66
|
+
MODEL="bytedance/seedance-2.5"
|
|
49
67
|
OUTPUT="video-$(date +%Y%m%d-%H%M%S).mp4"
|
|
50
68
|
base_url="${LETTA_BASE_URL%/}"
|
|
51
69
|
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
> Adapted from fal-ai-community/skills (https://github.com/fal-ai-community/skills, commit 9ca850412943251fc9a466c4c29fdaf7a303a3d8), MIT License per that repository's README. Changes: execution commands replaced with Letta's /v1/videos.
|
|
2
|
+
|
|
3
|
+
# Cinematography
|
|
4
|
+
|
|
5
|
+
Use this reference when the user needs cinematic direction, not generic "make it
|
|
6
|
+
cinematic" prompting.
|
|
7
|
+
|
|
8
|
+
Write concrete visual direction. Avoid empty prestige words and em dashes.
|
|
9
|
+
|
|
10
|
+
## Inputs to collect
|
|
11
|
+
|
|
12
|
+
Ask only for what affects the shot:
|
|
13
|
+
|
|
14
|
+
- Subject and action.
|
|
15
|
+
- Medium: still image, video, image-to-video, edit, storyboard frame.
|
|
16
|
+
- Genre and mood.
|
|
17
|
+
- Framing: close-up, medium, wide, overhead, POV, profile, locked-off.
|
|
18
|
+
- Camera motion for video: push-in, dolly, tracking, handheld, crane, drone.
|
|
19
|
+
- Lens feel: wide, normal, telephoto, macro, shallow or deep focus.
|
|
20
|
+
- Lighting: natural, practical, studio, noir, high key, low key, backlit.
|
|
21
|
+
- Output: aspect ratio, duration, first frame, last frame, download path.
|
|
22
|
+
- Preferred model, if the user wants a specific cinematography model or
|
|
23
|
+
quality/cost profile.
|
|
24
|
+
|
|
25
|
+
## Execution with Letta
|
|
26
|
+
|
|
27
|
+
Call `/v1/videos` as described in `SKILL.md`. Pick a model from `SKILL.md`'s
|
|
28
|
+
"Choosing a model" section and `/v1/videos/models`, and use only the controls
|
|
29
|
+
that endpoint reports for the selected model.
|
|
30
|
+
|
|
31
|
+
## Prompt build order
|
|
32
|
+
|
|
33
|
+
Use the SCLCAM structure:
|
|
34
|
+
|
|
35
|
+
1. Subject: who or what is in frame.
|
|
36
|
+
2. Context: location, time, weather, story moment.
|
|
37
|
+
3. Lens/framing: distance, angle, focal length feel, depth of field.
|
|
38
|
+
4. Camera motion: only for video or if motion blur is desired.
|
|
39
|
+
5. Atmosphere: haze, rain, practicals, reflections, texture.
|
|
40
|
+
6. Mood/color: palette, contrast, grade, exposure style.
|
|
41
|
+
7. Output controls: aspect ratio, duration, first-frame continuity.
|
|
42
|
+
|
|
43
|
+
Example structure:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
[subject] in [context], framed as [shot size and angle], [lens feel],
|
|
47
|
+
[lighting setup], [camera movement if video], [color grade], [texture],
|
|
48
|
+
[duration or aspect ratio], [continuity constraints]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Quality bar
|
|
52
|
+
|
|
53
|
+
Before returning, check:
|
|
54
|
+
|
|
55
|
+
- Camera movement is physically plausible for the scene.
|
|
56
|
+
- Lens, shot size, and camera angle do not contradict each other.
|
|
57
|
+
- Lighting direction is clear and consistent.
|
|
58
|
+
- Color grade supports the mood without flattening subject detail.
|
|
59
|
+
- Video prompt describes one shot unless the selected model supports multiple
|
|
60
|
+
prompts or shot lists.
|
|
61
|
+
- Downloaded video comes from `/v1/videos/{id}/content`.
|
|
62
|
+
|
|
63
|
+
If a result looks generic, improve specificity in camera, blocking, light, and
|
|
64
|
+
environment before adding more adjectives.
|
|
65
|
+
|
|
66
|
+
# Shot language reference
|
|
67
|
+
|
|
68
|
+
## Shot sizes
|
|
69
|
+
|
|
70
|
+
- Extreme close-up: one detail, texture, eye, hand, product edge.
|
|
71
|
+
- Close-up: face or object detail with emotional focus.
|
|
72
|
+
- Medium close-up: chest-up subject, useful for dialogue and portraits.
|
|
73
|
+
- Medium shot: waist-up subject, body language visible.
|
|
74
|
+
- Full shot: entire body or object, silhouette and stance readable.
|
|
75
|
+
- Wide shot: subject inside environment.
|
|
76
|
+
- Extreme wide: scale, isolation, worldbuilding, architecture.
|
|
77
|
+
|
|
78
|
+
## Angles
|
|
79
|
+
|
|
80
|
+
- Eye level: natural, direct, grounded.
|
|
81
|
+
- Low angle: power, threat, awe.
|
|
82
|
+
- High angle: vulnerability, surveillance, layout clarity.
|
|
83
|
+
- Dutch angle: unease, instability. Use sparingly.
|
|
84
|
+
- Over-the-shoulder: relationship, conversation, pursuit.
|
|
85
|
+
- POV: subjective experience.
|
|
86
|
+
- Profile: graphic composition, ritual, tension, fashion.
|
|
87
|
+
|
|
88
|
+
## Camera movement
|
|
89
|
+
|
|
90
|
+
- Slow push-in: attention, realization, premium product reveal.
|
|
91
|
+
- Pull-back: isolation, context, reveal.
|
|
92
|
+
- Dolly left or right: spatial discovery.
|
|
93
|
+
- Tracking shot: follow action with continuity.
|
|
94
|
+
- Crane up: scale reveal or emotional release.
|
|
95
|
+
- Handheld: urgency, intimacy, instability.
|
|
96
|
+
- Locked-off: control, deadpan, formalism, surveillance.
|
|
97
|
+
- Orbit: product reveal, character inspection, heightened drama.
|
|
98
|
+
- Macro glide: product texture, food, jewelry, electronics.
|
|
99
|
+
|
|
100
|
+
## Composition
|
|
101
|
+
|
|
102
|
+
- Centered symmetry: control, ritual, luxury, unease.
|
|
103
|
+
- Rule of thirds: natural editorial composition.
|
|
104
|
+
- Negative space: loneliness, premium ad copy area, tension.
|
|
105
|
+
- Foreground obstruction: secrecy, surveillance, voyeurism.
|
|
106
|
+
- Leading lines: architecture, movement, precision.
|
|
107
|
+
- Frame within frame: confinement, observation, layered space.
|
|
108
|
+
|
|
109
|
+
## Continuity language
|
|
110
|
+
|
|
111
|
+
- "same subject and wardrobe as the reference"
|
|
112
|
+
- "preserve product shape and label"
|
|
113
|
+
- "continue from the uploaded first frame"
|
|
114
|
+
- "single continuous shot"
|
|
115
|
+
- "no cutaways"
|
|
116
|
+
- "no time jump"
|
|
117
|
+
- "same lighting direction throughout"
|
|
118
|
+
|
|
119
|
+
# Lighting, lens, and color reference
|
|
120
|
+
|
|
121
|
+
## Lighting setups
|
|
122
|
+
|
|
123
|
+
- Soft key: flattering, commercial, calm.
|
|
124
|
+
- Hard key: graphic, dramatic, fashion, noir.
|
|
125
|
+
- Backlight: separation, glow, silhouette, premium edge.
|
|
126
|
+
- Rim light: subject outline, product glass, metal highlights.
|
|
127
|
+
- Practical light: lamps, signs, screens, candles in the scene.
|
|
128
|
+
- Motivated light: light that has a visible or logical source.
|
|
129
|
+
- Low key: dark frame, selective highlights, suspense.
|
|
130
|
+
- High key: bright, low contrast, beauty, comedy, clean product work.
|
|
131
|
+
- Top light: interrogation, overhead realism, harsh institutional mood.
|
|
132
|
+
- Window light: natural, intimate, documentary.
|
|
133
|
+
|
|
134
|
+
## Lens feel
|
|
135
|
+
|
|
136
|
+
- 14-20mm wide: scale, distortion, kinetic interiors, action.
|
|
137
|
+
- 24-28mm wide-normal: environmental realism, travel, documentary.
|
|
138
|
+
- 35mm: natural cinematic perspective, street, lifestyle, narrative.
|
|
139
|
+
- 50mm: classic portrait and product balance.
|
|
140
|
+
- 85mm: compressed portrait, beauty, isolation.
|
|
141
|
+
- 100mm macro: product detail, jewelry, food texture, eyes.
|
|
142
|
+
- Telephoto compression: distance, surveillance, fashion runway.
|
|
143
|
+
|
|
144
|
+
## Depth of field
|
|
145
|
+
|
|
146
|
+
- Shallow focus: isolate subject, premium portrait, product hero.
|
|
147
|
+
- Deep focus: environment and blocking stay readable.
|
|
148
|
+
- Rack focus: attention shifts between two subjects or details.
|
|
149
|
+
|
|
150
|
+
## Color and grade
|
|
151
|
+
|
|
152
|
+
- Clean neutral grade: commercial, e-commerce, architecture.
|
|
153
|
+
- Warm golden grade: nostalgia, comfort, luxury hospitality.
|
|
154
|
+
- Cool cyan shadows: thriller, tech, night exterior.
|
|
155
|
+
- Desaturated earth palette: realism, documentary, survival.
|
|
156
|
+
- High contrast monochrome: noir, fashion, graphic product.
|
|
157
|
+
- Pastel palette: beauty, wellness, light lifestyle.
|
|
158
|
+
- Sodium vapor night: urban realism, tension.
|
|
159
|
+
|
|
160
|
+
## Texture
|
|
161
|
+
|
|
162
|
+
- Fine film grain: organic image, period mood.
|
|
163
|
+
- Clean digital: tech, luxury, e-commerce, architecture.
|
|
164
|
+
- Halation: glowing highlights, dream, night practicals.
|
|
165
|
+
- Mist filter: soft bloom, romance, beauty.
|
|
166
|
+
- Crisp high shutter: action clarity.
|
|
167
|
+
- Motion blur: speed, energy, handheld realism.
|
|
168
|
+
|
|
169
|
+
# Cinematography examples
|
|
170
|
+
|
|
171
|
+
Use these as direction patterns. Replace subject, model fields, and output
|
|
172
|
+
controls with the current task.
|
|
173
|
+
|
|
174
|
+
## Noir close-up
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
a detective sitting alone in a parked car at night, close-up from passenger
|
|
178
|
+
seat angle, 50mm lens feel, rain streaks on the window in foreground, hard
|
|
179
|
+
streetlight slashes across his face, low key noir lighting, deep shadows,
|
|
180
|
+
muted green and amber grade, still frame, no text
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Product macro glide
|
|
184
|
+
|
|
185
|
+
```text
|
|
186
|
+
single continuous macro glide across the brushed steel edge of a luxury watch,
|
|
187
|
+
100mm macro lens feel, black velvet surface, thin strip light reflected along
|
|
188
|
+
the bevel, shallow depth of field, slow controlled camera movement, clean dark
|
|
189
|
+
commercial grade, no extra text, no logo distortion
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Sci-fi wide shot
|
|
193
|
+
|
|
194
|
+
```text
|
|
195
|
+
small astronaut crossing a vast white salt flat toward a black monolith,
|
|
196
|
+
extreme wide shot, low horizon, 24mm lens feel, late afternoon backlight,
|
|
197
|
+
long shadow, minimal composition, cool silver color grade, quiet atmospheric
|
|
198
|
+
haze, cinematic still, no extra ships
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Handheld pursuit
|
|
202
|
+
|
|
203
|
+
```text
|
|
204
|
+
8 second handheld tracking shot following a woman running through a narrow
|
|
205
|
+
market alley at night, camera shoulder-height behind her, practical neon and
|
|
206
|
+
food stall lights, motion blur on background, subject remains readable,
|
|
207
|
+
urgent thriller pacing, one continuous shot, no cuts
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Warm interior drama
|
|
211
|
+
|
|
212
|
+
```text
|
|
213
|
+
two siblings at a kitchen table after midnight, medium-wide static frame,
|
|
214
|
+
35mm lens feel, warm practical lamp on table, cool moonlight through window,
|
|
215
|
+
subtle haze, quiet tension, naturalistic color grade, deep focus enough to
|
|
216
|
+
read both faces, no melodramatic poses
|
|
217
|
+
```
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Example prompts
|
|
2
|
+
|
|
3
|
+
Strong text-to-video prompts from model pages on fal.ai, quoted as published. Each link is the page the prompt came from. Use them as models of the level of detail that works: subject, materials, light, camera, lens, palette, timing, sound, on-screen text, and what to exclude.
|
|
4
|
+
|
|
5
|
+
## Single-shot still life: no people, light-driven
|
|
6
|
+
|
|
7
|
+
Source: [Seedance 2.5 text-to-video on fal](https://fal.ai/models/bytedance/seedance-2.5/us/text-to-video)
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
Editorial still life for a luxury perfume brand, no people or hands in frame. A single heavy-based glass bottle with a faceted amber-tinted body and a brushed brass cap, standing on a slab of honed travertine against a warm sand-toned plaster wall. Beside it, a low-profile companion object for scale — a folded cream linen card embossed with the brand mark and a single dried sprig of eucalyptus resting on the stone. A slow drip of liquid catches the light on the bottle's shoulder. Hard, directional late-afternoon sunlight from the right rakes across the scene, casting a long, sharp bottle shadow and a bright caustic refraction on the wall behind it; a soft secondary bounce lifts the shadow side. Palette of amber, ivory, warm grey, and dull gold. Eye-level camera, slight three-quarter angle to the bottle, generous negative space above and to the left for type, medium-format look, 90mm lens, shallow but controlled depth of field, subtle film grain. Quiet, architectural, restrained, tactile, with the light doing the storytelling
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Character action with a timed beat
|
|
14
|
+
|
|
15
|
+
Source: [MiniMax H3 Max text-to-video on fal](https://fal.ai/models/minimax/h3-max/text-to-video)
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
An aging warrior-monk in scorched ceremonial armor, a split ceramic mask and a humming prayer-band on his forearm + 0–4s: climbs silently along a cliffside terrace as insect-like surveyor drones comb the sun-bleached ruins, standing alone under as the camera rises over the ruined monastery. Sun-blasted post-apocalyptic sci-fi action, dust, heat haze, practical debris, sweeping crane tracking, silence broken only by wind.
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Kinetic typography with timestamped sections
|
|
22
|
+
|
|
23
|
+
Source: [H3 Max Turbo text-to-video on fal](https://fal.ai/models/minimax/h3-max-turbo/text-to-video)
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
0.00–2.50
|
|
27
|
+
Warm ivory background.
|
|
28
|
+
Large black text: **H3 MAX TURBO.**
|
|
29
|
+
Text slides in fast from the left with a clean ease-out. A thin red line grows underneath it. On the beat, the whole composition compresses slightly and snaps back.
|
|
30
|
+
|
|
31
|
+
2.50–5.50
|
|
32
|
+
The red line extends across the screen and becomes a crop transition.
|
|
33
|
+
Reveal huge stacked text:
|
|
34
|
+
|
|
35
|
+
**FASTER**
|
|
36
|
+
**THAN REAL TIME.**
|
|
37
|
+
|
|
38
|
+
Use aggressive kinetic typography: large scale, edge cropping, fast horizontal movement, strong black/ivory/red composition. Keep the text sharp when it lands.
|
|
39
|
+
|
|
40
|
+
STYLE
|
|
41
|
+
Premium 2D motion design with very subtle 2.5D card depth. Swiss editorial typography mixed with energetic commercial motion graphics. Warm ivory, black and vermilion red. Large type, strong cropping, fast masks, cards, lines, parallax, precise easing, short motion blur only during transitions. No full 3D scenes, no UI, no particles, no random objects, no glitches, no letter-by-letter animation.
|
|
42
|
+
|
|
43
|
+
"fal" must always be lowercase.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Period commercial with dialogue and an overlay
|
|
47
|
+
|
|
48
|
+
Source: [FLUX 3 Max text-to-video on fal](https://fal.ai/models/blackforestlabs/flux-3-max/text-to-video)
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
1985 TV beer commercial, 35mm film grain, golden-hour sunset. One continuous slow push-in on a weathered cowboy leaning against a ranch porch rail, his horse tied up behind him. He pulls an ice-cold Lone Star from a cooler, cracks it open with a hiss, takes a long sip, and turns to camera with a tired grin. Warm amber tones, soft lens flare, slide guitar soundtrack.
|
|
52
|
+
Narrator (deep, gravelly): "Sunup to sundown, [pauses], he's earned every drop."
|
|
53
|
+
Cowboy (raising the bottle): "Now this is quittin' time."
|
|
54
|
+
Overlay: Lone Star logo fades in over the final frame.
|
|
55
|
+
```
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
> Adapted from fal-ai-community/skills (https://github.com/fal-ai-community/skills, commit 9ca850412943251fc9a466c4c29fdaf7a303a3d8), MIT License per that repository's README. Changes: execution commands replaced with Letta's /v1/videos.
|
|
2
|
+
|
|
3
|
+
# Storytelling
|
|
4
|
+
|
|
5
|
+
Use this reference when the user wants a sequence, not a single asset.
|
|
6
|
+
|
|
7
|
+
The goal is to produce clear story beats and executable video generation. Avoid
|
|
8
|
+
generic inspiration copy, fake dialogue, and em dashes.
|
|
9
|
+
|
|
10
|
+
## Inputs to collect
|
|
11
|
+
|
|
12
|
+
Ask only when missing information affects execution.
|
|
13
|
+
|
|
14
|
+
- Format: ad, short film, music video, documentary, tutorial, social story.
|
|
15
|
+
- Duration and aspect ratio.
|
|
16
|
+
- Number of shots or allowed range.
|
|
17
|
+
- Main subject, character, product, or location.
|
|
18
|
+
- Continuity anchors: character, product, wardrobe, environment, color.
|
|
19
|
+
- Source media: first frame, reference image, product shot, audio track.
|
|
20
|
+
- Audio needs: narration, music, sound design, transcript, no audio.
|
|
21
|
+
- Preferred model or model family, if the user wants to decide quality, cost,
|
|
22
|
+
speed, audio, or multi-shot tradeoffs.
|
|
23
|
+
|
|
24
|
+
## Execution with Letta
|
|
25
|
+
|
|
26
|
+
Call `/v1/videos` as described in `SKILL.md`. Pick models from `SKILL.md`'s
|
|
27
|
+
"Choosing a model" section and `/v1/videos/models`, and use only the sequence,
|
|
28
|
+
reference, audio, and timeline controls that endpoint reports for each selected
|
|
29
|
+
model. Generate clips separately when the selected model supports only one
|
|
30
|
+
prompt, and do not claim they are stitched unless a model or another tool
|
|
31
|
+
actually stitched them.
|
|
32
|
+
|
|
33
|
+
## Shot planning
|
|
34
|
+
|
|
35
|
+
Plan every sequence as beats first:
|
|
36
|
+
|
|
37
|
+
1. Hook: immediate visual reason to keep watching.
|
|
38
|
+
2. Setup: who, what, where, and why it matters.
|
|
39
|
+
3. Development: movement, discovery, proof, or escalation.
|
|
40
|
+
4. Turn: reveal, transformation, result, or emotional change.
|
|
41
|
+
5. Close: final image, product memory, CTA-safe frame, or unresolved mood.
|
|
42
|
+
|
|
43
|
+
For each shot, write:
|
|
44
|
+
|
|
45
|
+
- Shot number and duration.
|
|
46
|
+
- Story purpose.
|
|
47
|
+
- Visual prompt.
|
|
48
|
+
- Continuity anchor.
|
|
49
|
+
- Input reference, if any.
|
|
50
|
+
- Letta video model.
|
|
51
|
+
- Expected output path.
|
|
52
|
+
|
|
53
|
+
## Prompt build order
|
|
54
|
+
|
|
55
|
+
Use this structure for each shot:
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
SHOT [number], [duration]:
|
|
59
|
+
[story purpose]. [subject and action]. [location and time]. [camera framing].
|
|
60
|
+
[camera movement]. [lighting and color]. [continuity anchor]. [transition or
|
|
61
|
+
relationship to previous shot].
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Keep one shot to one clear action unless the selected model supports multi-shot
|
|
65
|
+
or timeline prompting.
|
|
66
|
+
|
|
67
|
+
## Quality bar
|
|
68
|
+
|
|
69
|
+
Before returning:
|
|
70
|
+
|
|
71
|
+
- Shot order has a clear narrative function.
|
|
72
|
+
- The first shot is strong enough for the platform.
|
|
73
|
+
- Continuity anchors are repeated without bloating every prompt.
|
|
74
|
+
- Camera motion is varied but not random.
|
|
75
|
+
- Durations add up to the requested runtime.
|
|
76
|
+
- Async request IDs and downloaded files are recorded.
|
|
77
|
+
- The model's actual schema, not assumptions, drove the final command.
|
|
78
|
+
|
|
79
|
+
# Shot planning reference
|
|
80
|
+
|
|
81
|
+
## Basic sequence shapes
|
|
82
|
+
|
|
83
|
+
## 15 second social ad
|
|
84
|
+
|
|
85
|
+
| Shot | Time | Purpose | Visual role |
|
|
86
|
+
| --- | --- | --- | --- |
|
|
87
|
+
| 1 | 0-2s | Hook | striking product or problem image |
|
|
88
|
+
| 2 | 2-6s | Context | product in use or character reaction |
|
|
89
|
+
| 3 | 6-11s | Proof | feature, texture, process, result |
|
|
90
|
+
| 4 | 11-15s | Close | memorable final frame with safe space |
|
|
91
|
+
|
|
92
|
+
## 30 second commercial
|
|
93
|
+
|
|
94
|
+
| Shot | Time | Purpose | Visual role |
|
|
95
|
+
| --- | --- | --- | --- |
|
|
96
|
+
| 1 | 0-3s | Hook | image that defines the world |
|
|
97
|
+
| 2 | 3-7s | Product or hero | show subject clearly |
|
|
98
|
+
| 3 | 7-13s | Benefit | action, feature, transformation |
|
|
99
|
+
| 4 | 13-20s | Lifestyle or proof | real context, emotion, result |
|
|
100
|
+
| 5 | 20-27s | Escalation | strongest beauty or motion shot |
|
|
101
|
+
| 6 | 27-30s | End frame | clean brand-safe final composition |
|
|
102
|
+
|
|
103
|
+
## Short cinematic scene
|
|
104
|
+
|
|
105
|
+
| Shot | Purpose |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| Establishing | where the scene happens and mood |
|
|
108
|
+
| Character reveal | who matters |
|
|
109
|
+
| Action beat | what changes |
|
|
110
|
+
| Reaction | emotional consequence |
|
|
111
|
+
| Detail insert | object, clue, texture, proof |
|
|
112
|
+
| Resolution | new state or unanswered tension |
|
|
113
|
+
|
|
114
|
+
## Continuity anchors
|
|
115
|
+
|
|
116
|
+
Character anchor:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
same character face, hair, wardrobe, age, posture, and style as the approved
|
|
120
|
+
reference
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Product anchor:
|
|
124
|
+
|
|
125
|
+
```text
|
|
126
|
+
same product shape, color, packaging, logo placement, and material as the
|
|
127
|
+
reference
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Location anchor:
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
same room layout, window direction, color palette, and time of day
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Motion anchor:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
single continuous shot, starts where previous shot ended, no time jump
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Pacing guidance
|
|
143
|
+
|
|
144
|
+
- Fast: 1-3 second shots, strong motion, clear graphic frames.
|
|
145
|
+
- Medium: 3-6 second shots, product demos, lifestyle, dialogue-like scenes.
|
|
146
|
+
- Slow: 6-10 second shots, luxury, drama, architecture, atmosphere.
|
|
147
|
+
- Variable: fast hook, slower proof, strong final frame.
|
|
148
|
+
|
|
149
|
+
# Storytelling workflows
|
|
150
|
+
|
|
151
|
+
## Native multi-prompt sequence
|
|
152
|
+
|
|
153
|
+
Use only when the model supports multiple prompts, shot arrays, scenes,
|
|
154
|
+
timeline, or keyframe-like fields.
|
|
155
|
+
|
|
156
|
+
1. Inspect the model and identify the exact multi-shot fields.
|
|
157
|
+
2. Convert the story into concise shot prompts.
|
|
158
|
+
3. Keep one continuity anchor outside the repeated shot details if the model
|
|
159
|
+
supports a global prompt.
|
|
160
|
+
4. Run async and download the completed result.
|
|
161
|
+
5. Check whether the model returned one video or per-shot files.
|
|
162
|
+
|
|
163
|
+
## Manual per-shot video
|
|
164
|
+
|
|
165
|
+
Use when the model supports only one shot at a time.
|
|
166
|
+
|
|
167
|
+
1. Create a shot table.
|
|
168
|
+
2. Generate or upload a reference frame for each shot.
|
|
169
|
+
3. Run each shot with unique output paths.
|
|
170
|
+
4. Record model, request id, prompt, local output path, and defects.
|
|
171
|
+
5. Return clips in timeline order. Do not claim they are stitched unless they
|
|
172
|
+
are actually stitched by the model or another tool.
|
|
173
|
+
|
|
174
|
+
## First-frame to last-frame
|
|
175
|
+
|
|
176
|
+
1. Generate or choose the opening frame.
|
|
177
|
+
2. Generate or choose the target final frame.
|
|
178
|
+
3. Supply both frames if supported.
|
|
179
|
+
4. Inspect the model for accepted first/last frame fields.
|
|
180
|
+
5. Prompt the transition as one physical motion or transformation.
|
|
181
|
+
6. Run async and download.
|
|
182
|
+
|
|
183
|
+
## Character narrative
|
|
184
|
+
|
|
185
|
+
1. Write the character anchor (see "Continuity anchors" above) and generate an approved still of the character to reuse.
|
|
186
|
+
2. Build shot variables around action, expression, and location.
|
|
187
|
+
3. Use image-to-video from approved stills when identity drift matters.
|
|
188
|
+
4. Compare each result to the anchor before advancing to the next shot.
|
|
189
|
+
|
|
190
|
+
## Product narrative
|
|
191
|
+
|
|
192
|
+
1. Write the product anchor (see "Continuity anchors" above): shape, color, packaging, logo placement, material.
|
|
193
|
+
2. Plan the sequence around hook, feature, context, proof, final frame.
|
|
194
|
+
3. Use the same product reference for every shot if the model allows it.
|
|
195
|
+
4. Keep motion modest when packaging fidelity matters.
|
|
196
|
+
|
|
197
|
+
## Audio narrative
|
|
198
|
+
|
|
199
|
+
1. Choose a model with narration, music, or sound generation support.
|
|
200
|
+
2. Use the model's supported audio controls.
|
|
201
|
+
3. Use transcript or beat timing to set shot durations.
|
|
202
|
+
4. Return audio path and visual clip paths separately unless a model produces
|
|
203
|
+
combined audio-video output.
|
|
204
|
+
|
|
205
|
+
# Storytelling examples
|
|
206
|
+
|
|
207
|
+
These examples show planning density and prompt tone. Adapt to the user's model
|
|
208
|
+
and references.
|
|
209
|
+
|
|
210
|
+
## 15 second coffee social ad
|
|
211
|
+
|
|
212
|
+
| Shot | Duration | Prompt |
|
|
213
|
+
| --- | --- | --- |
|
|
214
|
+
| 1 | 2s | macro close-up of espresso crema swirling in a glass cup, warm morning window light, shallow focus, immediate sensory hook |
|
|
215
|
+
| 2 | 4s | same coffee cup placed beside a small bag of beans on a clean kitchen counter, slow push-in, product and texture readable |
|
|
216
|
+
| 3 | 5s | hand pours milk into the coffee, soft cloud bloom, controlled motion, warm lifestyle lighting, no text |
|
|
217
|
+
| 4 | 4s | final hero frame of cup and beans with clean negative space on right for copy, calm premium breakfast mood |
|
|
218
|
+
|
|
219
|
+
Execution note: generate still or video per shot unless the selected model
|
|
220
|
+
supports a prompt list.
|
|
221
|
+
|
|
222
|
+
## 30 second architecture brand film
|
|
223
|
+
|
|
224
|
+
| Shot | Duration | Purpose |
|
|
225
|
+
| --- | --- | --- |
|
|
226
|
+
| 1 | 4s | dawn exterior of a modern house, wide static frame, warm interior lights |
|
|
227
|
+
| 2 | 5s | slow tracking shot along concrete wall and timber detail, tactile proof |
|
|
228
|
+
| 3 | 5s | architect's hand sketches over plan, natural desk light, human process |
|
|
229
|
+
| 4 | 6s | family crosses the living room, soft backlight, space feels livable |
|
|
230
|
+
| 5 | 6s | crane up from courtyard to roofline, shows scale and geometry |
|
|
231
|
+
| 6 | 4s | quiet final exterior with empty safe space for brand mark |
|
|
232
|
+
|
|
233
|
+
Continuity anchor:
|
|
234
|
+
|
|
235
|
+
```text
|
|
236
|
+
same house, same material palette of warm timber, pale concrete, black steel
|
|
237
|
+
frames, and soft morning light
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Cinematic reunion scene
|
|
241
|
+
|
|
242
|
+
| Shot | Duration | Prompt |
|
|
243
|
+
| --- | --- | --- |
|
|
244
|
+
| 1 | 5s | empty train platform in blue hour rain, wide locked-off frame, practical lights reflected on wet ground |
|
|
245
|
+
| 2 | 4s | close-up of woman noticing someone off screen, same coat and hairstyle, soft backlight, restrained emotion |
|
|
246
|
+
| 3 | 4s | medium shot of man stepping from train doorway, matching eyeline, cool station light |
|
|
247
|
+
| 4 | 5s | slow tracking two-shot as they walk toward each other, shallow depth of field, no crowd distraction |
|
|
248
|
+
| 5 | 6s | close hands meeting, rain on sleeves, quiet emotional detail |
|
|
249
|
+
| 6 | 6s | wide final frame of both under station clock, warm practical light, unresolved calm |
|
|
250
|
+
|
|
251
|
+
## Product launch sequence
|
|
252
|
+
|
|
253
|
+
```text
|
|
254
|
+
SHOT 1, 3s:
|
|
255
|
+
black screen opens to a thin rim light tracing the product silhouette, centered
|
|
256
|
+
macro frame, premium suspense, no text.
|
|
257
|
+
|
|
258
|
+
SHOT 2, 4s:
|
|
259
|
+
slow orbit reveals the product material and main contour, controlled studio
|
|
260
|
+
reflections, same product shape and logo placement as the reference.
|
|
261
|
+
|
|
262
|
+
SHOT 3, 5s:
|
|
263
|
+
close-up of the key feature in use, clean hand interaction, product remains
|
|
264
|
+
sharp, no fake labels.
|
|
265
|
+
|
|
266
|
+
SHOT 4, 3s:
|
|
267
|
+
final hero composition on simple surface with large negative space for copy,
|
|
268
|
+
brand-safe end frame, no generated text.
|
|
269
|
+
```
|