by mutonby
Desktop multicam recorder for macOS: records your screen and webcam in sync, then Claude Code or Codex edits the final video — shot selection, subtitles, graphics and SFX.
# Add to your Claude Code skills
git clone https://github.com/mutonby/vibetubeSee how vibetube compares with popular alternatives.
vibetube is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by mutonby. Desktop multicam recorder for macOS: records your screen and webcam in sync, then Claude Code or Codex edits the final video — shot selection, subtitles, graphics and SFX. It has 58 GitHub stars.
vibetube's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/mutonby/vibetube" and add it to your Claude Code skills directory (see the Installation section above).
vibetube is primarily written in JavaScript. It is open-source under mutonby on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh vibetube against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Desktop multicam recorder (macOS / Electron). It captures your screen and your webcam + microphone in sync, organises them into projects made of several clips, and hands the folder to an AI coding agent — Claude Code or Codex — which edits the final video for you: automatic shot selection (full-cam / screen / PiP), subtitles, HyperFrames graphics and sound effects.
Then it publishes it. The same agent reads the subtitles of the finished cut and writes five title options and a description with real chapters, and Upload-Post pushes the video straight to YouTube, TikTok, Reels and the rest — you never open a browser. See Publishing to YouTube & co. below.
You record. The agent edits and publishes.

flowchart LR
S["🖥️ Screen<br/>(no audio)"] --> R
W["🎥 Webcam + 🎙️ mic<br/>(the only audio)"] --> R
R["<b>VibeTube</b><br/>N synced clips"] --> P[("Project folder<br/>clips/ + sync.json")]
P --> A{"<b>Agent</b><br/>Claude Code<br/>or Codex"}
A --> V["<b>video-use</b> skill<br/>transcribe → pick shots → cut"]
V --> G["HyperFrames graphics<br/>+ HeyGen SFX + subtitles"]
G --> H["edit/final.mp4<br/>1920×1080"]
G --> N["edit/final_9x16.mp4<br/>1080×1920"]
H --> U["<b>Upload-Post</b><br/>YouTube, TikTok, Reels…"]
N --> U
Every clip keeps two tracks on one timeline: screen.webm carries the picture only, and
webcam.webm carries your camera and the microphone — it is the single source of audio for
the whole project. sync.json stores the offset between them, so the editor can cut between
shots without ever breaking the voice.
What happens to each clip before the agent sees it:
flowchart LR
C["Raw take"] --> B["Background replaced<br/>MatAnyone2 · on-device"]
B --> E["Voice cleaned<br/>NVIDIA Studio Voice"]
E --> Q["Validated<br/>frames · size · audio hash"]
Q --> D["clips/clip_NN/"]
desktopCapturer plus the Screen Recording permission)ffmpeg on your PATH (Homebrew recommended)video-use skill with ffmpeg and ELEVENLABS_API_KEYUPLOAD_POST_API_KEY) in ~/.config/record-studio/.envNVIDIA_API_KEY or NGC_API_KEY in
~/.config/record-studio/.env)npm install
npm start
macOS permissions: the first time, grant Screen Recording, Camera and Microphone to the app (or to Electron in dev mode) under System Settings → Privacy & Security, then relaunch. If the screen preview is black, check that permission and that the selected source still exists.

In the top bar, Agent → Codex switches the agent used for the next edits, iterations, style analysis and scripts. The choice persists across restarts; Claude Code is the default. Tasks and terminals that are already running stay on the agent they started with.
To use Codex, install its CLI and sign in:
npm install -g @openai/codex
codex login
Automatic editing runs codex exec --json, and the built-in terminal opens Codex interactively.
Both use workspace-write with network access for research and downloads; automatic tasks never
ask for approvals, while the terminal does let you approve actions. The model is inherited from
your Codex configuration. See Codex non-interactive mode.
Each project keeps one conversation per provider: switching to Codex starts its own thread and
you can come back to the Claude one later. The interactive terminal resumes the provider's last
session in that folder. The montage brief is written to AGENTS.md for Codex and CLAUDE.md for
Claude, preserving any instructions already there. Both are given the path to the video-use skill
bundled with this app.

edit/final.mp4 exists.clip_02, clip_03… to the same project.Turn on Keep the interface visible while recording, next to the Record button. The setting persists: the main window stays open and capturable, and the small floating controls appear as usual. Turned off, the main window hides during the take. Select the screen, or the VibeTube window itself, to include the interface in the video.
You can leave the project and open Projects, Scripts or another project without interrupting the take. The recorder keeps writing to the project where the session started, no matter which screen you are showing. Its name is displayed in the floating controls.
Camera and microphone stay available between clips while that session is open. Navigating never changes where the clip is saved, not even when in-memory buffering is used instead of streaming to disk. The session's project cannot be deleted until you end it. Duplicate starts are blocked during the countdown and while saving.
The teleprompter opens in a separate window that stays out of the capture. You can load a script, edit it and restart the read. Line breaks from the original script are preserved.
<root>/<project>/
├── project.json ← metadata + clip list
├── clips/
│ ├── clip_01/ screen.webm webcam.webm webcam_orig.webm webcam_enhanced.wav sync.json
│ ├── clip_02/ ...
│ └── ...
└── edit/ ← written by video-use
├── final.mp4 final_9x16.mp4 final.srt _poster.jpg
└── publish.json ← titles, description with chapters, tags
| File | What it is |
|---|---|
screen.webm |
screen capture (no audio) |
webcam.webm |
your camera + mic (remuxed with studio audio when Studio Voice is on) |
webcam_orig.webm |
backup of the untouched original camera audio/video |
webcam_enhanced.wav |
clean 48 kHz voice track from NVIDIA Studio Voice NIM |
sync.json |
offset between tracks, duration, real dimensions, enhancement status |
project.json |
name, dates and every clip with its metadata |
Open the project folder with the video-use skill and ask for what you want:
"Edit this multicam recording: alternate between my camera and the screen depending on what I'm saying, PiP while I explain over the demo, a HyperFrames intro, and subtitles."
Continuous audio always comes from webcam.webm; only the video shot changes. The full contract
(mapping several clips, multicam EDL format) is in HANDOFF.md.
VibeTube integrates NVIDIA Studio Voice NIM (48k-hq) over gRPC to turn microphone audio
into studio-grade voice: it suppresses room echo, background noise, keyboards and air conditioning,
improving presence and clarity at 48 kHz.
Ways to use it
webcam_orig.webm) and the clean audio is
remuxed into webcam.webm without re-encoding the video.Enhance audio (AI) in the clip list header.Studio voice (NVIDIA) switch (on by default).# One clip:
python video-use/helpers/enhance_voice.py --clip clips/clip_01
# Every clip in the current project:
python video-use/helpers/enhance_voice.py --all
# A standalone audio or video file:
python video-use/helpers/enhance_voice.py --input <file> --output <enhanced.wav>
The helper automatically splits takes longer than 4.5 minutes with a soft crossfade, respecting
the API limits.helpers/transcribe_whisper.py) prefers webcam_enhanced.wav when it
exists, which gives better lexical accuracy and tighter timestamps for subtitles and SFX.~/.config/record-studio/.env:
NVIDIA_API_KEY=nvapi-...
With no key, or offline, the app simply skips enhancement without interrupting recording or
editing.Once the final cut exists, the Result step can send it straight out through [Upload-Post](https://upl