A CLI tool that renders FocuSee screen recording projects into polished MP4 videos — replicating every visual effect FocuSee locks behind its premium paywall.
What it produces:
| Effect | Details |
|---|---|
| Background | Your chosen FocuSee background image, full canvas |
| Rounded corners | Matches your project's round setting |
| Drop shadow | Soft Gaussian shadow behind the recording |
| Cursor overlay | Real arrow / hand / ibeam PNGs at correct size & hotspot |
| Click ripples | Expanding gold rings on every mouse click |
| Auto-zoom | Smooth ease-in/out zoom events, centered on the cursor |
| Audio | System audio merged into the final MP4 via ffmpeg |
- Prerequisites
- One-Time Setup
- Using It (Every Time You Record)
- Command Reference
- VS Code Integration
- File Structure Expected
- How It Works Internally
- Updating the Tool
- Troubleshooting
- New PC Setup
Before you start, make sure these are installed on your PC:
| Tool | Version | Check command | Download |
|---|---|---|---|
| Python | 3.11+ | python --version |
https://python.org/downloads |
| Git | Any | git --version |
https://git-scm.com |
| ffmpeg | Any | ffmpeg -version |
https://www.gyan.dev/ffmpeg/builds |
-
Download the release essentials build from: https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip
-
Extract the zip. Inside you'll find a folder like
ffmpeg-8.x-essentials_build. -
Open it → open
bin→ copyffmpeg.exe. -
Paste
ffmpeg.exeintoC:\Windows\System32\— this makes it available system-wide in any terminal. -
Verify: open a new terminal and run
ffmpeg -version. You should see version info.
Alternative: You can also place
ffmpeg.exedirectly inside each FocuSee project folder. The renderer will find it there automatically if it's not on your system PATH.
You only do this once. After this, every future FocuSee project renders with a single command.
Open a terminal and run:
git clone https://github.com/DeusOfConsensus/focusee-render.git C:\Tools\focusee-renderYou can clone to any folder you like —
C:\Tools\focusee-renderis just a suggestion.
pip install opencv-python Pillow numpyThese three libraries are all the renderer needs beyond the standard library.
pip install -e C:\Tools\focusee-renderThe -e flag means editable install. This means:
- The
focusee-rendercommand is now available in every terminal on your PC. - If you ever edit the source code in
C:\Tools\focusee-render, the changes apply instantly — no reinstall needed.
Verify it worked:
focusee-render --helpYou should see the help text printed. That's it — setup is complete.
Follow the ffmpeg instructions in Prerequisites above.
After you finish a recording in FocuSee and it asks you to upgrade to export:
-
Open the project folder in File Explorer or VS Code. The folder has a
.focuseeextension and lives wherever FocuSee stores projects (usuallyC:\FocuSee\FocuSee Projects\). -
Open a terminal inside that folder. In VS Code: press
Ctrl+`to open the integrated terminal. In File Explorer: right-click inside the folder → "Open in Terminal". -
Run:
focusee-render- Watch the progress bar. When it finishes you'll see (for example):
✅ Done! → C:\...\rendered_output.mp4 (45.2 MB)
- Open
rendered_output.mp4in any video player. Done.
focusee-render [OPTIONS]
Options:
-p, --project PATH Path to the .focusee project folder.
Default: current working directory.
-o, --output PATH Where to save the final MP4.
Default: rendered_output.mp4 inside the project folder.
-h, --help Show this help message and exit.
# Standard usage — run from inside the project folder
cd "C:\FocuSee\FocuSee Projects\FocuSee Project 2026-05-04 10-06-55.focusee"
focusee-render
# Pass the path explicitly from anywhere
focusee-render --project "C:\FocuSee\FocuSee Projects\FocuSee Project 2026-05-04 10-06-55.focusee"
# Save to a custom output location
focusee-render --output "C:\Users\Asmodeus\Videos\tutorial_part1.mp4"
# Both options together
focusee-render -p "C:\Projects\recording.focusee" -o "C:\Videos\output.mp4"You can add a keyboard shortcut so that inside any FocuSee project opened in
VS Code, you press Ctrl+Shift+B and the render starts automatically — no
terminal typing needed.
Create a file called .vscode/tasks.json inside the project folder with this content:
{
"version": "2.0.0",
"tasks": [
{
"label": "Render FocuSee Video",
"type": "shell",
"command": "focusee-render",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": []
}
]
}After saving, press Ctrl+Shift+B in VS Code to start rendering. The output
panel will show the progress bar in real time.
The renderer expects this layout inside the .focusee project folder.
FocuSee creates all of these automatically when you record:
YourProject.focusee/
│
├── configure.focuseeproj ← Project settings (zoom, padding, cursor size…)
│
├── recording/
│ ├── display-0.mp4 ← Raw screen capture video
│ ├── systemaudio-0.m4a ← System audio recording
│ ├── metadata.json ← Session timing and bounds info
│ ├── mousemoves-0.json ← Cursor position at every frame
│ ├── mouseclicks-0.json ← Click events with timestamps
│ ├── keystrokes-0.json ← Keyboard events (not used in render)
│ ├── cursor.json ← Cursor image definitions and hotspots
│ └── cursors/
│ ├── arrow.png ← Arrow cursor image
│ ├── hand.png ← Hand/pointer cursor image
│ └── ibeam.png ← Text cursor image
│
└── resource/
├── background.png ← Full background image
└── background_C.png ← Cropped background (preferred if present)
Output (created by the renderer):
YourProject.focusee/
└── rendered_output.mp4 ← Your final polished video
Understanding this helps you modify the renderer if you want to tweak the output.
All JSON files are loaded at startup. FocuSee uses a slightly invalid JSON format (trailing commas) — the loader strips these automatically before parsing.
The recording is placed inside a padded canvas matching your background.png.
The padding, corner radius, and shadow settings all come from configure.focuseeproj.
For each output frame (30 fps):
- Read the corresponding source frame from
display-0.mp4 - Look up cursor position by interpolating between the two nearest entries
in
mousemoves-0.jsonusing theprocessTimeMstimestamp - Calculate the zoom factor for this moment (from
zoomTracksin the config) - If zoomed: crop the source frame around the cursor, then upscale
- Composite: background → shadow → recording (with rounded corners) → ripples → cursor
- Write the composited frame to a temporary output file
Zoom events are stored as begin and end values between 0.0 and 1.0,
representing fractions of the total recording duration. The renderer converts
these to absolute milliseconds and applies a smooth cubic ease-in/out curve
at the start and end of each zoom event (400ms by default).
After all frames are written, ffmpeg merges systemaudio-0.m4a into the
video and produces the final rendered_output.mp4. The temporary raw video
file is deleted after a successful merge.
When you want to improve the renderer or fix something:
- Open
C:\Tools\focusee-render\focusee_render\render.pyin VS Code. - Make your changes and save.
- Because you installed with
-e(editable), changes apply immediately. No reinstall needed.
cd C:\Tools\focusee-render
git add .
git commit -m "Describe what you changed"
git pushcd C:\Tools\focusee-render
git pullThat's it — since the install is editable, the pulled changes are live instantly.
The editable install did not add the script to your PATH. Try:
pip install -e C:\Tools\focusee-render --force-reinstallIf it still doesn't work, close and reopen your terminal (PowerShell sometimes needs a restart to pick up new PATH entries).
You're running focusee-render from the wrong directory. Make sure you're
inside the .focusee folder (the one that contains configure.focuseeproj),
not outside it.
# Wrong:
cd "C:\FocuSee\FocuSee Projects"
focusee-render
# Correct:
cd "C:\FocuSee\FocuSee Projects\FocuSee Project 2026-05-04 10-06-55.focusee"
focusee-renderEither ffmpeg is not installed, or it's not on your system PATH. Fix options:
Option A — Add ffmpeg to system PATH:
Copy ffmpeg.exe to C:\Windows\System32\
Option B — Place ffmpeg.exe directly in the project folder:
The renderer checks for ffmpeg.exe in the project folder before checking PATH.
This usually means a JSON file is corrupted or truncated. The renderer handles FocuSee's trailing-comma quirk automatically, but if the file is genuinely broken, try re-recording or let me know the error details.
The mp4 file is missing or corrupted. Open File Explorer inside the project
folder and check that recording/display-0.mp4 exists and is not 0 bytes.
Check that configure.focuseeproj exists in the project root and contains
a zoomTracks array. If you added zoom manually in FocuSee after recording,
save the project in FocuSee first so the config updates.
Your recording was done at a non-standard resolution. The renderer reads the
resolution from metadata.json automatically, so this should not happen. If it
does, open metadata.json and check the bounds.width and bounds.height
values in the legacyDisplay recorder entry.
If you get a new PC or reinstall Windows, here's everything you need to do — start to finish:
# 1. Install Python 3.11+ from https://python.org
# 2. Install Git from https://git-scm.com
# 3. Install ffmpeg — copy ffmpeg.exe to C:\Windows\System32\
# 4. Clone this repo
git clone https://github.com/DeusOfConsensus/focusee-render.git C:\Tools\focusee-render
# 5. Install dependencies
pip install opencv-python Pillow numpy
# 6. Install the CLI
pip install -e C:\Tools\focusee-render
# 7. Verify
focusee-render --helpTotal time: about 5 minutes. Then focusee-render works from any project folder.