# Video Use > Edita cualquier vídeo por conversación: transcribe, corta, hace color grading, genera animaciones de overlay y quema subtítulos, para talking heads, montajes, tutoriales, viajes o entrevistas. Sin presets ni menús. Fuente: https://skillsagentes.com/skills/browser-use/video-use/video-use Markdown: https://skillsagentes.com/skills/browser-use/video-use/video-use.md Repositorio: https://github.com/browser-use/video-use Autor: browser-use Licencia: MIT Actualizado: hace 4 meses Coste de contexto: 82 tok instalada, 5.7k tok al activarse, 166.2k tok con todos los archivos del bundle Bundle: 18 archivos, 649 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add browser-use/video-use --agent claude-code # Cursor npx -y skills add browser-use/video-use --agent cursor # Codex npx -y skills add browser-use/video-use --agent codex # Gemini CLI npx -y skills add browser-use/video-use --agent gemini # Windsurf npx -y skills add browser-use/video-use --agent windsurf # Cline npx -y skills add browser-use/video-use --agent cline ``` ## Qué hace - Edita cualquier vídeo por conversación: transcribe, corta, hace color grading, genera animaciones de overlay y quema subtítulos, para talking heads, montajes, tutoriales, viajes o entrevistas. - El LLM razona desde el transcript crudo más visuales a demanda; el único artefacto derivado es `takes_packed.md`, un transcript a nivel de frase. - El audio es primario y los visuales siguen: los cortes candidatos salen de límites de palabra y silencios, y solo se mira el vídeo en los puntos de decisión. - Flujo fijo: preguntar, confirmar el plan en lenguaje llano, ejecutar, iterar y persistir en `project.md`; nunca se toca el corte sin aprobación de la estrategia. - Reglas duras de corrección de producción: subtítulos al final de la cadena de filtros, extracto por segmento más concat sin pérdida, fades de audio de 30ms en cada corte, y nunca cortar dentro de una palabra. ## Cuándo usarla - Se quiere editar un vídeo hablando: transcribir, cortar, hacer color grading, añadir animaciones de overlay o quemar subtítulos. - El material son talking heads, montajes, tutoriales, vídeos de viaje o entrevistas y se quiere un corte iterativo por conversación. ## Qué la activa - "Edita este vídeo de entrevista y deja los mejores takes de cada beat" - "Corta los silencios y las muletillas de este talking head" - "Añade subtítulos estilo social y un color grade cálido" - "Genera una animación de overlay sincronizada con la narración" ## Antes de instalar - Necesita `ELEVENLABS_API_KEY` para la transcripción con Scribe, `ffmpeg` y `ffprobe` en el PATH, y dependencias de Python; yt-dlp, HyperFrames, Remotion o Manim solo se instalan al primer uso. ## Archivos - .env.example — 20 B - .gitignore — 790 B - LICENSE — 1 KB - README.md — 6 KB - SKILL.md — 22 KB - helpers/grade.py — 13 KB - helpers/pack_transcripts.py — 7 KB - helpers/render.py — 27 KB - helpers/timeline_view.py — 13 KB - helpers/transcribe.py — 8 KB - helpers/transcribe_batch.py — 4 KB - install.md — 8 KB - poster.html — 20 KB - pyproject.toml — 450 B - static/timeline-view.svg — 12 KB - static/video-use-banner.png — 500 KB - tests/test_render_fps.py — 5 KB - tests/test_render_orientation.py — 2 KB ## SKILL.md Reproducido tal cual desde browser-use/video-use bajo MIT. Esta sección es el documento original y está en inglés. # Video Use ## Principle 1. **LLM reasons from raw transcript + on-demand visuals.** The only derived artifact that earns its keep is a packed phrase-level transcript (`takes_packed.md`). Everything else — filler tagging, retake detection, shot classification, emphasis scoring — you derive at decision time. 2. **Audio is primary, visuals follow.** Cut candidates come from speech boundaries and silence gaps. Drill into visuals only at decision points. 3. **Ask → confirm → execute → iterate → persist.** Never touch the cut until the user has confirmed the strategy in plain English. 4. **Generalize.** Do not assume what kind of video this is. Look at the material, ask the user, then edit. 5. **Artistic freedom is the default.** Every specific value, preset, font, color, duration, pitch structure, and technique in this document is a *worked example* from one proven video — not a mandate. Read them to understand what's possible and why each worked. Then make your own taste calls based on what the material actually is and what the user actually wants. **The only things you MUST do are in the Hard Rules section below.** Everything else is yours. 6. **Invent freely.** If the material calls for a technique not described here — split-screen, picture-in-picture, lower-third identity cards, reaction cuts, speed ramps, freeze frames, crossfades, match cuts, L-cuts, J-cuts, speed ramps over breath, whatever — build it. The helpers are ffmpeg and PIL. They can do anything the format supports. Do not wait for permission. 7. **Verify your own output before showing it to the user.** If you wouldn't ship it, don't present it. ## Hard Rules (production correctness — non-negotiable) These are the things where deviation produces silent failures or broken output. They are not taste, they are correctness. Memorize them. 1. **Subtitles are applied LAST in the filter chain**, after every overlay. Otherwise overlays hide captions. Silent failure. 2. **Per-segment extract → lossless `-c copy` concat**, not single-pass filtergraph. Otherwise you double-encode every segment when overlays are added. 3. **30ms audio fades at every segment boundary** (`afade=t=in:st=0:d=0.03,afade=t=out:st={dur-0.03}:d=0.03`). Otherwise audible pops at every cut. 4. **Overlays use `setpts=PTS-STARTPTS+T/TB`** to shift the overlay's frame 0 to its window start. Otherwise you see the middle of the animation during the overlay window. 5. **Master SRT uses output-timeline offsets**: `output_time = word.start - segment_start + segment_offset`. Otherwise captions misalign after segment concat. 6. **Never cut inside a word.** Snap every cut edge to a word boundary from the Scribe transcript. 7. **Pad every cut edge.** Working window: 30–200ms. Scribe timestamps drift 50–100ms — padding absorbs the drift. Tighter for fast-paced, looser for cinematic. 8. **Word-level verbatim ASR only.** Never SRT/phrase mode (loses sub-second gap data). Never normalized fillers (loses editorial signal). 9. **Cache transcripts per source.** Never re-transcribe unless the source file itself changed. 10. **Parallel sub-agents for multiple animations.** Never sequential. Spawn N at once via the `Agent` tool; total wall time ≈ slowest one. 11. **Strategy confirmation before execution.** Never touch the cut until the user has approved the plain-English plan. 12. **All session outputs in `/edit/`.** Never write inside the `video-use/` project directory. Everything else in this document is a worked example. Deviate whenever the material calls for it. ## Directory layout The skill lives in `video-use/`. User footage lives wherever they put it. All session outputs go into `/edit/`. ``` / ├── └── edit/ ├── project.md ← memory; appended every session ├── takes_packed.md ← phrase-level transcripts, the LLM's primary reading view ├── edl.json ← cut decisions ├── transcripts/.json ← cached raw Scribe JSON ├── animations/slot_/ ← per-animation source + render + reasoning ├── clips_graded/ ← per-segment extracts with grade + fades ├── master.srt ← output-timeline subtitles ├── downloads/ ← yt-dlp outputs ├── verify/ ← debug frames / timeline PNGs ├── preview.mp4 └── final.mp4 ``` ## Setup First-time install lives in `install.md` (clone, deps, ffmpeg, skill registration, API key). Don't re-run it every session; on cold start just verify: - `ELEVENLABS_API_KEY` resolves — either in the environment or in `.env` at the video-use repo root. If missing, ask the user to paste one and write it to `.env` (never to the user's ``). - `ffmpeg` + `ffprobe` on PATH. - Python deps installed (`uv sync` or `pip install -e .` inside the repo). - Node.js + npm available if the session needs HyperFrames or Remotion slots. HyperFrames currently requires Node.js 22+. - `yt-dlp`, HyperFrames, Remotion, Manim installed only on first use. - First-use animation setup happens inside the slot directory, never at the video-use repo root. HyperFrames can be invoked with `npx --yes hyperframes ...`; Remotion can be scaffolded with `npx create-video@latest` or installed as a project-local dependency before using its `remotion render` command. - This skill vendors `skills/manim-video/`. Read its SKILL.md when building a Manim slot. Helpers (`helpers/transcribe.py`, `helpers/render.py`, etc.) live alongside this SKILL.md. Resolve their paths relative to the directory containing this file — the skill is typically symlinked at `~/.claude/skills/video-use/` or `~/.codex/skills/video-use/`. ## Helpers - **`transcribe.py