Quickstart
Build the binary, render the sample video, and write your first scene from scratch.
Build the engine
Vawe is a Go binary that drives headless Chrome and ffmpeg. You need Go, a Chrome or Chromium install, and ffmpeg on your path.
make build
# downloads the free fonts, then: go build -o bin/vawe ./cmd/renderThis produces bin/vawe. The make build step also runs make fonts, which pulls the typefaces into assets/fonts/ (they are fetched, never committed).
Render the sample
make list # show the scene module + its schema and sample
./bin/vawe formats/scene/sample.json
# → out/sample.mp4Or through make, which is the same thing with a friendlier name:
make video D=formats/scene/sample.jsonAdd --draft for a fast render with no film grain while you iterate:
./bin/vawe formats/scene/sample.json --draftWrite your first scene
Every scene is a JSON file that starts with "module": "scene". Save new videos as formats/scene/<topic>.json. Here is a complete, minimal one:
{
"module": "scene",
"orientation": "landscape",
"theme": "vawe",
"duration": 4,
"audio": { "silent": true },
"layers": [
{
"type": "text",
"text": "One JSON, <b>one video.</b>",
"size": 120,
"pin": "center",
"split": "word",
"preset": "up",
"each": 0.4,
"stagger": 0.06,
"start": 0.3
}
]
}Render it:
make video D=formats/scene/hello.jsonYou just wrote a scene with one text layer that splits its headline into words and rises each one into place, staggered in reading order. The theme sets the palette, fonts, and motion personality; pin: "center" places the layer in the middle of whatever aspect you render.
No em-dashes
On-screen copy cannot contain em-dashes. The validator rejects them. Use a comma, a period, or a middot instead. This keeps typography honest across fonts that render the dash inconsistently.
The authoring loop
Once you have a scene, the rhythm is: render, look, fix, repeat.
make video D=formats/scene/hello.json # render
make look M=scene # storyboard the key frames
make audit # overlap, contrast, safe-zoneEvery check has its own page in Quality gates. Nothing here needs to run for a video to render, but they are how you catch a murky frame before you ship it.