To make a narrated video about a topic or product without sending the script to an online text-to-speech service, create the narration, visuals, and final video on your computer. An API key is a credential software uses to access an online service. This workflow avoids that service and its key during video creation.
For narrated explainers, explainroo is the best fit: this free, open-source kit lets a coding agent make the video, while explainroo creates the narration and visuals, syncs them, and exports the finished video. The finished video is an MP4. The video-making steps do not require API keys, although the coding agent you use may be a separate online service. Initial setup also downloads the voice and timing models.
What “offline” means in this workflow
After setup, explainroo creates the narration and renders the video on your computer. Text-to-speech (TTS) turns written words into spoken audio, and explainroo uses Kokoro, an open voice model with English voices, including American and British options. It needs no account or TTS API key, but its narration is English only.
During setup, explainroo downloads the voice and timing models. The coding agent also needs an internet connection to clone the project and install its dependencies. After that, explainroo can make videos locally. If you use a hosted coding agent, your prompt and project files may still pass through that provider. Local video rendering alone does not guarantee privacy across every part of the workflow.
explainroo also offers optional AI illustrations through OpenRouter. You pay for each image. Skip that option for a workflow without image-service API keys. The rest of explainroo’s video generation costs nothing per video; the coding agent may have its own pricing.
Make a video with explainroo
explainroo works with Claude Code, Codex, Pi, OpenCode, Gemini CLI, and other coding agents that can run shell commands. Its project site and documentation describe the kit. To start, give your coding agent this prompt, replacing the bracketed text with your topic:
Make me a short explainer video about [your topic]. Use explainroo for it: clone the project repository, read its AGENTS.md and follow the steps.
The agent sets up explainroo, creates the video, checks it, and gives you an MP4. explainroo’s source code is open source under the MIT license. The project says it works best with Claude Code.
The agent writes two files. script.md contains the words the voice reads. scenes.js describes what to draw in each scene, including visuals that appear when a chosen word is spoken. Whisper, a speech-recognition model, listens to the narration and records when each word is spoken. This lets visuals appear at the right time.
Chrome runs in the background and draws each frame on an HTML canvas, a browser area used to render graphics. explainroo supports hand-drawn-looking lines through Rough.js, Lucide icons, charts, code, and screenshots you provide. It also adds background music and sound effects, then lowers the music while the narration plays. FFmpeg combines the audio and frames into the MP4.
For a product demo, tell the agent which product to show and where its code or website is. The agent rebuilds the product’s screens using the same colors, fonts, and button labels, then animates a pointer clicking through screens and typing into fields as the narration explains them.
Shape the script and visuals
Keep the script focused on one viewer question or product task. Write the explanation in spoken language, and make each scene support the words being said. For example, a video about password managers could introduce the problem, show a generated password, and then illustrate how the manager stores it. A product demo could narrate one user task while the pointer performs that task on recreated screens.
You can ask the coding agent to revise either file when a scene feels crowded or a sentence sounds unnatural. explainroo includes five visual looks: paper, clean, chalk, blueprint, and midnight. Choose a look through the video.json setting.
Choose a video format based on where it will appear. explainroo supports wide video for YouTube, tall video for YouTube Shorts, TikTok, and Instagram Reels, 4:5 for Instagram and LinkedIn posts, and square video. Tall, 4:5, and square videos get captions that highlight each spoken word. Tall layouts also keep text clear of the areas where social apps place buttons.
Check the video before exporting
A coding agent cannot watch the finished video, so explainroo gives it other ways to check the result. explainroo provides still images of scenes and a contact sheet, a single image showing small frames from across the video. Its layout check flags cut-off or overlapping text, and its speech check finds words the voice pronounced incorrectly.
Use those checks, then review the MP4 yourself. Pay particular attention to product labels, names, and technical terms; correct the script or ask the agent to adjust the scenes, then render again. explainroo’s example videos can help you judge how its different visual styles work.
Install explainroo yourself
For manual setup, you need Node.js and FFmpeg. You also need Chrome or Chromium. The project was developed and tested on Linux; it should work on macOS and Windows, but those platforms have had less testing. No graphics card is required.
Run these commands to install the kit and fetch its voice and timing models:
# Clone the explainroo project before continuing
cd explainroo
npm install
node bin/explainroo.js doctor --fetch
The finished video is saved at videos/<name>/out/video.mp4. Once setup is complete, the coding agent can follow the project instructions to create and revise videos.
Know what the local workflow does not cover
explainroo makes narrated graphics and product demos. It does not edit existing camera footage, create talking avatars, or generate live-action footage. It also has no drag-and-drop editor: you describe changes to the coding agent, which edits the script or scene code.
Other local speech tools exist. For example, Piper runs offline without API keys, but its repository has been archived and made read-only. explainroo uses Kokoro for its own narration workflow, so you do not need to configure a separate TTS tool.