How to Record a Terminal GIF
Step-by-step guide to recording terminal sessions as GIF animations using VHS, asciinema, and AgentGIF CLI.
1. Requisitos previos
Para grabar GIFs de terminal, necesitas:
- VHS — a terminal recorder by Charm that converts scripted terminal sessions into GIFs
- ttyd — un servidor web de terminal (dependencia de VHS, instalado automáticamente en macOS)
- ffmpeg — para codificación de video (instalado automáticamente en macOS)
VHS funciona leyendo un archivo .tape que describe las pulsaciones de teclas, comandos y temporización — luego reproduce esas acciones en un terminal virtual y captura la salida como un GIF.
2. Instalar VHS
| Plataforma | Comando de instalación |
|---|---|
| macOS | brew install vhs |
| Ubuntu/Debian | sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg && echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list && sudo apt update && sudo apt install vhs |
| Arch Linux | yay -S vhs |
| Go | go install github.com/charmbracelet/vhs@latest |
Verifica la instalación:
vhs --version
3. Crear un archivo de cinta
Un archivo de cinta es un script de texto plano que le dice a VHS qué escribir, cuándo esperar y qué configuración usar. Crea un archivo llamado demo.tape:
Output demo.gif
Set Shell "bash"
Set FontSize 16
Set Width 1000
Set Height 580
Set Theme "Catppuccin Mocha"
Type "echo 'Hello, world!'"
Enter
Sleep 2s
Type "ls -la"
Enter
Sleep 3s
Comandos principales
| Comando | Descripción | Ejemplo |
|---|---|---|
Output | Establecer la ruta del archivo de salida | Output "demo.gif" |
Type | Escribir texto (simula pulsaciones de teclas) | Type "git status" |
Enter | Presionar Enter | Enter |
Sleep | Esperar una duración | Sleep 2s |
Ctrl+C | Enviar atajo de teclado | Ctrl+C |
Hide | Detener la grabación (para configuración) | Hide |
Show | Reanudar la grabación | Show |
4. Configurar ajustes
Pon los comandos Set al inicio de tu archivo de cinta, antes de cualquier comando Type.
Configuración recomendada para AgentGIF
Set Shell "zsh"
Set FontSize 15
Set Width 1000
Set Height 580
Set Padding 20
Set Theme "Catppuccin Mocha"
Set TypingSpeed 50ms
Set CursorBlink false
Todos los ajustes disponibles
| Ajuste | Predeterminado | Descripción |
|---|---|---|
Shell | "bash" | Shell a usar (bash, zsh, fish, sh) |
FontSize | 14 | Tamaño de fuente en píxeles |
Width | 800 | Ancho del terminal en píxeles |
Height | 600 | Alto del terminal en píxeles |
Padding | 0 | Relleno alrededor del terminal |
Theme | "default" | Color theme (see theme gallery) |
TypingSpeed | 50ms | Retraso entre pulsaciones de teclas |
Framerate | 50 | Fotogramas por segundo del GIF |
PlaybackSpeed | 1 | Multiplicador de velocidad de reproducción |
CursorBlink | true | Mostrar cursor parpadeante |
LetterSpacing | 0 | Espaciado de letras adicional |
LineHeight | 1.0 | Multiplicador de altura de línea |
Temas
VHS incluye 44 temas integrados. Opciones populares para documentación de desarrolladores:
| Tema | Estilo |
|---|---|
| Catppuccin Mocha | Oscuro cálido (acentos pastel) |
| Dracula | Morado oscuro |
| Tokyo Night | Oscuro con tinte azul |
| Nord | Azul ártico |
| One Dark | Oscuro inspirado en Atom |
| Solarized Dark | Oscuro clásico con tonos cálidos |
| Monokai | Inspirado en Sublime Text |
Explora todos los temas con vistas previas en vivo: Galería de temas.
5. Grabar el GIF
vhs demo.tape
VHS abre un navegador sin interfaz gráfica, reproduce la cinta y guarda el GIF. Una grabación típica tarda 10-30 segundos.
Vista previa antes de subir:
# macOS
open demo.gif
# Linux
xdg-open demo.gif
6. Optimizar el tamaño del archivo
AgentGIF acepta GIFs de hasta 10 MB, pero los archivos más pequeños cargan más rápido. Consejos para mantener el tamaño del GIF reducido:
| Técnica | Impacto |
|---|---|
Reducir dimensiones (Width 800) | Significativo — reducir el ancho a la mitad divide el tamaño por cuatro |
Reducir framerate (Framerate 30) | Moderado — reduce los fotogramas en un 40% |
| Grabación más corta | Significativo — apunta a 5-15 segundos |
Usar PlaybackSpeed 1.5 | Moderado — menos fotogramas en total |
Desactivar parpadeo del cursor (CursorBlink false) | Pequeño — menos fotogramas únicos |
| Fondo sólido (evitar transparencia) | Pequeño — mejor compresión del GIF |
Para el mejor equilibrio entre calidad y tamaño, la configuración recomendada anterior produce GIFs de alrededor de 100-300 KB para una grabación de 10 segundos.
7. Subir a AgentGIF
Subir mediante CLI (lo más rápido):
agentgif upload demo.gif \
--title "Git Interactive Rebase" \
--command "git rebase -i HEAD~3" \
--tags git,rebase \
--open
Or upload via the web interface — drag and drop the GIF file.
Incluir un archivo cast habilita la capa para agentes de IA:
agentgif upload demo.gif --cast demo.cast --title "My Demo"
8. Características avanzadas de la cinta
Ocultar/Mostrar para configuración
Usa Hide/Show para ejecutar comandos de configuración sin grabarlos:
Hide
Type "cd /tmp/demo-project"
Enter
Type "mkdir -p src"
Enter
Show
# Now recording starts
Type "ls -la"
Enter
Sleep 2s
Múltiples formatos de salida
VHS puede generar múltiples formatos simultáneamente:
Output demo.gif
Output demo.mp4
Output demo.webm
Variables de entorno
Set Shell "bash"
Type "export PS1='$ '"
Enter
Hide
Sleep 500ms
Show
Atajos de teclado
Ctrl+C # Cancel current command
Ctrl+L # Clear screen
Ctrl+D # EOF / exit
Tab # Tab completion
Up # Previous command
Escape # Escape key
9. Herramientas de grabación alternativas
| Herramienta | Salida | Pros | Contras |
|---|---|---|---|
| VHS | GIF, MP4, WebM | Con script, reproducible, temas | Requiere configuración |
| asciinema | .cast | Grabación en vivo, archivos pequeños | Sin salida GIF (necesita conversión) |
| Terminalizer | GIF | Grabación en vivo, configuración YAML | Tamaños de archivo grandes |
| Peek | GIF, WebM | Grabador de pantalla con interfaz gráfica | No específico para terminal |
Recomendamos VHS para demostraciones con script (reproducibles, con control de versiones) y asciinema + conversión VHS para grabaciones en vivo.
See also: asciinema vs AgentGIF comparison.