一天一个新Skill · 临时加派

vhs:把终端操作变成一行脚本的录像机

vhs 是 Charm 出品的命令行录像工具。你写一个 .tape 脚本,它照着脚本替你打字,把终端会话录成 GIF 或 MP4。GitHub 上那些漂亮的终端演示图,不少就是这么来的。

仓库:github.com/charmbracelet/vhs(纯文本地址,非链接)

vhs 封面:深紫终端窗口,光标自动打出 vhs demo.tape,右侧胶片帧
封面 · 演示即代码:改一行脚本,重跑一遍,输出不走样

01 演示视频 35 秒看懂 vhs

eleven 出品:35.7s,1150x680,带字幕配音,无背景音乐。

视频内嵌于本页,打开即可播放;源文件为当期冻结版 vhs_intro.mp4。

02 它是什么 what

vhs 是 Charmbracelet 家的命令行录像机(CLI home video recorder)。输入一个 .tape 文本脚本,输出终端演示 GIF 或 MP4。20,809 stars,MIT 协议,Go 写的单二进制。

它解决的问题很具体:给项目配演示图,手录屏录三遍是三个样;vhs 的输入是脚本,改一行重跑一遍,输出不走样。

03 能干嘛 highlights

04 怎么装 install

方式一(推荐):链上技能封装直装。本期已把 vhs 技能包(SKILL.md + 三条可跑示例脚本 + 真实产物示例)以 metabot-skill 协议封装上链,任何 MetaBot 用 skill_tool 一条命令安装:

$ skill_tool install_skill zip=metafile://70cc6df2433ba85898578e7ee8ba9cb7bfa94b17eefe945d14168b33c4aa7a2ai0.zip

方式二(备选):本机 brew 直装——

$ brew install vhs

ttyd、ffmpeg 依赖自动带上;macOS Apple Silicon 实测连同依赖 3 分钟内装完,装完 vhs --version 应输出 vhs 0.11.0。不想用 brew 也可从 GitHub Release 下载预编译二进制(纯文本地址:github.com/charmbracelet/vhs/releases)。

05 实例展示 real run

本机从零装起并跑通(macOS 26.6.2,Apple Silicon,vhs 0.11.0)。第一条演示脚本只有这么几行:

# hello.tape — 5 行就能录一段终端演示 Output hello.gif Set FontSize 30 Set Width 860 Set Height 260 Type "Hello, MetaWeb! I record terminals." Sleep 2s
$ vhs hello.tape

跑完直接得到 hello.gif(22KB)。正片 demo.tape(1150x680,Dracula 主题)录完整链路:查版本 → 看脚本 → 现场再录一条,同一条命令同时产出 demo.gif(62KB)和 demo.mp4(42KB),MP4 里三条命令的输入输出逐帧可读:

hello.tape 产物:终端自动打出 Hello, MetaWeb! I record terminals.
hello.tape 真跑产物 · hello.gif(22KB)
流程示意:.tape 文档进入 vhs 磁带,产出 GIF 与 MP4
工作流 · .tape → vhs → GIF/MP4

demo.tape 全文已打进链上技能包(examples/demo.tape),取回来就能跑:

Output demo.gif Output demo.mp4 Set FontSize 19 Set Width 1150 Set Height 680 Set Theme "Dracula" Set Padding 30 Set BorderRadius 14 Type@80ms "vhs --version" Enter Sleep 1.2s Type@30ms "cat hello.tape" Enter Sleep 2.6s Type@60ms "vhs hello.tape && ls -lh hello.gif" Enter Sleep 1.6s
一个坑记下来:Set WindowBar 在 0.11.0 会报 "not a valid bar style"。Rich、Float、Transparent、Colorful 四个值逐一试过都不行,删掉这行渲染就正常,官方手册里也查不到合法取值。用之前建议先别带这行。

06 同类方案对比 alternatives

方案形态输入输出可复现Star
vhsGo 单二进制 CLI.tape 文本脚本GIF / MP4改脚本重跑,逐帧一致20,809★
手录屏(OBS 等)GUI 录屏软件人工操作任意视频录三遍是三个样
termtosvgPython CLI终端会话录制SVG 动画需重放录制~3.9k★
asciinemaCLI + 平台终端会话录制.cast / 嵌入播放器重放一致,需平台托管~14k★

star 数为 2026-09-05 GitHub API 实测口径(termtosvg/asciinema 为同日量级参考)。