fortax-demo-shoot
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fortax-demo-shootmake a demo video for https://myproduct.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fortax Demo Shoot
Give it a product URL. Get back a narrated demo video in your own voice, with branded intro and outro, on-screen callouts, zooms on every click, captions, and three shapes: 16:9 for YouTube, 1:1 for LinkedIn, 9:16 for Reels and Shorts.
It plans the walkthrough, drives the product in a real browser, records it, speaks every step, and renders the result. Run it from the command line, or just ask your coding agent — Claude Code, Codex, OpenCode or hiSAI — for "a demo video of my app".
Demo
English — planned, recorded and narrated with no hands on the keyboard.
https://github.com/user-attachments/assets/f2575a30-87b2-4a34-91ba-6d1736192bf1
हिंदी — the same demo, narrated in Hindi.
https://github.com/user-attachments/assets/39644a8e-a057-4250-9f02-30267b64dd2d
Full-quality files in all three shapes, in both languages, are on the v0.1.0 release.
Related MCP server: aidemo
How it works
brand reads the site (and repo, if given) -> name, tagline, colours, logo
plan an LLM writes the walkthrough -> steps, narration, callouts
voice every line is spoken first -> your cloned voice, or a preset voice
record a real browser performs each step -> waits while each line plays
compose the recording is edited -> zoom on each click, cursor, captions
film the brand wraps the recording -> intro, callouts, outro, 16:9 / 1:1 / 9:16Every stage writes a file, so any stage can be re-run on its own. Voice lines that did not change are reused.
Two things it refuses to do quietly:
A click that would land on the wrong element fails the step. Before every click it checks what is actually under the pointer (sticky headers, overlays, a different control inside the same label) and stops rather than record a video that shows the wrong thing.
A voice line that fails stops the run with the engine's real error, instead of producing a silent video. Without
--ref, a failed line is first retried with Hidrogen's preset voice, and the log says so (! s03: used Hidrogen's preset voice instead of omnivoice). With--ref, your cloned voice is never silently swapped for a different one: pass--allow-fallbackto accept Hidrogen's voice for those lines, or--allow-silentif captions-only is what you want.
Install
git clone https://github.com/amit-voais/fortax-demo-shoot && cd fortax-demo-shoot
./install.shNeeds Python 3.10+, ffmpeg and Node.js 18+. install.sh creates a virtual
environment, downloads Playwright's own Chromium (no Chrome install needed), links the
demoshoot command into ~/.local/bin, and registers the skill and the MCP server with
every coding agent it finds on the machine. ./install.sh --dry-run shows what it would
do without changing anything; ./install.sh --uninstall removes the agent registrations,
the skill links and the ~/.local/bin/demoshoot link (only if it still points into this
checkout). It leaves the repo's .venv in place; delete the folder to remove that too.
Voice cloning uses OmniVoice in its own Python
environment; point OMNIVOICE_PYTHON at that environment's python.
Make a demo
demoshoot make --url https://your-product.com \
--brief "Show how a new customer builds a plan and sees the yearly price" \
--ref my-voice.wav -o out/my-voice.wav is 5–15 seconds of you speaking clearly, one speaker, no music. Without
--ref, pick a preset voice: --instruct "male, indian accent, middle-aged, moderate pitch".
out/ then contains demo-16x9.mp4, demo-1x1.mp4, demo-9x16.mp4, demo.srt,
poster.jpg, plan.json, brand.json, and one editable video project per shape.
Option | What it does |
| also read the product's source repo for its name, colours and logo |
| use a plan you wrote or edited instead of asking the LLM |
| only render some shapes |
| one plain |
| plan with a local model instead of the default |
Hindi or Hinglish. Write the plan in that language first, then record it:
demoshoot plan --url https://your-product.com --brief "…" --lang hi -o plan.json
demoshoot make --plan plan.json --ref my-voice.wav -o out-hi/Captions render in Devanagari.
Change a callout or the tagline after a run by editing out/plan.json or
out/brand.json, then re-render the scenes without re-recording:
demoshoot film --screen out/work/screen.mp4 --brand out/brand.json \
--plan out/plan.json --work out/work -o out/Your agent can do the same with the film tool, which only needs the out/ folder.
Use it from a coding agent
After install.sh, ask your agent for a demo video. It has these tools:
Tool | Use it for |
| the whole thing in one call: URL in, finished videos out |
| see what the tool reads as the product's name, tagline and colours |
| get a walkthrough plan to review or edit before recording |
| record and narrate a plan into one plain video |
| re-render the branded scenes of a |
| check what works on this machine |
Recording takes a few minutes and drives a real browser against the URL. It only navigates, clicks, scrolls, hovers, types into visible fields and presses keys.
Choices
Stage | Option | Needs |
Plan |
|
|
| a local model ( | |
| any OpenAI-compatible server ( | |
| that CLI, logged in (see Safety) | |
Voice |
| local OmniVoice ( |
| a preset voice, no sample needed | |
|
| |
|
| |
| captions only |
Valid --instruct words: male, female, child, teenager, young adult, middle-aged,
elderly, low pitch, moderate pitch, high pitch, very low pitch, very high pitch, whisper,
and the accents american, australian, british, canadian, chinese, indian, japanese,
korean, portuguese, russian (written as indian accent).
Safety
Plans that contain delete / pay / cancel-style steps are refused before the browser opens.
shoot,runandrecordaccept--allow-destructivefor a plan you have checked yourself;makenever does.If a click leaves the product's own domain, the browser goes back.
Passwords never go in a plan. Write
{{secret:LOGIN_PASS}}in the step and setDEMOSHOOT_SECRET_LOGIN_PASSin the environment; it is typed in, never logged. Only type secrets into password fields: a secret typed into an ordinary text field is visible in the video.Plans may only open
http://andhttps://pages.The planner reads text from the product's pages.
--llm clauderuns Claude Code with no tools and no MCP servers;hisairuns without plugins in an empty folder but can still use its own tools;codexruns as configured. Preferhidrogen,openaiorollamafor sites you do not control.demoshoot serve(the job API) refuses to listen beyond localhost unlessDEMOSHOOT_TOKENis set, and does not accept secrets or the agent-CLI planners.Your voice sample stays on your machine when you use local OmniVoice.
Licence
Apache-2.0. See LICENSE and NOTICE. If you redistribute this or build on it, keep the NOTICE file and credit Fortax Demo Shoot by Amit Yadav (Fortax).
This server cannot be deployed
Maintenance
Related MCP Connectors
Turn a product URL into a narrated cinematic demo video, launch video, or deck.
Turn a topic, URL, or document into a narrated, animated explainer video.
Generate AI UGC video ads from any product URL — avatars, voiceover, OAuth Connect.
Generate AI videos from a prompt or document (PDF/PPTX/DOCX/URL) and export shareable MP4s.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to generate narrated videos from topics or scripts, with stock footage, home videos, or local AI clips.2MIT
- AlicenseAqualityAmaintenanceYour coding agent makes the demo video — turns a storyboard.json into a narrated, captioned product-demo MP4; deterministic replay re-renders it in CI at ~$0.23188 npm8MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create polished product demo videos by controlling a real Chromium browser, recording actions, and rendering 1080p MP4s with narration, captions, and styled overlays.1MIT

instantclipsofficial
AlicenseAqualityAmaintenanceEnables turning e-commerce products into short-form vertical videos for TikTok, Instagram Reels and Stories, with tools for importing products, editing creative direction, and rendering videos.10585 npmMIT