PTENES
MODULE 4.2

🚀 Onboarding, lessons & launches

From product onboarding to video changelogs—how to apply HyperFrames in six real-world scenarios where short narrated videos deliver more results with less effort.

6
Topics
35
Minutes
Practical
Level
Cases
Type
HyperFrames SCRIPT.md → MP4 🧭 Onboarding feature in ~90s 🎓 Micro-lesson narrated concept 📣 Launch video changelog 🧑‍🤝‍🧑 Team internal alignment 📄 Video docs regenerates during the build 🎨 House style brand palette ① SCRIPT.md

One pipeline, six real-world applications

1

🧭 Product onboarding

Explaining a new feature in ~90 seconds is HyperFrames' most immediate use case. Instead of a static screenshot tour, you deliver a narrated MP4 that users watch in the app itself — and can regenerate whenever the feature changes.

Why video instead of a carousel of screenshots?

Screenshots age: with every release, the UI changes and the carousel becomes outdated. With HyperFrames, SCRIPT.md is the source of truth. You edit the script, run node build-index.mjs && npx hyperframes render and have a new video in minutes — no editor, no screen recorder.

Workflow for a feature onboarding
1

Writing SCRIPT.md

6 scenes, ~100 seconds of narration in total. Describe the feature from the user's point of view, not the developer's.

2

Generate narration with Kokoro

Voice pf_dora --speed 0.98, measure duration with ffprobe, fill in AUDIO[] in the generator.

3

Compose scenes in build-index.mjs

Each scene = one UI state recreated in premium dark HTML. Use GSAP to animate entrances and highlights.

4

Render and distribute

npx hyperframes render --quality high --output renders/onboarding-v2.mp4 — upload it to a CDN or embed it directly in the app.

✓ Best practices for onboarding
  • ✓ 1–3 sentences of narration per scene (≤20 s)
  • ✓ UI recreated in HTML, not a real screenshot
  • ✓ Final CTA with a direct link to the feature
  • ✓ 9:16 version for mobile onboarding
✗ Common errors
  • ✗ 5+ minute video — user drops off after 30 s
  • ✗ Screenshots instead of HTML (becomes outdated)
  • ✗ Very fast narration — use --speed 0.98, not 1.2
  • ✗ No silent version: forgetting to rerender after an update
💡
Tip: semantic versioning in the file name

Name the renders onboarding-v1.mp4, onboarding-v2.mp4. This way, the CDN doesn't cache the old video, and you keep a history for rollback.

Key concepts
⏱️
~90 s
ideal duration
🔄
Regenerable
with each release
📱
9:16 mobile
in-app onboarding
🎙️
pf_dora
local PT-BR voice
2

🎓 Micro-lessons and courses

Turning a concept into a short narrated lesson — with animated code, an SVG diagram, and synchronized captions — is what HyperFrames does best. Each lesson is a SCRIPT.md; a course is a folder of SCRIPTs.

Example prompt — asking Claude for a micro-lesson
# Paste into Claude Code (with the video-explicativo skill active)
Create an explanatory video about
"JavaScript closures".
- 6 scenes, ~90 s of narration
- Show animated code in scene 3
- Final scene: CTA for the full course
- 16:9 + 9:16 format
Palette: standard premium dark
(bg #0D1321, accent #FFC300)
Recommended structure for a micro-lesson
Scene 1 — Hook
Everyday question or problem. ≤15 s.
Scenes 2–5 — Concept
Progressive explanation with code or a diagram. ~60 s total.
Scene 6 — CTA
Link to the full lesson or next video. ≤10 s.
💡
CAPTIONS[] increase retention by up to 40%

The array CAPTIONS[] no build-index.mjs defines the captions synchronized with the audio. For micro-lessons, fill in every scene — people watching without sound (LinkedIn feed, phone on silent) can still absorb the content.

📊 Real micro-lesson metrics (~90 s format)
Completion rate
~65–80% for videos ≤2 min vs ~30% for videos ≥10 min.
Production cost
R$ 0,00 per video — local TTS, local rendering, no subscription.
Update time
Edit SCRIPT.md + rerender: ~5 minutes of human work.
Key concepts
📝
SCRIPT.md
source of truth
💬
CAPTIONS[]
synced caption
🎬
6 scenes
standard structure
📐
16:9 + 9:16
two formats
3

📣 Launch / video changelog

Announcing a release with a narrated video instead of a text post increases engagement—especially on LinkedIn and the product’s Discord channel. HyperFrames produces the changelog video in the same CI that publishes the release.

⚠️
The textual changelog trap

Release notes posts are ignored by 80%+ of users. Videos that are 60–90 s long, with narration and animation of the new feature, have 3–5× higher open rates on channels like Discord, Slack, and product email.

Sample script — changelog scene
# assets/txt/s1.txt — scene 1 narration from the changelog
Version two point three is live.
Three improvements you'll notice
on first use.

# Generate the WAV:
npx kokoro-tts assets/txt/s1.txt \
--voice pf_dora --speed 0.98 \
--output assets/audio/s1.wav

# Measure the duration:
ffprobe -v error -show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 \
assets/audio/s1.wav
# → e.g.: 5.82 (seconds) — put it in AUDIO[0]
✓ Effective video changelog
  • ✓ Focus on 3 changes, not all 47 from the release
  • ✓ Show the animated “before” and “after”
  • ✓ 9:16 version for Stories/Reels of the product
  • ✓ Automate in CI: npx hyperframes render in the release pipeline
✗ What to avoid
  • ✗ Listing fixed bugs — the user doesn’t care
  • ✗ More than 2 minutes long — attention drops
  • ✗ Narrate internal company jargon ("service layer refactor")
  • ✗ Forget the CTA: "update now at inema.club/app"
Key concepts
📣
Narrated changelog
video > text
🤖
CI/CD
render in the pipeline
🔢
Max 3 features
focus increases impact
4

🧑‍🤝‍🧑 Explain a technical concept to the team

Align internal understanding without a meeting. A 90-second video explains an architectural decision, a new coding standard, or a deploy process — and stays available for asynchronous reference in Notion, Confluence, or a Slack channel.

Async beats meetings for technical understanding

Alignment meetings have a high attention cost and low retention. A narrated 90-second video with an animated diagram and real code can be paused, rewound, and watched when the developer is focused — not when they were summoned.

Asynchronous video vs. alignment meeting
Aspect HyperFrames video Synchronous meeting
Team time cost 90 s per person 30–60 min × N devs
Availability Asynchronous, 24/7 Depends on scheduling
Content retention Can pause/review Depends on notes
Update Rerun the build New meeting
💡
An inline SVG diagram is ideal for technical concepts

Use the function sceneN() of the build-index.mjs to inject futuristic SVG with animated arrows (GSAP gsap.from() + stagger) showing the system flow. Much clearer than a text slide.

Key concepts
🔀
Asynchronous
without blocking the schedule
📐
Animated SVG
visual architecture
📎
Notion/Confluence
permanent embed
🔄
Rerunnable
updates without a meeting
5

📄 Video documentation that doesn’t go stale

The biggest complaint about video documentation is that it becomes outdated within weeks. With HyperFrames, the video is a build artifact—when the content changes, just edit SCRIPT.md and run the build again. No video editor needed.

Video documentation update cycle
1

APIs change—docs become outdated

Renamed endpoint, new parameter, changed behavior. The old video is out of date.

2

Edit SCRIPT.md e assets/txt/sN.txt

Adjust the narration lines and HTML for the affected scene. ~5 minutes of work.

3

Rerun narration only for the changed scenes

npx kokoro-tts assets/txt/s3.txt --voice pf_dora --speed 0.98 --output assets/audio/s3.wav

4

Rebuild and render

node build-index.mjs && npx hyperframes lint && npx hyperframes render --quality high --output renders/docs-api-v3.mp4

✓

Updated video published

From zero to a new MP4: ~10 min. No opening a video editor, no recording the screen again.

🗂️ Recommended project structure for video docs
docs-api/
SCRIPT.md # script
build-index.mjs # generator
design.md # brand house style
assets/
txt/s1.txt … s6.txt
audio/s1.wav … s6.wav
fonts/*.woff2 + fonts.css
renders/
docs-api-v1.mp4
docs-api-v2.mp4
docs-api-v3.mp4 # ← current
Key concepts
🏗️
Build artifact
MP4 = CI output
✏️
~5 min to edit
to update
📌
Versioned
render history
🔒
Local-first
without cloud services or costs
6

🎨 Adapt the house style to the client's brand

HyperFrames has a default premium dark palette (#0D1321 bg, #FFC300 accent). But the design.md is the only file you need to replace to adapt the entire look to a different brand—while keeping the whole pipeline.

What changes when you switch design.md

Changes with design.md:

  • ✓ Background color (bg)
  • ✓ Accent color (buttons, borders, highlights)
  • ✓ Fonts (headings, body, monospace)
  • ✓ Final CTA color and text
  • ✓ Company logo/icon in the opening scene

Doesn't change (the pipeline remains the same):

  • — Scene structure (SCRIPT.md)
  • — TTS (pf_dora, Kokoro local)
  • — Render (headless Chrome + FFmpeg)
  • — npx hyperframes lint/render commands
Example of design.md for a fictional "FinovaTech" brand
# design.md — FinovaTech (replace with the client's brand design file)
bg: "#0A0F1E" # dark navy
panel: "#111827" # panel
border: "#1E3A5F" # subtle border
text: "#E2F0FF" # main text
accent: "#00C2FF" # FinovaTech blue
code: "#7FDBFF" # code/monospace
font_title: "Plus Jakarta Sans"
font_body: "Inter"
font_code: "Fira Code"
cta_text: "Open your account at finovatech.com"
cta_url: "https://finovatech.com/abrir"
✓ Effective brand adaptation
  • ✓ Always use a dark background (premium dark — don't give in to the "white background")
  • ✓ Accent with ≥4.5:1 contrast against the background
  • ✓ Title font with weight 700 or 800
  • ✓ Test with npx hyperframes inspect --samples 16 before delivering
✗ Customization pitfalls
  • ✗ White background — antialiased fonts look pixelated in the render
  • ✗ Very light accent (e.g., #FFFF00) — obscures the text
  • ✗ Change the LEAD/TAIL/FADE without testing (LEAD=0.5 TAIL=0.9 FADE=0.45 are the validated values)
  • ✗ Use a font unavailable on Google Fonts — it breaks the fetch-fonts.mjs
💡
LEAD, TAIL, and FADE: scene timings

The values LEAD=0.5 (silence before narration), TAIL=0.9 (pause after narration) and FADE=0.45 (fade duration between scenes) were calibrated for the voice pf_dora --speed 0.98. If you change the voice or speed, recalibrate these values.

Key concepts
🎨
design.md
only file to replace
⏱️
LEAD/TAIL/FADE
0.5 / 0.9 / 0.45
🔤
Google Fonts
fetch-fonts.mjs
🌑
Dark premium
always a dark background

📋 Module 4.2 Summary

What you learned
  • ✓ Product onboarding: narrated video in ~90 s, regenerable with every release
  • ✓ Micro-lessons: 6-scene structure with CAPTIONS[] for accessibility
  • ✓ Video changelog: max. 3 features, product-focused narration
  • ✓ Asynchronous technical alignment: animated SVG replaces a 30-minute meeting
  • ✓ Video docs: MP4 is a build artifact, update in ~10 min
  • ✓ Brand adaptation: only design.md changes — the entire pipeline stays the same
Values and commands to remember
  • → pf_dora --speed 0.98 — default Brazilian Portuguese voice
  • → LEAD=0.5 / TAIL=0.9 / FADE=0.45 — validated timings
  • → npx hyperframes lint before every render
  • → npx hyperframes inspect --samples 16 to check the layout
  • → bg #0D1321 / accent #FFC300 — standard premium dark palette
  • → --quality high for the final render (not a draft)
Next module:
4.3

🧰 Prompt library

Collection of ready-to-use prompts for the most common use cases — onboarding, micro-lesson, changelog, and more.