Product demo video procedure
Everything happens through tin-studio (run tin-studio help). Work in
the Studio work directory provided by the runtime (call it WORK; API runs use
/home/tin-work/studio, historical OAuth runs use /home/user/.tin-lite/studio);
only the finished MP4 goes into the project
checkout. There is no real-time screen recording: you capture settled keyframes and the renderer
synthesizes the scroll, tap, zoom, and caption motion, which is why the result is smooth.
1. Plan the story
- Read
wiki/INDEX.md(## Product, feature map, positioning). Readangleandnotes. - Run
tin-studio inspect <product_url> WORK/inspect. Read the JSON:headingswith theirscrollY,actionswith ready-madeselectors (prefer ones withinHeader: truefor navigation),text,docHeight. OpenWORK/inspect/inspect.pngandWORK/inspect/inspect-full.pngwith your image viewer and note what each screen shows. Inspect one or two more pages if the story needs them (docs, pricing). - Decide the format
script-format.mddescribes: one hook of at most seven words that names the pain (angleif given), then five to seven steps. Each step is one visible moment with one voice line of at most fourteen words and one caption of at most five words. Mark exactly one*word*per caption and in the hook. The last step lands on the call to action the page actually offers (trial, pricing, install) with a[warm]line. Total speech at most 75 words. - Claims come from the page text or project memory; numbers must be visible on screen in the step that says them.
- Write every line as a creator talking to the viewer: present tense, second person, the thing itself. Never narrate the page ("the page shows", "this section lists", "the site's example"); say what it means for them ("your agent gets its own number"). Write amounts and counts as words, and keep brand names inside a full sentence.
2. Write and capture
- Write
WORK/script.jsonin the format fromscript-format.md. - Run
tin-studio capture WORK/script.json WORK/out. Open everyWORK/out/frames/kNNN.pngwith your image viewer and check: the page loaded (no blank, no error, no interstitial); no cookie banner or popup covers the content (add an earlyclickstep on its dismiss button if one appears, or choose a page without it); each scroll lands where the caption expects; each click hit the intended element (theclickkeyframe shows the new page). A keyframe that is wrong is a script fix: betterselectorfrom inspect,scrollTo, a biggersettleMs, or a different page. Recapture until every keyframe is right.
3. Voice
- Run
tin-studio voice WORK/out --voice <voice> --language "<language>". Add[excited]on the hook line and[warm]on the last; otherwise plain sentences. Each run prints the clip length per step; if a clip is longer than five seconds, shorten that line. - Voice is capped per run (24 lines, 3000 characters). Re-running keeps unchanged lines, so
edit a line in
WORK/script.json, recapture is not needed, and runvoiceagain. - A line the provider refuses is reported as
REFUSEDwith the reason and the other lines are kept. Acontent_policy_violationis the provider's opaque text checker misfiring: first runvoiceagain without any--styleof your own (the default style is known to pass), then rewrite that one line with plainer wording and runvoiceagain. Never resend an unchanged refused line, and never spend more than two rewrites on one line; drop it and let the caption carry the step.
4. Preview, render, check
- Character: when
characteris set, the file is/home/user/project/characters/<character>.svg; runtin-studio checkon it first. If it is missing or rejected, render without it and say so in the message. - Preview three frames before the full render (hook, a mid scroll, the final step):
tin-studio frame WORK/out WORK/p1.png --at 1.5 --bg <backdrop> [--character <svg>], and again at about half the total length and at the end. Look at them: captions readable and centred, the character's face visible and not covering the caption, the phone card showing the right screen, backdrop not clashing. - Render:
tin-studio render WORK/out WORK/<slug>.mp4 --bg <backdrop> [--character <svg>]. It prints the duration. Thentin-studio check WORK/<slug>.mp4must printOKandtin-studio probeshould show 1080x1920 with an audio stream. - Longer than 40 seconds: cut a step or shorten lines, re-run
voice, render again.
5. Deliver
Copy the checked MP4 to the declared output path and nothing else. The final message is the storyboard: hook, then per step the caption, the voice line, and what is on screen; the total duration, voice, backdrop, and character used; and any claim you softened because the page did not support it.
Rules
Never sign up, log in, fill a form, or press buy, send, delete, invite, or contact. Do not use any account. Do not capture pages behind a login. Do not edit the page's DOM to fake a state. Do not create any file in the project checkout other than the declared output.