Files
hyperframes/docs/guides/product-launch-video.mdx
T
ukimsanov 592301248e fix(scripts): drop the catalog poster instead of guarding it, and cut the encode pass down
**The poster guard I added twice was unworkable and I never ran it.** It called
existsSync on docs/images/catalog/<name>.png. That directory is gitignored —
previews are generated locally, uploaded to the CDN and never committed — so the
check is false on every clean checkout and in CI. It would have stripped the
poster from all 168 pages, not the 13 with a missing file. It also referenced
REPO_ROOT, which does not exist in that file, so the script crashed on the first
item. I described this guard in two commit messages without once executing the
generator.

The poster is now gone entirely, which is the smaller and more honest fix. These
previews are autoPlay muted loop, so the poster is visible for a few hundred
milliseconds; 13 of the 168 files do not exist and the browser fetches the poster
before the video. Removing the attribute kills 13 x 403 and 168 needless image
requests, and there is nothing to keep in sync.

Also applied a complexity pass to the delivery encode:
- hasAudio() deleted. 17 lines and a spawnSync per item to choose between
  "-c:a aac" and "-an". ffmpeg ignores -c:a when the input has no audio stream;
  checked, exit 0, output carries no audio track.
- The 40-line spawn + Promise wrapper is execFileSync. Everything around it in
  that script is already synchronous.
- The duplicated poster lookup is gone with the poster itself.

Net 76 lines lighter. Generator runs clean, emits 168 pages, carry-forward intact.
2026-08-04 12:52:26 -07:00

85 lines
3.7 KiB
Plaintext

---
title: "Create a product or website video"
sidebarTitle: "Product or website"
description: "Turn a product URL or launch brief into a promo, product tour, or social video."
---
import { DocsVideo } from "/snippets/docs-video.jsx";
Give HyperFrames the real URL when the product, website, or brand should appear in the result.
<DocsVideo
title="A launch film built by this workflow from huly.io, end to end"
src="https://static.heygen.ai/hyperframes-oss/docs/images/showcase/product-launch-huly-v4.mp4"
poster="https://static.heygen.ai/hyperframes-oss/docs/images/showcase/product-launch-huly-v4.jpg"
/>
Built by running this workflow on a real site. The screens are captured from
huly.io, not mocked — which is the point: you give it a URL and it works from
what is actually there.
## Make the request
Give the agent the real product URL and the result you want:
```text
Using /hyperframes, make a 30-second launch video for https://example.com.
```
The agent inspects the product, proposes a direction, and confirms anything
important that the request did not settle. Add an audience, required claim, or
final action when one must be exact; you do not need to specify every scene.
## What should the video do?
- **Launch video** — turn real product evidence into a persuasive story with one clear action at the end.
- **Product tour** — show one complete task through the product's real screens, from the first action to the result.
- **Short social video** — prove one useful point quickly, show the evidence, and stop after the payoff.
A tour features the product as it exists. A launch video rearranges the same evidence into a persuasive story. A social video proves one point and ends.
If you already have approved wording, paste the script and say whether it must remain verbatim. Say **do not capture the website** when the video should use only the supplied brief.
Use a [faceless explainer](/guides/faceless-explainer) instead when there is no product to show and the visuals should be invented.
## What HyperFrames builds from
<div className="my-5 grid gap-3 sm:grid-cols-3">
<div className="border-b border-zinc-200 pb-3 dark:border-zinc-800">
<div className="font-medium">Real screens</div>
<div className="mt-1 text-sm text-zinc-500">
The interface and product states worth showing.
</div>
</div>
<div className="border-b border-zinc-200 pb-3 dark:border-zinc-800">
<div className="font-medium">Product language</div>
<div className="mt-1 text-sm text-zinc-500">Claims, features, proof, and the final action.</div>
</div>
<div className="border-b border-zinc-200 pb-3 dark:border-zinc-800">
<div className="font-medium">Brand system</div>
<div className="mt-1 text-sm text-zinc-500">Color, type, imagery, motion, and sound.</div>
</div>
</div>
HyperFrames can animate captured product material or rebuild only the part that needs to move. A raw screen recording is not the default.
## Review the result
- Every product claim is current.
- The shown states are realistic and use no private material.
- The important interface remains readable while the video plays.
- The opening proves the product quickly and the ending asks for one clear action.
Ask the agent for a broader story revision. Use Studio for a direct visual or
timing change. Render from the agent, Studio, or the CLI when the result is ready.
<Card title="Finish and share" icon="circle-check" href="/guides/export-and-share">
Check the final project, render it from your preferred surface, and review the file.
</Card>
## Related topics
- [Create a faceless explainer when there is no product to show](/guides/faceless-explainer)
- [Edit the finished project in Studio](/studio)
- [Prompt for product-launch videos](/prompting/product-launch)