@scenerok/cli 1.0.7 → 1.0.8
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/commands/render.d.ts.map +1 -1
- package/dist/commands/render.js +48 -4
- package/dist/lib/api.d.ts +11 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +3 -0
- package/dist/lib/project.d.ts +15 -0
- package/dist/lib/project.d.ts.map +1 -1
- package/dist/lib/project.js +62 -3
- package/package.json +1 -1
- package/skills/aider/SKILL.md +20 -2
- package/skills/aider/vidscript-guide.md +43 -38
- package/skills/claude/SKILL.md +18 -0
- package/skills/claude/vidscript-guide.md +43 -38
- package/skills/codex/SKILL.md +20 -2
- package/skills/codex/vidscript-guide.md +43 -38
- package/skills/cursor/SKILL.md +20 -2
- package/skills/cursor/vidscript-guide.md +43 -38
- package/skills/opencode/SKILL.md +20 -2
- package/skills/opencode/vidscript-guide.md +43 -38
- package/skills/skills/aider/SKILL.md +9 -0
- package/skills/skills/aider/vidscript-guide.md +43 -38
- package/skills/skills/claude/SKILL.md +9 -0
- package/skills/skills/claude/vidscript-guide.md +43 -38
- package/skills/skills/codex/SKILL.md +9 -0
- package/skills/skills/codex/vidscript-guide.md +43 -38
- package/skills/skills/cursor/SKILL.md +9 -0
- package/skills/skills/cursor/vidscript-guide.md +43 -38
- package/skills/skills/opencode/SKILL.md +9 -0
- package/skills/skills/opencode/vidscript-guide.md +43 -38
|
@@ -152,7 +152,7 @@ hero.Speed(factor: 1.5)
|
|
|
152
152
|
| `x` | number \| string | Horizontal position. Number = px from left. `"50%"` = percent of width. Overrides `position`. |
|
|
153
153
|
| `y` | number \| string | Vertical position. Number = px from top. `"50%"` = percent of height. Overrides `position`. |
|
|
154
154
|
| `color` | string | Hex color |
|
|
155
|
-
| `size` | number | Font size in pixels |
|
|
155
|
+
| `size` | number \| string | Font size in output canvas pixels. `size: 72` is shorthand for `size: "72px"`. |
|
|
156
156
|
| `font` | string | Font family. System fonts or Google Fonts: `"Inter"`, `"Bebas Neue"`, `"Space Grotesk"`, `"Outfit"`, etc. |
|
|
157
157
|
| `align` | string | `left`, `center`, `right`. Default: `center` |
|
|
158
158
|
| `line_height` | number | Line height multiplier for multi-line text. Default: 1.2 |
|
|
@@ -254,68 +254,73 @@ let bed = eleven.music("Warm premium launch bed", duration: 15, instrumental: tr
|
|
|
254
254
|
[0s .. 15s] = audio eleven.music("..."), volume: 0.5 # trailing params after direct plugin call
|
|
255
255
|
```
|
|
256
256
|
|
|
257
|
-
## Animations, Effects &
|
|
257
|
+
## Animations, Effects & Rendering (v2)
|
|
258
258
|
|
|
259
|
-
VidScript v2 uses a **minimal-grammar, plugin-first** architecture
|
|
259
|
+
VidScript v2 uses a **minimal-grammar, plugin-first** architecture. The compiler lowers VidScript into `IRTimeline` — the single contract shared by browser preview and final render.
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
User-facing extension uses two parameters on any text or video surface:
|
|
262
262
|
|
|
263
|
-
- `animate:`
|
|
264
|
-
- `effects:`
|
|
265
|
-
|
|
266
|
-
These accept either plugin function calls or plain object descriptors.
|
|
263
|
+
- `animate:` — motion over time (plugin calls or object descriptors)
|
|
264
|
+
- `effects:` — post-processing filters with optional animated params
|
|
267
265
|
|
|
268
266
|
### animate: parameter
|
|
269
267
|
|
|
270
|
-
Attach animations to **any** text or video surface.
|
|
271
|
-
|
|
272
268
|
```vidscript
|
|
273
269
|
import motion from "@scenerok/basic-animations"
|
|
274
270
|
|
|
275
|
-
text "Hello", animate: motion.fadeIn(0.8s)
|
|
271
|
+
[0s .. 3s] = text "Hello", x: "50%", y: "50%", animate: motion.fadeIn(0.8s)
|
|
276
272
|
|
|
277
|
-
video hero, animate: [motion.fadeIn(0.5s), motion.slideY(-40, 0, 1.2s)]
|
|
273
|
+
[-] = video hero, animate: [motion.fadeIn(0.5s), motion.slideY(-40, 0, 1.2s)]
|
|
278
274
|
|
|
279
|
-
text "Title", animate: {
|
|
275
|
+
[0s .. 2s] = text "Title", animate: {
|
|
280
276
|
type: "fade",
|
|
281
277
|
from: { opacity: 0 },
|
|
282
278
|
to: { opacity: 1 },
|
|
283
279
|
start: 0,
|
|
284
|
-
end: 1.5
|
|
280
|
+
end: 1.5,
|
|
281
|
+
easing: "easeOutQuad"
|
|
285
282
|
}
|
|
286
283
|
```
|
|
287
284
|
|
|
288
|
-
|
|
285
|
+
Compiler lowers `animate:` into `IRMotionTrack[]` (property-path keyframes). Legacy `IRAnimation` descriptors are adapted at runtime for backward compatibility.
|
|
289
286
|
|
|
290
|
-
|
|
287
|
+
### effects: parameter
|
|
291
288
|
|
|
292
289
|
```vidscript
|
|
293
|
-
|
|
290
|
+
[0s .. 5s] = filter "vignette", intensity: 0.4
|
|
294
291
|
|
|
295
|
-
|
|
296
|
-
name: "glitch",
|
|
297
|
-
strength: animate: { type: "fade", from: { strength: 0 }, to: { strength: 1 } }
|
|
298
|
-
}]
|
|
292
|
+
[0s .. 5s] = filter "glitch", intensity: 0.5, animate: motion.fadeIn(1s)
|
|
299
293
|
```
|
|
300
294
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
| Function | Description |
|
|
304
|
-
|---------------------------|------------------------------|
|
|
305
|
-
| `motion.fadeIn(duration?)` | Opacity 0 → 1 |
|
|
306
|
-
| `motion.fadeOut(duration?)` | Opacity 1 → 0 |
|
|
307
|
-
| `motion.slideX(from, to, dur?)` | Horizontal slide |
|
|
308
|
-
| `motion.slideY(from, to, dur?)` | Vertical slide |
|
|
309
|
-
| `motion.popIn(duration?)` | Scale + fade entrance |
|
|
310
|
-
| `motion.riseIn(duration?, dist?)` | Upward fade entrance |
|
|
311
|
-
| `motion.swingIn(duration?)` | Rotating slide/fade |
|
|
312
|
-
| `motion.glitchIn(duration?)` | Jitter + flash entrance |
|
|
313
|
-
| `motion.float(duration?, amp?)` | Gentle vertical bob |
|
|
314
|
-
| `motion.typewriter(duration?)` | Character reveal |
|
|
315
|
-
|
|
316
|
-
More plugins (advanced text animations, pixel effects, 3D, etc.) are planned.
|
|
295
|
+
Built-in filters: `monochrome`, `sepia`, `blur`, `chromatic`, `glitch`, `vignette`, `contrast`, `saturation`, `brightness`.
|
|
317
296
|
|
|
318
|
-
|
|
297
|
+
### Animation functions (`@scenerok/basic-animations`)
|
|
298
|
+
|
|
299
|
+
| Function | Description |
|
|
300
|
+
|----------|-------------|
|
|
301
|
+
| `motion.fadeIn(duration?)` | Opacity 0 → 1 |
|
|
302
|
+
| `motion.fadeOut(duration?)` | Opacity 1 → 0 |
|
|
303
|
+
| `motion.slideX(from, to, dur?)` | Horizontal slide |
|
|
304
|
+
| `motion.slideY(from, to, dur?)` | Vertical slide |
|
|
305
|
+
| `motion.popIn(duration?)` | Scale + fade entrance |
|
|
306
|
+
| `motion.riseIn(duration?, dist?)` | Upward fade entrance |
|
|
307
|
+
| `motion.swingIn(duration?)` | Rotating slide/fade |
|
|
308
|
+
| `motion.glitchIn(duration?)` | Jitter + flash entrance |
|
|
309
|
+
| `motion.float(duration?, amp?)` | Gentle vertical bob |
|
|
310
|
+
| `motion.typewriter(duration?)` | Character reveal |
|
|
311
|
+
|
|
312
|
+
### Render architecture (contributors)
|
|
313
|
+
|
|
314
|
+
Implemented registry-based rendering. See `plan-v1/35-render-subsystem-architecture.md`.
|
|
315
|
+
|
|
316
|
+
| Registry | Path | Add via |
|
|
317
|
+
|----------|------|---------|
|
|
318
|
+
| Motion | `src/lib/motion/registry.ts` | `registerEasing`, `registerMotionBehavior` |
|
|
319
|
+
| Surface | `src/render/surfaces/registry.ts` | `registerSurfaceRenderer` |
|
|
320
|
+
| Effect | `src/render/effects/registry.ts` | `registerEffect` or `src/shaders/library.ts` |
|
|
321
|
+
| Engine | `src/render/engine/index.ts` | `createRenderEngine` backends |
|
|
322
|
+
|
|
323
|
+
For SceneRok platform engineering, load the **`scenerok-development`** skill (`.agents/skills/scenerok-development/`).
|
|
319
324
|
|
|
320
325
|
## Expressions
|
|
321
326
|
|
package/skills/cursor/SKILL.md
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: scenerok
|
|
3
|
+
description: >-
|
|
4
|
+
Compose VidScript v2 scripts and render videos with the SceneRok CLI
|
|
5
|
+
(scenerok validate, render, status). Use when the user asks to create
|
|
6
|
+
promos, reels, social videos, product launches, or mentions VidScript,
|
|
7
|
+
SceneRok, scenerok CLI, or terminal/agent video generation.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# SceneRok Skill for Cursor
|
|
2
11
|
|
|
3
12
|
## Overview
|
|
4
13
|
|
|
5
|
-
You are a VidScript composer and video generation expert integrated with
|
|
14
|
+
You are a VidScript composer and video generation expert integrated with Cursor. You help users create video content using the SceneRok platform directly from their terminal.
|
|
6
15
|
|
|
7
16
|
## Capabilities
|
|
8
17
|
|
|
@@ -171,6 +180,15 @@ Always ask clarifying questions about:
|
|
|
171
180
|
| `vidscript-sample.md` | Minimal promo with xAI import |
|
|
172
181
|
| `examples/system/*.vid` | Official SceneRok templates (text-only, product launch, xAI reels) |
|
|
173
182
|
|
|
183
|
+
## SceneRok codebase development
|
|
184
|
+
|
|
185
|
+
This skill covers **VidScript composition and rendering videos**. For engineering on the SceneRok platform (parser, render subsystem, API, billing, GPU workers), load the **`scenerok-development`** skill from `.agents/skills/scenerok-development/` in the SceneRok repository.
|
|
186
|
+
|
|
187
|
+
| Doc | Purpose |
|
|
188
|
+
|-----|---------|
|
|
189
|
+
| `plan-v1/35-render-subsystem-architecture.md` | Render registries, IR flow, extension points |
|
|
190
|
+
| `AGENTS.md` | Project context, env vars, dev commands |
|
|
191
|
+
|
|
174
192
|
## Full Reference
|
|
175
193
|
|
|
176
194
|
https://scenerok.com/docs/vidscript
|
|
@@ -152,7 +152,7 @@ hero.Speed(factor: 1.5)
|
|
|
152
152
|
| `x` | number \| string | Horizontal position. Number = px from left. `"50%"` = percent of width. Overrides `position`. |
|
|
153
153
|
| `y` | number \| string | Vertical position. Number = px from top. `"50%"` = percent of height. Overrides `position`. |
|
|
154
154
|
| `color` | string | Hex color |
|
|
155
|
-
| `size` | number | Font size in pixels |
|
|
155
|
+
| `size` | number \| string | Font size in output canvas pixels. `size: 72` is shorthand for `size: "72px"`. |
|
|
156
156
|
| `font` | string | Font family. System fonts or Google Fonts: `"Inter"`, `"Bebas Neue"`, `"Space Grotesk"`, `"Outfit"`, etc. |
|
|
157
157
|
| `align` | string | `left`, `center`, `right`. Default: `center` |
|
|
158
158
|
| `line_height` | number | Line height multiplier for multi-line text. Default: 1.2 |
|
|
@@ -254,68 +254,73 @@ let bed = eleven.music("Warm premium launch bed", duration: 15, instrumental: tr
|
|
|
254
254
|
[0s .. 15s] = audio eleven.music("..."), volume: 0.5 # trailing params after direct plugin call
|
|
255
255
|
```
|
|
256
256
|
|
|
257
|
-
## Animations, Effects &
|
|
257
|
+
## Animations, Effects & Rendering (v2)
|
|
258
258
|
|
|
259
|
-
VidScript v2 uses a **minimal-grammar, plugin-first** architecture
|
|
259
|
+
VidScript v2 uses a **minimal-grammar, plugin-first** architecture. The compiler lowers VidScript into `IRTimeline` — the single contract shared by browser preview and final render.
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
User-facing extension uses two parameters on any text or video surface:
|
|
262
262
|
|
|
263
|
-
- `animate:`
|
|
264
|
-
- `effects:`
|
|
265
|
-
|
|
266
|
-
These accept either plugin function calls or plain object descriptors.
|
|
263
|
+
- `animate:` — motion over time (plugin calls or object descriptors)
|
|
264
|
+
- `effects:` — post-processing filters with optional animated params
|
|
267
265
|
|
|
268
266
|
### animate: parameter
|
|
269
267
|
|
|
270
|
-
Attach animations to **any** text or video surface.
|
|
271
|
-
|
|
272
268
|
```vidscript
|
|
273
269
|
import motion from "@scenerok/basic-animations"
|
|
274
270
|
|
|
275
|
-
text "Hello", animate: motion.fadeIn(0.8s)
|
|
271
|
+
[0s .. 3s] = text "Hello", x: "50%", y: "50%", animate: motion.fadeIn(0.8s)
|
|
276
272
|
|
|
277
|
-
video hero, animate: [motion.fadeIn(0.5s), motion.slideY(-40, 0, 1.2s)]
|
|
273
|
+
[-] = video hero, animate: [motion.fadeIn(0.5s), motion.slideY(-40, 0, 1.2s)]
|
|
278
274
|
|
|
279
|
-
text "Title", animate: {
|
|
275
|
+
[0s .. 2s] = text "Title", animate: {
|
|
280
276
|
type: "fade",
|
|
281
277
|
from: { opacity: 0 },
|
|
282
278
|
to: { opacity: 1 },
|
|
283
279
|
start: 0,
|
|
284
|
-
end: 1.5
|
|
280
|
+
end: 1.5,
|
|
281
|
+
easing: "easeOutQuad"
|
|
285
282
|
}
|
|
286
283
|
```
|
|
287
284
|
|
|
288
|
-
|
|
285
|
+
Compiler lowers `animate:` into `IRMotionTrack[]` (property-path keyframes). Legacy `IRAnimation` descriptors are adapted at runtime for backward compatibility.
|
|
289
286
|
|
|
290
|
-
|
|
287
|
+
### effects: parameter
|
|
291
288
|
|
|
292
289
|
```vidscript
|
|
293
|
-
|
|
290
|
+
[0s .. 5s] = filter "vignette", intensity: 0.4
|
|
294
291
|
|
|
295
|
-
|
|
296
|
-
name: "glitch",
|
|
297
|
-
strength: animate: { type: "fade", from: { strength: 0 }, to: { strength: 1 } }
|
|
298
|
-
}]
|
|
292
|
+
[0s .. 5s] = filter "glitch", intensity: 0.5, animate: motion.fadeIn(1s)
|
|
299
293
|
```
|
|
300
294
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
| Function | Description |
|
|
304
|
-
|---------------------------|------------------------------|
|
|
305
|
-
| `motion.fadeIn(duration?)` | Opacity 0 → 1 |
|
|
306
|
-
| `motion.fadeOut(duration?)` | Opacity 1 → 0 |
|
|
307
|
-
| `motion.slideX(from, to, dur?)` | Horizontal slide |
|
|
308
|
-
| `motion.slideY(from, to, dur?)` | Vertical slide |
|
|
309
|
-
| `motion.popIn(duration?)` | Scale + fade entrance |
|
|
310
|
-
| `motion.riseIn(duration?, dist?)` | Upward fade entrance |
|
|
311
|
-
| `motion.swingIn(duration?)` | Rotating slide/fade |
|
|
312
|
-
| `motion.glitchIn(duration?)` | Jitter + flash entrance |
|
|
313
|
-
| `motion.float(duration?, amp?)` | Gentle vertical bob |
|
|
314
|
-
| `motion.typewriter(duration?)` | Character reveal |
|
|
315
|
-
|
|
316
|
-
More plugins (advanced text animations, pixel effects, 3D, etc.) are planned.
|
|
295
|
+
Built-in filters: `monochrome`, `sepia`, `blur`, `chromatic`, `glitch`, `vignette`, `contrast`, `saturation`, `brightness`.
|
|
317
296
|
|
|
318
|
-
|
|
297
|
+
### Animation functions (`@scenerok/basic-animations`)
|
|
298
|
+
|
|
299
|
+
| Function | Description |
|
|
300
|
+
|----------|-------------|
|
|
301
|
+
| `motion.fadeIn(duration?)` | Opacity 0 → 1 |
|
|
302
|
+
| `motion.fadeOut(duration?)` | Opacity 1 → 0 |
|
|
303
|
+
| `motion.slideX(from, to, dur?)` | Horizontal slide |
|
|
304
|
+
| `motion.slideY(from, to, dur?)` | Vertical slide |
|
|
305
|
+
| `motion.popIn(duration?)` | Scale + fade entrance |
|
|
306
|
+
| `motion.riseIn(duration?, dist?)` | Upward fade entrance |
|
|
307
|
+
| `motion.swingIn(duration?)` | Rotating slide/fade |
|
|
308
|
+
| `motion.glitchIn(duration?)` | Jitter + flash entrance |
|
|
309
|
+
| `motion.float(duration?, amp?)` | Gentle vertical bob |
|
|
310
|
+
| `motion.typewriter(duration?)` | Character reveal |
|
|
311
|
+
|
|
312
|
+
### Render architecture (contributors)
|
|
313
|
+
|
|
314
|
+
Implemented registry-based rendering. See `plan-v1/35-render-subsystem-architecture.md`.
|
|
315
|
+
|
|
316
|
+
| Registry | Path | Add via |
|
|
317
|
+
|----------|------|---------|
|
|
318
|
+
| Motion | `src/lib/motion/registry.ts` | `registerEasing`, `registerMotionBehavior` |
|
|
319
|
+
| Surface | `src/render/surfaces/registry.ts` | `registerSurfaceRenderer` |
|
|
320
|
+
| Effect | `src/render/effects/registry.ts` | `registerEffect` or `src/shaders/library.ts` |
|
|
321
|
+
| Engine | `src/render/engine/index.ts` | `createRenderEngine` backends |
|
|
322
|
+
|
|
323
|
+
For SceneRok platform engineering, load the **`scenerok-development`** skill (`.agents/skills/scenerok-development/`).
|
|
319
324
|
|
|
320
325
|
## Expressions
|
|
321
326
|
|
package/skills/opencode/SKILL.md
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: scenerok
|
|
3
|
+
description: >-
|
|
4
|
+
Compose VidScript v2 scripts and render videos with the SceneRok CLI
|
|
5
|
+
(scenerok validate, render, status). Use when the user asks to create
|
|
6
|
+
promos, reels, social videos, product launches, or mentions VidScript,
|
|
7
|
+
SceneRok, scenerok CLI, or terminal/agent video generation.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# SceneRok Skill for OpenCode
|
|
2
11
|
|
|
3
12
|
## Overview
|
|
4
13
|
|
|
5
|
-
You are a VidScript composer and video generation expert integrated with
|
|
14
|
+
You are a VidScript composer and video generation expert integrated with OpenCode. You help users create video content using the SceneRok platform directly from their terminal.
|
|
6
15
|
|
|
7
16
|
## Capabilities
|
|
8
17
|
|
|
@@ -171,6 +180,15 @@ Always ask clarifying questions about:
|
|
|
171
180
|
| `vidscript-sample.md` | Minimal promo with xAI import |
|
|
172
181
|
| `examples/system/*.vid` | Official SceneRok templates (text-only, product launch, xAI reels) |
|
|
173
182
|
|
|
183
|
+
## SceneRok codebase development
|
|
184
|
+
|
|
185
|
+
This skill covers **VidScript composition and rendering videos**. For engineering on the SceneRok platform (parser, render subsystem, API, billing, GPU workers), load the **`scenerok-development`** skill from `.agents/skills/scenerok-development/` in the SceneRok repository.
|
|
186
|
+
|
|
187
|
+
| Doc | Purpose |
|
|
188
|
+
|-----|---------|
|
|
189
|
+
| `plan-v1/35-render-subsystem-architecture.md` | Render registries, IR flow, extension points |
|
|
190
|
+
| `AGENTS.md` | Project context, env vars, dev commands |
|
|
191
|
+
|
|
174
192
|
## Full Reference
|
|
175
193
|
|
|
176
194
|
https://scenerok.com/docs/vidscript
|
|
@@ -152,7 +152,7 @@ hero.Speed(factor: 1.5)
|
|
|
152
152
|
| `x` | number \| string | Horizontal position. Number = px from left. `"50%"` = percent of width. Overrides `position`. |
|
|
153
153
|
| `y` | number \| string | Vertical position. Number = px from top. `"50%"` = percent of height. Overrides `position`. |
|
|
154
154
|
| `color` | string | Hex color |
|
|
155
|
-
| `size` | number | Font size in pixels |
|
|
155
|
+
| `size` | number \| string | Font size in output canvas pixels. `size: 72` is shorthand for `size: "72px"`. |
|
|
156
156
|
| `font` | string | Font family. System fonts or Google Fonts: `"Inter"`, `"Bebas Neue"`, `"Space Grotesk"`, `"Outfit"`, etc. |
|
|
157
157
|
| `align` | string | `left`, `center`, `right`. Default: `center` |
|
|
158
158
|
| `line_height` | number | Line height multiplier for multi-line text. Default: 1.2 |
|
|
@@ -254,68 +254,73 @@ let bed = eleven.music("Warm premium launch bed", duration: 15, instrumental: tr
|
|
|
254
254
|
[0s .. 15s] = audio eleven.music("..."), volume: 0.5 # trailing params after direct plugin call
|
|
255
255
|
```
|
|
256
256
|
|
|
257
|
-
## Animations, Effects &
|
|
257
|
+
## Animations, Effects & Rendering (v2)
|
|
258
258
|
|
|
259
|
-
VidScript v2 uses a **minimal-grammar, plugin-first** architecture
|
|
259
|
+
VidScript v2 uses a **minimal-grammar, plugin-first** architecture. The compiler lowers VidScript into `IRTimeline` — the single contract shared by browser preview and final render.
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
User-facing extension uses two parameters on any text or video surface:
|
|
262
262
|
|
|
263
|
-
- `animate:`
|
|
264
|
-
- `effects:`
|
|
265
|
-
|
|
266
|
-
These accept either plugin function calls or plain object descriptors.
|
|
263
|
+
- `animate:` — motion over time (plugin calls or object descriptors)
|
|
264
|
+
- `effects:` — post-processing filters with optional animated params
|
|
267
265
|
|
|
268
266
|
### animate: parameter
|
|
269
267
|
|
|
270
|
-
Attach animations to **any** text or video surface.
|
|
271
|
-
|
|
272
268
|
```vidscript
|
|
273
269
|
import motion from "@scenerok/basic-animations"
|
|
274
270
|
|
|
275
|
-
text "Hello", animate: motion.fadeIn(0.8s)
|
|
271
|
+
[0s .. 3s] = text "Hello", x: "50%", y: "50%", animate: motion.fadeIn(0.8s)
|
|
276
272
|
|
|
277
|
-
video hero, animate: [motion.fadeIn(0.5s), motion.slideY(-40, 0, 1.2s)]
|
|
273
|
+
[-] = video hero, animate: [motion.fadeIn(0.5s), motion.slideY(-40, 0, 1.2s)]
|
|
278
274
|
|
|
279
|
-
text "Title", animate: {
|
|
275
|
+
[0s .. 2s] = text "Title", animate: {
|
|
280
276
|
type: "fade",
|
|
281
277
|
from: { opacity: 0 },
|
|
282
278
|
to: { opacity: 1 },
|
|
283
279
|
start: 0,
|
|
284
|
-
end: 1.5
|
|
280
|
+
end: 1.5,
|
|
281
|
+
easing: "easeOutQuad"
|
|
285
282
|
}
|
|
286
283
|
```
|
|
287
284
|
|
|
288
|
-
|
|
285
|
+
Compiler lowers `animate:` into `IRMotionTrack[]` (property-path keyframes). Legacy `IRAnimation` descriptors are adapted at runtime for backward compatibility.
|
|
289
286
|
|
|
290
|
-
|
|
287
|
+
### effects: parameter
|
|
291
288
|
|
|
292
289
|
```vidscript
|
|
293
|
-
|
|
290
|
+
[0s .. 5s] = filter "vignette", intensity: 0.4
|
|
294
291
|
|
|
295
|
-
|
|
296
|
-
name: "glitch",
|
|
297
|
-
strength: animate: { type: "fade", from: { strength: 0 }, to: { strength: 1 } }
|
|
298
|
-
}]
|
|
292
|
+
[0s .. 5s] = filter "glitch", intensity: 0.5, animate: motion.fadeIn(1s)
|
|
299
293
|
```
|
|
300
294
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
| Function | Description |
|
|
304
|
-
|---------------------------|------------------------------|
|
|
305
|
-
| `motion.fadeIn(duration?)` | Opacity 0 → 1 |
|
|
306
|
-
| `motion.fadeOut(duration?)` | Opacity 1 → 0 |
|
|
307
|
-
| `motion.slideX(from, to, dur?)` | Horizontal slide |
|
|
308
|
-
| `motion.slideY(from, to, dur?)` | Vertical slide |
|
|
309
|
-
| `motion.popIn(duration?)` | Scale + fade entrance |
|
|
310
|
-
| `motion.riseIn(duration?, dist?)` | Upward fade entrance |
|
|
311
|
-
| `motion.swingIn(duration?)` | Rotating slide/fade |
|
|
312
|
-
| `motion.glitchIn(duration?)` | Jitter + flash entrance |
|
|
313
|
-
| `motion.float(duration?, amp?)` | Gentle vertical bob |
|
|
314
|
-
| `motion.typewriter(duration?)` | Character reveal |
|
|
315
|
-
|
|
316
|
-
More plugins (advanced text animations, pixel effects, 3D, etc.) are planned.
|
|
295
|
+
Built-in filters: `monochrome`, `sepia`, `blur`, `chromatic`, `glitch`, `vignette`, `contrast`, `saturation`, `brightness`.
|
|
317
296
|
|
|
318
|
-
|
|
297
|
+
### Animation functions (`@scenerok/basic-animations`)
|
|
298
|
+
|
|
299
|
+
| Function | Description |
|
|
300
|
+
|----------|-------------|
|
|
301
|
+
| `motion.fadeIn(duration?)` | Opacity 0 → 1 |
|
|
302
|
+
| `motion.fadeOut(duration?)` | Opacity 1 → 0 |
|
|
303
|
+
| `motion.slideX(from, to, dur?)` | Horizontal slide |
|
|
304
|
+
| `motion.slideY(from, to, dur?)` | Vertical slide |
|
|
305
|
+
| `motion.popIn(duration?)` | Scale + fade entrance |
|
|
306
|
+
| `motion.riseIn(duration?, dist?)` | Upward fade entrance |
|
|
307
|
+
| `motion.swingIn(duration?)` | Rotating slide/fade |
|
|
308
|
+
| `motion.glitchIn(duration?)` | Jitter + flash entrance |
|
|
309
|
+
| `motion.float(duration?, amp?)` | Gentle vertical bob |
|
|
310
|
+
| `motion.typewriter(duration?)` | Character reveal |
|
|
311
|
+
|
|
312
|
+
### Render architecture (contributors)
|
|
313
|
+
|
|
314
|
+
Implemented registry-based rendering. See `plan-v1/35-render-subsystem-architecture.md`.
|
|
315
|
+
|
|
316
|
+
| Registry | Path | Add via |
|
|
317
|
+
|----------|------|---------|
|
|
318
|
+
| Motion | `src/lib/motion/registry.ts` | `registerEasing`, `registerMotionBehavior` |
|
|
319
|
+
| Surface | `src/render/surfaces/registry.ts` | `registerSurfaceRenderer` |
|
|
320
|
+
| Effect | `src/render/effects/registry.ts` | `registerEffect` or `src/shaders/library.ts` |
|
|
321
|
+
| Engine | `src/render/engine/index.ts` | `createRenderEngine` backends |
|
|
322
|
+
|
|
323
|
+
For SceneRok platform engineering, load the **`scenerok-development`** skill (`.agents/skills/scenerok-development/`).
|
|
319
324
|
|
|
320
325
|
## Expressions
|
|
321
326
|
|
|
@@ -180,6 +180,15 @@ Always ask clarifying questions about:
|
|
|
180
180
|
| `vidscript-sample.md` | Minimal promo with xAI import |
|
|
181
181
|
| `examples/system/*.vid` | Official SceneRok templates (text-only, product launch, xAI reels) |
|
|
182
182
|
|
|
183
|
+
## SceneRok codebase development
|
|
184
|
+
|
|
185
|
+
This skill covers **VidScript composition and rendering videos**. For engineering on the SceneRok platform (parser, render subsystem, API, billing, GPU workers), load the **`scenerok-development`** skill from `.agents/skills/scenerok-development/` in the SceneRok repository.
|
|
186
|
+
|
|
187
|
+
| Doc | Purpose |
|
|
188
|
+
|-----|---------|
|
|
189
|
+
| `plan-v1/35-render-subsystem-architecture.md` | Render registries, IR flow, extension points |
|
|
190
|
+
| `AGENTS.md` | Project context, env vars, dev commands |
|
|
191
|
+
|
|
183
192
|
## Full Reference
|
|
184
193
|
|
|
185
194
|
https://scenerok.com/docs/vidscript
|
|
@@ -152,7 +152,7 @@ hero.Speed(factor: 1.5)
|
|
|
152
152
|
| `x` | number \| string | Horizontal position. Number = px from left. `"50%"` = percent of width. Overrides `position`. |
|
|
153
153
|
| `y` | number \| string | Vertical position. Number = px from top. `"50%"` = percent of height. Overrides `position`. |
|
|
154
154
|
| `color` | string | Hex color |
|
|
155
|
-
| `size` | number | Font size in pixels |
|
|
155
|
+
| `size` | number \| string | Font size in output canvas pixels. `size: 72` is shorthand for `size: "72px"`. |
|
|
156
156
|
| `font` | string | Font family. System fonts or Google Fonts: `"Inter"`, `"Bebas Neue"`, `"Space Grotesk"`, `"Outfit"`, etc. |
|
|
157
157
|
| `align` | string | `left`, `center`, `right`. Default: `center` |
|
|
158
158
|
| `line_height` | number | Line height multiplier for multi-line text. Default: 1.2 |
|
|
@@ -254,68 +254,73 @@ let bed = eleven.music("Warm premium launch bed", duration: 15, instrumental: tr
|
|
|
254
254
|
[0s .. 15s] = audio eleven.music("..."), volume: 0.5 # trailing params after direct plugin call
|
|
255
255
|
```
|
|
256
256
|
|
|
257
|
-
## Animations, Effects &
|
|
257
|
+
## Animations, Effects & Rendering (v2)
|
|
258
258
|
|
|
259
|
-
VidScript v2 uses a **minimal-grammar, plugin-first** architecture
|
|
259
|
+
VidScript v2 uses a **minimal-grammar, plugin-first** architecture. The compiler lowers VidScript into `IRTimeline` — the single contract shared by browser preview and final render.
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
User-facing extension uses two parameters on any text or video surface:
|
|
262
262
|
|
|
263
|
-
- `animate:`
|
|
264
|
-
- `effects:`
|
|
265
|
-
|
|
266
|
-
These accept either plugin function calls or plain object descriptors.
|
|
263
|
+
- `animate:` — motion over time (plugin calls or object descriptors)
|
|
264
|
+
- `effects:` — post-processing filters with optional animated params
|
|
267
265
|
|
|
268
266
|
### animate: parameter
|
|
269
267
|
|
|
270
|
-
Attach animations to **any** text or video surface.
|
|
271
|
-
|
|
272
268
|
```vidscript
|
|
273
269
|
import motion from "@scenerok/basic-animations"
|
|
274
270
|
|
|
275
|
-
text "Hello", animate: motion.fadeIn(0.8s)
|
|
271
|
+
[0s .. 3s] = text "Hello", x: "50%", y: "50%", animate: motion.fadeIn(0.8s)
|
|
276
272
|
|
|
277
|
-
video hero, animate: [motion.fadeIn(0.5s), motion.slideY(-40, 0, 1.2s)]
|
|
273
|
+
[-] = video hero, animate: [motion.fadeIn(0.5s), motion.slideY(-40, 0, 1.2s)]
|
|
278
274
|
|
|
279
|
-
text "Title", animate: {
|
|
275
|
+
[0s .. 2s] = text "Title", animate: {
|
|
280
276
|
type: "fade",
|
|
281
277
|
from: { opacity: 0 },
|
|
282
278
|
to: { opacity: 1 },
|
|
283
279
|
start: 0,
|
|
284
|
-
end: 1.5
|
|
280
|
+
end: 1.5,
|
|
281
|
+
easing: "easeOutQuad"
|
|
285
282
|
}
|
|
286
283
|
```
|
|
287
284
|
|
|
288
|
-
|
|
285
|
+
Compiler lowers `animate:` into `IRMotionTrack[]` (property-path keyframes). Legacy `IRAnimation` descriptors are adapted at runtime for backward compatibility.
|
|
289
286
|
|
|
290
|
-
|
|
287
|
+
### effects: parameter
|
|
291
288
|
|
|
292
289
|
```vidscript
|
|
293
|
-
|
|
290
|
+
[0s .. 5s] = filter "vignette", intensity: 0.4
|
|
294
291
|
|
|
295
|
-
|
|
296
|
-
name: "glitch",
|
|
297
|
-
strength: animate: { type: "fade", from: { strength: 0 }, to: { strength: 1 } }
|
|
298
|
-
}]
|
|
292
|
+
[0s .. 5s] = filter "glitch", intensity: 0.5, animate: motion.fadeIn(1s)
|
|
299
293
|
```
|
|
300
294
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
| Function | Description |
|
|
304
|
-
|---------------------------|------------------------------|
|
|
305
|
-
| `motion.fadeIn(duration?)` | Opacity 0 → 1 |
|
|
306
|
-
| `motion.fadeOut(duration?)` | Opacity 1 → 0 |
|
|
307
|
-
| `motion.slideX(from, to, dur?)` | Horizontal slide |
|
|
308
|
-
| `motion.slideY(from, to, dur?)` | Vertical slide |
|
|
309
|
-
| `motion.popIn(duration?)` | Scale + fade entrance |
|
|
310
|
-
| `motion.riseIn(duration?, dist?)` | Upward fade entrance |
|
|
311
|
-
| `motion.swingIn(duration?)` | Rotating slide/fade |
|
|
312
|
-
| `motion.glitchIn(duration?)` | Jitter + flash entrance |
|
|
313
|
-
| `motion.float(duration?, amp?)` | Gentle vertical bob |
|
|
314
|
-
| `motion.typewriter(duration?)` | Character reveal |
|
|
315
|
-
|
|
316
|
-
More plugins (advanced text animations, pixel effects, 3D, etc.) are planned.
|
|
295
|
+
Built-in filters: `monochrome`, `sepia`, `blur`, `chromatic`, `glitch`, `vignette`, `contrast`, `saturation`, `brightness`.
|
|
317
296
|
|
|
318
|
-
|
|
297
|
+
### Animation functions (`@scenerok/basic-animations`)
|
|
298
|
+
|
|
299
|
+
| Function | Description |
|
|
300
|
+
|----------|-------------|
|
|
301
|
+
| `motion.fadeIn(duration?)` | Opacity 0 → 1 |
|
|
302
|
+
| `motion.fadeOut(duration?)` | Opacity 1 → 0 |
|
|
303
|
+
| `motion.slideX(from, to, dur?)` | Horizontal slide |
|
|
304
|
+
| `motion.slideY(from, to, dur?)` | Vertical slide |
|
|
305
|
+
| `motion.popIn(duration?)` | Scale + fade entrance |
|
|
306
|
+
| `motion.riseIn(duration?, dist?)` | Upward fade entrance |
|
|
307
|
+
| `motion.swingIn(duration?)` | Rotating slide/fade |
|
|
308
|
+
| `motion.glitchIn(duration?)` | Jitter + flash entrance |
|
|
309
|
+
| `motion.float(duration?, amp?)` | Gentle vertical bob |
|
|
310
|
+
| `motion.typewriter(duration?)` | Character reveal |
|
|
311
|
+
|
|
312
|
+
### Render architecture (contributors)
|
|
313
|
+
|
|
314
|
+
Implemented registry-based rendering. See `plan-v1/35-render-subsystem-architecture.md`.
|
|
315
|
+
|
|
316
|
+
| Registry | Path | Add via |
|
|
317
|
+
|----------|------|---------|
|
|
318
|
+
| Motion | `src/lib/motion/registry.ts` | `registerEasing`, `registerMotionBehavior` |
|
|
319
|
+
| Surface | `src/render/surfaces/registry.ts` | `registerSurfaceRenderer` |
|
|
320
|
+
| Effect | `src/render/effects/registry.ts` | `registerEffect` or `src/shaders/library.ts` |
|
|
321
|
+
| Engine | `src/render/engine/index.ts` | `createRenderEngine` backends |
|
|
322
|
+
|
|
323
|
+
For SceneRok platform engineering, load the **`scenerok-development`** skill (`.agents/skills/scenerok-development/`).
|
|
319
324
|
|
|
320
325
|
## Expressions
|
|
321
326
|
|
|
@@ -180,6 +180,15 @@ Always ask clarifying questions about:
|
|
|
180
180
|
| `vidscript-sample.md` | Minimal promo with xAI import |
|
|
181
181
|
| `examples/system/*.vid` | Official SceneRok templates (text-only, product launch, xAI reels) |
|
|
182
182
|
|
|
183
|
+
## SceneRok codebase development
|
|
184
|
+
|
|
185
|
+
This skill covers **VidScript composition and rendering videos**. For engineering on the SceneRok platform (parser, render subsystem, API, billing, GPU workers), load the **`scenerok-development`** skill from `.agents/skills/scenerok-development/` in the SceneRok repository.
|
|
186
|
+
|
|
187
|
+
| Doc | Purpose |
|
|
188
|
+
|-----|---------|
|
|
189
|
+
| `plan-v1/35-render-subsystem-architecture.md` | Render registries, IR flow, extension points |
|
|
190
|
+
| `AGENTS.md` | Project context, env vars, dev commands |
|
|
191
|
+
|
|
183
192
|
## Full Reference
|
|
184
193
|
|
|
185
194
|
https://scenerok.com/docs/vidscript
|