How to Record a Terminal GIF
Step-by-step guide to recording terminal sessions as GIF animations using VHS, asciinema, and AgentGIF CLI.
1. 前提条件
ターミナル GIF を録画するには以下が必要です:
- VHS — a terminal recorder by Charm that converts scripted terminal sessions into GIFs
- ttyd — ターミナル Web サーバー (VHS 依存関係、macOS では自動インストール)
- ffmpeg — ビデオエンコード用 (macOS では自動インストール)
VHS はキー入力、コマンド、タイミングを記述した .tape ファイルを読み取り、仮想ターミナルでそれらのアクションを再生して出力を GIF としてキャプチャします。
2. VHS をインストール
| プラットフォーム | インストールコマンド |
|---|---|
| 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 |
インストールを確認:
vhs --version
3. テープファイルを作成
テープファイルは VHS に何をタイプするか、いつ待つか、どの設定を使用するかを伝えるプレーンテキストのスクリプトです。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
コアコマンド
| コマンド | 説明 | 例 |
|---|---|---|
Output | 出力ファイルパスを設定 | Output "demo.gif" |
Type | テキストを入力 (キー入力をシミュレート) | Type "git status" |
Enter | Enter を押す | Enter |
Sleep | 一定時間待機 | Sleep 2s |
Ctrl+C | キーボードショートカットを送信 | Ctrl+C |
Hide | 録画を停止 (セットアップ用) | Hide |
Show | 録画を再開 | Show |
4. 設定を構成
Type コマンドより前の、テープファイルの先頭に Set コマンドを置いてください。
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
利用可能なすべての設定
| 設定 | デフォルト | 説明 |
|---|---|---|
Shell | "bash" | 使用するシェル (bash、zsh、fish、sh) |
FontSize | 14 | ピクセル単位のフォントサイズ |
Width | 800 | ピクセル単位のターミナル幅 |
Height | 600 | ピクセル単位のターミナル高さ |
Padding | 0 | ターミナル周囲のパディング |
Theme | "default" | Color theme (see theme gallery) |
TypingSpeed | 50ms | キー入力間の遅延 |
Framerate | 50 | GIF のフレームレート (fps) |
PlaybackSpeed | 1 | 再生速度の倍率 |
CursorBlink | true | 点滅カーソルを表示 |
LetterSpacing | 0 | 追加の文字間隔 |
LineHeight | 1.0 | 行の高さの倍率 |
テーマ
VHS には 44 の組み込みテーマが付属しています。開発者ドキュメント向けの人気の選択肢:
| テーマ | スタイル |
|---|---|
| Catppuccin Mocha | ウォームダーク (パステルアクセント) |
| Dracula | ダークパープル |
| Tokyo Night | ブルーがかったダーク |
| Nord | 北極のブルー |
| One Dark | Atom にインスパイアされたダーク |
| Solarized Dark | ウォームトーンのクラシックダーク |
| Monokai | Sublime Text にインスパイアされた |
ライブプレビューですべてのテーマを閲覧: テーマギャラリー。
5. GIF を録画
vhs demo.tape
VHS はヘッドレスブラウザを開き、テープを再生して GIF を保存します。通常の録画は 10~30 秒かかります。
アップロード前にプレビュー:
# macOS
open demo.gif
# Linux
xdg-open demo.gif
6. ファイルサイズを最適化
AgentGIF は最大 10 MB の GIF を受け付けますが、小さいファイルの方が高速に読み込めます。GIF サイズを小さく保つヒント:
| テクニック | 効果 |
|---|---|
サイズを縮小 (Width 800) | 大きい — 幅を半分にするとファイルサイズが 1/4 になる |
フレームレートを下げる (Framerate 30) | 中程度 — フレーム数を 40% 削減 |
| 録画時間を短縮 | 大きい — 5~15 秒を目安に |
PlaybackSpeed 1.5 を使用 | 中程度 — 総フレーム数が減少 |
カーソルの点滅を無効化 (CursorBlink false) | 小さい — ユニークフレーム数が減少 |
| べた塗り背景 (透過を避ける) | 小さい — GIF 圧縮が向上 |
品質とサイズの最良のバランスのために、上記の推奨設定では 10 秒の録画で約 100~300 KB の GIF が生成されます。
7. AgentGIF にアップロード
CLI でアップロード (最速):
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.
キャストファイルを含めると AI エージェントレイヤーが有効になります:
agentgif upload demo.gif --cast demo.cast --title "My Demo"
8. 高度なテープ機能
セットアップの非表示/表示
録画せずにセットアップコマンドを実行するには Hide/Show を使用:
Hide
Type "cd /tmp/demo-project"
Enter
Type "mkdir -p src"
Enter
Show
# Now recording starts
Type "ls -la"
Enter
Sleep 2s
複数の出力形式
VHS は複数の形式を同時に出力できます:
Output demo.gif
Output demo.mp4
Output demo.webm
環境変数
Set Shell "bash"
Type "export PS1='$ '"
Enter
Hide
Sleep 500ms
Show
キーボードショートカット
Ctrl+C # Cancel current command
Ctrl+L # Clear screen
Ctrl+D # EOF / exit
Tab # Tab completion
Up # Previous command
Escape # Escape key
9. 代替録画ツール
| ツール | 出力 | メリット | デメリット |
|---|---|---|---|
| VHS | GIF, MP4, WebM | スクリプト化、再現可能、テーマ対応 | セットアップが必要 |
| asciinema | .cast | ライブ録画、小さいファイル | GIF 出力なし (変換が必要) |
| Terminalizer | GIF | ライブ録画、YAML 設定 | 大きいファイルサイズ |
| Peek | GIF, WebM | GUI スクリーンレコーダー | ターミナル専用でない |
スクリプトデモには VHS (再現可能、バージョン管理可能) を、ライブ録画には asciinema + VHS 変換をお勧めします。
See also: asciinema vs AgentGIF comparison.