How to Record a Terminal GIF
Step-by-step guide to recording terminal sessions as GIF animations using VHS, asciinema, and AgentGIF CLI.
1. Voraussetzungen
Um Terminal-GIFs aufzunehmen, benötigen Sie:
- VHS — a terminal recorder by Charm that converts scripted terminal sessions into GIFs
- ttyd — ein Terminal-Webserver (VHS-Abhängigkeit, wird automatisch auf macOS installiert)
- ffmpeg — für Videokodierung (wird automatisch auf macOS installiert)
VHS funktioniert, indem es eine .tape-Datei liest, die Tasteneingaben, Befehle und Timing beschreibt — dann werden diese Aktionen in einem virtuellen Terminal abgespielt und die Ausgabe als GIF aufgezeichnet.
2. VHS installieren
| Plattform | Installationsbefehl |
|---|---|
| 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 |
Installation überprüfen:
vhs --version
3. Eine Tape-Datei erstellen
Eine Tape-Datei ist ein Klartext-Skript, das VHS sagt, was eingegeben werden soll, wann gewartet werden soll und welche Einstellungen verwendet werden sollen. Erstellen Sie eine Datei namens 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
Kernbefehle
| Befehl | Beschreibung | Beispiel |
|---|---|---|
Output | Den Ausgabedateipfad festlegen | Output "demo.gif" |
Type | Text eingeben (simuliert Tastenanschläge) | Type "git status" |
Enter | Enter drücken | Enter |
Sleep | Eine Zeitdauer warten | Sleep 2s |
Ctrl+C | Tastenkürzel senden | Ctrl+C |
Hide | Aufnahme stoppen (für Setup) | Hide |
Show | Aufnahme fortsetzen | Show |
4. Einstellungen konfigurieren
Set-Befehle an den Anfang Ihrer Tape-Datei setzen, vor alle Type-Befehle.
Empfohlene Einstellungen für 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
Alle verfügbaren Einstellungen
| Einstellung | Standard | Beschreibung |
|---|---|---|
Shell | "bash" | Zu verwendende Shell (bash, zsh, fish, sh) |
FontSize | 14 | Schriftgröße in Pixeln |
Width | 800 | Terminalbreite in Pixeln |
Height | 600 | Terminalhöhe in Pixeln |
Padding | 0 | Abstand um das Terminal |
Theme | "default" | Color theme (see theme gallery) |
TypingSpeed | 50ms | Verzögerung zwischen Tastenanschlägen |
Framerate | 50 | GIF-Frames pro Sekunde |
PlaybackSpeed | 1 | Wiedergabegeschwindigkeits-Multiplikator |
CursorBlink | true | Blinkenden Cursor anzeigen |
LetterSpacing | 0 | Zusätzlicher Buchstabenabstand |
LineHeight | 1.0 | Zeilenhöhen-Multiplikator |
Themes
VHS wird mit 44 eingebauten Themes geliefert. Beliebte Optionen für die Entwicklerdokumentation:
| Theme | Stil |
|---|---|
| Catppuccin Mocha | Warm dunkel (Pastellakzente) |
| Dracula | Dunkles Lila |
| Tokyo Night | Blau getöntes Dunkel |
| Nord | Arktisches Blau |
| One Dark | Von Atom inspiriertes Dunkel |
| Solarized Dark | Klassisches Dunkel mit warmen Tönen |
| Monokai | Von Sublime Text inspiriert |
Alle Themes mit Live-Vorschau durchstöbern: Theme-Galerie.
5. Das GIF aufnehmen
vhs demo.tape
VHS öffnet einen headless Browser, spielt die Tape-Datei ab und speichert das GIF. Eine typische Aufnahme dauert 10-30 Sekunden.
Vor dem Hochladen in der Vorschau ansehen:
# macOS
open demo.gif
# Linux
xdg-open demo.gif
6. Dateigröße optimieren
AgentGIF akzeptiert GIFs bis zu 10 MB, aber kleinere Dateien laden schneller. Tipps zum Reduzieren der GIF-Größe:
| Technik | Auswirkung |
|---|---|
Abmessungen reduzieren (Width 800) | Erheblich — Halbierung der Breite vierteilt die Dateigröße |
Bildrate senken (Framerate 30) | Moderat — reduziert Frames um 40% |
| Kürzere Aufnahme | Erheblich — 5-15 Sekunden anstreben |
PlaybackSpeed 1.5 verwenden | Moderat — weniger Gesamtframes |
Cursor-Blinken deaktivieren (CursorBlink false) | Gering — weniger einzigartige Frames |
| Einfarbiger Hintergrund (Transparenz vermeiden) | Gering — bessere GIF-Komprimierung |
Für die beste Balance aus Qualität und Größe produzieren die oben empfohlenen Einstellungen GIFs von etwa 100-300 KB für eine 10-Sekunden-Aufnahme.
7. Zu AgentGIF hochladen
Über CLI hochladen (am schnellsten):
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.
Das Hinzufügen einer Cast-Datei aktiviert die KI-Agenten-Schicht:
agentgif upload demo.gif --cast demo.cast --title "My Demo"
8. Erweiterte Tape-Funktionen
Ausblenden/Anzeigen für das Setup
Hide/Show verwenden, um Setup-Befehle auszuführen, ohne sie aufzunehmen:
Hide
Type "cd /tmp/demo-project"
Enter
Type "mkdir -p src"
Enter
Show
# Now recording starts
Type "ls -la"
Enter
Sleep 2s
Mehrere Ausgabeformate
VHS kann mehrere Formate gleichzeitig ausgeben:
Output demo.gif
Output demo.mp4
Output demo.webm
Umgebungsvariablen
Set Shell "bash"
Type "export PS1='$ '"
Enter
Hide
Sleep 500ms
Show
Tastaturkürzel
Ctrl+C # Cancel current command
Ctrl+L # Clear screen
Ctrl+D # EOF / exit
Tab # Tab completion
Up # Previous command
Escape # Escape key
9. Alternative Aufnahme-Tools
| Tool | Ausgabe | Vorteile | Nachteile |
|---|---|---|---|
| VHS | GIF, MP4, WebM | Geskriptet, reproduzierbar, Themes | Setup erforderlich |
| asciinema | .cast | Live-Aufnahme, kleine Dateien | Keine GIF-Ausgabe (Konvertierung erforderlich) |
| Terminalizer | GIF | Live-Aufnahme, YAML-Konfiguration | Große Dateigrößen |
| Peek | GIF, WebM | GUI-Bildschirmrekorder | Nicht terminalspezifisch |
Wir empfehlen VHS für geskriptete Demos (reproduzierbar, versionierbar) und asciinema + VHS-Konvertierung für Live-Aufnahmen.
See also: asciinema vs AgentGIF comparison.