Communitygithub.com

Scrawl 捕获

读取并深入分析 Scrawl 屏幕录制——录制者在说话、点击并用红色标记绘图。当消息中包含 Scrawl 捕获(格式为 `[scrawl 0:12 · App “Window” · /path/to/….scrawl]`、`.scrawl` 包路径或 `contact-sheet.png`)时,当用户说“看看我的 scrawl”或提及刚录制或绘制的内容时,或当你需要通过 `scrawl` CLI 放大某个瞬间、提取帧、向会话发送捕获或将其导出为视频时使用。

Scrawl 捕获 是什么?

Scrawl 是一款屏幕录制工具,它记录用户的屏幕活动、声音、点击操作和红色的手绘标记,并将所有这些内容打包成一个 `.scrawl` 文件夹(即一个包)。它会发送给 AI 助手,让 AI 直接看到问题,而非通过文字描述。这相当于把录制内容当作一个功能强大的“错误报告”——AI 需要仔细阅读图形和文本双重信息,然后才能作出回答,而不是要求用户重复解释。该技能支持在 Claude Code、OpenCode 等主流 AI 编码代理平台上使用。 用户通过社交分享或直接上传 `.scrawl` 包后,AI 助手会通过联系图(`contact-sheet.png`)、关键帧(`frames/`)和转录摘要(`summary.md`)三部分快速了解问题所在。红色墨水的重要含义在于:不同颜色的圆形、下划线、箭头直接指向问题点。 `scrawl` CLI 是 Scrawl 应用附带的命令行工具,能让 AI 执行更精细的操作,例如:使用 `scrawl zoom` 放大某个特定时刻、按编号查看标记、导出为视频(支持 HEVC)、提取帧序列,或通过 `scrawl send` 将捕获直接发送到 OpenCode 会话。该 CLI 只能在安装 Scrawl 的 Mac 上运行,路径通常为 `/Applications/Scrawl.app/Contents/MacOS/scrawl`。 技能的实际价值在于:用户不必再费力描述复现步骤,用眼睛“看”一遍比用文字“说”一遍快得多。AI 代理也省去了大量来回确认的环节。例如,在调试动画闪烁或点击后目标没有高亮这类通过截屏难以捕捉的问题时,`scrawl zoom` 可以直接输出包含移动画面的图片序列,比单独读 JSON 或文本描述更直观。`scrawl export` 则能将整个过程(包括标记、鼠标轨迹和音频)打包成一个 `.mp4`,便于存档或分享给其他人。 另外需要注意:视频和音频文件会在录制后 7 天自动移至废纸篓(除非用户在设置中修改),但 `frames/` 文件夹、联系图和 `scrawl.json` 会保留。当 AI 在处理过期录制时,`zoom`、`frames` 和 `export` 命令将无法读取视频,但依然能通过剩余的帧和 JSON 数据进行分析。对于跨 Mac 的设备,`.media-pending` 文件表示视频仍正在从另一台 Mac 复制。

兼容平台~Claude Code~Codex CLI✓Cursor✓OpenCode
npx skills add https://github.com/huaxel/dotfiles/tree/main/skills/scrawl

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Scrawl 捕获 是做什么的?

Scrawl 录制用户的屏幕、语音、点击和红色墨水,然后将结果打包到一个 .scrawl 文件夹中(一个包)。用户发送它来向你展示问题,而不是描述问题,因此这个捕获就是错误报告。在回答之前请仔细阅读它,不要要求他们再次解释捕获中已经显示的内容。如果有什么不清楚,先用 scrawl zoom 仔细查看。

粘贴内容的格式

[scrawl 0:33 · OpenCode “设置” · /Users/me/Library/Application Support/scrawl/captures/scrawl-1792432139176.scrawl]
在进行任何更改前,先打开 contact-sheet.png 和 frames/ 文件夹:标记和文字只有放在图片上才有意义,因为图片能展示比文本更多的信息。
裁剪至:OpenCode 中的活动(完整帧在 frames-full/ 中)
- #1 (0:04) [点击了“新建标签”] “Command T 会新建一个 session,但这里应该新建一个标签。”
- #2 (0:07) “不,它不会。”
- #3 (0:10) ⚑ “它说 command shift B 会新建一个标签。”
- #4 (0:18) 点击 (x 0.51, y 0.93)
  • 第一行包含录制时长、录制的应用和窗口,以及包路径。
  • 下一行要求你先打开图片。请执行:文本只记录了说过的话和做过的操作,问题可能出现在画面中而未被打标记或提及。
  • 每个 #N (M:SS) 行是一个关键帧:括号内是该时刻进行的操作,然后是在画面显示时说的话。没有引号的行只有操作。
  • ⚑ 表示用户特意标记了该时刻。⟨名称⟩ 表示应用报告了新的屏幕。以 · 开头的行是应用记录的事件或值。
  • 靠近顶部的可选行:For session:(Scrawl 发送到的会话)、Screen:(带有应用上下文)、Note: 和 Cropped to:。
  • 坐标是捕获区域的分数,从左上角开始(x 0.51 略过中心偏右)。

回答时,请使用相同的方式引用时刻,如“#3 (0:10)”,这样对方可以在联系图上找到它们。

读取包

  1. 首先查看包中的 contact-sheet.png(通常已经附加)。它以时间顺序从左到右、从上到下显示每个关键帧,每个帧的右上角有一个带有编号 N 的小白片(对应 summary.md 中的 #N)。
  2. 紧接着阅读旁边的转录行。语音识别可能会误听名称和代码术语,因此当两者不一致时,请相信屏幕内容。
  3. 对于任何需要全尺寸查看的关键帧,打开 frames/frame-NN.png(frame-03.png 对应 #3)。当摘要显示 Cropped to: 时,未裁剪的屏幕位于 frames-full/ 中。

绘图的含义:

  • 红色的描边、圆圈、下划线和箭头是用户的标记,它们指向问题所在。绘制在同一个屏幕上的所有标记都会显示在一个关键帧上。当有多个标记时,文本会按绘制顺序编号(✎① 0:06 …、✎② 0:09 …);图片上只显示墨水,因此请使用 scrawl zoom --mark 来查看哪个墨水是哪个。
  • 光标周围的涟漪表示点击或轻触,手指拖痕表示滑动。
  • 一条逐渐变细的发光红色轨迹是激光笔,用于指向而不留下标记。

其他文件:scrawl.json 是完整清单(关键帧、带形状和边框的 marks、events、带时间的 transcript.words、应用 context 和 autocrop)。recording.mp4 或 recording.mov 和 audio.wav 是源媒体。.media-pending 文件表示视频仍在从另一台 Mac 复制。

Scrawl CLI

scrawl 是 Scrawl 应用自带的二进制文件。如果 command -v scrawl 找不到任何内容,请使用 /Applications/Scrawl.app/Contents/MacOS/scrawl(或在 ~/Applications 下的相同路径),并告诉用户可以在 Scrawl 的“设置”›“代理”中将其添加到 PATH。它只能在安装了 Scrawl 的 Mac 上运行。在其他任何地方,请直接读取 contact-sheet.png、frames/ 和 scrawl.json。每个命令都接受一个包路径,大多数命令默认使用 latest(最新的捕获)。请对路径使用引号,因为它通常包含“Application Support”。

仔细查看某个时刻

当问题是动态的(动画、跳跃、闪烁)或发生在关键帧之间,或者无法判断标记指向什么时,使用 zoom:

scrawl zoom <bundle> --at 0:21                 # 一个时间点,M:SS 或秒
scrawl zoom <bundle> --at "宽度变化"            # 或者他们说过的一句话
scrawl zoom <bundle> --at 0:21 --span 1 --frames 16 --full
scrawl zoom <bundle> --mark 2                  # 文本中标记为 ✎② 的标记
scrawl zoom <bundle> --mark 1 --frame 4        # 关键帧 #4 的 ✎①,当多个关键帧都有 ✎① 时

它会输出围绕该时刻的一组帧的 PNG 图片路径、每单元格的时间以及说过的话。打开 PNG 并在根据反馈采取行动之前查看它。--span 是覆盖的秒数(默认为 2,该时刻之前的四分之一),--frames 是单元格数量(默认为 12),--full 显示整个屏幕而非裁剪区域。单元格在表中从 #1 开始编号,因此这些数字不是关键帧编号。

--mark 接受文本中标记的编号或其 ID(m2),并将表格中心对准标记绘制的时间,仅显示该标记的墨水,从绘制开始到完整结束。scrawl inspect <bundle> --marks 列出每个标记(#2 ✎② 0:09 marked (2 strokes) · m2:关键帧、编号、时间、形状、绘制内容、ID),--marks --json 以 JSON 格式输出相同内容。

其他命令

scrawl inspect <bundle>               # summary.md,上述文本
scrawl inspect <bundle> --json        # scrawl.json
scrawl inspect <bundle> --marks       # 标记,按文本中的编号列出 [--json]
scrawl frames <bundle> --from 0:04 --to 0:06 [--fps 4]   # 输出范围内的普通 PNG;打印它们的路径
scrawl send <bundle> --session ses_…  # 将捕获排队到 OpenCode 会话
scrawl send <bundle> --clipboard      # 将摘要文本复制到剪贴板
scrawl export <bundle> [--out demo.mp4] [--zoom] [--crop auto|full|x,y,w,h] [--size 1920]
  • zoom 和 frames 会写入 <bundle>/zoom/。请保持包的其余部分不变,因为 Scrawl 管理这些文件并会清理它们。
  • 不带 --session 的 send 会发送到捕获指定的会话(For session: 行),否则发送到最近活动的会话。如果录制时指定了目标,它会拒绝不同的 --session,除非你传递 --reroute,因此在重新路由前请与用户确认。
  • export 会写入一个 .mp4 文件,其中包含叠加的墨水和点击以及同步的音频(默认路径 ~/Movies/Scrawl/<bundle>.mp4)。--zoom 会平滑缩放到活动区域。--no-ink、--no-clicks、--hevc 和 --fps 也可用。
  • 除非用户在设置中更改,否则视频和音频会在捕获后 7 天移至废纸篓。之后,zoom、frames 和 export 无法读取视频,但 frames/、联系图和 scrawl.json 会保留。
  • scrawl <command> --help 列出所有标志,scrawl skill 会按安装版本输出本指南。

相关技能