@scenerok/cli 2.2.0 → 2.3.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 +6 -6
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +31 -25
- package/dist/utils/skillsManifest.d.ts +13 -3
- package/dist/utils/skillsManifest.d.ts.map +1 -1
- package/dist/utils/skillsManifest.js +35 -12
- package/examples/system/rokmilk-chocolate-promo.vid +1 -1
- package/examples/system/voice-visual-promo.vid +1 -1
- package/package.json +3 -3
- package/skills/scenerok/SKILL.md +147 -0
- package/skills/{remote → scenerok/references}/ai-models.md +1 -2
- package/skills/{remote → scenerok/references}/animations-catalog.md +139 -2
- package/skills/{remote → scenerok/references}/animations-picker.md +12 -1
- package/skills/{remote → scenerok/references}/brand-setup.md +3 -1
- package/skills/{remote → scenerok/references}/catalog-index.json +163 -19
- package/skills/scenerok/references/editing-actions.md +518 -0
- package/skills/{remote → scenerok/references}/environments.md +23 -24
- package/skills/{remote → scenerok/references}/intent-router.md +5 -15
- package/skills/{remote → scenerok/references}/media-stdlib.md +2 -3
- package/skills/{remote → scenerok/references}/music.md +2 -21
- package/skills/{remote → scenerok/references}/sdk-guide.md +2 -2
- package/skills/{remote → scenerok/references}/shaders-filters.md +9 -6
- package/skills/{remote → scenerok/references}/text-styles.md +15 -35
- package/skills/{remote → scenerok/references}/transitions-catalog.md +2 -0
- package/skills/{remote → scenerok/references}/tts.md +4 -22
- package/skills/{remote → scenerok/references}/vidscript-guide.md +202 -55
- package/skills/scenerok/references/vidscript-sample.md +44 -0
- package/skills/{remote → scenerok/references}/vidscript-strict.md +41 -26
- package/skills/{remote → scenerok/references}/workflow.md +6 -7
- package/skills/remote/vidscript-sample.md +0 -28
- package/skills/shared/SKILL.md +0 -157
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Pipeline
|
|
4
4
|
|
|
5
5
|
1. **Understand the goal** — promo, testimonial, meme, code demo, etc.
|
|
6
|
-
2. **Choose authoring** —
|
|
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** — time blocks, durations, inputs
|
|
8
8
|
4. **Gather assets** — URLs, local paths, generated clips, selective website screenshots
|
|
9
9
|
5. **Probe asset type and dimensions** — `loadVideo` / media stdlib, or `file` / `ffprobe` / `sips` / `identify`; never guess
|
|
@@ -13,7 +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. **
|
|
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
|
|
17
18
|
|
|
18
19
|
## Website URL asset workflow
|
|
19
20
|
|
|
@@ -50,11 +51,9 @@ scenerok validate scene.ts
|
|
|
50
51
|
scenerok render script.vid --watch
|
|
51
52
|
scenerok render scene.ts --watch
|
|
52
53
|
scenerok status <render-id>
|
|
53
|
-
scenerok skills install <platform> # installs
|
|
54
|
-
scenerok skills
|
|
55
|
-
scenerok skills
|
|
56
|
-
scenerok skills update
|
|
57
|
-
scenerok secrets set KEY=VALUE
|
|
54
|
+
scenerok skills install <platform> # installs the skill (SKILL.md + references)
|
|
55
|
+
scenerok skills check [--json] # is the installed copy current?
|
|
56
|
+
scenerok skills update # refresh it from scenerok.com
|
|
58
57
|
```
|
|
59
58
|
|
|
60
59
|
## Error handling
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# VidScript v2 Sample — Product promo with generated video
|
|
2
|
-
|
|
3
|
-
Copy this shape for promos that use xAI-generated clips. Run `scenerok validate` before `scenerok render`.
|
|
4
|
-
|
|
5
|
-
```vidscript
|
|
6
|
-
import xai from "@scenerok/xai"
|
|
7
|
-
import motion from "@scenerok/basic-animations"
|
|
8
|
-
|
|
9
|
-
input product_name = "{{product_name | RokMilk}}"
|
|
10
|
-
input hook_text = "{{hook_text | Chocolate Milkshake}}"
|
|
11
|
-
input cta_text = "{{cta_text | visit your nearest grocery store}}"
|
|
12
|
-
|
|
13
|
-
[0s .. 2.5s] = text product_name, font: "Bebas Neue", size: 80, color: "#FFD700", x: "50%", y: "20%", align: center, stroke: "#3E1C00", stroke_width: 4, animate: motion.fadeIn(0.6s)
|
|
14
|
-
|
|
15
|
-
[2s .. 4.5s] = text hook_text, font: "Outfit", size: 52, color: "#FFFFFF", x: "50%", y: "45%", align: center, stroke: "#3E1C00", stroke_width: 3, animate: motion.riseIn(0.8s)
|
|
16
|
-
|
|
17
|
-
[-] = video xai.imagine(
|
|
18
|
-
"Premium lifestyle product shot of " + product_name + " chocolate milk in 250ml carton, cinematic lighting, 9:16 vertical, no text, no words, no letters, no captions, no logos, no watermark, no readable UI copy",
|
|
19
|
-
aspect_ratio: "9:16",
|
|
20
|
-
duration: 6
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
[8s .. 11s] = text cta_text, font: "Bebas Neue", size: 48, color: "#FFD700", x: "50%", y: "80%", align: center, stroke: "#3E1C00", stroke_width: 4, animate: motion.fadeIn(0.8s)
|
|
24
|
-
|
|
25
|
-
output to "product-promo.mp4", resolution: "1080x1920", fps: 30
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
For clips you already have (no xAI), start from `examples/system/product-launch.vid` instead.
|
package/skills/shared/SKILL.md
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scenerok
|
|
3
|
-
description: >-
|
|
4
|
-
Compose VidScript v2 or TypeScript @scenerok/sdk and render videos with SceneRok —
|
|
5
|
-
CLI, web editor, ChatGPT, or MCP. Use for promos, reels, motion graphics, code demos,
|
|
6
|
-
social cards, and any request mentioning VidScript, SceneRok, or scenerok.
|
|
7
|
-
triggers:
|
|
8
|
-
- create a video
|
|
9
|
-
- make a reel
|
|
10
|
-
- generate a promo
|
|
11
|
-
- VidScript
|
|
12
|
-
- @scenerok/sdk
|
|
13
|
-
- scenerok render
|
|
14
|
-
- scenerok validate
|
|
15
|
-
- social video
|
|
16
|
-
- product launch video
|
|
17
|
-
- SceneRok editor
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
# SceneRok Agent Skill
|
|
21
|
-
|
|
22
|
-
You help users compose **VidScript v2** or **TypeScript `@scenerok/sdk`** and produce MP4s with SceneRok. Skill content is **live at scenerok.com** — fetch it rather than relying on stale copies.
|
|
23
|
-
|
|
24
|
-
## Dual authoring
|
|
25
|
-
|
|
26
|
-
| Who / scene | Write |
|
|
27
|
-
|-------------|--------|
|
|
28
|
-
| Humans / short promos / templates | **VidScript** (`.vid`) |
|
|
29
|
-
| Agents / complex, data-driven timelines | **TypeScript + `@scenerok/sdk`** (`.ts`) |
|
|
30
|
-
|
|
31
|
-
Both emit the same `IRTimeline`. Load **`sdk-guide.md`** before writing SDK scenes.
|
|
32
|
-
|
|
33
|
-
## 1. Know your environment
|
|
34
|
-
|
|
35
|
-
Load **`environments.md`** and follow its capability matrix.
|
|
36
|
-
|
|
37
|
-
| You are… | Do this |
|
|
38
|
-
| --- | --- |
|
|
39
|
-
| In the **SceneRok web editor** | Use `patch_vidscript`; validate/render in-app — VidScript today (SDK via CLI/MCP) |
|
|
40
|
-
| On the **user's machine** with `scenerok` | `scenerok validate` → `scenerok render` (`.vid` or `.ts`) |
|
|
41
|
-
| A **ChatGPT GPT** with SceneRok Actions | OAuth + `validateVidscript` → `renderVideo`; import uploads first |
|
|
42
|
-
| **Gemini / Grok** without HTTP tools | Compose VidScript or SDK TS; user renders elsewhere |
|
|
43
|
-
| **MCP host** with `scenerok-mcp` | Use MCP compose/render tools (`language: typescript` for SDK) |
|
|
44
|
-
|
|
45
|
-
## 2. Load remote docs (required before composing)
|
|
46
|
-
|
|
47
|
-
1. `https://scenerok.com/.well-known/agent-skills/index.json` — catalog
|
|
48
|
-
2. **Always:** `vidscript-strict.md`, `intent-router.md`, `environments.md`
|
|
49
|
-
3. **Complex / agent TS scenes:** also load `sdk-guide.md`
|
|
50
|
-
4. **Media probe / frame grab / loadVideo:** `media-stdlib.md`
|
|
51
|
-
5. **By intent** (see `intent-router.md`):
|
|
52
|
-
|
|
53
|
-
| Intent | Load |
|
|
54
|
-
| --- | --- |
|
|
55
|
-
| Any VidScript composition | `vidscript-strict.md` |
|
|
56
|
-
| Complex TS / loops / computed timing / grid in TS | `sdk-guide.md` |
|
|
57
|
-
| AI generation (xAI / CF / ElevenLabs) — VidScript or TS | `ai-models.md` / `tts.md` / `music.md` (+ `sdk-guide.md` if TS) |
|
|
58
|
-
| Workflow routing | `intent-router.md` |
|
|
59
|
-
| HyperFrames / code / lower-thirds / social cards | `animations-picker.md` (+ `animations-catalog.md` if you need every param) |
|
|
60
|
-
| Text animations (word reveals, scramble, kinetic type, gradient, quotes, stats, glitch, neon) | `animations-picker.md` text-anim rows (`animations.text_*`) |
|
|
61
|
-
| Custom / bring-your-own animation — write HTML+CSS with GSAP, Three.js, or any seekable JS lib | `animations-catalog.md` → "Custom HTML" (`animations.custom_html`; author contract + template inside) |
|
|
62
|
-
| Scene cuts / whip / dissolve | `transitions-catalog.md` |
|
|
63
|
-
| Kinetic titles (motion primitives on `text`) | `text-styles.md` |
|
|
64
|
-
| AI b-roll / product visuals | `ai-models.md` |
|
|
65
|
-
| Voiceover | `tts.md` |
|
|
66
|
-
| Music bed | `music.md` |
|
|
67
|
-
| VFX on one clip | `shaders-filters.md` |
|
|
68
|
-
| Full promo / URL assets | `workflow.md`, `brand-setup.md` |
|
|
69
|
-
| Grammar deep-dive | `vidscript-guide.md` |
|
|
70
|
-
| ChatGPT setup | `consumer-chat-apps.md`, `chatgpt-gpt-instructions.md` |
|
|
71
|
-
|
|
72
|
-
Base: `https://scenerok.com/.well-known/agent-skills/{filename}`
|
|
73
|
-
|
|
74
|
-
**Offline:** `scenerok skills sync` · **Freshness:** `scenerok skills check` · **Update:** `scenerok skills update`
|
|
75
|
-
|
|
76
|
-
Browse previews: https://scenerok.com/catalog
|
|
77
|
-
|
|
78
|
-
## 3. Compose pipeline (summary)
|
|
79
|
-
|
|
80
|
-
1. Classify intent → `intent-router.md`
|
|
81
|
-
2. Choose authoring: simple → VidScript; complex/agent → `@scenerok/sdk` (`sdk-guide.md`)
|
|
82
|
-
3. Pick animation / transition / text / AI modality from the right catalog — **reuse-first**, do not invent syntax
|
|
83
|
-
4. If branded promo and colors/logo unknown → `brand-setup.md` (one short question max)
|
|
84
|
-
5. Probe asset dimensions before placement (`media-stdlib.md` / `loadVideo` / CLI `ffprobe`)
|
|
85
|
-
6. `scenerok validate script.vid` or `scenerok validate scene.ts` (or editor / ChatGPT equivalent)
|
|
86
|
-
7. Before rendering VidScript with TTS or generated media: `scenerok validate script.vid --generate-assets --report-json` — runs the real compile (billed, assets cached for the render), then read the inspection report: fix `offCanvas`/`wasShrunk` text, element `collisions`, and unintended `audio.overlaps` (voiceover-on-voiceover; music beds are fine). Patch and re-validate until clean. (SDK: plugins generate during `scenerok render`; `--generate-assets` is VidScript-only.)
|
|
87
|
-
8. Render and deliver download URL
|
|
88
|
-
9. After rendering, verify the actual MP4: `scenerok lint-video <render-id> --cost medium --json`. Fix reported issues and repeat: **write → validate → render → lint-video → fix**.
|
|
89
|
-
|
|
90
|
-
**Never guess asset durations.** VidScript: `let vo = xai.tts(...)` + `vo.duration`. SDK: `await loadVideo(path)` / `await xai.tts(...)` and use `.duration` on the returned node.
|
|
91
|
-
|
|
92
|
-
**Never guess text coordinates.** VidScript: `area: "title"` (+ optional `grid ...`). SDK: `t.grid({...})` then `text(..., { area: 'title' })`.
|
|
93
|
-
|
|
94
|
-
## 4. Packages (import before use)
|
|
95
|
-
|
|
96
|
-
| Surface | Packages |
|
|
97
|
-
| --- | --- |
|
|
98
|
-
| VidScript | `@scenerok/xai`, `@scenerok/cloudflare`, `@elevenlabs/music`, `@scenerok/media`, `@scenerok/basic-animations`, `@scenerok/animations`, `@scenerok/transitions` |
|
|
99
|
-
| SDK core | `import { timeline, video, loadVideo, text, audio, s, fadeIn } from '@scenerok/sdk'` |
|
|
100
|
-
| SDK AI | `import xai from '@scenerok/xai'` · `import cf from '@scenerok/cloudflare'` · `import eleven from '@elevenlabs/music'` |
|
|
101
|
-
| SDK transitions | `import tr from '@scenerok/transitions'` — same catalog as VidScript (`tr.dissolve()`, `tr.push({ direction: 'right' })`, …) |
|
|
102
|
-
| SDK stdlib | `import { getVideoLength, grabFrame, beats } from '@scenerok/stdlib'` (also re-exported from `@scenerok/sdk`) |
|
|
103
|
-
|
|
104
|
-
## 5. CLI quick reference (desktop only)
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
scenerok auth login
|
|
108
|
-
scenerok validate script.vid
|
|
109
|
-
scenerok validate scene.ts
|
|
110
|
-
scenerok validate script.vid --render --cost medium
|
|
111
|
-
scenerok render script.vid --watch
|
|
112
|
-
scenerok render scene.ts --watch
|
|
113
|
-
scenerok lint-video 42 --cost low --json
|
|
114
|
-
scenerok skills install cursor --sync
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## 6. Minimal VidScript
|
|
118
|
-
|
|
119
|
-
```vidscript
|
|
120
|
-
import motion from "@scenerok/basic-animations"
|
|
121
|
-
|
|
122
|
-
input hero = "https://cdn.example.com/clip.mp4"
|
|
123
|
-
[-] = hero
|
|
124
|
-
[- 3s] = text "Hello", style: title, color: "#FFF", area: "title", animate: motion.fadeIn(0.8s)
|
|
125
|
-
output to "video.mp4", resolution: "1080x1920", fps: 30
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## 7. Minimal SDK (TypeScript)
|
|
129
|
-
|
|
130
|
-
```ts
|
|
131
|
-
import { timeline, text, s, fadeIn } from '@scenerok/sdk'
|
|
132
|
-
|
|
133
|
-
export default function main() {
|
|
134
|
-
const t = timeline({ width: 1080, height: 1920, fps: 30 })
|
|
135
|
-
t.grid({
|
|
136
|
-
rows: '16% 1fr 18% 10%',
|
|
137
|
-
areas: ['title', 'stage', 'lower-third', 'caption'],
|
|
138
|
-
})
|
|
139
|
-
t[0][s(3)] = text('SceneRok', { size: 72, area: 'title' }).animate(fadeIn(s(0.4)))
|
|
140
|
-
t[3][5] = text('Text to video', { size: 40, area: 'lower-third' })
|
|
141
|
-
return t.toIR()
|
|
142
|
-
}
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
For AI generation, stdlib probing, and dual-index scheduling, load **`sdk-guide.md`**.
|
|
146
|
-
|
|
147
|
-
## Platform engineering
|
|
148
|
-
|
|
149
|
-
For parser/render/API work (not video composition), load **`scenerok-development`** from `.agents/skills/scenerok-development/` in the SceneRok repo.
|
|
150
|
-
|
|
151
|
-
## Reference
|
|
152
|
-
|
|
153
|
-
- Grammar: https://scenerok.com/.well-known/agent-skills/vidscript-guide.md
|
|
154
|
-
- SDK: https://scenerok.com/.well-known/agent-skills/sdk-guide.md
|
|
155
|
-
- Media stdlib: https://scenerok.com/.well-known/agent-skills/media-stdlib.md
|
|
156
|
-
- Full docs: https://scenerok.com/llms-full.txt
|
|
157
|
-
- Manifest: https://scenerok.com/.well-known/agent-skills/manifest.json
|