@scenerok/cli 2.2.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.
- package/README.md +173 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +94 -0
- package/dist/commands/cache.d.ts +3 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +65 -0
- package/dist/commands/lint-video.d.ts +21 -0
- package/dist/commands/lint-video.d.ts.map +1 -0
- package/dist/commands/lint-video.js +122 -0
- package/dist/commands/project.d.ts +3 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +173 -0
- package/dist/commands/render.d.ts +4 -0
- package/dist/commands/render.d.ts.map +1 -0
- package/dist/commands/render.js +242 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +208 -0
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +254 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/lib/api.d.ts +268 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +160 -0
- package/dist/lib/config.d.ts +13 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +53 -0
- package/dist/lib/format-api-error.d.ts +2 -0
- package/dist/lib/format-api-error.d.ts.map +1 -0
- package/dist/lib/format-api-error.js +24 -0
- package/dist/lib/language.d.ts +3 -0
- package/dist/lib/language.d.ts.map +1 -0
- package/dist/lib/language.js +9 -0
- package/dist/lib/logger.d.ts +8 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +51 -0
- package/dist/lib/project.d.ts +29 -0
- package/dist/lib/project.d.ts.map +1 -0
- package/dist/lib/project.js +156 -0
- package/dist/lib/sdk-scene-modules.d.ts +7 -0
- package/dist/lib/sdk-scene-modules.d.ts.map +1 -0
- package/dist/lib/sdk-scene-modules.js +35 -0
- package/dist/utils/skillsManifest.d.ts +42 -0
- package/dist/utils/skillsManifest.d.ts.map +1 -0
- package/dist/utils/skillsManifest.js +122 -0
- package/examples/system/3-tips-fitness.vid +45 -0
- package/examples/system/ecom-product-launch.vid +31 -0
- package/examples/system/glitch-title.vid +17 -0
- package/examples/system/meme-remix.vid +15 -0
- package/examples/system/minimal-text-reel.vid +11 -0
- package/examples/system/product-launch.vid +18 -0
- package/examples/system/rokmilk-chocolate-promo.vid +25 -0
- package/examples/system/testimonial-cut.vid +16 -0
- package/examples/system/ugc-testimonial-voiceover.vid +33 -0
- package/examples/system/voice-visual-promo.vid +21 -0
- package/package.json +51 -0
- package/skills/remote/ai-models.md +65 -0
- package/skills/remote/animations-catalog.md +89 -0
- package/skills/remote/animations-picker.md +77 -0
- package/skills/remote/brand-setup.md +69 -0
- package/skills/remote/catalog-index.json +1810 -0
- package/skills/remote/environments.md +73 -0
- package/skills/remote/intent-router.md +81 -0
- package/skills/remote/media-stdlib.md +66 -0
- package/skills/remote/music.md +69 -0
- package/skills/remote/sdk-guide.md +201 -0
- package/skills/remote/shaders-filters.md +97 -0
- package/skills/remote/text-styles.md +108 -0
- package/skills/remote/transitions-catalog.md +55 -0
- package/skills/remote/tts.md +82 -0
- package/skills/remote/vidscript-guide.md +574 -0
- package/skills/remote/vidscript-sample.md +28 -0
- package/skills/remote/vidscript-strict.md +251 -0
- package/skills/remote/workflow.md +72 -0
- package/skills/shared/SKILL.md +157 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Text Styles and Motion Primitives
|
|
2
|
+
|
|
3
|
+
`import motion from "@scenerok/basic-animations"` — use with `animate:` on VidScript `text` blocks.
|
|
4
|
+
|
|
5
|
+
In **TypeScript SDK**, use the built-in motion helpers from `@scenerok/sdk` (`fadeIn`, `fadeOut`, `slideY`, `slideX`, `scale`, `popIn`) and place text with `area` / `t.grid` (see `sdk-guide.md`).
|
|
6
|
+
|
|
7
|
+
## Motion primitives
|
|
8
|
+
|
|
9
|
+
| Primitive | Suits | Phase | SDK helper |
|
|
10
|
+
| --- | --- | --- | --- |
|
|
11
|
+
| `motion.fadeIn` | subtle entrance | entry | `fadeIn(s(0.4))` |
|
|
12
|
+
| `motion.fadeOut` | ending / cut-to-black | exit | `fadeOut(s(0.4))` |
|
|
13
|
+
| `motion.slideX` | horizontal reveal | entry | `slideX(...)` |
|
|
14
|
+
| `motion.slideY` | vertical rise / fall | entry | `slideY(...)` |
|
|
15
|
+
| `motion.popIn` | impact / hero reveal | entry | `popIn(...)` |
|
|
16
|
+
| `motion.riseIn` | title build-up | entry | — (VidScript) |
|
|
17
|
+
| `motion.swingIn` | playful entrance | entry | — (VidScript) |
|
|
18
|
+
| `motion.glitchIn` | energetic entrance | entry | — (VidScript) |
|
|
19
|
+
| `motion.float` | idle ambient drift | idle | — (VidScript) |
|
|
20
|
+
| `motion.typewriter` | technical typing reveal | entry | — (VidScript) |
|
|
21
|
+
|
|
22
|
+
## Grid areas (both languages)
|
|
23
|
+
|
|
24
|
+
Prefer named regions over hand-picked `x`/`y`:
|
|
25
|
+
|
|
26
|
+
```vidscript
|
|
27
|
+
[0 .. 3] = text "BIG SALE", area: "title", animate: motion.popIn(0.8)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { timeline, text, s, popIn } from '@scenerok/sdk'
|
|
32
|
+
|
|
33
|
+
const t = timeline({ width: 1080, height: 1920, fps: 30 })
|
|
34
|
+
t.grid({ rows: '16% 1fr 18% 10%', areas: ['title', 'stage', 'lower-third', 'caption'] })
|
|
35
|
+
t[0][s(3)] = text('BIG SALE', { size: 72, area: 'title' }).animate(popIn(s(0.8)))
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Built-in areas (no grid declaration): `title`, `stage`, `lower-third`, `caption`.
|
|
39
|
+
|
|
40
|
+
## Examples (VidScript)
|
|
41
|
+
|
|
42
|
+
### Bold hero headline
|
|
43
|
+
|
|
44
|
+
Large sans-serif with shadow and fade entrance/exit.
|
|
45
|
+
|
|
46
|
+
**Center pop** — popIn entrance on a dark canvas.
|
|
47
|
+
|
|
48
|
+
```vidscript
|
|
49
|
+
import motion from "@scenerok/basic-animations"
|
|
50
|
+
|
|
51
|
+
[0s .. 3s] = text "SCENEROK", font: "Inter Black", size: 200, color: "#7CFAC7", align: "center", letter_spacing: 6, animate: [motion.popIn(0.8), motion.fadeOut(0.5)]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Bottom-anchored** — position: "bottom", motion.fadeIn + fadeOut.
|
|
55
|
+
|
|
56
|
+
```vidscript
|
|
57
|
+
import motion from "@scenerok/basic-animations"
|
|
58
|
+
|
|
59
|
+
[0s .. 3s] = text "Make videos from text.", font: "Inter Bold", size: 96, color: "#FFFFFF", position: "bottom", align: "center", shadow_color: "#000000", shadow_blur: 16, x: "50%", y: -180, animate: [motion.fadeIn(0.6), motion.fadeOut(0.6)]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Motion presets
|
|
63
|
+
|
|
64
|
+
Composable motion.fadeIn, popIn, and float descriptors.
|
|
65
|
+
|
|
66
|
+
**Fade in + out** — motion.fadeIn(0.5) + motion.fadeOut(0.5).
|
|
67
|
+
|
|
68
|
+
```vidscript
|
|
69
|
+
import motion from "@scenerok/basic-animations"
|
|
70
|
+
|
|
71
|
+
[0s .. 3s] = text "FADE", font: "Inter Black", size: 220, color: "#FFFFFF", align: "center", animate: [motion.fadeIn(0.5), motion.fadeOut(0.5)]
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Pop + float** — popIn(0.7) then float(2.2, 12).
|
|
75
|
+
|
|
76
|
+
```vidscript
|
|
77
|
+
import motion from "@scenerok/basic-animations"
|
|
78
|
+
|
|
79
|
+
[0s .. 3s] = text "POP", font: "Inter Black", size: 220, color: "#FFD7A0", align: "center", animate: [motion.popIn(0.7), motion.float(2.2, 12)]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Typewriter reveal
|
|
83
|
+
|
|
84
|
+
motion.typewriter() reveals characters one at a time.
|
|
85
|
+
|
|
86
|
+
**Slow sans** — Inter, white, longer typewriter duration.
|
|
87
|
+
|
|
88
|
+
```vidscript
|
|
89
|
+
import motion from "@scenerok/basic-animations"
|
|
90
|
+
|
|
91
|
+
[0s .. 3s] = text "Type. Render. Ship.", font: "Inter", size: 72, color: "#FFFFFF", align: "center", animate: [motion.typewriter(1.8), motion.fadeOut(0.4)]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**Mono terminal** — JetBrains Mono, mint green on black.
|
|
95
|
+
|
|
96
|
+
```vidscript
|
|
97
|
+
import motion from "@scenerok/basic-animations"
|
|
98
|
+
|
|
99
|
+
[0s .. 3s] = text "build videos from text.", font: "JetBrains Mono", size: 58, color: "#7CFAC7", align: "center", animate: [motion.typewriter(1.6), motion.fadeOut(0.3)]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Kinetic titles with no HyperFrames block → `text` + `animate: motion.<primitive>`.
|
|
103
|
+
|
|
104
|
+
Richer pre-built text treatments (staggered word reveals, scramble decode, kinetic
|
|
105
|
+
word-per-beat typography, gradient sweeps, typed quotes, count-up stats, glitch, neon) →
|
|
106
|
+
`animations.text_*` blocks — see the `text-anim` rows in `animations-picker.md`.
|
|
107
|
+
Fully custom text animation (your own HTML/CSS/GSAP) → `animations.custom_html` in
|
|
108
|
+
`animations-catalog.md`.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Transitions Catalog
|
|
2
|
+
|
|
3
|
+
All `tr.<fn>(...)` scene transitions from `@scenerok/transitions`. Total: **29** shaders.
|
|
4
|
+
|
|
5
|
+
## Binding semantics
|
|
6
|
+
|
|
7
|
+
A transition window `[Ts .. Te]` binds the clip active at **Ts** (from) and **Te** (to):
|
|
8
|
+
|
|
9
|
+
```vidscript
|
|
10
|
+
import tr from "@scenerok/transitions"
|
|
11
|
+
|
|
12
|
+
[0s .. 5s] = video clip_a
|
|
13
|
+
[5s .. 5.6s] = tr.dissolve()
|
|
14
|
+
[5.6s .. 10s] = video clip_b
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Common params: `direction`, `ease`, `strength`, `mode`.
|
|
18
|
+
|
|
19
|
+
| fn | shader | defaultDuration |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| `dissolve` | `dissolve` | 0.6s |
|
|
22
|
+
| `push` | `push` | 0.6s |
|
|
23
|
+
| `cover` | `cover` | 0.6s |
|
|
24
|
+
| `radial` | `radial` | 0.6s |
|
|
25
|
+
| `grid` | `grid` | 0.6s |
|
|
26
|
+
| `scale` | `scale` | 0.6s |
|
|
27
|
+
| `cube` | `cube` | 0.6s |
|
|
28
|
+
| `blur` | `blur` | 0.6s |
|
|
29
|
+
| `distortion` | `distortion` | 0.6s |
|
|
30
|
+
| `destruction` | `destruction` | 0.6s |
|
|
31
|
+
| `light` | `light` | 0.6s |
|
|
32
|
+
| `mechanical` | `mechanical` | 0.6s |
|
|
33
|
+
| `wipe` | `wipe` | 0.6s |
|
|
34
|
+
| `cinematic_zoom` | `cinematic_zoom` | 0.6s |
|
|
35
|
+
| `whip_pan` | `whip_pan` | 0.6s |
|
|
36
|
+
| `light_leak` | `light_leak` | 0.6s |
|
|
37
|
+
| `flash` | `flash` | 0.6s |
|
|
38
|
+
| `warp_morph` | `warp_morph` | 0.6s |
|
|
39
|
+
| `domain_warp` | `domain_warp` | 0.6s |
|
|
40
|
+
| `chromatic_split` | `chromatic_split` | 0.6s |
|
|
41
|
+
| `lens` | `lens` | 0.6s |
|
|
42
|
+
| `glitch` | `glitch` | 0.6s |
|
|
43
|
+
| `swirl` | `swirl` | 0.6s |
|
|
44
|
+
| `thermal` | `thermal` | 0.6s |
|
|
45
|
+
| `ripple` | `ripple` | 0.6s |
|
|
46
|
+
| `iris` | `iris` | 0.6s |
|
|
47
|
+
| `burn` | `burn` | 0.6s |
|
|
48
|
+
| `shatter` | `shatter` | 0.6s |
|
|
49
|
+
| `liquid` | `liquid` | 0.6s |
|
|
50
|
+
|
|
51
|
+
## VFX filters (single-clip)
|
|
52
|
+
|
|
53
|
+
See `shaders-filters.md` for `filter "liquid_glass"`, `magnetic`, `portal`, `text_cursor`.
|
|
54
|
+
|
|
55
|
+
Preview: https://scenerok.com/catalog#transitions
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Text-to-Speech
|
|
2
|
+
|
|
3
|
+
`import xai from "@scenerok/xai"` — voiceover via `xai.tts(...)`.
|
|
4
|
+
|
|
5
|
+
Voice IDs: `eve` (upbeat), `ara` (warm), `rex` (business), `sal` (balanced), `leo` (authoritative).
|
|
6
|
+
Catalog samples may use `Marin`, `Hudson` — check `xai.listVoices()` for current IDs.
|
|
7
|
+
|
|
8
|
+
### VidScript
|
|
9
|
+
|
|
10
|
+
```vidscript
|
|
11
|
+
import xai from "@scenerok/xai"
|
|
12
|
+
let vo = xai.tts("Welcome to SceneRok", voice: "eve")
|
|
13
|
+
[0 .. vo.duration] = audio vo
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### TypeScript SDK
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { timeline, text, s } from '@scenerok/sdk'
|
|
20
|
+
import xai from '@scenerok/xai'
|
|
21
|
+
|
|
22
|
+
export default async function main() {
|
|
23
|
+
const t = timeline({ width: 1080, height: 1920, fps: 30 })
|
|
24
|
+
const vo = await xai.tts('Welcome to SceneRok', { voice: 'eve' })
|
|
25
|
+
t.push(vo)
|
|
26
|
+
t[0][vo.duration] = text('Welcome', { size: 64, area: 'title' })
|
|
27
|
+
return t.toIR()
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Never guess a TTS window.** You cannot know the audio length while writing the script. VidScript: assign with `let` and use `vo.duration`, or `[-] = audio xai.tts(...)`. SDK: `await xai.tts(...)` then use `vo.duration` / `t.push(vo)`. Guessed ranges like `[0s .. 3s] = audio xai.tts("long sentence...")` clip or collide when the real audio runs longer.
|
|
32
|
+
|
|
33
|
+
Chain multiple lines with symbolic arithmetic:
|
|
34
|
+
|
|
35
|
+
```vidscript
|
|
36
|
+
let vo1 = xai.tts("First line", voice: "eve")
|
|
37
|
+
let vo2 = xai.tts("Second line", voice: "eve")
|
|
38
|
+
[0 .. vo1.duration] = audio vo1
|
|
39
|
+
[vo1.duration + 0.3 .. vo1.duration + 0.3 + vo2.duration] = audio vo2
|
|
40
|
+
[0 .. vo1.duration] = text "First headline", area: "title" # visual spans the narration
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Examples (VidScript)
|
|
44
|
+
|
|
45
|
+
Catalog samples below use fixed example windows; in real scripts prefer `vo.duration` or `[-]` blocks as shown above.
|
|
46
|
+
|
|
47
|
+
**Leo — launch** — Product launch energy.
|
|
48
|
+
|
|
49
|
+
```vidscript
|
|
50
|
+
import xai from "@scenerok/xai"
|
|
51
|
+
|
|
52
|
+
[0s .. 3s] = text "GO.", font: "Inter Black", size: 240, color: "#FF3B3B", align: "center"
|
|
53
|
+
[0s .. 3s] = audio xai.tts("Ship it. Right now.", voice: "leo")
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Rex — countdown** — Punchy three-beat hook.
|
|
57
|
+
|
|
58
|
+
```vidscript
|
|
59
|
+
import xai from "@scenerok/xai"
|
|
60
|
+
|
|
61
|
+
[0s .. 3s] = text "Drop it.", font: "Inter Black", size: 198, color: "#FFD23F", align: "center"
|
|
62
|
+
[0s .. 3s] = audio xai.tts("Three. Two. One. Drop it.", voice: "rex")
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Ara — short line** — Single sentence under a headline.
|
|
66
|
+
|
|
67
|
+
```vidscript
|
|
68
|
+
import xai from "@scenerok/xai"
|
|
69
|
+
|
|
70
|
+
[0s .. 3s] = text "Listen.", font: "Inter", size: 120, color: "#9FB6FF", align: "center"
|
|
71
|
+
[0s .. 3s] = audio xai.tts("One line of voice-over, baked into the mix.", voice: "ara")
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Eve — narrative** — Long-form explanatory copy.
|
|
75
|
+
|
|
76
|
+
```vidscript
|
|
77
|
+
import xai from "@scenerok/xai"
|
|
78
|
+
|
|
79
|
+
[0s .. 3s] = text "Voice from text.", font: "Inter Bold", size: 64, color: "#FFFFFF", align: "center"
|
|
80
|
+
[0s .. 3s] = audio xai.tts("Vidscript turns plain text into a fully rendered video. No timeline editing required.", voice: "eve")
|
|
81
|
+
```
|
|
82
|
+
|