Skip to main content

Make a promo video from your app's code

Goal: upload a web app's source code and get an animated promotional video about it, with scenes based on the app's real screens, colours and features.

ReelBolt reads the code with five analysis agents, turns the app's interface into Remotion scenes (Remotion is the code-based animation tool ReelBolt uses to build and render videos), plans animation, narration and shots, and then the AuthorAgent renders the final video itself inside an Agent step. There is no separate render step. A review step scores the result and asks the AuthorAgent to try again if it falls short.

Prerequisites for a promo from code​

  • The app's source code uploaded to the project. On the Files tab you can upload a whole folder. Include the interface code (components, pages, styles); you can leave out build output, dependencies folders (such as node_modules) and large binaries.
  • A chat AI provider. The promo pipeline makes many AI calls; a capable model gives better results.
  • The Remotion sandbox service running (part of the standard installation). It is where the agents write and render the Remotion code, sealed off from everything else.

Choosing a promo template​

Template keyDisplay nameNarrated?Best for
quick-win-promoPromo video from your codeNo (silent)A first promo. Already added to every new project.
lean-context-promoPromo video from your code (lighter)No (silent)The same, with fewer AI tokens; good for large apps.
cinematic-feature-spotlightQuick vertical reelYesA short, punchy social reel with a strong call to action.
story-arc-launch-trailerNarrated launch trailerYesA story-shaped launch trailer.

All four ask for your brief when you run it. The brief decides the format and length: a reel, short, story, TikTok or vertical request makes a 1080x1920 (9:16) video, "square" makes 1080x1080, anything else is landscape 1920x1080, and a stated length ("15 s") is the video's length. The two narrated templates need a speech provider.

All four follow the same pattern. Promo video from your code:

#LabelStep typeAgentRenders?
1Analyze code structureAgentCodeStructureAnalyzerNo
2Analyze UI dependenciesAgentDependencyAnalyzerNo
3Inventory componentsAgentComponentInventoryAnalyzerNo
4Map routes and APIAgentRouteAndApiAnalyzerNo
5Extract style tokensAgentStyleAndThemeExtractorNo
6Translate to Remotion scenesAgentRemotionComponentTranslatorNo (writes code only)
7Create animation strategyAgentAnimationStrategyAgentNo
8Draft narration and captionsAgentScriptwriterAgentNo
9Build shot directionAgentDirectorAgentNo
10Assemble and render master compositionAgentAuthorAgentYes
11Review quality and complianceReviewLoop (pass 8, back to 10, 2 rounds)ReviewAgentNo

The step lists of the other three templates are in Workflow templates.

How to run a promo from code​

  1. Make sure the code is uploaded.
  2. Open the workflow (Workflows tab). For Promo video from your code, it already exists; for the others, add the template from New workflow.
  3. Run it and give your brief when asked, for example: "Promote the new team dashboard to engineering managers. Upbeat, 30 to 45 seconds, end with 'Start your free trial'." or "15 s vertical reel about the timeline editor." (The brief box always appears when you click Run; Require a brief before each run only makes it mandatory.)
  4. Follow the run. Steps 6 and 10 take the longest, because the agents write, check and render code.

What to check after a promo run​

  • Step 10 (AuthorAgent) shows the finished video in its Output Video player; it also appears in the project's Renders tab. If this step has no video, it fails with "Author step did not produce a rendered media artifact", and ReelBolt retries it.
  • The review step shows the score and the list of improvements. A score under the passing mark sends the run back to step 10 with the comments; after the last round the run finishes with the latest video.
  • Step 8 (ScriptwriterAgent) contains the narration and captions per scene. Its on-screen text is plain: any markdown such as *word* is removed automatically, because the video would draw the asterisks. Spoken narration needs a Voiceover step (below); the Author's output says in metadata.audio whether the video has narration or is silent.
  • Nothing invented: names, quotes, ratings and numbers on screen come only from your code, files or brief. If you see a made-up name or figure, say so in the brief and run it again.

Variations of a promo from code​

  • Spoken narration: add a Voiceover step after the scriptwriter with {"source": {"kind": "ScriptScenes", "scriptwriterStepOrder": 8}, "defaultVoiceId": "..."}; the AuthorAgent places each line in its scene. Needs a Fish Audio speech provider. See Voiceover recipe.
  • Faster, cheaper analysis: combine the five analysis agents into one Parallel step so they run at the same time.
  • Fewer tokens: use Promo video from your code (lighter), which trims the component list with an Extract step and gives each later agent only the earlier results it needs.
  • Stricter quality bar: raise the review step's minScore (for example to 9) and maxIterations (for example to 3). Each extra round re-renders the video.

Pitfalls with a promo from code​

  • No or little code uploaded: the analysis agents have nothing to describe and the promo will be generic. Upload the interface source.
  • Very large repositories: slower and more expensive. Leave out generated files and dependency folders, or use Promo video from your code (lighter).
  • A step times out: agents that write code can hit their time limit on slow AI backends. A timed-out step is not retried automatically; an operator can raise that agent's time limit. Then use Retry: earlier read-only analysis steps may be reused from the cache.
  • Re-runs repeat the analysis quickly: analysis agents that only read are reused from an earlier identical run; translation, scripting, directing, authoring and review always run fresh.
  • Asking for the wrong agent to render: only the AuthorAgent renders the promo. The RemotionComponentTranslator builds and checks the scene code but cannot render.