@scenerok/sdk 0.26.0 → 0.28.0

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.
@@ -21,7 +21,7 @@ A `filter` line grades everything on screen during its window. Add `target: clip
21
21
  | `saturation` | Color intensity |
22
22
  | `brightness` | Exposure lift/drop |
23
23
 
24
- Use filters as optional finishing tools — do not add by default.
24
+ Choose filters like any other tool (`choosing.md`). A grade (`cdl` for warmth or coolness, `vignette` around 0.3) ties mixed pictures together; effect filters (`glitch`, `chromatic`, `blur`) carry a strong look and fight readable text. Each one's look and clashes are in `repertoire.md`.
25
25
 
26
26
  ## VFX filters
27
27
 
@@ -2,6 +2,11 @@
2
2
 
3
3
  `import motion from "@scenerok/basic-animations"` — use with `animate:` on `text` blocks.
4
4
 
5
+ Fonts: `font:` is one Google Fonts family at weight 400. Names with a weight such as
6
+ `"Inter Black"` or `"Inter Bold"` (in some catalog examples below) are not families and fall
7
+ back to a default face in renders; use a heavy family such as `"Archivo Black"` instead.
8
+ Type scale, palette and motion timing: `look-and-feel.md`.
9
+
5
10
  ## Motion primitives
6
11
 
7
12
  | Primitive | Suits | Phase |
@@ -11,8 +11,8 @@ Contents: Agent quick start · Program structure · Statements (input, output, l
11
11
  1. **Import every package function** — use `import xai from "@scenerok/xai"`, `import cf from "@scenerok/cloudflare"`, `import eleven from "@elevenlabs/music"`, and `import motion from "@scenerok/basic-animations"` before calling `xai.*`, `cf.*`, `eleven.*`, or `motion.*`.
12
12
  2. **Validate early** — `scenerok validate file.vid` (errors show as `Line N:C — message`).
13
13
  3. **Music package syntax** — `import eleven from "@elevenlabs/music"`, then call `eleven.music(...)`, `eleven.generateMusic(...)`, or `eleven.composeMusic(...)`.
14
- 4. **Copy working examples** — `vidscript-sample.md`, and the `.vid` files in the `@scenerok/cli` package's `examples/system/` (e.g. `minimal-text-reel.vid`, `ecom-product-launch.vid`, `rokmilk-chocolate-promo.vid`).
15
- 5. **Use URL assets selectively** — if the user gives a website or product URL and browser screenshot tools are available, you can capture above-fold screenshots, product images, app screenshots, and logos for VidScript `input` assets. Do not treat screenshots as mandatory or as the only visual source.
14
+ 4. **Choose per beat** — name each beat's job, then pick tools with `choosing.md` and `repertoire.md` (what each tool looks like, is for, and fights). `recipes.md` has complete scripts; `look-and-feel.md` has the type scale and safe areas.
15
+ 5. **Look at a URL's pictures before choosing** — when the user gives a website or product URL, collect the page's own product images, logo and focused screenshots (`look-and-feel.md` → Sourcing imagery), then decide per beat whether to use them. Don't use a full-page screenshot as a background.
16
16
  6. **Probe asset type and dimensions** — before placing real assets, identify image vs video with `file`; inspect width, height, and duration with `ffprobe`, `sips`, or `identify`; then scale from the measured aspect ratio and set explicit `width`, `height`, `x`, and `y`.
17
17
  7. **Use still images directly** — `input` supports videos and images. Place still screenshots, logos, and product photos with `video image_input`; the renderer treats images as static clips for the block duration.
18
18
  8. **Use the full media plugin toolkit** — choose still generation, text-to-video, image-to-video, reference-to-video, video extension, TTS, and music deliberately. Do not default to only `xai.imagine`.
@@ -681,7 +681,7 @@ import motion from "@scenerok/basic-animations"
681
681
  [0s .. 5s] = filter "glitch", intensity: 0.5, animate: motion.fadeIn(1s)
682
682
  ```
683
683
 
684
- Filters are optional finishing tools; use them only when they improve the composition. Parameter names per filter: `editing-actions.md` → Color and finishing.
684
+ Grade the whole video once (`cdl`, `vignette`, or a `lut`); effect filters are optional accents. Parameter names per filter: `editing-actions.md` → Color and finishing.
685
685
 
686
686
  ### Animation functions (`@scenerok/basic-animations`)
687
687
 
@@ -15,9 +15,9 @@ Without the owning import, calls like `xai.imagine`, `cf.video`, `xai.tts`, `ele
15
15
 
16
16
  **Never** call package functions without importing the package alias first.
17
17
 
18
- ## Rule 2: Use URL assets selectively
18
+ ## Rule 2: Look at a URL's pictures before you choose
19
19
 
20
- A product or landing-page URL is optional source material. Capture focused, legible pieces (above-the-fold views, product shots, logos), never full-page screenshots as backgrounds, and don't invent claims. The full URL workflow is in `workflow.md`.
20
+ When the user gives a product or landing-page URL, collect its own pictures (product shots, logos, focused screenshots) before you decide what each beat shows: they are the only pictures that prove anything about the product. Reading only the title and price leaves you choosing without the options. Use focused, legible pieces, never a full-page screenshot as a background, and don't invent claims. How to collect and prepare them: `look-and-feel.md` → Sourcing imagery.
21
21
 
22
22
  ## Rule 2.5: Probe real asset type and dimensions before placement
23
23
 
@@ -46,7 +46,7 @@ x = (outputWidth - scaledWidth) / 2
46
46
  y = safeAreaTop
47
47
  ```
48
48
 
49
- Add entry motion to real assets, not only text. When a static visual needs a clean exit, split it:
49
+ Real assets take `animate:` like text does. When a visual should leave softly, split it:
50
50
 
51
51
  ```vidscript
52
52
  import motion from "@scenerok/basic-animations"
@@ -211,7 +211,7 @@ let bed = eleven.music("Soft premium ad music", duration: 15, instrumental: true
211
211
  [0s .. 15s] = filter "saturation", amount: 1.12
212
212
  ```
213
213
 
214
- Filters are optional finishing tools, not required ingredients. Use them only when they improve the visual result. Each filter has its own parameter name (`saturation` takes `amount`, `blur` takes `radius`); a wrong name is ignored without an error. The table is in `editing-actions.md` → Color and finishing.
214
+ Filters are tools like any other: use a grade (`cdl`, `vignette`, or a `lut` from an HTTPS URL) when the pictures need tying together, and an effect (`glitch`, `chromatic`, `blur`) when its look is the point. What each looks like and fights: `repertoire.md`. Each filter has its own parameter name (`saturation` takes `amount`, `blur` takes `radius`); a wrong name is ignored without an error. The table is in `editing-actions.md` → Color and finishing.
215
215
 
216
216
  A `filter` line grades everything in its window. To grade one clip, add `target: clip` or write `clip.Filter("sepia", intensity: 0.6)`.
217
217
 
@@ -2,35 +2,29 @@
2
2
 
3
3
  ## Pipeline
4
4
 
5
- 1. **Understand the goal** — promo, testimonial, meme, code demo, etc.
5
+ 1. **Understand the goal** — promo, testimonial, meme, code demo, etc. Pick the closest script in `recipes.md`
6
6
  2. **Choose authoring** — VidScript (`.vid`) by default and for every editing action; TypeScript `@scenerok/sdk` (`.ts`, `sdk-guide.md`) only for loops or computed timing
7
- 3. **Plan the structure** — time blocks, durations, inputs
8
- 4. **Gather assets** — URLs, local paths, generated clips, selective website screenshots
9
- 5. **Probe asset type and dimensions** — `loadVideo` / media stdlib, or `file` / `ffprobe` / `sips` / `identify`; never guess
10
- 6. **Use images directly when useful** — VidScript `video image_input`; SDK `video(path)` / `loadVideo`
7
+ 3. **Plan the structure** — beats of 2.5–4.5 s, each with a picture, copy, and motion (`look-and-feel.md`)
8
+ 4. **Put the material on the table** — page images, focused screenshots, logo, footage, screen recordings, the exact numbers and words. Generated stills or clips when nothing real exists and the beat needs a picture. You can't choose a picture you never looked at
9
+ 5. **Probe and prepare** — `file` / `ffprobe` / `sips` / `identify` (or `loadVideo` / media stdlib); crop and blur stills with ffmpeg; never guess sizes
10
+ 6. **Decide the look** — palette, two fonts, and type sizes as `let` values (`look-and-feel.md`)
11
11
  7. **Choose plugin modality** — still / t2v / i2v / ref2v / extend / TTS / music (`ai-models.md`, `tts.md`, `music.md`)
12
12
  8. **Compose** — measured dimensions, `area:` / `t.grid` for text, symbolic durations (`vo.duration` / returned node `.duration`), entry/exit beats
13
13
  9. **Validate** — `scenerok validate script.vid` or `scenerok validate scene.ts`
14
14
  10. **Deep-validate (VidScript)** — for scripts with TTS/generated media: `scenerok validate script.vid --generate-assets --report-json` (billed; assets cache for the render). SDK plugins generate during `scenerok render` instead. Fix `offCanvas`/`wasShrunk` text, `collisions`, and unintended `audio.overlaps`, then re-validate.
15
15
  11. **Render** — `scenerok render script.vid --watch` or `scenerok render scene.ts --watch`
16
- 12. **Check the render** — `scenerok lint-video <render-id> --cost medium --json` (billed); fix and re-render if it reports problems. `scenerok render script.vid --validate` does render and check in one step
17
- 13. **Deliver** — share download URL when complete
16
+ 12. **Look at the render** — pull one frame per beat with ffmpeg, open them, and answer the review questions in `SKILL.md`. Fix what you see and render again. `scenerok lint-video <render-id> --cost medium --json` (billed) adds an LLM review of frame grabs
17
+ 13. **Deliver** — share the download URL once you can defend each beat
18
18
 
19
19
  ## Website URL asset workflow
20
20
 
21
- When the user provides a product, company, landing page, or ecommerce URL:
22
-
23
- 1. Visit the URL with a browser tool before composing.
24
- 2. Capture screenshots sparingly — above-fold, product closeups, pricing cards. Avoid full-page backgrounds.
25
- 3. Crop to the visual evidence needed.
26
- 4. Save product images, logos, app screenshots when accessible.
27
- 5. Probe saved asset dimensions before composing.
28
- 6. Use stills as timeline inputs or feed into `xai.imageToVideo` / `xai.referenceToVideo` (VidScript or SDK).
29
- 7. Combine real assets with generated clips, text, and music.
30
- 8. Scale from measured aspect ratio; keep primary visuals in ~80–88% frame width for 9:16.
31
- 9. Animate assets: `motion.popIn` / SDK `popIn`, `fadeIn`, `slideY`.
32
- 10. Generative prompts must require **no text, logos, watermarks, or readable UI** in AI output — add copy with `text`.
33
- 11. Do not invent product claims — extract from site or ask the user.
21
+ When the user gives a product, company, landing-page or store URL, the page's
22
+ own pictures go in the video. Reading only the title, price and bullets is not
23
+ enough. Collect the image URLs and focused screenshots, probe them, crop out
24
+ baked-in captions, and place them as cards, bands over a blurred fill, or
25
+ full-frame covers: `look-and-feel.md` → Pictures and Sourcing imagery. A worked
26
+ example is the product promo in `recipes.md`. Don't invent product claims;
27
+ extract them from the page or ask.
34
28
 
35
29
  ## Best practices
36
30
 
@@ -62,7 +56,9 @@ If render fails: check `scenerok status <id>`, fix missing assets or syntax, re-
62
56
 
63
57
  ## Sample video types
64
58
 
65
- - **Product promo** — hero + headline + CTA
59
+ - **Product promo** — hero image, features, price + CTA (`recipes.md`)
60
+ - **Release notes** — logo, typed code, stat, outro (`recipes.md`)
61
+ - **Talking head** — speaker cut, punch-ins, b-roll, captions (`recipes.md`)
66
62
  - **Social hook** — fast cuts, bold text
67
63
  - **Testimonial** — speaker clip + quote overlay
68
64
  - **Meme remix** — reaction clip + punchlines