| name | video-use-install |
|---|---|
| description | Install video-use into the current agent (Claude Code, Codex, Hermes, Openclaw, etc.) and wire up ffmpeg + the ElevenLabs API key so the user can start editing immediately. |
Use this file only for first-time install or reconnect. For daily editing, read SKILL.md. Always read helpers/ — that's where the scripts live.
You're setting up a conversation-driven video editor for the user. After install, the user drops raw footage into any folder, runs their agent (claude, codex, etc.) there, and says "edit these into a launch video." You do the rest by reading SKILL.md.
Three things must exist on this machine:
- The
video-userepo cloned somewhere stable. ffmpegon$PATH(plus optionalyt-dlpfor online sources).- An ElevenLabs API key in
.envat the repo root (for Scribe transcription).
And one thing must be true about the current agent:
- It can discover
SKILL.md— either via a global skills directory (~/.claude/skills/,~/.codex/skills/) or via aCLAUDE.md/ system-prompt import.
- Do everything yourself. Only ask the user for things you cannot generate — the ElevenLabs API key, and confirmation before
brew install. - Prefer a stable clone path like
~/Developer/video-use(not/tmp, not~/Downloads). - The skill references helpers by bare name (
transcribe.py,render.py). That works because SKILL.md andhelpers/ship together — keep them as siblings when you register the skill. - After install, verify by running one real command against one real file. Don't declare success on file-existence checks alone.
test -d ~/Developer/video-use || git clone https://github.com/browser-use/video-use ~/Developer/video-use
cd ~/Developer/video-useIf the repo is already there, git pull --ff-only and continue.
# Prefer uv if available; fall back to pip.
command -v uv >/dev/null && uv sync || pip install -e .pyproject.toml lists requests, librosa, matplotlib, pillow, numpy. No console scripts — helpers are invoked directly as python helpers/<name>.py.
ffmpeg and ffprobe are hard requirements. yt-dlp is only needed if the user wants to pull sources from URLs. Animation engines such as HyperFrames, Remotion, and Manim are installed lazily the first time a project actually needs them.
# macOS
command -v ffmpeg >/dev/null || brew install ffmpeg
command -v yt-dlp >/dev/null || brew install yt-dlp # optional
# Debian / Ubuntu
# sudo apt-get update && sudo apt-get install -y ffmpeg
# pip install yt-dlp
# Arch
# sudo pacman -S ffmpeg yt-dlpIf brew / apt / pacman requires a sudo prompt, tell the user the exact command and wait. Do not invent a password.
Figure out which agent you are running under, and register once. A symlink of the whole repo directory is the right shape — helpers/ needs to sit next to SKILL.md.
-
Claude Code (
~/.claude/present):mkdir -p ~/.claude/skills ln -sfn ~/Developer/video-use ~/.claude/skills/video-use
-
Codex (
$CODEX_HOMEset, or~/.codex/present):mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills" ln -sfn ~/Developer/video-use "${CODEX_HOME:-$HOME/.codex}/skills/video-use"
-
Hermes / Openclaw / another agent with a skills directory: symlink
~/Developer/video-useinto that agent's skills directory under the namevideo-use. If the agent has no skills directory, add a line to its system prompt / config pointing at~/Developer/video-use/SKILL.md(e.g. an@~/Developer/video-use/SKILL.mdimport in aCLAUDE.md-equivalent).
If you can't tell which agent you're in, ask the user once: "which agent am I running under — Claude Code, Codex, or something else?" Then pick the right target.
Scribe (ElevenLabs) does all transcription. Without a key, nothing transcribes.
-
Check existing state in this order and stop at the first hit:
# a) env var already exported [ -n "$ELEVENLABS_API_KEY" ] && echo "env" # b) .env at repo root already has it grep -q '^ELEVENLABS_API_KEY=..' ~/Developer/video-use/.env 2>/dev/null && echo "dotenv"
-
If neither is set, ask the user exactly once:
I need an ElevenLabs API key for transcription (word-level timestamps, speaker diarization, filler tagging). Grab one at https://elevenlabs.io/app/settings/api-keys and paste it here — I'll write it to
~/Developer/video-use/.env. Or if you already have it exported asELEVENLABS_API_KEY, say "use env" and I'll skip.When the user pastes a key, write it to
~/Developer/video-use/.env:printf 'ELEVENLABS_API_KEY=%s\n' "$KEY" > ~/Developer/video-use/.env chmod 600 ~/Developer/video-use/.env
Never echo the key back in tool output. Never commit
.env. -
Sanity check with a cheap, quota-free call:
curl -s -o /dev/null -w '%{http_code}\n' \ -H "xi-api-key: $(sed -n 's/^ELEVENLABS_API_KEY=//p' ~/Developer/video-use/.env)" \ https://api.elevenlabs.io/v1/user
200means the key works.401means the user pasted a wrong/expired key — ask once more and stop. Anything else (network, 5xx), move on and verify during first real transcription.
Run one real thing. Prefer the lightest verification that still proves the pipeline is wired up:
python ~/Developer/video-use/helpers/timeline_view.py --help >/dev/null && echo "helpers OK"
ffprobe -version | head -1Full transcription test is optional at install time — it burns Scribe credits. Better to wait until the user hands you their first clip.
Tell the user, in one short message:
- Where the skill is installed (
~/Developer/video-use). - That they should
cdinto their footage folder and start their agent there (e.g.claude). - That a good first message is: "edit these into a launch video" or "inventory these takes and propose a strategy."
- That all outputs land in
<videos_dir>/edit/— the repo stays clean.
cd ~/Developer/video-use && git pull --ff-onlypulls the latest code. The symlink auto-picks it up on the next run.- If
pyproject.tomlchanged deps, re-runuv sync/pip install -e .after pulling.
- Symlink the whole directory, not just
SKILL.md. The helpers need to sit next to it. - If
.envexists but the key is empty, treat it the same as missing — don't assume existence means validity. ffmpegfrom static builds works fine. Any modern (≥ 4.x) build is enough.yt-dlpis optional. Don't block install on it; install lazily the first time a user asks to pull from a URL.- Node.js/npm are only needed for HyperFrames or Remotion slots. HyperFrames currently requires Node.js 22+.
- HyperFrames, Remotion, and Manim are optional animation engines. Don't install or prefer one globally during setup; pick the engine per animation slot in
SKILL.md. HyperFrames can run throughnpx --yes hyperframes ...in the slot directory. Remotion can be scaffolded withnpx create-video@latestor installed inside the slot before rendering. - Never run transcription as part of install verification unless the user explicitly asks — Scribe costs real money.
- If the user is on Linux without a package manager Claude recognizes, print the manual
ffmpeginstall URL and wait rather than guessing.