Skip to content

Vidmoat Script

Write a video as a plain .txt file: tags set each scene's voice, footage, graphics, sounds and the steps Otto runs, and the file becomes a storyboard.

A Vidmoat Script is an ordinary text file. Plain lines are what is said; tags in angle brackets say how each scene is made. Open it in the editor, send it to a Vidmoat bot, or pass it to the API, and it becomes a storyboard: one card per scene, with its voice, footage, graphics and the steps Otto will run.

Nothing runs when a script is read. You see the scenes, their steps and the price first, then build.

launch.txt
<scene title="Hook" seconds="4">
<voiceover emotion="excited">You're paying $225 for an edit you could get for ten.</voiceover>
<onscreen>$10 vs $225</onscreen>
<footage stock>close-up of a hand counting cash</footage>
<sfx>whoosh</sfx>
</scene>

<scene title="The trick">
<voiceover>I post two videos a day, and two things make them look expensive.</voiceover>
<footage media="interview.mp4" />
<insert component="stat-counter" on="two videos">2 videos a day</insert>
<sfx on="two">pop</sfx>
<agent>Cut this to the strongest 8 seconds.</agent>
</scene>

<music>calm lo-fi, ducked under the voice</music>
<captions preset="Bold Yellow" />

Scenes#

TagWhat it does
<scene title="Hook" seconds="4"> ... </scene>One scene. seconds is its target length; without it the length is estimated from the words.
--- or a blank lineStarts the next scene, when the file has no <scene> tags.
plain linesThe scene's script.

Voice and words on screen#

TagWhat it does
<voiceover voice="..." language="en" emotion="excited">The line, spoken by a generated voice. emotion uses the voice's named emotions where it has them.
<record>The line you will say yourself (the phone's Direct mode films against it).
<onscreen>Text shown on screen in that scene.
<captions preset="Bold Yellow" />The scene's captions: a preset, off or auto. Outside every scene, the default for each scene that sets none.

Footage and look#

TagWhat it does
<footage stock>, <footage generate>, <footage own>Where the picture comes from, with a description inside. Add still or video for a generated still or clip.
<footage media="interview.mp4" />Your own uploads, by file name. Only your library is searched.
<look preset="...">The scene's grade: a preset, a description, or both.

Graphics, sounds and Otto#

TagWhat it does
<insert component="stat-counter" on="two videos">2 videos a day</insert>A designed graphic on what is said, the way a paid editor packages a talking head. component is one of stat-counter, keyword, checklist, chat-bubbles, search-bar, proof-card, icon-card or quote-card (leave it out and Otto chooses); on is the spoken words it lands on. Every figure and word on it is checked against what the speaker actually says, so a script cannot put a claim on screen that is not said.
<sfx>whoosh</sfx>, <sfx on="two">pop</sfx>A sound effect from the stock library: on each graphic in the scene, or on one spoken word.
<agent>An instruction Otto carries out on that scene only. It cannot change other scenes.
<cut />, <cut fillers />Remove silences, or filler words, from the scene's speech.
<review />Otto reviews the scene and reports what is wrong with it.

The whole video#

TagWhat it does
<music>The music bed, with what it should feel like.
<chapters />Chapters from the scene titles.
<export />Open the export when every scene is built.

Attributes take "double", 'single' or bare values, and a bare word is a flag (<footage stock>). <!-- comments --> are ignored.

Where you can use it#

  • The editor, on the web and in the phone app: Storyboard, then Split a script into scenes. Paste it or press Open a .txt. What the tags make, and anything not used, is shown before you press Make scenes from the tags.
  • Telegram, WhatsApp and Discord: send the .txt file to the Vidmoat bot in a private chat. It makes the storyboard in a new project and replies with its scenes, anything it could not use, and the link to open and build it.
  • MCP: create_storyboard with from: { script: "..." }.
  • API: POST /v1/projects/{id}/storyboard with the same body. The answer carries script.problems (line and reason) and script.notes.

Limits#

Limit
Scenes40
Script per scene2,000 characters
Steps per scene (voice, agent, insert, sfx, cut, look, review)12
One <agent> instruction600 characters
File sent to a bot256 KB of text