@scenerok/sdk 0.27.0 → 0.29.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
- Give every finished video one grade across its whole length: `cdl` for warmth or coolness plus `vignette` around 0.3 (see `look-and-feel.md`). Effect filters (`glitch`, `chromatic`, `blur`) are optional accents; don't stack them 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
 
@@ -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. **Start from a recipe** — `recipes.md` (product promo, release notes, talking head) and the look system in `look-and-feel.md`. A finished video passes the quality gate in `SKILL.md`: a picture under every beat, motion on everything, one grade, sound.
15
- 5. **A URL means its pictures go in the video** — when the user gives a website or product URL, use the page's own product images, logo and focused screenshots as `input` assets (`look-and-feel.md` → Sourcing imagery). Don't use a full-page screenshot as a background.
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 the visual patterns and a plugin's README owns its beat order; `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`.
@@ -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: A URL means its pictures go in the video
18
+ ## Rule 2: Look at a URL's pictures before you choose
19
19
 
20
- When the user gives a product or landing-page URL, the video uses that page's own pictures: product shots, logos, focused screenshots. Reading only the title and price is not enough. Take 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.
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
- Every finished video carries one grade over the whole timeline (`cdl` and/or `vignette`, or a `lut` from an HTTPS URL): see the quality gate in `SKILL.md`. Effect filters (`glitch`, `chromatic`, `blur`) stay optional. 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
 
@@ -5,7 +5,7 @@
5
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
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. **Gather pictures** — page images, focused screenshots, logo, footage, screen recordings; generated stills or clips when nothing real exists. A video with no picture is not done
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
9
  5. **Probe and prepare** — `file` / `ffprobe` / `sips` / `identify` (or `loadVideo` / media stdlib); crop and blur stills with ffmpeg; never guess sizes
10
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`)
@@ -13,8 +13,8 @@
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. **Look at the render** — pull one frame per beat with ffmpeg and open them; run the freeze check (both commands are in the quality gate 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 the quality gate passes
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