Prompt Box
The AI chat composer: a rounded field with a welded gradient outline sweeping the edge, your prompt typing itself in with real keyboard sound, and a send button that lights up when the text lands. For videos about prompting, where showing the prompt beats describing it.
Put this in your video
Videos about prompting, where showing the prompt beats describing it. Paste this into Claude Code, Codex, or any coding agent.
Use the OverlayMotion video templates from https://github.com/ricardo/overlay-motion Add the Prompt Box template typing out "Please add subtitles to this video", hint "OverlayMotion agent", centered, with the keyboard sound.
- Have ready: The prompt text, and the assistant name for the hint line.
- Works over any clip, and still renders with no clip at all.
- Defaults to the center of the frame for about 5 seconds. Ask for another spot, a start time, or a longer hold.
- A correction is one sentence: “Type it more slowly and start at 2s.”
Technical reference: props, spec knobs and JSON
Inputs
Everything inside the overlay's props. Omit one and its default applies.
texttextRequiredWhat gets typed into the box, character by character
placeholdertextDefault "Ask anything"Shown before the first character lands, and never after
hinttextOptionalSmall chip on the bottom row: the model, the agent, the mode
typeStartSecnumberDefault 0.35Seconds from the overlay's own start until the first character
typeSecnumberOptionalHow long the full string takes to type. Unset, the spec's time.appear budgets it; without that, the character count does.
carettrue / falseDefault trueSolid while typing, blinking once the text lands
borderWidthnumberDefault 5Welded outline thickness, design pixels at a 1080px short edge
sweepSecnumberDefault 4Seconds per revolution of the arc around the outline
glowtrue / falseDefault trueBleed the hot arc past the stroke. Off draws the stroke alone.
entranceslide-up | pop | fade | noneDefault "slide-up"Native entrance. slide-up rises from below while fading in. Set none when the spec drives the arrival with enter or a camera move.
typingSfxfalse | cue name | file pathDefault "keyboard-typing-natural"Recorded keyboard typing under the characters, held for exactly as long as typing lasts. false types in silence.
All 46 accepted values
falsepopbubbletickdingwhooshkeyboard-typing-naturalmouse-click-pressmouse-click-releasetypewriter-scissor-metallic-lowtypewriter-scissor-metallic-basstypewriter-scissor-metallic-subtypewriter-scissor-metallictypewriter-scissor-lowtypewriter-scissor-deeptypewriter-laptoptypewriter-chiclettypewriter-scissortypewritertypewriter-softtypewriter-mechanicaltypewriter-digitaltypewriter-heavytypewriter-thocktypewriter-steeltypewriter-slamtypewriter-buttontypewriter-switchtypewriter-keycapclickclick-crispclick-roundclick-glasstogglesuccesserrornotificationsparkleswoopriserimpactglitchshutterswipedropdisplayWhat the spec changes without touching props
These live on the overlay, not in this template. They are renderer-provided, so they behave the same here as on every other template.
regionWhere it sits. One of the 12 named boxes, or your own
{ "x": 62, "y": 12, "w": 34, "h": 42 }in percent of the frame. This template is designed aroundcenter, which is what it uses when the spec says nothing.fullscreentop-bannerlower-thirdupper-thirdcaption-zoneleft-panelright-panelcentercorner-tlcorner-trcorner-blcorner-brscaleUniform size inside the resolved region,
0.25to2. Props that size the artwork stay relative to the region box, soscaleis how an overlay grows past it.timeWhen it lives:
start,duration, or theappear+holdpair (entrance length plus how long the finished overlay stays). Seconds (3s), percentages (66%) and negative seconds from the end (-2s) are all valid.motionObject motion, applied to the element itself so nothing is cropped or zoomed. Unset here, so add
{ "style": "shake" }(orwobble,float,sway-3d) withamount(0..1) and its owntimewindow, or one of theskew-*sweeps for a single slow turn into a perspective keystone. Pass an array to stack several.shakewobblefloatsway-3dskew-rightskew-leftskew-upskew-downnoneenterRenderer-owned entrance, 0.6s, identical on every template. It stacks with whatever entrance the template already runs, so set the template's own entrance prop to
nonewhen you drive it from here.slide-leftslide-rightspringmaskexitHow it leaves:
blur-outmelts it away,fade-downdrifts down,shrinkscales to center (0.9s each),vanishpops it out of existence in 0.45s. Set one and the template's own fade steps aside.blur-outfade-downshrinkvanishcameraMoves the region's VIEWPORT rather than the element:
push-in,pull-out, thepan-*family,handheld. Its own transform layer, so it stacks withmotion,enter,exitandscale.soundPer-overlay override of the spec's sound block:
enabled,volume, and asoundsmap that remaps one cue by name ({ "pop": "ding" }, a path to your own file, orfalseto mute just that cue). The map is keyed by CUE, so remappingpopalso changes anexit: "vanish", which firespoptoo. To change only this template's own sound, use itssfxprop instead. Core palette:click,pop,whoosh,ding,typewriter.All 45 premade cues
popbubbletickdingwhooshkeyboard-typing-naturalmouse-click-pressmouse-click-releasetypewriter-scissor-metallic-lowtypewriter-scissor-metallic-basstypewriter-scissor-metallic-subtypewriter-scissor-metallictypewriter-scissor-lowtypewriter-scissor-deeptypewriter-laptoptypewriter-chiclettypewriter-scissortypewritertypewriter-softtypewriter-mechanicaltypewriter-digitaltypewriter-heavytypewriter-thocktypewriter-steeltypewriter-slamtypewriter-buttontypewriter-switchtypewriter-keycapclickclick-crispclick-roundclick-glasstogglesuccesserrornotificationsparkleswoopriserimpactglitchshutterswipedropdisplay
Copy and customize
This exact spec drives the preview. Replace media paths and props with your own.
{
"theme": "<your-brand-tokens>",
"version": 1,
"format": "square",
"fps": 60,
"durationSec": 5,
"source": {
"type": "none"
},
"sound": {
"enabled": true,
"volume": 1,
"sounds": {}
},
"overlays": [
{
"template": "prompt-box",
"region": "center",
"time": {},
"props": {
"text": "Please add subtitles to this video",
"hint": "OverlayMotion agent"
}
}
]
}