Marcel SchreiberAutomation and agents for small businesses
Problem
Customer updates
Industry
Jeweler
Year
2026
Project type
Own project

An explainer video rendered from code for a jeweler offer

A 79.5-second explainer video in two formats, rendered entirely from code, without a single shoot day.

The number: 79.5 s

Length, two formats (16:9 and 9:16), zero shoot days

Starting point

For an offer aimed at jewelers I needed a short video that explains the process. It had to run no longer than 80 seconds and make sense without sound. A shoot with camera, presenter and editing did not fit, because the offer was still changing: every text change would have meant another shoot. I wanted a video I can change like text and export again, in landscape and in portrait, with identical content in both.

What was built

The video is not a file I edited. It is an HTML scene driven by JavaScript. A Node script sets the picture state for every point in time, headless Chrome takes a screenshot of it, and ffmpeg joins the 2,385 frames into H.264. It runs deterministically, with no real-time timers: same text, same video. The copy sits in its own file, fonts and illustrations are in the code, and the screens shown come from a test app with sample data. There are two outputs, 1920 by 1080 and 1080 by 1920.

  • HTML
  • JavaScript
  • Node.js
  • Headless Chrome
  • ffmpeg

Result

The finished video is 79.5 seconds long in both formats, with no audio track and the text burned into the picture. I shot nothing, so there were zero shoot days. Two independent reviews by a reviewer agent and three rounds of corrections came before sign-off: the first review failed the video with 11 findings, and the second passed it. I measured length and resolution with ffprobe.

Proof

The video exists in both formats, re-rendered with sample names, each with a still image as preview. It has no speech, so it needs no transcript, and all the text is in the picture. The scenes come from source code, not from an editing program, and can be re-exported whenever the text changes. The ffprobe readings for length, frames, resolution and file size sit in an evidence file. I can show it to you on request.

Explainer video, re-rendered with sample names. No audio, the text is in the picture.
The same scene in vertical 9:16.

Limits

I never published the video, so I say nothing about its effect. It has no sound and no presenter. I did not time the render myself. The original carries a product name and a wordmark, so I do not show it here: I am re-rendering the video for this site with sample names and without any real jewelers. This case is anonymized, so no clients and no shops appear in it.