Skip to content
explainroo

Docs

Settings

Every setting in video.json, what you can set for one scene in script.md, and the environment variables.

What goes in video.json?

Every setting is optional. A small file looks like this:

{
  "title": "How DNS finds a website",
  "theme": "chalk",
  "voice": "af_heart",
  "music": "calm"
}
Setting Default What it does
title from the script the title shown in the preview
theme paper the look. One of paper, clean, chalk, blueprint or midnight
size 16:9 the size of the video. A platform name (youtube, shorts, tiktok, reels, vertical, instagram, linkedin, square), a ratio (16:9, 9:16, 1:1, 4:5) or WIDTHxHEIGHT
fps 30 24, 25, 30, 50 or 60 frames per second
voice af_heart which voice reads the script. explainroo voices lists all 28
speed 0.9 how fast the voice speaks, from 0.6 to 1.6
pace 1 how fast the whole video runs, from 0.7 to 1.6. It changes the voice, the pauses and the animations
music true true plays the music style that goes with the look. You can also name a style (warm, upbeat, calm, tech, playful), set a volume with { "style": "calm", "volume": 0.35 }, or turn music off with false
sfx true sound effects. true, "minimal" or false
captions "auto" true, false or "auto". With "auto", tall and square videos get captions and wide ones don’t
transition "auto" how scenes change. "auto" uses the change that goes with the look. You can also pick fade, slide, wipe, zoom, brush or cut
lead 0.35 how many seconds pass before the voice starts in each scene
hold 0.7 how many seconds the scene stays after the voice has finished
end 1.4 extra seconds at the very end of the video
sentenceGap 0.3 the pause between two sentences, in seconds
paragraphGap 0.55 the pause between two paragraphs in a scene, in seconds
loudness -14 how loud the finished video is, in LUFS
boil 0 how many times per second the hand-drawn lines are redrawn. 0 keeps them still
watermark "explainroo.com" the small text in the bottom right corner, or false for none
images none settings for AI images, like { "model": "best", "style": "..." }

If a setting is unknown or out of range, explainroo stops and tells you what is wrong.

What can I set for one scene?

In script.md, a scene can have its own settings. They go in braces after the scene name, like ## outro {hold=2 transition=cut}:

Setting What it does
hold how long this scene stays after the voice, instead of the video’s hold
lead how long this scene waits before the voice, instead of the video’s lead
min the shortest this scene may be
transition how this scene comes in

Which environment variables are there?

Variable What it does
OPENROUTER_API_KEY your OpenRouter key for AI images. explainroo also reads it from a .env file in the explainroo folder or the project
EXPLAINROO_CHROME where Chrome or Chromium is, in case explainroo doesn’t find it on its own
EXPLAINROO_FFMPEG, EXPLAINROO_FFPROBE where ffmpeg and ffprobe are
EXPLAINROO_CACHE where the speech models are stored, ~/.cache/explainroo by default
EXPLAINROO_OFFLINE set it to 1 and explainroo downloads no model files
EXPLAINROO_TTS_DTYPE the precision of the voice model. fp32 is the default. q8 is a smaller download, but it runs slower
EXPLAINROO_DEBUG set it to 1 to see the full details of an error