tesseract-agent 0.12.2 → 0.12.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.
Files changed (39) hide show
  1. package/dist-bundle/builtin-skills/3d-product-shots/SKILL.md +6 -6
  2. package/dist-bundle/builtin-skills/audio-and-voice/SKILL.md +3 -0
  3. package/dist-bundle/builtin-skills/canvas-design/scripts/design_check.mjs +6 -0
  4. package/dist-bundle/builtin-skills/chart-design/scripts/design_check.mjs +6 -0
  5. package/dist-bundle/builtin-skills/comic-maker/SKILL.md +5 -9
  6. package/dist-bundle/builtin-skills/diagram-design/scripts/design_check.mjs +6 -0
  7. package/dist-bundle/builtin-skills/interactive-ui/scripts/design_check.mjs +6 -0
  8. package/dist-bundle/builtin-skills/makers/SKILL.md +16 -3
  9. package/dist-bundle/builtin-skills/music-videos/SKILL.md +3 -4
  10. package/dist-bundle/builtin-skills/music-videos/references/ai-music-video.md +3 -3
  11. package/dist-bundle/builtin-skills/product-ads/SKILL.md +32 -17
  12. package/dist-bundle/builtin-skills/product-videos/references/assembly-and-delivery.md +2 -2
  13. package/dist-bundle/builtin-skills/promo-videos/SKILL.md +6 -7
  14. package/dist-bundle/builtin-skills/promo-videos/references/review-rubric.md +1 -1
  15. package/dist-bundle/builtin-skills/short-form-video/SKILL.md +8 -11
  16. package/dist-bundle/builtin-skills/short-form-video/references/formats-and-trends.md +1 -1
  17. package/dist-bundle/builtin-skills/short-form-video/references/memes.md +6 -9
  18. package/dist-bundle/builtin-skills/tesseract-help/SKILL.md +15 -2
  19. package/dist-bundle/builtin-skills/tesseract-help/references/app-control-map.md +9 -1
  20. package/dist-bundle/builtin-skills/tesseract-help/references/troubleshooting.md +9 -1
  21. package/dist-bundle/builtin-skills/thumbnails/SKILL.md +6 -5
  22. package/dist-bundle/builtin-skills/tutorials/SKILL.md +8 -2
  23. package/dist-bundle/builtin-skills/video-editing/SKILL.md +28 -37
  24. package/dist-bundle/builtin-skills/video-editing/references/recipes.md +7 -11
  25. package/dist-bundle/builtin-skills/video-generation/SKILL.md +26 -40
  26. package/dist-bundle/builtin-skills/video-generation/references/directing.md +52 -21
  27. package/dist-bundle/builtin-skills/video-generation/references/long-video.md +44 -7
  28. package/dist-bundle/builtin-skills/video-generation/references/presenter-video.md +10 -16
  29. package/dist-bundle/builtin-skills/video-generation/references/prompting.md +14 -10
  30. package/dist-bundle/builtin-skills/video-generation/references/series.md +44 -23
  31. package/dist-bundle/catalog-vectors/embeddinggemma-300m-q4@ort1.23.2.bin +0 -0
  32. package/dist-bundle/cli.js +24482 -17322
  33. package/dist-bundle/mesh-core/package.json +1 -1
  34. package/dist-bundle/office-page.css +1 -1
  35. package/dist-bundle/office-page.js +970 -970
  36. package/dist-bundle/office.js +1908 -803
  37. package/dist-bundle/pdf.js +141 -63
  38. package/dist-bundle/serpapi-mcp.js +15204 -9981
  39. package/package.json +1 -1
@@ -1,38 +1,59 @@
1
1
  # Directing a clip or a whole piece
2
2
 
3
- Five named controls set how a clip is told, the way a director's notes would: **genre**, **era**,
4
- **pacing**, **lens** and **film**. Each is an id from `list_director_controls`, which also lists
5
- every option's use, the models that follow it best, each pace's shot lengths, each lens's focal
6
- length, aperture and depth of field, and the colour looks. They go on `generate_video`, on
7
- `create_video_from_scenario` (for every scene; a scene may have its own `lens`), and on a series
8
- (`series_create` / `series_update`). The host checks every id before a price is quoted.
3
+ Eight named controls set how a clip is told, the way a director's notes would: **genre**, **era**,
4
+ **pacing**, **lens**, **film**, **lighting**, **emotion** and **camera style**. Each is an id from
5
+ `list_director_controls`, which also lists every option's use, the models that follow it best, each
6
+ pace's shot lengths, each lens's focal length, aperture and depth of field, the colour looks and the
7
+ named speed ramps. They go on `generate_video`, on `create_video_from_scenario` (for every scene; a
8
+ scene may have its own `lens`), and on a series (`series_create` / `series_update`). The host checks
9
+ every id before a price is quoted.
10
+
11
+ A row with `status: seed` has no proven run, so what it does to a clip is not known: say so before
12
+ spending on one, or pick one without that mark.
9
13
 
10
14
  | Control | What it sets | Examples |
11
15
  |---|---|---|
12
- | `genre` | mood, light, palette, framing | `thriller`, `rom-com`, `documentary`, `noir`, `sci-fi`, `horror-lite` (spooky, never gory), `western`, `anime-inspired`, `music-video`, `commercial`, `vlog`, `nature-doc`, `sports-promo`, `fashion-film`, `period-drama`, `heist`, `comedy-sketch`, `epic-fantasy`, `product-hero`, `travel` |
13
- | `era` | the decade of the wardrobe, props and picture | `1920s` … `2010s`, `today`, `near-future` |
14
- | `pacing` | how the action moves, and how long shots stay on screen | `slow` (6–10 s shots), `measured` (4–6), `fast` (2–4), `frantic` (under 2) |
15
- | `lens` | focal length, aperture, depth of field | `fisheye`, `ultra-wide-14mm`, `wide-24mm`, `standard-35mm`, `normal-50mm`, `portrait-85mm`, `tele-135mm`, `tele-200mm`, `macro-100mm`, `anamorphic`, `tilt-shift`, `vintage-soft` |
16
- | `film` | grain and texture of what it was shot on | `clean-digital`, `film-35mm`, `film-16mm`, `super-8`, `mono-film`, `reversal-slide`, `large-format`, `vhs-tape`, `dv-camcorder`, `phone-camera`, `high-iso-night` |
16
+ | `genre` | mood, light, palette, framing | `action`, `drama`, `thriller`, `rom-com`, `documentary`, `noir`, `mystery`, `sci-fi`, `horror-lite` (spooky, never gory), `war-film` (no gore), `western`, `musical`, `road-movie`, `anime-inspired`, `music-video`, `commercial`, `vlog`, `nature-doc`, `sports-promo`, `fashion-film`, `period-drama`, `heist`, `comedy-sketch`, `epic-fantasy`, `product-hero`, `travel` |
17
+ | `era` | the decade of the wardrobe, props and picture | `1900s` … `2010s`, `today`, `near-future` |
18
+ | `pacing` | how the action moves, and how long shots stay on screen | `slow` (6–10 s shots), `measured` (4–6), `fast` (2–4), `frantic` (under 2), `single-take` (one unbroken shot) |
19
+ | `lens` | focal length, aperture, depth of field | `fisheye`, `ultra-wide-14mm`, `wide-24mm`, `standard-35mm`, `normal-50mm`, `portrait-85mm`, `tele-135mm`, `tele-200mm`, `macro-100mm`, `tilt-shift`; by character: `clinical-sharp`, `classic-prime`, `soft-diffusion`, `swirl-bokeh`, `zoom-seventies`, `split-diopter`, `anamorphic`, `vintage-soft` |
20
+ | `film` | what it is shot on: grain, texture, camera | `clean-digital`, `full-frame-digital`, `film-35mm`, `film-16mm`, `film-8mm`, `super-8`, `hand-cranked`, `mono-film`, `reversal-slide`, `large-format`, `giant-screen`, `vhs-tape`, `dv-camcorder`, `broadcast-video`, `action-camera`, `phone-camera`, `webcam`, `high-iso-night` |
21
+ | `lighting` | where the light comes from and how hard it is | `soft-window`, `overcast-day`, `hard-noon`, `low-sun`, `blue-hour`, `moonlight`, `three-point`, `high-key`, `low-key`, `sculpted-portrait`, `beauty-butterfly`, `split-side`, `backlit-rim`, `silhouette`, `volumetric-haze`, `practical-lamps`, `candlelight`, `firelight`, `neon-signs`, `fluorescent`, `camera-flash`, `stage-spot` |
22
+ | `emotion` | what the person in frame feels | `joy`, `sadness`, `grief`, `anger`, `fear`, `surprise`, `disgust`, `love`, `longing`, `hope`, `pride`, `determination`, `calm`, `awe`, `shame`, `mischief`, `nervous`, `relief` |
23
+ | `camera_style` | how the camera behaves across a piece | `classical-steady`, `long-take-flow`, `intimate-handheld`, `symmetry-tableau`, `kinetic-chase`, `slow-dread`, `observational`, `poetic-drift`, `music-snap`, `epic-sweep`, `static-comedy`, `product-precision` |
24
+
25
+ Numbers beside the names:
26
+
27
+ - `focal_mm` (8–400) and `aperture` (f/0.95–f/22), alone or on a lens marked `anyNumbers`. A lens that
28
+ has its own numbers, such as `portrait-85mm`, refuses them.
29
+ - `emotion_strength`: `subtle`, `clear` or `strong`, or 0–100.
30
+ - `light`: `{ colour, brightness, diffusion, angle }`, alone or added to a named `lighting`. This is the
31
+ colour of a light in the scene, not a grade.
17
32
 
18
33
  ## Where each goes in the prompt
19
34
 
20
35
  The prompt is built for you, in the order video models follow best:
21
36
 
22
- 1. the camera move (`camera_move`), then the lens — **in front**: camera language that comes after
23
- the subject gets dropped;
37
+ 1. the camera move (`camera_move`), the camera style, then the lens — **in front**: camera language
38
+ that comes after the subject gets dropped;
24
39
  2. the prompt you wrote — the subject and the action only;
25
40
  3. `Style:` genre; era; film — after it;
26
- 4. `Pacing:` last.
41
+ 4. `Light:`, then `Performance:` (the emotion);
42
+ 5. `Pacing:` last.
27
43
 
28
- So do not repeat any of them in the prompt. Past 2,500 characters (the strictest model's limit)
29
- clauses give way — pacing first, then film, era, genre, then the lens; your words and the camera
30
- line never.
44
+ So do not repeat any of them in the prompt. A prompt is held to its model's own limit (PixVerse 6:
45
+ 2,048 bytes; Vidu Q3: 2,000 characters; 2,500 characters elsewhere). Past it, clauses give way —
46
+ pacing first, then camera style, film, era, light, emotion, genre, then the lens; your words and the
47
+ camera line never. What was left out comes back with the clip: tell the person. Words too long for
48
+ the model on their own are refused before anything is spent.
31
49
 
32
50
  ## Choosing
33
51
 
34
52
  - **One genre for the whole piece.** A genre per scene reads as a different film each cut. A
35
- genre suggests a pace, a lens and a look (`suggests` in the listing) — a good default, not a rule.
53
+ genre suggests a pace, a lens, a look and a camera style (`suggests` in the listing): the camera
54
+ moves the way the genre moves. A good default, not a rule.
55
+ - **Pick moves from the camera style.** Each style lists the moves that belong to it; vary them per
56
+ shot and keep the style for the piece.
36
57
  - **Vary the lens per shot**, like a real shoot: `ultra-wide-14mm` or `wide-24mm` to open on a
37
58
  place, `standard-35mm` for people in it, `portrait-85mm` for faces, `macro-100mm` for food,
38
59
  jewellery and textures, `tele-135mm` to pick someone out of a crowd.
@@ -54,7 +75,9 @@ every scene matches, and changeable later without making anything again:
54
75
 
55
76
  `teal-orange`, `bleach-bypass` (silver, low colour, hard contrast), `warm-film`, `cool-noir`,
56
77
  `pastel`, `high-contrast-mono` (true black and white), `vintage-70s`, `warm-print` (rich warm skin,
57
- golden highlights), `night-blue` (also day-for-night), `golden-hour`, `clean-commercial`, `matte`.
78
+ golden highlights), `night-blue` (also day-for-night), `golden-hour`, `clean-commercial`, `matte`,
79
+ and more than forty others in `list_director_controls`: warm, cool, colour against colour, quiet
80
+ colour, loud colour, black and white, period and mood families.
58
81
 
59
82
  - `create_video_from_scenario` → `look`: graded onto every clip when they are joined. The joined
60
83
  edit is saved beside the video (`<name>.edl.json`): to change the look, `render_edl` that EDL
@@ -68,8 +91,16 @@ golden highlights), `night-blue` (also day-for-night), `golden-hour`, `clean-com
68
91
  Keep colour words out of the prompts and the style sheet when a look is set ("teal shadows",
69
92
  "warm grade"): they fight it.
70
93
 
94
+ ## Reference pictures
95
+
96
+ `reference_images` takes up to 50 pictures. A model has room for few (Gemini Omni Flash 3, others 4),
97
+ so past that number they are shared across its slots as contact sheets, every picture a cell of a
98
+ grid. Nothing is thrown away, but each picture gets less detail and how well a model reads a sheet
99
+ has not been tested, so the clip says so. Prefer the few best pictures when they will do.
100
+
71
101
  ## Speed ramps
72
102
 
73
103
  Make the clip at normal speed, then ramp it in the edit: `render_edl` segment `ramps` ease into a
74
- slow-motion or frozen moment and back out (see the video-editing skill's EDL reference). A model
75
- asked for a ramp in the prompt rarely gives the timing you want.
104
+ slow-motion or frozen moment and back out (see the video-editing skill's EDL reference). Ask by name
105
+ (`{ "preset": "hit-beat", "atSec": 2.4 }`; `ramps` in the listing) or by numbers. A model asked for a
106
+ ramp in the prompt rarely gives the timing you want.
@@ -1,4 +1,4 @@
1
- # Long video — 30 seconds to several minutes
1
+ # Long video — 30 seconds to 30 minutes
2
2
 
3
3
  One clip is 4–15 s. Anything longer is many clips that must look like one film: the same face, the
4
4
  same jacket, the same light, a camera that stays on the right side of the action. Models have no
@@ -26,11 +26,11 @@ piece on clean stills instead:
26
26
  4. **Assemble** with cuts, a music bed or voice-over across the whole piece, captions on top
27
27
  (`render_edl`, load `video-editing`).
28
28
 
29
- ### Keep the reference sheet as cards
29
+ ### Keep the reference sheet as reflections
30
30
 
31
- Save each recurring character, product and place as a card once (`cast_save`, see SKILL.md § 2a)
31
+ Save each recurring character, product and place as a reflection once (`reflection_save`, see SKILL.md § 2a)
32
32
  and call it by `@name` from then on — in every keyframe prompt and every clip. The pictures then
33
- travel with each request by themselves (as many as each model takes, every card's front picture
33
+ travel with each request by themselves (as many as each model takes, every reflection's front picture
34
34
  first) and the sheet is said word for word, so nothing drifts between the stills and the clips, or
35
35
  between one video and the next episode. The keyframe board becomes: `generate_image` "@maya at the
36
36
  kitchen window, medium shot, morning light from the left" for each beat; then the clips:
@@ -44,8 +44,45 @@ it up once as a series and make each episode with `series_next_episode`: [series
44
44
  `create_video_from_scenario` does steps 3–4 in one call: give every scene its `first_frame_image` and
45
45
  `last_frame_image`, pass `reference_images` and `model` once for the whole piece. A scene without its
46
46
  own first picture continues from the previous scene's `last_frame_image` (the clean keyframe), else
47
- from the last frame of its clip. Up to 8 scenes per call; for longer pieces run several scenarios or
48
- make the clips one by one with `generate_video`, then join everything with `render_edl`.
47
+ from the last frame of its clip. Up to 8 scenes per call; past that, make it as a plan in batches.
48
+
49
+ ### Past 8 scenes: a plan in batches
50
+
51
+ For anything longer, up to 300 scenes and 30 minutes, use `long_video_plan`. Fifteen minutes is about
52
+ 150 scenes of 6 s, or 60 of 15 s on a model that makes them. It is a lot of money and hours of work,
53
+ so the person sees and approves it in steps:
54
+
55
+ 1. **Write the whole story first**: the reference sheet as reflections, the story in a few lines and every
56
+ scene in order, keeping the same wording for the same people. `long_video_plan` with the title, the
57
+ `story`, the `scenes`, the `model`, `reference_images`, `style` and direction. These stay fixed for
58
+ the whole piece. Long scene lists can go in several calls (`plan` and more `scenes`).
59
+ 2. **Show the price: the whole and each batch.** Nothing is paid yet. Tell them plainly what the whole
60
+ comes to and that a scene made again costs again. When they agree, call `long_video_plan` again
61
+ with `plan` and `confirmed_total_usd`. That amount is a ceiling: nothing can spend past it.
62
+ 3. **Each batch, keyframes first.** `long_video_batch` with `plan` tells you what to draw: the story,
63
+ the reflections, the last picture of the piece so far. Draw and check the batch's stills, show them,
64
+ then give them as `keyframes` with `stills_approved: true` for the batch's price, and call again
65
+ with `confirmed_cost_usd` once they say yes. Each batch gets its own yes.
66
+ 4. **Show the batch.** It comes back joined; ask them to watch it before the next. A wrong face in
67
+ batch 2 is far cheaper to catch than in batch 10.
68
+ 5. **`long_video_finish`** joins everything: the transition, the colour look on every clip, even
69
+ loudness all through, the music. It says if anything is still missing.
70
+
71
+ **When something goes wrong.** A scene that fails stays failed and the others stand. Say which and why,
72
+ then call the same batch again: only what is left is priced and made. If a prompt was refused, change
73
+ it with `keyframes` (`scene` and `prompt`). If several fail in a row the batch stops by itself so nothing
74
+ more is spent: say why, usually credit or a provider that is down. A scene "still being made" is
75
+ fetched on the next call and never asked for twice.
76
+
77
+ **After the app closed.** `long_video_status` lists the plans and says how far each one got, what was
78
+ spent and what comes next. Everything made is kept in the plan's folder. A clip being made when the app
79
+ closed is fetched if its job can be found; if not, it may have been charged, so it stays counted and
80
+ making it again costs again. Tell the person. Nothing else has to be made again.
81
+
82
+ **Past the amount confirmed.** A batch that would go past the whole is refused and says how much more it
83
+ needs. Only the person can raise it. Never raise it on your own.
84
+
85
+ A reflection removed since the plan was made stops the next batch. Take that reflection out of the scenes that call it, or start a new plan. Never work around it.
49
86
 
50
87
  ### For a pair that is too far apart
51
88
 
@@ -72,7 +109,7 @@ reframe; it only goes on.
72
109
  | Model (`model`) | Continues | New part per step | Whole clip at most |
73
110
  |---|---|---|---|
74
111
  | Gemini Omni Flash | only a clip it made itself, on the same account — pass its `job_id` | 3–10 s | 40 s |
75
- | PixVerse 6 (`fal-ai/pixverse/v6/text-to-video`) | any clip Tesseract made (`job_id` or the file as `video`) | 1–15 s | no limit stated |
112
+ | PixVerse 6 (`fal-ai/pixverse/v6/text-to-video`) | any clip — one a model made or the person's own footage (`job_id` or the file as `video`) | 1–15 s | no limit stated |
76
113
  | Veo 3.1 / Veo 3.1 Fast (`fal-ai/veo3.1`, `fal-ai/veo3.1/fast`) | only a clip Veo 3.1 made | 7 s | 30 s |
77
114
 
78
115
  By default the model that made the clip continues it; a model that cannot says so in words, before
@@ -2,8 +2,8 @@
2
2
 
3
3
  Two routes in Tesseract:
4
4
 
5
- - **Their own picture — a talking photo:** `make_talking_photo` (below). The person's own photo, a
6
- photo of someone who agreed, or a saved character card speaks a script in the voice they choose —
5
+ - **Their own picture — a talking photo:** `make_talking_photo` (below). A photo of one person, or a saved
6
+ reflection of a character, speaks a script in the voice they choose —
7
7
  their own cloned voice too — or their recording, with the lips matched.
8
8
  - **A stock presenter — HeyGen:** `list_avatars` → `generate_avatar_video` (script, an avatar or
9
9
  talking-photo id, a HeyGen voice id, 16:9 or 9:16, background colour). It runs on the free
@@ -14,22 +14,17 @@ below apply to both.
14
14
 
15
15
  ## Talking photo — their own picture
16
16
 
17
- 1. **Who is in the picture.** Ask. Only the person themself, someone who agreed to be shown saying
18
- these words, or a made-up character — then `consent=true`. A saved card (`"@name"`) carries its
19
- person's consent. Never a public figure, a stranger or anyone under 18: the picture is checked
20
- first and refused if so, and nothing is made when it cannot be checked (signed out).
21
- 2. **The picture.** One person, front-on, face clear and well lit, mouth visible, nothing in front
17
+ 1. **The picture.** One person, front-on, face clear and well lit, mouth visible, nothing in front
22
18
  of the face. `aspect_ratio` (`9:16`, `16:9`, `1:1`) crops it, centred, before anything is sent.
23
- 3. **The voice.** A `script` with an ElevenLabs `voice_id` (`list_voices`), or their own cloned
24
- voice (`clone_voice` — only their own voice, or one they have the rights to: see
25
- `audio-and-voice`); or `audio_path`, a recording of them. HeyGen voice ids do not work here.
26
- 4. **The model.** `best` OmniHuman v2 ($0.105/s, up to 5 min, the head, hands and body move with
19
+ 2. **The voice.** A `script` with an ElevenLabs `voice_id` (`list_voices`), or their own cloned
20
+ voice (`clone_voice`, see `audio-and-voice`); or `audio_path`, a recording of them. HeyGen voice ids do not work here.
21
+ 3. **The model.** `best` OmniHuman v2 ($0.105/s, up to 5 min, the head, hands and body move with
27
22
  the speech) or `cheaper` Kling AI Avatar v2 Standard ($0.0562/s, up to 2 min). `direction`: a
28
23
  few words on how they move ("warm smile, small nods, looks into the camera").
29
- 5. **Cost.** The first call returns the estimate when anything is billed to their own keys (the
24
+ 4. **Cost.** The first call returns the estimate when anything is billed to their own keys (the
30
25
  voice; the lip-sync on their own fal key) — confirm it, then call again with
31
26
  `confirmed_cost_usd`. On Tesseract the lip-sync comes out of their allowance.
32
- 6. **Length.** `max_seconds` (default 60) caps it; a longer script is refused before anything is
27
+ 5. **Length.** `max_seconds` (default 60) caps it; a longer script is refused before anything is
33
28
  spent. Pilot the first sentences of a long script first.
34
29
 
35
30
  The finished clip has the full-quality voice put back.
@@ -44,9 +39,8 @@ The finished clip has the full-quality voice put back.
44
39
  3. **Voice:** `generate_avatar_video` needs a **HeyGen** `voice_id`. There is no tool that lists
45
40
  HeyGen voices — ask the person for one from their HeyGen voice library. ElevenLabs voice ids
46
41
  (from `list_voices`) do not work here.
47
- 4. **Rights:** the avatar or talking photo must be a likeness the person is authorised to use.
48
- Never build a presenter of a real person who has not agreed, and never put words in a real
49
- person's mouth that they did not say.
42
+ 4. **Rights:** what may be made is each provider's own rules (HeyGen's, fal's, ElevenLabs'), which the person
43
+ agreed to with Tesseract's terms. Tesseract asks no tick of its own.
50
44
 
51
45
  ## The script
52
46
 
@@ -40,13 +40,13 @@ after the subject), so the prompt itself then describes the subject and the acti
40
40
  | The beat | Moves |
41
41
  |---|---|
42
42
  | Hook, first second | `fast-push-in`, `crash-zoom-in`, `fpv-dive`, `zoom-bounce` |
43
- | Reveal, realisation | `dolly-in`, `creep-in`, `pull-back-reveal`, `rise-over-reveal`, `tilt-up`, `focus-pull`, `focus-reveal` |
44
- | Hero shot (person or product) | `orbit`, `half-orbit`, `low-orbit`, `arc-left` / `arc-right`, `turntable`, `motion-sweep` |
45
- | Movement, travel | `tracking-side`, `follow-behind`, `leading-walk`, `car-mount`, `helmet-cam`, `handlebar-mount`, `fpv-fly-through`, `gimbal-glide`, `hyperlapse` |
46
- | Establishing a place | `drone-flyover`, `drone-rise`, `drone-top-down`, `heli-aerial`, `crane-down`, `sweeping-crane` |
47
- | Someone talks, a product is shown | `locked-off`, `near-still`, `still-top-shot`, `zoom-in`, `parallax-slide`, `handheld` |
43
+ | Reveal, realisation | `dolly-in`, `creep-in`, `pull-back-reveal`, `rise-over-reveal`, `reveal-from-behind`, `over-shoulder`, `tilt-up`, `focus-pull`, `focus-reveal` |
44
+ | Hero shot (person or product) | `orbit`, `half-orbit`, `low-orbit`, `descending-orbit`, `arc-left` / `arc-right`, `turntable`, `motion-sweep`, `probe-lens` |
45
+ | Movement, travel | `tracking-side`, `follow-behind`, `leading-walk`, `car-mount`, `helmet-cam`, `handlebar-mount`, `fpv-fly-through`, `gimbal-glide`, `hyperlapse`, `low-angle-tracking`, `overhead-follow`, `car-chase-tracking`, `long-take` |
46
+ | Establishing a place | `drone-flyover`, `drone-rise`, `drone-top-down`, `drone-orbit`, `heli-aerial`, `crane-down`, `overhead-descend`, `sweeping-crane` |
47
+ | Someone talks, a product is shown | `locked-off`, `near-still`, `still-top-shot`, `zoom-in`, `parallax-slide`, `handheld`, `ken-burns` (a still photo) |
48
48
  | Tension, unease | `dutch-tilt`, `dolly-zoom`, `reverse-dolly-zoom`, `body-mount`, `high-corner`, `boat-sway` |
49
- | Between two scenes | `whip-pan`, `whip-tilt`, `pass-through`, `foreground-wipe`, `eye-dive` (give the next scene as the last picture) |
49
+ | Between two scenes | `whip-pan`, `whip-pan-left` / `whip-pan-right`, `whip-tilt`, `pass-through`, `foreground-wipe`, `eye-dive` (give the next scene as the last picture) |
50
50
  | Ending | `crane-up`, `dolly-out`, `creep-out`, `drone-pull-away`, `space-pull-back`, `rising-orbit`, `defocus-out` |
51
51
  | Time | `timelapse`, `slow-motion`, `frozen-moment`, `shutter-drag`, `stop-motion`, `undercranked` |
52
52
 
@@ -59,12 +59,16 @@ after the subject), so the prompt itself then describes the subject and the acti
59
59
  - `>` runs them **one after the other**: `crane-up > pan-left`, `locked-off > dolly-in`. Moves of one
60
60
  kind and opposite moves are fine here. Give each step about three seconds of the clip.
61
61
  - `dolly-zoom`, `reverse-dolly-zoom`, `frozen-moment`, `eye-dive` and `space-pull-back` are whole moves
62
- and stand alone; `locked-off`, `near-still`, `high-corner`, `still-top-shot`, `rising-orbit` and
63
- `barrel-roll` run together only with a speed.
62
+ and stand alone; `locked-off`, `near-still`, `high-corner`, `still-top-shot`, `rising-orbit`,
63
+ `descending-orbit`, `ken-burns` and `barrel-roll` run together only with a speed.
64
64
 
65
65
  The tool says why when a stack does not work.
66
66
 
67
- **Unproven moves.** A move with `status: seed` in `list_camera_moves` has never been run live, so its
67
+ **Crew names work too.** A move is found by its id, its label or any name in its `alsoCalled`:
68
+ `rack focus` is `focus-pull`, `vertigo` is `dolly-zoom`, `snorricam` is `body-mount`, `bullet time` is
69
+ `frozen-moment`, `jib up` is `crane-up`, `steadicam` is `gimbal-glide`, `oner` is `long-take`.
70
+
71
+ **Unproven moves.** A move with `status: seed` in `list_camera_moves` has no proven run, so its
68
72
  result is not known. Say so before spending on one, or pick a move without that mark.
69
73
 
70
74
  **Which model.** The plain moves (dolly, crane, pan, tilt, arc, zoom, handheld, drone) work on every
@@ -121,7 +125,7 @@ distorted hands, cartoon` (for a realistic look), `camera shake` (for a static s
121
125
 
122
126
  - On-screen text, logos and signs in the prompt — models misspell them. Add text in editing.
123
127
  - Named living artists, brands and trademarks as style references; describe the look instead.
124
- - Real, identifiable people without their consent; anything meant to pass as real news footage.
128
+ - Anything meant to pass as real news footage.
125
129
  - More than ~80 words of description: the model latches onto the first details and drops the rest.
126
130
 
127
131
  ## From a keyframe (image-to-video)
@@ -8,22 +8,45 @@ re-shoot one beat of, re-voice and re-grade — never just a flat clip.
8
8
  Use it when the person wants a show, a channel, a recurring format or "part 2": "a weekly short
9
9
  with my mascot", "a bedtime story series", "episode 3 of the bakery one".
10
10
 
11
+ ## A faceless channel
12
+
13
+ A channel told by its narrator, with nobody real on screen. `series_create` with `faceless_style`
14
+ (`documentary`, `explainer`, `nature`, `paper-cut`, `chalkboard`, `night-city`, `mystery`, `cosmos`) sets
15
+ the style sheet, the cut, the colour and the music; anything given by hand wins. It needs a `voice_id`.
16
+ Every beat needs a line of narration, about 15 characters for each second of the beat, and the picture
17
+ shows what the line says. A real person's reflection is refused (a faceless channel shows nobody real). Products, places and made-up
18
+ characters are fine.
19
+
20
+ ## From a topic to finished episodes
21
+
22
+ When the person gives a topic rather than one idea ("three episodes on the great rivers"),
23
+ `series_plan_run` with the `topic`, `episodes` (1–4) and `seconds_each` gives the plan to write from and a
24
+ rough size of what the run costs. Write one line for each episode, show the size and the ideas, then make
25
+ each with `series_next_episode`, one at a time. `find_ideas` has formats to borrow.
26
+
27
+ A long episode (past 8 beats or 2 minutes) goes the same way until its beats are given:
28
+ `series_next_episode` then keeps it as a long video plan and shows the whole and its batches. Go on with
29
+ `long_video_plan` (confirm the whole), `long_video_batch` for each batch, and `long_video_finish`, which
30
+ reads the narration, makes the music, saves the editable project and renders it:
31
+ [long-video.md](long-video.md) has the steps. Write every beat at once, with its narration.
32
+
33
+ Once an episode is finished, post it with the `youtube-channel`, `facebook-instagram`, `x-account` or
34
+ `tiktok-account` skill (TikTok sends a draft) and mark it `series_update episode_status published`.
35
+
11
36
  ## Set it up once
12
37
 
13
- 1. **The cast first.** Every character, product and place that comes back is a saved card
14
- (`cast_save`, SKILL.md § 2a) — the front picture first, a short sheet. A real person only with
15
- their consent kept on the card (`consent_from`), and on Tesseract their pictures are checked;
16
- a series refuses a real person's card that has neither. A **look** worth repeating (a
17
- paper-cut texture, a film stock) can be a `style` card: it goes with every beat of every episode.
38
+ 1. **The reflections first.** Every character, product and place that comes back is a saved reflection
39
+ (`reflection_save`, SKILL.md § 2a) — the front picture first, a short sheet. A **look** worth repeating (a
40
+ paper-cut texture, a film stock) can be a `style` reflection: it goes with every beat of every episode.
18
41
  2. **The style sheet** — a few concrete lines said in every shot: medium (live action, 3D,
19
42
  flat 2D), palette, light, texture, and what never changes ("Maya always wears
20
43
  the green apron; the bakery's sign is always in frame in the first beat"). It is the show's
21
44
  bible: write it once, change it only on purpose. Name the genre, era, pacing, lens and film as
22
45
  the series' director controls (`genre`, `era`, … — ids from `list_director_controls`) and the
23
46
  colour as its `look`, rather than in the sheet: [directing.md](directing.md).
24
- 3. **The format.** `short` = 9:16, a 30–60 s story; `episode` = 16:9, 60–120 s; or `aspect`,
25
- `min_seconds`, `max_seconds`. The length is the story's — the beats — without the intro and
26
- outro. One run makes 2–8 beats of up to 15 s.
47
+ 3. **The format.** `short` = 9:16, a 30–60 s story; `episode` = 16:9, 60–120 s; `long` = 16:9, 2–15
48
+ minutes; or `aspect`, `min_seconds`, `max_seconds`. The length is the story's — the beats — without
49
+ the intro and outro. Up to 8 beats and 2 minutes is one run; longer is made in batches (below).
27
50
  4. **The model.** One that takes reference pictures keeps faces best (`video_providers_status`,
28
51
  `referenceImages`; Gemini Omni Flash takes 3). Every episode uses it, so they match.
29
52
  5. **The voice.** An ElevenLabs voice id from `list_voices` — or a voice cloned with the speaker's
@@ -42,19 +65,19 @@ is set up; `series_update` changes it for the next episodes (episodes already ma
42
65
 
43
66
  `series_next_episode` in three calls:
44
67
 
45
- 1. **The idea alone** → the plan: the cast by today's `@names` with their sheets, the style, the
68
+ 1. **The idea alone** → the plan: the reflections by today's `@names` with their sheets, the style, the
46
69
  format, and the last episodes' beats. Write the beats from the idea: one continuous action per
47
- beat, every cast member in shot called by their `@name`, the same wording for them as in earlier
70
+ beat, everyone in shot called by their `@name`, the same wording for them as in earlier
48
71
  episodes, a camera move per beat (`list_camera_moves`). Narration, if the series is narrated:
49
72
  one line per beat at most, short enough to say within it.
50
73
  2. **Keyframes first.** Draw each beat's opening still with `generate_image` — the beat, its
51
74
  `@names` (also in `reference_images`), the style sheet and the aspect. Check each with
52
- `image_inspect` against the cast and the last episode. **Show the person every still**; redo the
75
+ `image_inspect` against the reflections and the last episode. **Show the person every still**; redo the
53
76
  ones they want changed. Then call again with the beats (each with its `first_frame_image`, and
54
77
  `last_frame_image` where a beat must end on a given picture) and `stills_approved: true` → the
55
78
  price. Present it in plain words.
56
79
  3. **Confirmed** → the same call with `confirmed_cost_usd`. The clips are made from keyframe to
57
- keyframe with the series' model, format, style and cast; the narration is read in the series'
80
+ keyframe with the series' model, format, style and reflections; the narration is read in the series'
58
81
  voice; the music made; and the episode is saved in its own folder — clips, stills, voice, music
59
82
  and a `.tsvideo` project with the intro and outro — then rendered once and shown in the chat.
60
83
 
@@ -63,9 +86,9 @@ said yes. A price change (more beats, longer beats) means confirming again.
63
86
 
64
87
  ## Keep the episodes consistent
65
88
 
66
- - **Same cards.** Call people, products and places by `@name` only — never re-describe them in your
67
- own words; the card's sheet is said for you. A new recurring character becomes a card and joins
68
- the cast (`series_update cast`) before the episode it first appears in.
89
+ - **Same reflections.** Call people, products and places by `@name` only — never re-describe them in your
90
+ own words; the reflection's sheet is said for you. A new recurring character becomes a reflection and joins
91
+ the series (`series_update reflections`) before the episode it first appears in.
69
92
  - **Same style sheet**, word for word — the series adds it to every shot. Do not restate the look
70
93
  per beat in other words.
71
94
  - **Same colour look on every episode.** Generated clips drift a little in colour from one to the
@@ -94,15 +117,13 @@ Before calling an episode done:
94
117
  4. Once the person changes an episode in the editor, mark it `edited`; once it is out, `published`
95
118
  (`series_update episode_number`, `episode_status`).
96
119
 
97
- ## Safety — the cast's rules carry over
120
+ ## A reflection removed
98
121
 
99
- - A real person's card only with their consent kept on it and pictures that passed Tesseract's check.
100
- When someone withdraws their consent: `cast_remove` their card; the series then refuses the next
101
- episode until its cast is updated (`series_update cast`). Episodes already made stay as they are —
102
- tell the person, and offer to take that character out of them in the editor.
103
- - **No minors.** Never a series about, or a card of, anyone who looks under 18 — not with their
104
- parents' consent either. No public figures, nothing sexual, nothing meant to deceive.
105
- - A cloned voice only with the speaker's permission (audio-and-voice skill).
122
+ - When a reflection is removed (`reflection_remove`), the series refuses the next episode until its reflections are
123
+ updated (`series_update reflections`). Episodes already made stay as they are — tell the person, and offer to take
124
+ that character out of them in the editor.
125
+ - What may be made is each provider's own rules, which the person agreed to with Tesseract's terms; Tesseract asks
126
+ no tick and runs no check of its own.
106
127
 
107
128
  ## What it does not do yet — say it
108
129