greenlight-motion 0.1.2 → 0.1.4
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 +16 -13
- package/dist/bundle-inputs.json +2 -0
- package/dist/greenlight-motion.js +609 -609
- package/dist/greenlight-motion.mjs +32640 -32248
- package/package.json +1 -1
- package/skill/SKILL.md +10 -10
- package/skill/references/video-projects.md +20 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "greenlight-motion",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "GreenLight Motion Engine: AI agents make motion-design videos (3D, camera, effects, transitions, text animation, particles, motion blur) with the GreenLight Dash Video Editor's own engine, in the user's browser.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"video",
|
package/skill/SKILL.md
CHANGED
|
@@ -18,7 +18,7 @@ You never write UI or animation code. If something is not in the format, it is n
|
|
|
18
18
|
## Setup (once per machine)
|
|
19
19
|
|
|
20
20
|
```
|
|
21
|
-
npx greenlight-motion@0.1.
|
|
21
|
+
npx greenlight-motion@0.1.4 doctor
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
It checks Node 18+, Chrome or Edge, WebGPU and H.264 encoding, and prints a fix for anything missing. Do not install
|
|
@@ -32,7 +32,7 @@ animation presets (the same converter the GreenLight Motion connector uses in Cl
|
|
|
32
32
|
keyframes rarely look as good. The format, the design rules and the catalogues: `skill/references/scene-script.md`.
|
|
33
33
|
|
|
34
34
|
```
|
|
35
|
-
npx greenlight-motion@0.1.
|
|
35
|
+
npx greenlight-motion@0.1.4 script <folder> --from scenes.json # or write <folder>/script.json, then: script <folder>
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Then `check` and `stills` (below), fix the SCRIPT and run `script` again — it rewrites `project.json`. For what a
|
|
@@ -41,14 +41,14 @@ workflow below and stop running `script` (it refuses to overwrite a project edit
|
|
|
41
41
|
|
|
42
42
|
## Workflow
|
|
43
43
|
|
|
44
|
-
1. `npx greenlight-motion@0.1.
|
|
44
|
+
1. `npx greenlight-motion@0.1.4 init <folder>` — starts from a working example (title, subtitle, accent line, four
|
|
45
45
|
options). `--from file.json` starts from a project you have (for example one exported from GreenLight Dash).
|
|
46
46
|
2. Edit `<folder>/project.json` — for changes to an EXISTING project prefer `apply` (below): it checks every edit and
|
|
47
47
|
applies all or nothing. Put pictures, video, sound and fonts in `<folder>/assets/` and refer to them as
|
|
48
48
|
`"asset:<file>"` (e.g. `"url": "asset:product.png"`).
|
|
49
|
-
3. `npx greenlight-motion@0.1.
|
|
49
|
+
3. `npx greenlight-motion@0.1.4 check <folder>` — fix everything it lists (missing files, template mistakes, blank
|
|
50
50
|
frames, page errors). `--json` for machine output.
|
|
51
|
-
4. `npx greenlight-motion@0.1.
|
|
51
|
+
4. `npx greenlight-motion@0.1.4 stills <folder>` — renders frames and **a labelled contact sheet**. Open and look at
|
|
52
52
|
it before you go on: layout, readability, timing. Fix and repeat. `--at 0.5,1.2,3` for exact times.
|
|
53
53
|
5. Hand it over: tell the user to open `<folder>/index.html` (Chrome or Edge), or `pack` it into one file, or
|
|
54
54
|
`render` the MP4 yourself (`--fps 60 --motion-blur` for fast motion).
|
|
@@ -113,7 +113,7 @@ editor's own normalizer), so write only what you mean.
|
|
|
113
113
|
Full references (generated from the editor's own docs; ignore the `/api/` routes they mention):
|
|
114
114
|
`skill/references/` — video-design, scene-script, video-projects, video-text, video-text-kinetic, video-text-presets, video-shapes, video-keyframes,
|
|
115
115
|
video-camera, video-3d, video-effects, video-transitions, video-particles, video-paths, video-backgrounds, video-grid.
|
|
116
|
-
Machine-readable lists: `npx greenlight-motion@0.1.
|
|
116
|
+
Machine-readable lists: `npx greenlight-motion@0.1.4 schema effects | transitions | easings | paths | expressions`.
|
|
117
117
|
|
|
118
118
|
## Template
|
|
119
119
|
|
|
@@ -160,7 +160,7 @@ an absolute moment; `align` `sync` (default) / `start` / `end`; `offset` seconds
|
|
|
160
160
|
|
|
161
161
|
The library is 77 hand-picked sounds in categories (whooshes and swooshes, transitions, clicks, pop-ups and
|
|
162
162
|
notifications, data blips, typing and writing, foley, bubbles, impacts and bass drops, camera, gears, voice clips).
|
|
163
|
-
`npx greenlight-motion@0.1.
|
|
163
|
+
`npx greenlight-motion@0.1.4 schema sounds` lists every one with its `category`, `use` (what it is for), `duration`
|
|
164
164
|
and `sync`. Pick by `category` and `use`, then by name.
|
|
165
165
|
|
|
166
166
|
- **Where the files come from:** the GreenLight sound CDN. `build` downloads each sound a cue uses into
|
|
@@ -176,7 +176,7 @@ The page has **Notes**: the user marks what should change right on the frame (a
|
|
|
176
176
|
and writes a note for each mark. Every note carries the moment (seconds and frame), the mark in composition pixels
|
|
177
177
|
and the layers under it (item ids in project.json), so you change exactly that and nothing else.
|
|
178
178
|
|
|
179
|
-
- **They review on this computer:** run `npx greenlight-motion@0.1.
|
|
179
|
+
- **They review on this computer:** run `npx greenlight-motion@0.1.4 review <folder>` and give them the URL it prints
|
|
180
180
|
(it keeps running; `--open` opens their browser, only when they ask). Their notes land in `<folder>/review/`: read
|
|
181
181
|
`review/NOTES.md`, look at the `at-<t>s.png` pictures (the marks are numbered), make the changes (`apply`), `build`
|
|
182
182
|
again and tell them to reload the page.
|
|
@@ -205,11 +205,11 @@ that fails (`plugin`); look at `stills` for the look. A package that carries its
|
|
|
205
205
|
|
|
206
206
|
The same project opens in GreenLight Dash (the desktop editor this engine comes from) for full editing: the page's
|
|
207
207
|
edit note offers **Open in GreenLight Dash** (it imports the folder as a new project on the open board; a page with
|
|
208
|
-
changes saves a `.glvideo`). `npx greenlight-motion@0.1.
|
|
208
|
+
changes saves a `.glvideo`). `npx greenlight-motion@0.1.4 pack <folder> --glvideo` writes that file yourself: ONE
|
|
209
209
|
`.glvideo` (the project + its files) that opens in GreenLight Dash on a double-click, or dropped on its board. Hand it
|
|
210
210
|
over when the user wants to keep editing in the app. A
|
|
211
211
|
GreenLight Dash project comes the other way through the app's **Export for agents** — a ready folder like the one
|
|
212
|
-
`init` makes, with the options the author ticked. `npx greenlight-motion@0.1.
|
|
212
|
+
`init` makes, with the options the author ticked. `npx greenlight-motion@0.1.4 init <folder> --from <its project.json>`
|
|
213
213
|
starts from one too. Never tell the user they must install it: the page plays, changes options and renders on its own.
|
|
214
214
|
|
|
215
215
|
## Files
|
|
@@ -351,19 +351,28 @@ POST /api/video-presets/import?board_id={board_id} # multipart `file` = a pr
|
|
|
351
351
|
|
|
352
352
|
### GreenLight Motion pages (Export for agents)
|
|
353
353
|
|
|
354
|
-
A project
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
(`
|
|
358
|
-
|
|
354
|
+
A project leaves the app through Video Editor ▸ project chip ▸ **Export for agents**, as ONE of:
|
|
355
|
+
- **a `.glvideo` file** (the window's default, `format: "glvideo"`): the project in one file, for a Claude chat (drop it
|
|
356
|
+
on the GreenLight Motion connector's video page) or another GreenLight Dash (double-click). Layout below.
|
|
357
|
+
- **a GreenLight Motion Engine page** (`format: "folder"`, the API's default): a folder with `index.html` (plays the
|
|
358
|
+
project in Chrome/Edge from a double-click, nothing to install: the studio — preview, layers, options, Notes,
|
|
359
|
+
Render MP4), `project.json` (the editor `data` above + `name`, `formatVersion: 1` and `template` — the options), and
|
|
360
|
+
`assets/` (`assets/media/<rel>` = the board's `/media/<rel>` files under their original refs, `assets/hdr/`,
|
|
361
|
+
`assets/models/`). For an agent on this computer that works on `project.json`.
|
|
362
|
+
|
|
363
|
+
Over the API:
|
|
359
364
|
|
|
360
365
|
```
|
|
361
366
|
GET /api/moodboards/{board_id}/video-projects/{project_id}/light-report
|
|
362
367
|
→ { name, template | null, leftOut: [{ kind, reason, layers[] }], engine: bool, defaultDest }
|
|
363
368
|
POST /api/moodboards/{board_id}/video-projects/{project_id}/export-light
|
|
364
369
|
{ "dest?": "/abs/parent/folder", "title?": "…", "template?": { "title", "fields": [ … ] },
|
|
365
|
-
"modelFiles?": { "<preset id>": "<the URL the app serves its .glb at>" }, "
|
|
366
|
-
|
|
370
|
+
"modelFiles?": { "<preset id>": "<the URL the app serves its .glb at>" }, "format?": "folder" | "glvideo",
|
|
371
|
+
"pack?": false, "smaller?": false, "progressId?": "<8–64 of A-Z a-z 0-9 ->" }
|
|
372
|
+
→ folder: { folder, index, packed: { path, bytes } | null, files, bytes, missing, leftOut, fields, smaller }
|
|
373
|
+
→ glvideo: { format: "glvideo", glvideo: "<dest>/<title>.glvideo", folder: <dest>, bytes, files, missing, leftOut, fields, smaller }
|
|
374
|
+
GET /api/video-projects/export-light/progress/{progressId}
|
|
375
|
+
→ { phase: waiting | files | page | done, done, total, file, converting } (a .glvideo has no `page` phase)
|
|
367
376
|
POST /api/moodboards/{board_id}/video-projects/import-light
|
|
368
377
|
{ "path": "/abs/folder | …/index.html | a one-file page.html | a .glvideo file", "activate?": true }
|
|
369
378
|
→ the new project (like POST video-projects) + { copied }
|
|
@@ -381,8 +390,10 @@ GET /api/moodboards/{board_id}/video-projects/{project_id}/glvideo?models=<JSON
|
|
|
381
390
|
- `template.fields[]` = `{ key, label, type: text|color|image|number|select|toggle, targets: [{ itemId | clipId | (neither = project), path }] }`
|
|
382
391
|
— e.g. `{ "key": "headline", "label": "Headline", "type": "text", "targets": [{ "itemId": "<item id>", "path": "textContent" }] }`,
|
|
383
392
|
a shape colour `path: "shapeFillColor"`, the background `{ "path": "background.solidColor" }`. Omit `template` to keep
|
|
384
|
-
the project's saved one; `pack: true` also writes one self-contained `.html` next to the folder (for a
|
|
385
|
-
artifact: keep it under 16 MB).
|
|
393
|
+
the project's saved one; `pack: true` (folder only) also writes one self-contained `.html` next to the folder (for a
|
|
394
|
+
Claude artifact: keep it under 16 MB). `smaller: true` puts WAV sounds in as MP3 and PNG pictures as WebP (transparency
|
|
395
|
+
kept) and points the exported project at them — the board keeps its originals; `smaller` in the answer is
|
|
396
|
+
`{ sounds, pictures, before, after }`. A name already taken gets a number: `<title> 2.glvideo`, `<title> 2/`.
|
|
386
397
|
- The template is kept beside the project (`<board folder>/.motion/<project id>.template.json`), not in its `data`.
|
|
387
398
|
- `import-light` copies every file into the board (`motion-<title>/`), except a `/media/` file this machine already
|
|
388
399
|
has byte for byte; the template comes back too. It is what the page's **Open in GreenLight Dash** button does
|