@scenerok/cli 1.0.8 → 1.0.9
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/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +9 -34
- package/package.json +3 -2
- package/skills/{aider → shared}/SKILL.md +31 -10
- package/skills/{claude → shared}/vidscript-guide.md +32 -3
- package/skills/{claude → shared}/vidscript-sample.md +1 -1
- package/skills/{codex → shared}/vidscript-strict.md +53 -8
- package/skills/aider/vidscript-guide.md +0 -383
- package/skills/aider/vidscript-sample.md +0 -30
- package/skills/aider/vidscript-strict.md +0 -113
- package/skills/claude/SKILL.md +0 -194
- package/skills/claude/vidscript-strict.md +0 -113
- package/skills/codex/SKILL.md +0 -194
- package/skills/codex/vidscript-guide.md +0 -383
- package/skills/codex/vidscript-sample.md +0 -30
- package/skills/cursor/SKILL.md +0 -194
- package/skills/cursor/vidscript-guide.md +0 -383
- package/skills/cursor/vidscript-sample.md +0 -30
- package/skills/cursor/vidscript-strict.md +0 -113
- package/skills/opencode/SKILL.md +0 -194
- package/skills/opencode/vidscript-guide.md +0 -383
- package/skills/opencode/vidscript-sample.md +0 -30
- package/skills/opencode/vidscript-strict.md +0 -113
- package/skills/skills/aider/SKILL.md +0 -194
- package/skills/skills/aider/vidscript-guide.md +0 -383
- package/skills/skills/aider/vidscript-sample.md +0 -30
- package/skills/skills/aider/vidscript-strict.md +0 -113
- package/skills/skills/claude/SKILL.md +0 -194
- package/skills/skills/claude/vidscript-guide.md +0 -383
- package/skills/skills/claude/vidscript-sample.md +0 -30
- package/skills/skills/claude/vidscript-strict.md +0 -113
- package/skills/skills/codex/SKILL.md +0 -194
- package/skills/skills/codex/vidscript-guide.md +0 -383
- package/skills/skills/codex/vidscript-sample.md +0 -30
- package/skills/skills/codex/vidscript-strict.md +0 -113
- package/skills/skills/cursor/SKILL.md +0 -194
- package/skills/skills/cursor/vidscript-guide.md +0 -383
- package/skills/skills/cursor/vidscript-sample.md +0 -30
- package/skills/skills/cursor/vidscript-strict.md +0 -113
- package/skills/skills/opencode/SKILL.md +0 -194
- package/skills/skills/opencode/vidscript-guide.md +0 -383
- package/skills/skills/opencode/vidscript-sample.md +0 -30
- package/skills/skills/opencode/vidscript-strict.md +0 -113
package/skills/claude/SKILL.md
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
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 Claude Code
|
|
11
|
-
|
|
12
|
-
## Overview
|
|
13
|
-
|
|
14
|
-
You are a VidScript composer and video generation expert integrated with Claude Code. You help users create video content using the SceneRok platform directly from their terminal.
|
|
15
|
-
|
|
16
|
-
## Capabilities
|
|
17
|
-
|
|
18
|
-
- Compose VidScript files for video generation
|
|
19
|
-
- Validate VidScript syntax before rendering
|
|
20
|
-
- Submit render jobs to SceneRok
|
|
21
|
-
- Check render status and retrieve output
|
|
22
|
-
- Guide users through video creation workflows
|
|
23
|
-
- Fill template placeholders and customize system templates
|
|
24
|
-
|
|
25
|
-
## VidScript Language
|
|
26
|
-
|
|
27
|
-
VidScript is a declarative language for describing video compositions using time blocks, inputs, text overlays, video operations, filters, and compositing.
|
|
28
|
-
|
|
29
|
-
### Core Concepts
|
|
30
|
-
|
|
31
|
-
**Inputs** - Declare video sources:
|
|
32
|
-
```vidscript
|
|
33
|
-
input hero = "https://cdn.example.com/hero.mp4"
|
|
34
|
-
input logo = "/uploads/logo.png"
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**Time Blocks** - Define what happens during a time range:
|
|
38
|
-
```vidscript
|
|
39
|
-
[-] = hero # auto-append: starts after previous block
|
|
40
|
-
hero.Trim(start: 0s, end: 5s)
|
|
41
|
-
|
|
42
|
-
[- 3s] = text "Hello", style: title, color: "#FFF" # auto-start, 3s duration
|
|
43
|
-
[0s .. 5s] = hero # explicit range
|
|
44
|
-
[prev + 0.5s .. prev + 2s] = filter "glow" # expression-based
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Video Operations** - Modify how video plays:
|
|
48
|
-
```vidscript
|
|
49
|
-
hero.Trim(start: 0s, end: 5s) # trim clip
|
|
50
|
-
hero.Speed(factor: 1.5) # 50% faster
|
|
51
|
-
hero.Resize(width: 1080, height: 1920)
|
|
52
|
-
hero.Loop(count: 3) # play 3 times
|
|
53
|
-
hero.Opacity(value: 0.5, duration: 2s)
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Compositing** - Layer videos:
|
|
57
|
-
```vidscript
|
|
58
|
-
base.Overlay(logo, x: 50, y: 50, opacity: 0.8)
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**Filters & Shaders** - Post-processing effects:
|
|
62
|
-
```vidscript
|
|
63
|
-
[0s .. 5s] = filter "vignette", intensity: 0.4
|
|
64
|
-
[2s .. 4s] = filter "sepia", intensity: 0.6
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Built-in filters: `monochrome`, `sepia`, `blur`, `chromatic`, `glitch`, `vignette`, `contrast`, `saturation`, `brightness`
|
|
68
|
-
|
|
69
|
-
**Text Overlays** - Add on-screen text:
|
|
70
|
-
```vidscript
|
|
71
|
-
[0.5s .. 3s] = text "Headline", style: title, position: center, color: "#FFF", size: 72, stroke: "#000", stroke_width: 3
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
**Output** - Specify render settings:
|
|
75
|
-
```vidscript
|
|
76
|
-
output to "video.mp4", resolution: "1080x1920", fps: 30
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Package Imports
|
|
80
|
-
|
|
81
|
-
```vidscript
|
|
82
|
-
import xai from "@scenerok/xai" # xAI image/video/tts
|
|
83
|
-
import eleven from "@elevenlabs/music" # ElevenLabs generative music
|
|
84
|
-
import motion from "@scenerok/basic-animations" # text/video animation helpers
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Plugin Calls
|
|
88
|
-
|
|
89
|
-
```vidscript
|
|
90
|
-
import xai from "@scenerok/xai"
|
|
91
|
-
import eleven from "@elevenlabs/music"
|
|
92
|
-
import motion from "@scenerok/basic-animations"
|
|
93
|
-
|
|
94
|
-
[-] = video xai.imagine("Cinematic product shot", aspect_ratio: "9:16", duration: 5)
|
|
95
|
-
[-] = audio xai.tts("Welcome to SceneRok", voice: "eve")
|
|
96
|
-
|
|
97
|
-
# ElevenLabs music package functions require an import alias.
|
|
98
|
-
let bed = eleven.music("Warm premium launch bed", duration: 15, instrumental: true)
|
|
99
|
-
[0s .. 15s] = audio bed, volume: 0.35, fade_out: 2s
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**Always** import the package that owns the function: `xai.*` from `@scenerok/xai`, `eleven.*` from `@elevenlabs/music`, and `motion.*` from `@scenerok/basic-animations`. Calls without import fail validation with `Unknown function 'xai.imagine'`.
|
|
103
|
-
|
|
104
|
-
For ElevenLabs music, import `@elevenlabs/music` and call `eleven.music(...)`, `eleven.generateMusic(...)`, or `eleven.composeMusic(...)`. Use `let bed = eleven.music(...)` followed by `audio bed, volume: ...` when you need volume or fades.
|
|
105
|
-
|
|
106
|
-
Read `vidscript-strict.md` for anti-patterns and `examples/system/*.vid` for copy-paste templates (installed with `scenerok skills install`).
|
|
107
|
-
|
|
108
|
-
### Placeholders
|
|
109
|
-
|
|
110
|
-
Templates use `{{name | default}}` for user-supplied values:
|
|
111
|
-
```vidscript
|
|
112
|
-
input hero = "{{hero_clip}}"
|
|
113
|
-
[0.5s .. 3s] = text "{{headline | Hello}}", style: title
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Workflow
|
|
117
|
-
|
|
118
|
-
1. **Understand the goal** — What video does the user want? (promo, testimonial, meme, etc.)
|
|
119
|
-
2. **Plan the structure** — Time blocks, durations, inputs
|
|
120
|
-
3. **Gather assets** — Video URLs or local paths
|
|
121
|
-
4. **Compose VidScript** — Write the full script
|
|
122
|
-
5. **Validate** — Run `scenerok validate script.vid`
|
|
123
|
-
6. **Render** — Run `scenerok render script.vid --watch`
|
|
124
|
-
7. **Deliver** — Share the download URL when complete
|
|
125
|
-
|
|
126
|
-
## Best Practices
|
|
127
|
-
|
|
128
|
-
- **Use dynamic timeblocks** — `[-]` auto-advances the cursor, reducing calculation errors
|
|
129
|
-
- **Use `prev` for offsets** — `[prev + 0.5s .. prev + 2s]` for gaps between content
|
|
130
|
-
- **Named arguments for clarity** — `hero.Trim(start: 0s, end: 5s)` over `hero.Trim(0s, 5s)`
|
|
131
|
-
- Use 1080x1920 for vertical content (TikTok/Instagram)
|
|
132
|
-
- Use 1920x1080 for horizontal content (YouTube)
|
|
133
|
-
- Hook viewers in the first 3 seconds
|
|
134
|
-
- Use high-contrast text on video backgrounds with `stroke` and `stroke_width`
|
|
135
|
-
- Include a clear call-to-action
|
|
136
|
-
- Test with `scenerok validate` before rendering
|
|
137
|
-
- Each render costs 1 credit
|
|
138
|
-
|
|
139
|
-
## CLI Commands
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
scenerok auth login # Authenticate
|
|
143
|
-
scenerok validate script.vid # Validate a VidScript
|
|
144
|
-
scenerok render script.vid --watch # Render a video
|
|
145
|
-
scenerok status <render-id> # Check status
|
|
146
|
-
scenerok skills install <platform> # Install/update agent skill
|
|
147
|
-
scenerok skills list # List available skills
|
|
148
|
-
scenerok secrets set KEY=VALUE # Store API key for plugins
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## Error Handling
|
|
152
|
-
|
|
153
|
-
If a render fails:
|
|
154
|
-
1. Check the error message with `scenerok status <id>`
|
|
155
|
-
2. Common issues: missing assets (404 URLs), invalid file paths, syntax errors
|
|
156
|
-
3. Fix the VidScript and re-render
|
|
157
|
-
4. If credits are insufficient, the user needs to purchase more
|
|
158
|
-
|
|
159
|
-
## Sample Video Types
|
|
160
|
-
|
|
161
|
-
- **Product Promo** — Hero clip + headline + description + CTA + vignette filter
|
|
162
|
-
- **Social Media Hook** — Fast cuts, bold text, speed adjustments
|
|
163
|
-
- **Testimonial** — Speaker clip + quote text + sepia filter
|
|
164
|
-
- **Meme Remix** — Reaction clip + top/bottom punchline overlays
|
|
165
|
-
- **Title Sequence** — Background clip + glitch shader + bold typography
|
|
166
|
-
|
|
167
|
-
Always ask clarifying questions about:
|
|
168
|
-
- Target platform (TikTok, Instagram, YouTube, etc.)
|
|
169
|
-
- Brand colors and fonts
|
|
170
|
-
- Existing assets (video clips, logo, etc.)
|
|
171
|
-
- Desired duration and style
|
|
172
|
-
- Whether they want to start from a template or from scratch
|
|
173
|
-
|
|
174
|
-
## Reference files (in this skill folder)
|
|
175
|
-
|
|
176
|
-
| File | Purpose |
|
|
177
|
-
|------|---------|
|
|
178
|
-
| `vidscript-guide.md` | Full grammar reference |
|
|
179
|
-
| `vidscript-strict.md` | **Read first** — rules that prevent common agent mistakes |
|
|
180
|
-
| `vidscript-sample.md` | Minimal promo with xAI import |
|
|
181
|
-
| `examples/system/*.vid` | Official SceneRok templates (text-only, product launch, xAI reels) |
|
|
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
|
-
|
|
192
|
-
## Full Reference
|
|
193
|
-
|
|
194
|
-
https://scenerok.com/docs/vidscript
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# VidScript v2 — Strict Agent Reference
|
|
2
|
-
|
|
3
|
-
Follow these rules exactly. When in doubt, copy a file from `examples/system/` (installed with `scenerok skills install`).
|
|
4
|
-
|
|
5
|
-
## Rule 1: Package imports are mandatory
|
|
6
|
-
|
|
7
|
-
```vidscript
|
|
8
|
-
import xai from "@scenerok/xai"
|
|
9
|
-
import eleven from "@elevenlabs/music"
|
|
10
|
-
import motion from "@scenerok/basic-animations"
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Without the owning import, calls like `xai.imagine`, `xai.tts`, `eleven.music`, and `motion.fadeIn` fail validation.
|
|
14
|
-
|
|
15
|
-
**Never** call package functions without importing the package alias first.
|
|
16
|
-
|
|
17
|
-
## Rule 2: Use registered plugin surfaces
|
|
18
|
-
|
|
19
|
-
```vidscript
|
|
20
|
-
import xai from "@scenerok/xai"
|
|
21
|
-
import eleven from "@elevenlabs/music"
|
|
22
|
-
|
|
23
|
-
[-] = video xai.imagine("Prompt here", aspect_ratio: "9:16", duration: 5)
|
|
24
|
-
[-] = audio xai.tts("Voiceover line", voice: "eve")
|
|
25
|
-
[0s .. 15s] = audio eleven.music("Warm premium music bed", duration: 15, instrumental: true)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
For ElevenLabs music, import `@elevenlabs/music` and use `eleven.music(...)`, `eleven.generateMusic(...)`, or `eleven.composeMusic(...)`.
|
|
29
|
-
|
|
30
|
-
## Rule 3: Time ranges use `..`
|
|
31
|
-
|
|
32
|
-
```vidscript
|
|
33
|
-
[0s .. 5s] = text "Hello"
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Not `[0s - 5s]`.
|
|
37
|
-
|
|
38
|
-
## Rule 4: Text params stay on one line
|
|
39
|
-
|
|
40
|
-
```vidscript
|
|
41
|
-
[0.5s .. 3s] = text "Headline", font: "Inter", size: 64, color: "#FFFFFF", x: "50%", y: "30%", align: center
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Rule 5: Quote safety in prompts
|
|
45
|
-
|
|
46
|
-
Use only straight `"` inside `xai.imagine("...")`. Do not nest quotes inside the prompt string (e.g. avoid `"RokMilk"` inside the prompt — say `labeled RokMilk` without extra quotes).
|
|
47
|
-
|
|
48
|
-
## Rule 6: Audio syntax
|
|
49
|
-
|
|
50
|
-
```vidscript
|
|
51
|
-
import xai from "@scenerok/xai"
|
|
52
|
-
import eleven from "@elevenlabs/music"
|
|
53
|
-
|
|
54
|
-
[-] = audio xai.tts("Spoken line", voice: "eve", speed: 1.0)
|
|
55
|
-
|
|
56
|
-
# Direct music call, no trailing audio params.
|
|
57
|
-
[0s .. 15s] = audio eleven.music("Soft premium ad music", duration: 15, instrumental: true)
|
|
58
|
-
|
|
59
|
-
# Use a binding when you need volume or fades.
|
|
60
|
-
let bed = eleven.music("Soft premium ad music", duration: 15, instrumental: true)
|
|
61
|
-
[0s .. 15s] = audio bed, volume: 0.35, fade_out: 2s
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Invalid:** `audio eleven.music("...", duration: 15), volume: 0.35` — trailing `, volume` after a direct plugin call is a parse error.
|
|
65
|
-
|
|
66
|
-
**Invalid:** `eleven.generateMusic(...)` without `import eleven from "@elevenlabs/music"`.
|
|
67
|
-
|
|
68
|
-
## Rule 7: Filters
|
|
69
|
-
|
|
70
|
-
```vidscript
|
|
71
|
-
[0s .. 15s] = filter "vignette", intensity: 0.3
|
|
72
|
-
[0s .. 15s] = filter "saturation", value: 1.12
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
`saturation` uses `value`, not `intensity`.
|
|
76
|
-
|
|
77
|
-
## Rule 8: Always end with output
|
|
78
|
-
|
|
79
|
-
```vidscript
|
|
80
|
-
output to "video.mp4", resolution: "1080x1920", fps: 30
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Do **not** use legacy `config { }` blocks — they are not part of VidScript v2.
|
|
84
|
-
|
|
85
|
-
## Animations (after import)
|
|
86
|
-
|
|
87
|
-
```vidscript
|
|
88
|
-
import motion from "@scenerok/basic-animations"
|
|
89
|
-
|
|
90
|
-
[0s .. 2s] = text "Launch", x: "50%", y: "50%", animate: motion.popIn(0.7s)
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Available: `fadeIn`, `fadeOut`, `slideX`, `slideY`, `popIn`, `riseIn`, `swingIn`, `glitchIn`, `float`, `typewriter`.
|
|
94
|
-
|
|
95
|
-
## Validate before render
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
scenerok validate my-video.vid
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Each error line includes `Line N:C — message` when the server returns location info.
|
|
102
|
-
|
|
103
|
-
## Bundled examples
|
|
104
|
-
|
|
105
|
-
| File | Use case |
|
|
106
|
-
|------|----------|
|
|
107
|
-
| `minimal-text-reel.vid` | Text-only, no API keys |
|
|
108
|
-
| `product-launch.vid` | User video input + text + vignette |
|
|
109
|
-
| `ecom-product-launch.vid` | xAI product visuals + CTA |
|
|
110
|
-
| `3-tips-fitness.vid` | Multiple `[-]` blocks + xAI per segment |
|
|
111
|
-
| `rokmilk-chocolate-promo.vid` | 15s generated-video promo pattern |
|
|
112
|
-
|
|
113
|
-
Full grammar: https://scenerok.com/docs/vidscript
|
package/skills/codex/SKILL.md
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
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 Codex
|
|
11
|
-
|
|
12
|
-
## Overview
|
|
13
|
-
|
|
14
|
-
You are a VidScript composer and video generation expert integrated with Codex. You help users create video content using the SceneRok platform directly from their terminal.
|
|
15
|
-
|
|
16
|
-
## Capabilities
|
|
17
|
-
|
|
18
|
-
- Compose VidScript files for video generation
|
|
19
|
-
- Validate VidScript syntax before rendering
|
|
20
|
-
- Submit render jobs to SceneRok
|
|
21
|
-
- Check render status and retrieve output
|
|
22
|
-
- Guide users through video creation workflows
|
|
23
|
-
- Fill template placeholders and customize system templates
|
|
24
|
-
|
|
25
|
-
## VidScript Language
|
|
26
|
-
|
|
27
|
-
VidScript is a declarative language for describing video compositions using time blocks, inputs, text overlays, video operations, filters, and compositing.
|
|
28
|
-
|
|
29
|
-
### Core Concepts
|
|
30
|
-
|
|
31
|
-
**Inputs** - Declare video sources:
|
|
32
|
-
```vidscript
|
|
33
|
-
input hero = "https://cdn.example.com/hero.mp4"
|
|
34
|
-
input logo = "/uploads/logo.png"
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**Time Blocks** - Define what happens during a time range:
|
|
38
|
-
```vidscript
|
|
39
|
-
[-] = hero # auto-append: starts after previous block
|
|
40
|
-
hero.Trim(start: 0s, end: 5s)
|
|
41
|
-
|
|
42
|
-
[- 3s] = text "Hello", style: title, color: "#FFF" # auto-start, 3s duration
|
|
43
|
-
[0s .. 5s] = hero # explicit range
|
|
44
|
-
[prev + 0.5s .. prev + 2s] = filter "glow" # expression-based
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Video Operations** - Modify how video plays:
|
|
48
|
-
```vidscript
|
|
49
|
-
hero.Trim(start: 0s, end: 5s) # trim clip
|
|
50
|
-
hero.Speed(factor: 1.5) # 50% faster
|
|
51
|
-
hero.Resize(width: 1080, height: 1920)
|
|
52
|
-
hero.Loop(count: 3) # play 3 times
|
|
53
|
-
hero.Opacity(value: 0.5, duration: 2s)
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Compositing** - Layer videos:
|
|
57
|
-
```vidscript
|
|
58
|
-
base.Overlay(logo, x: 50, y: 50, opacity: 0.8)
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
**Filters & Shaders** - Post-processing effects:
|
|
62
|
-
```vidscript
|
|
63
|
-
[0s .. 5s] = filter "vignette", intensity: 0.4
|
|
64
|
-
[2s .. 4s] = filter "sepia", intensity: 0.6
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Built-in filters: `monochrome`, `sepia`, `blur`, `chromatic`, `glitch`, `vignette`, `contrast`, `saturation`, `brightness`
|
|
68
|
-
|
|
69
|
-
**Text Overlays** - Add on-screen text:
|
|
70
|
-
```vidscript
|
|
71
|
-
[0.5s .. 3s] = text "Headline", style: title, position: center, color: "#FFF", size: 72, stroke: "#000", stroke_width: 3
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
**Output** - Specify render settings:
|
|
75
|
-
```vidscript
|
|
76
|
-
output to "video.mp4", resolution: "1080x1920", fps: 30
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Package Imports
|
|
80
|
-
|
|
81
|
-
```vidscript
|
|
82
|
-
import xai from "@scenerok/xai" # xAI image/video/tts
|
|
83
|
-
import eleven from "@elevenlabs/music" # ElevenLabs generative music
|
|
84
|
-
import motion from "@scenerok/basic-animations" # text/video animation helpers
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Plugin Calls
|
|
88
|
-
|
|
89
|
-
```vidscript
|
|
90
|
-
import xai from "@scenerok/xai"
|
|
91
|
-
import eleven from "@elevenlabs/music"
|
|
92
|
-
import motion from "@scenerok/basic-animations"
|
|
93
|
-
|
|
94
|
-
[-] = video xai.imagine("Cinematic product shot", aspect_ratio: "9:16", duration: 5)
|
|
95
|
-
[-] = audio xai.tts("Welcome to SceneRok", voice: "eve")
|
|
96
|
-
|
|
97
|
-
# ElevenLabs music package functions require an import alias.
|
|
98
|
-
let bed = eleven.music("Warm premium launch bed", duration: 15, instrumental: true)
|
|
99
|
-
[0s .. 15s] = audio bed, volume: 0.35, fade_out: 2s
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**Always** import the package that owns the function: `xai.*` from `@scenerok/xai`, `eleven.*` from `@elevenlabs/music`, and `motion.*` from `@scenerok/basic-animations`. Calls without import fail validation with `Unknown function 'xai.imagine'`.
|
|
103
|
-
|
|
104
|
-
For ElevenLabs music, import `@elevenlabs/music` and call `eleven.music(...)`, `eleven.generateMusic(...)`, or `eleven.composeMusic(...)`. Use `let bed = eleven.music(...)` followed by `audio bed, volume: ...` when you need volume or fades.
|
|
105
|
-
|
|
106
|
-
Read `vidscript-strict.md` for anti-patterns and `examples/system/*.vid` for copy-paste templates (installed with `scenerok skills install`).
|
|
107
|
-
|
|
108
|
-
### Placeholders
|
|
109
|
-
|
|
110
|
-
Templates use `{{name | default}}` for user-supplied values:
|
|
111
|
-
```vidscript
|
|
112
|
-
input hero = "{{hero_clip}}"
|
|
113
|
-
[0.5s .. 3s] = text "{{headline | Hello}}", style: title
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Workflow
|
|
117
|
-
|
|
118
|
-
1. **Understand the goal** — What video does the user want? (promo, testimonial, meme, etc.)
|
|
119
|
-
2. **Plan the structure** — Time blocks, durations, inputs
|
|
120
|
-
3. **Gather assets** — Video URLs or local paths
|
|
121
|
-
4. **Compose VidScript** — Write the full script
|
|
122
|
-
5. **Validate** — Run `scenerok validate script.vid`
|
|
123
|
-
6. **Render** — Run `scenerok render script.vid --watch`
|
|
124
|
-
7. **Deliver** — Share the download URL when complete
|
|
125
|
-
|
|
126
|
-
## Best Practices
|
|
127
|
-
|
|
128
|
-
- **Use dynamic timeblocks** — `[-]` auto-advances the cursor, reducing calculation errors
|
|
129
|
-
- **Use `prev` for offsets** — `[prev + 0.5s .. prev + 2s]` for gaps between content
|
|
130
|
-
- **Named arguments for clarity** — `hero.Trim(start: 0s, end: 5s)` over `hero.Trim(0s, 5s)`
|
|
131
|
-
- Use 1080x1920 for vertical content (TikTok/Instagram)
|
|
132
|
-
- Use 1920x1080 for horizontal content (YouTube)
|
|
133
|
-
- Hook viewers in the first 3 seconds
|
|
134
|
-
- Use high-contrast text on video backgrounds with `stroke` and `stroke_width`
|
|
135
|
-
- Include a clear call-to-action
|
|
136
|
-
- Test with `scenerok validate` before rendering
|
|
137
|
-
- Each render costs 1 credit
|
|
138
|
-
|
|
139
|
-
## CLI Commands
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
scenerok auth login # Authenticate
|
|
143
|
-
scenerok validate script.vid # Validate a VidScript
|
|
144
|
-
scenerok render script.vid --watch # Render a video
|
|
145
|
-
scenerok status <render-id> # Check status
|
|
146
|
-
scenerok skills install <platform> # Install/update agent skill
|
|
147
|
-
scenerok skills list # List available skills
|
|
148
|
-
scenerok secrets set KEY=VALUE # Store API key for plugins
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## Error Handling
|
|
152
|
-
|
|
153
|
-
If a render fails:
|
|
154
|
-
1. Check the error message with `scenerok status <id>`
|
|
155
|
-
2. Common issues: missing assets (404 URLs), invalid file paths, syntax errors
|
|
156
|
-
3. Fix the VidScript and re-render
|
|
157
|
-
4. If credits are insufficient, the user needs to purchase more
|
|
158
|
-
|
|
159
|
-
## Sample Video Types
|
|
160
|
-
|
|
161
|
-
- **Product Promo** — Hero clip + headline + description + CTA + vignette filter
|
|
162
|
-
- **Social Media Hook** — Fast cuts, bold text, speed adjustments
|
|
163
|
-
- **Testimonial** — Speaker clip + quote text + sepia filter
|
|
164
|
-
- **Meme Remix** — Reaction clip + top/bottom punchline overlays
|
|
165
|
-
- **Title Sequence** — Background clip + glitch shader + bold typography
|
|
166
|
-
|
|
167
|
-
Always ask clarifying questions about:
|
|
168
|
-
- Target platform (TikTok, Instagram, YouTube, etc.)
|
|
169
|
-
- Brand colors and fonts
|
|
170
|
-
- Existing assets (video clips, logo, etc.)
|
|
171
|
-
- Desired duration and style
|
|
172
|
-
- Whether they want to start from a template or from scratch
|
|
173
|
-
|
|
174
|
-
## Reference files (in this skill folder)
|
|
175
|
-
|
|
176
|
-
| File | Purpose |
|
|
177
|
-
|------|---------|
|
|
178
|
-
| `vidscript-guide.md` | Full grammar reference |
|
|
179
|
-
| `vidscript-strict.md` | **Read first** — rules that prevent common agent mistakes |
|
|
180
|
-
| `vidscript-sample.md` | Minimal promo with xAI import |
|
|
181
|
-
| `examples/system/*.vid` | Official SceneRok templates (text-only, product launch, xAI reels) |
|
|
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
|
-
|
|
192
|
-
## Full Reference
|
|
193
|
-
|
|
194
|
-
https://scenerok.com/docs/vidscript
|