Browser Tutorial Video
Metadata
- Trigger when: the requested artifact is a real browser tutorial video, not just instructions or a script.
- Do not use when: the task is only browser inspection, a generic narrated video, or a Playwright test suite.
Skill Purpose
Produce polished browser tutorial MP4 artifacts from a described workflow by
combining Playwright browser control, custom cursor/highlight overlays, click
audio, ffmpeg rendering, and visual verification.
For implementation details and snippets, read
references/playwright-ffmpeg-pattern.md
when building or modifying a recorder.
For final-render QA, read references/qa-pattern.md
and use scripts/tutorial_video_qa.js when the video has a click timeline or
long-scroll/PDF checkpoints.
For repeatable jobs, read references/job-spec.md, use
templates/tutorial-job.json as the input contract, and start simple jobs with
scripts/scaffold_tutorial_job.js plus scripts/run_tutorial_job.js.
For optional external helpers, read
references/external-tool-watchlist.md
only when deciding whether to add Remotion, Stagehand, pixelmatch, rrweb, or a
recording wrapper to a specific project.
Workflow
Pin the requested flow.
- Capture the URL, exact navigation steps, language variants, allowed
overlays, click sound, zoom, resolution, FPS, and output file names.
- Confirm the workflow is public, user-owned, demo-account based, or
otherwise explicitly authorized.
- For repeatable work, create a tutorial job spec instead of relying on chat
memory.
- If the user provides enough detail, act directly. Ask only when missing
information changes the artifact.
Inspect the live target with the same browser style used for recording.
- Use Playwright with persistent Chrome when the site is sensitive to
automation, plus the final viewport, locale, and user agent.
- For changing websites, discover current selectors and localized text from
the DOM before editing the recorder.
- Prefer functional selectors, roles, and hrefs over fragile visible text.
- For localized pages, put labels and URLs in a config map.
Build or adapt a repo-local recorder.
- For simple selector/text/scroll jobs, try
scripts/run_tutorial_job.js
first.
- For complex sites, PDFs, localization, downloads, or fragile flows, adapt a
repo-local recorder using the Playwright + ffmpeg pattern.
- Use a high-resolution viewport such as
2560x1440 and render at 60 fps
when the user asks for quality.
- Hide or pre-accept cookie banners before recording unless requested.
- Apply page zoom intentionally while excluding the overlay.
- Inject an overlay with a large custom cursor, target highlight, and click
ripple. Hide the native cursor.
- Keep a global cursor position and reinstall the overlay after navigation
using that position so the cursor does not teleport.
- For each click target: show the highlight first, pause briefly, animate the
cursor to the highlighted target, click, then show the ripple.
- Log click timestamps and coordinates for later audio mixing.
Capture and render.
- Use Chrome DevTools screencast frames at high JPEG quality for normal
browser motion.
- If browser-native PDF scrolling records at low FPS, stop screencast and
capture manual screenshots at the target FPS while scrolling.
- For PDFs, download the file and open it in a local HTML viewer with browser
PDF parameters such as
#toolbar=1&navpanes=0&zoom=150.
- Decode the click MP3 with ffmpeg to mono 48 kHz float samples, mix it at
logged click times, write a WAV click track, and encode final audio as AAC.
- Render the final MP4 with H.264,
yuv420p, BT.709 color metadata,
+faststart, and a low CRF such as 10.
Verify before claiming completion.
- Run syntax checks on the recorder.
- Inspect the MP4 with
ffprobe: width, height, video FPS, audio codec,
sample rate, duration, and size.
- If a click timeline exists, run
scripts/tutorial_video_qa.js to extract
pre-click, post-click, interval, and long-scroll checkpoint frames plus a
contact sheet.
- Check the click timeline JSON includes the expected click sound and click
count.
- Extract control frames around each click: one before the click to confirm
the highlight appears before the cursor arrives, one at or after click for
the ripple, and one near any PDF or long-scroll ending.
- View representative frames before the final response.
Quality Rules
- Do not add instructional text overlays when the user asked for a clean
recording; keep only cursor, highlight, and click effects.
- Prefer recording at the final high resolution over upscaling a low-resolution
capture.
- Preserve smoothness by capturing enough source frames; do not rely on nominal
output FPS alone.
- When a site blocks default headless automation, switch to persistent Chrome
with a realistic user agent and the same setup used for final capture.
- Avoid waiting on localized modal titles when a stable functional element
exists.
- Keep outputs separate by locale or variant so rerenders do not overwrite
completed videos.
- Keep Remotion, Stagehand, rrweb, and other helpers optional. The final
recording path should stay deterministic Playwright plus ffmpeg unless a
project-specific need justifies extra moving parts.
Output
- MP4 video artifact paths.
- Verification summary: syntax check,
ffprobe metadata, click count, and QA
frame checks.
- Contact sheet and QA summary paths when
scripts/tutorial_video_qa.js was
used.
- Any residual limitation, such as target-site layout drift, PDF viewer
behavior, or authorization boundaries.
1---2name: browser-tutorial-video3description: Use when recording a browser walkthrough, app tutorial, screencast, PDF scroll, highlighted clicks, localized demo video, or polished browser automation MP4 with Playwright and ffmpeg.4---56# Browser Tutorial Video78## Metadata9- Trigger when: the requested artifact is a real browser tutorial video, not just instructions or a script.10- Do not use when: the task is only browser inspection, a generic narrated video, or a Playwright test suite.1112## Skill Purpose1314Produce polished browser tutorial MP4 artifacts from a described workflow by15combining Playwright browser control, custom cursor/highlight overlays, click16audio, ffmpeg rendering, and visual verification.1718For implementation details and snippets, read19[references/playwright-ffmpeg-pattern.md](references/playwright-ffmpeg-pattern.md)20when building or modifying a recorder.2122For final-render QA, read [references/qa-pattern.md](references/qa-pattern.md)23and use `scripts/tutorial_video_qa.js` when the video has a click timeline or24long-scroll/PDF checkpoints.2526For repeatable jobs, read [references/job-spec.md](references/job-spec.md), use27`templates/tutorial-job.json` as the input contract, and start simple jobs with28`scripts/scaffold_tutorial_job.js` plus `scripts/run_tutorial_job.js`.2930For optional external helpers, read31[references/external-tool-watchlist.md](references/external-tool-watchlist.md)32only when deciding whether to add Remotion, Stagehand, pixelmatch, rrweb, or a33recording wrapper to a specific project.3435## Workflow36371. Pin the requested flow.38 - Capture the URL, exact navigation steps, language variants, allowed39 overlays, click sound, zoom, resolution, FPS, and output file names.40 - Confirm the workflow is public, user-owned, demo-account based, or41 otherwise explicitly authorized.42 - For repeatable work, create a tutorial job spec instead of relying on chat43 memory.44 - If the user provides enough detail, act directly. Ask only when missing45 information changes the artifact.46472. Inspect the live target with the same browser style used for recording.48 - Use Playwright with persistent Chrome when the site is sensitive to49 automation, plus the final viewport, locale, and user agent.50 - For changing websites, discover current selectors and localized text from51 the DOM before editing the recorder.52 - Prefer functional selectors, roles, and hrefs over fragile visible text.53 - For localized pages, put labels and URLs in a config map.54553. Build or adapt a repo-local recorder.56 - For simple selector/text/scroll jobs, try `scripts/run_tutorial_job.js`57 first.58 - For complex sites, PDFs, localization, downloads, or fragile flows, adapt a59 repo-local recorder using the Playwright + ffmpeg pattern.60 - Use a high-resolution viewport such as `2560x1440` and render at `60 fps`61 when the user asks for quality.62 - Hide or pre-accept cookie banners before recording unless requested.63 - Apply page zoom intentionally while excluding the overlay.64 - Inject an overlay with a large custom cursor, target highlight, and click65 ripple. Hide the native cursor.66 - Keep a global cursor position and reinstall the overlay after navigation67 using that position so the cursor does not teleport.68 - For each click target: show the highlight first, pause briefly, animate the69 cursor to the highlighted target, click, then show the ripple.70 - Log click timestamps and coordinates for later audio mixing.71724. Capture and render.73 - Use Chrome DevTools screencast frames at high JPEG quality for normal74 browser motion.75 - If browser-native PDF scrolling records at low FPS, stop screencast and76 capture manual screenshots at the target FPS while scrolling.77 - For PDFs, download the file and open it in a local HTML viewer with browser78 PDF parameters such as `#toolbar=1&navpanes=0&zoom=150`.79 - Decode the click MP3 with ffmpeg to mono 48 kHz float samples, mix it at80 logged click times, write a WAV click track, and encode final audio as AAC.81 - Render the final MP4 with H.264, `yuv420p`, BT.709 color metadata,82 `+faststart`, and a low CRF such as `10`.83845. Verify before claiming completion.85 - Run syntax checks on the recorder.86 - Inspect the MP4 with `ffprobe`: width, height, video FPS, audio codec,87 sample rate, duration, and size.88 - If a click timeline exists, run `scripts/tutorial_video_qa.js` to extract89 pre-click, post-click, interval, and long-scroll checkpoint frames plus a90 contact sheet.91 - Check the click timeline JSON includes the expected click sound and click92 count.93 - Extract control frames around each click: one before the click to confirm94 the highlight appears before the cursor arrives, one at or after click for95 the ripple, and one near any PDF or long-scroll ending.96 - View representative frames before the final response.9798## Quality Rules99100- Do not add instructional text overlays when the user asked for a clean101 recording; keep only cursor, highlight, and click effects.102- Prefer recording at the final high resolution over upscaling a low-resolution103 capture.104- Preserve smoothness by capturing enough source frames; do not rely on nominal105 output FPS alone.106- When a site blocks default headless automation, switch to persistent Chrome107 with a realistic user agent and the same setup used for final capture.108- Avoid waiting on localized modal titles when a stable functional element109 exists.110- Keep outputs separate by locale or variant so rerenders do not overwrite111 completed videos.112- Keep Remotion, Stagehand, rrweb, and other helpers optional. The final113 recording path should stay deterministic Playwright plus ffmpeg unless a114 project-specific need justifies extra moving parts.115116## Output117118- MP4 video artifact paths.119- Verification summary: syntax check, `ffprobe` metadata, click count, and QA120 frame checks.121- Contact sheet and QA summary paths when `scripts/tutorial_video_qa.js` was122 used.123- Any residual limitation, such as target-site layout drift, PDF viewer124 behavior, or authorization boundaries.