Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create polished 60 fps 4:3 4K browser screen-recording style videos from Codex in-app browser captures, with browser-only crop, natural macOS cursor styling, deliberate click choreography, zoom-follow framing, ffprobe/thumbnail verification, and optional native recording compatibility checks. Use when the user asks to record or re-record browser actions, show cursor clicks and zooms, make Dribbble/UI inspiration or product demo recordings, or asks whether Codex, Playwright, or an MCP can produce
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 118% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 70% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 199% | 0% |
Separate the workflow into three layers:
This skill is enough for another Codex instance to perform the Python rendering as long as the full skill folder is installed, including scripts/render_browser_demo.py. Codex should run the bundled script instead of recreating the renderer.
Required local tools:
python3Pillowffmpeg and ffprobeOptional macOS cursor extraction uses swift and /usr/sbin/screencapture. If those are unavailable, provide a transparent PNG through cursor_asset and set cursor_hotspot in the config.
The Browser skill/MCP is still needed for fresh Codex in-app browser screenshots. If it is unavailable, use the best available browser automation screenshot source and state the fallback.
For native app recording, verify the MCP supports:
frameRate: 60.resolutionRawValue: "4K".ratioPresetRawValue: "4:3" for region recordings.selectedRegionOnScreen when cropping to an embedded browser viewport.For the local renderer, 4K 4:3 means 3840x2880. If a native recorder exposes a 4K enum, treat it as an app-side resolution preset and pair it with 4:3 region selection when recording through that MCP.
Use browser:control-in-app-browser first. After loading its docs, drive the in-app browser with the Node/browser API:
1920x1440 for 4:3 4K output, then reset it before finishing.01-results-top.png, 02-after-card-click.png, 03-back-results.png.Avoid desktop coordinate automation unless the user explicitly needs system UI. Codex browser visibility may not expose a capturable macOS surface; screenshots from the browser API are the reliable source.
Make the cursor feel purposeful:
Default visual target:
3.0, matching the large cursor style commonly used in edited demo recordings.15 for a subtle click scale dip.8deg, only from horizontal velocity.Use scripts/render_browser_demo.py for deterministic 60 fps 4:3 4K output:
bashpython3 /path/to/browser-video-recording/scripts/render_browser_demo.py \ --config /tmp/browser-demo-config.json \ --output /tmp/browser-demo-4x3-4k-60fps.mp4
Generate a starter config:
bashpython3 /path/to/browser-video-recording/scripts/render_browser_demo.py --write-template
The config supplies:
shots: map of state names to screenshot PNG paths.scene_starts: [time, shotName, transition] entries.cursor_keys: [time, x, y] viewport-coordinate entries.camera_keys: [time, x, y, zoom] entries.click_times: click timestamps.duration, fps, output_size, source_size, cursor_scale.Preferred defaults:
json{ "fps": 60, "output_size": [3840, 2880], "source_size": [1920, 1440] }
If cursor_asset is omitted, the script briefly shows a solid-color overlay and uses screencapture to extract the real current macOS cursor into a transparent PNG. This is local rendering support, not an MCP dependency.
Always verify the delivered video:
bashffprobe -v error \ -show_entries stream=codec_name,width,height,r_frame_rate \ -show_entries format=duration,size \ -of json /path/to/output.mp4
Extract at least one mid-video thumbnail and inspect it:
bashffmpeg -y -ss 8 -i /path/to/output.mp4 -frames:v 1 -update 1 /tmp/browser-demo-thumb.png
Confirm:
3840x2880 for 4:3 4K.60/1 or equivalent.Other measured skills in the registry, with their headline benchmark lift.