如何用 Mac 内置工具自动截图
用 screencapture、Automator 或快捷指令在 Mac 上自动截图,包括权限设置、安全的循环方式和故障排查。
8 分钟阅读指南作者:Temposhot Team

macOS 内置三种按计划截图的方式:screencapture 命令、Automator 和快捷指令 App。三者都可以在不安装额外软件的情况下截图、等待并重复。本指南帮助你选定一种方式,用三帧测试验证其可用性,并解决较长运行中出现的问题。
全文的示例是一份 120 张幻灯片的演示文稿,需要把每张幻灯片保存为一张图片。该任务需要固定的截取来源、每帧之间按一次键、等待每张幻灯片渲染完成,以及在最后一张之后干净地停止。
选择适合任务的内置方法
| 方法 | 适用场景 | 弱点 |
|---|---|---|
终端中的 screencapture | 固定区域、精确的文件名、经常运行的脚本 | 需要一定的 shell 知识 |
| Automator | 保存为双击应用的可视化工作流 | 原生截图操作可能覆盖文件名 |
| 快捷指令 | 菜单栏和键盘启动器、较新 macOS 上的自动化 | 窗口和区域截图需要脚本步骤 |
三种方式使用相同的截图引擎和相同的权限模型。选择你已经熟悉的一种。如果都不熟悉,就从终端开始,因为测试只需两行命令。
各方式的构成
Automator 和快捷指令通常都通过 shell 操作调用同一条 screencapture 命令。区别在于外层包装:终端使用脚本文件,Automator 保存为工作流或双击应用,快捷指令则增加了菜单栏、键盘快捷键和定时自动化等启动方式。
因此截图命令只需编写一次。先在终端中测试,如需启动器,再把同一行命令粘贴到 Automator 或快捷指令的 Run Shell Script 操作中。
按内容的变化方式决定
决定方法的因素少于每一帧的触发方式。内容自行变化时,例如仪表盘、构建日志或渲染进度条,只需要定时器。内容随按键变化时,例如幻灯片或阅读器,需要定时器加按键。
内容随用户逐步点击任务而变化则属于另一类工作。定时器会在两次点击之间截取大量相同的帧,并错过每次点击的瞬间。这种情况下,可使用点击驱动的工具,例如 Temposhot 的 Action Capture,每次有效点击保存一帧,而不是每个间隔保存一帧。
自动化相关的参数
screencapture 的选项比多数人用到的要多。以下参数覆盖了单台 Mac 上几乎所有的自动化任务。
完整参数列表因 macOS 版本而异,请在终端中运行 man screencapture 查看。对于幻灯片,-R 指定固定区域最有用,因为它会排除菜单栏、Dock 和通知横幅。
开始前:允许屏幕录制并测试三帧
macOS 要求任何截取其他应用窗口的应用都获得屏幕录制权限。运行截图的应用需要该权限:shell 循环需要终端,工作流需要 Automator(保存的应用需单独授权),快捷指令需要快捷指令 App。
打开 System Settings,进入 Privacy and Security,在屏幕录制列表中打开对应应用。该标签因 macOS 版本而异。更改后退出并重新打开该应用。
在任何长时间运行之前先测试三帧。三帧可以确认权限、文件名和时序是否正常,测试约需十秒。若 500 帧的运行只保存了壁纸,浪费的时间要多得多。
各方式需要的权限
权限属于执行命令的进程,而不属于脚本文件。从 iTerm 启动的循环需要 iTerm 在列表中,保存为应用的工作流需要该应用在列表中,即使 Automator 本身已获得允许也是如此。
开关已打开但帧中仍为壁纸
macOS 有时会将应用列为已允许,但截图仍只返回桌面图片。关闭开关后再打开,然后退出并重新打开应用。如果脚本从编辑器内置的终端运行,则需要授权的是该编辑器,而不是终端。
长时间运行前准备 Mac
运行到第 80 帧时失败的 120 帧任务比不运行更糟,因为空缺很容易被忽略。开始前的简短检查清单可以排除常见原因。
在终端中运行 screencapture 三帧测试
mkdir -p ~/Captures/test
for i in 1 2 3; do
screencapture -x -m ~/Captures/test/frame-$i.png
sleep 3
done
open ~/Captures/test
检查文件夹中的三件事:应有 3 个文件,每个文件都显示你打开的窗口,文件名按截取顺序排列。-x 参数关闭快门声,-m 将截取限定为主显示器。命令行指南 介绍了固定区域、JPG 输出和长时间运行。
为文件编号以正确排序
frame-$i.png 对 3 帧有效,但超过 9 帧后排序会出错:在普通文本排序中,访达和多数工具会把 frame-10 排在 frame-2 之前。补零编号可解决此问题。printf '%03d' 将 7 转换为 007,从而确保 120 帧在任何地方都保持正确顺序。
name=$(printf 'frame-%03d.png' $i)
screencapture -x -R 0,25,1440,875 ~/Captures/deck/$name
按实际任务调整测试规模
以 120 张幻灯片的示例为例,循环运行 120 次,每次等待 2 秒。这需要约 4 分钟的截取时间,外加几秒的准备时间。在 1440 × 875 的区域下,包含文字和简单图形的 PNG 幻灯片通常每张不到 1 MB,因此整个运行的输出约为 50 至 120 MB。
使用 Automator 制作可视化工作流
在 Automator 中新建 Workflow。添加 Take Screenshot,再添加设为 3 秒的 Pause,然后添加设为自动循环并在 3 次后停止的 Loop。运行后检查文件夹。
如果只出现一个文件,说明每次执行都写入了相同的文件名。将 Take Screenshot 替换为 Run Shell Script,并使用终端测试中带编号文件名的 screencapture 命令。将完成的工作流保存为 Application,即可双击运行。完整的 shell 操作参见 Automator 指南。
在 Automator 中保存计数器
Loop 操作不会把计数器传递给下一次执行。最简单的做法是让 shell 根据文件夹中已有的文件计算下一个编号,这样每次执行都会生成新的文件名。
dir=~/Captures/deck
mkdir -p "$dir"
n=$(ls "$dir" | wc -l | tr -d ' ')
screencapture -x -m "$dir/$(printf 'frame-%03d.png' $((n + 1)))"
这要求开始时文件夹为空。早前运行留下的文件会改变所有编号,因此需要清空文件夹,或为每次运行使用新文件夹。
保存为应用并授予访问权限
保存为 Application 的工作流在 macOS 看来是一个独立程序。它第一次截图时,macOS 会要求授予该应用屏幕录制权限,即使测试时 Automator 已获得允许也是如此。
授予一次权限,然后退出并重新打开保存的应用。如果应用被移动或以新名称重新保存,macOS 可能将其视为新应用并再次询问,因此应将最终应用放在固定位置,例如“应用程序”文件夹。
使用快捷指令制作启动器和触发器
新建快捷指令,将 Repeat 设为 3。在 Repeat 块内添加 Take Screenshot、在文件名中使用 Repeat Index 变量的 Save File,以及设为 3 秒的 Wait。运行后检查文件夹。
之后,快捷指令可以从菜单栏、键盘快捷键或终端中的 shortcuts run 启动。在 macOS Tahoe 26 及更高版本上,个人自动化可以在设定时间启动它。快捷指令指南 介绍了触发器和脚本权限。
从终端启动快捷指令
shortcuts run "Deck Capture" 按名称运行快捷指令。与 caffeinate 结合使用时,Mac 只在快捷指令运行期间保持唤醒,这比为整天更改节能设置更安全。
caffeinate -di shortcuts run "Deck Capture"
Repeat Index 从 1 开始,且不补零。超过 9 帧后,可在 Text 操作中补零,或按创建日期而非名称对文件排序。
定时启动及其限制
在设定时间启动的个人自动化适用于无人值守时的截图,例如每天早上 9:00 的仪表盘。到达该时间时 Mac 必须处于唤醒且已解锁状态,因为锁屏时不会显示仪表盘。
每个定时快捷指令都应简短且独立。截取 3 帧后即停止的快捷指令,第二天早上很容易检查;循环运行 2 小时的快捷指令则难以验证,也容易忘记关闭。
仅在截图正常后添加翻页
翻页浏览幻灯片或文档时,每帧之间需要按一次键。请在三帧测试通过后再添加,使截图问题与按键问题不会同时出现。
三种方式都通过 System Events 发送按键,方法相同:
osascript -e 'tell application "System Events" to key code 124'
Key code 124 为右方向键。顺序很重要:先截图,再按键,然后等待足够长的时间,使下一页完成渲染。最后一帧之后不要按键,以免文档翻过最后一页。发送按键的应用需要辅助功能权限,且目标应用必须位于最前。
其他翻页操作的键码
key code 接收的是硬件键码,而不是字符。右方向键为 124,左方向键 123,下方向键 125,上方向键 126,空格 49,回车 36。若阅读器按屏滚动而非翻页,通常需要空格键(大约滚动一屏),而下方向键只滚动几行。
输入字符时改用 keystroke,例如对于用 N 键翻页的应用使用 keystroke "n"。在长时间运行前,先用三帧运行测试所有新按键。
完整的 120 张幻灯片脚本
以下脚本综合了前面的要素:补零文件名、固定区域、除最后一次外每次都按键,以及 2 秒等待。将其保存为 deck.zsh,并使用 caffeinate -di zsh deck.zsh 运行。
#!/bin/zsh
out=~/Captures/deck-$(date +%Y-%m-%d)
mkdir -p "$out"
total=120
sleep 5 # time to click into the presentation window
for i in $(seq 1 $total); do
screencapture -x -R 0,25,1440,875 "$out/$(printf 'slide-%03d.png' $i)"
if (( i < total )); then
osascript -e 'tell application "System Events" to key code 124'
fi
sleep 2
done
open "$out"
循环前的 5 秒 sleep 起到倒计时的作用。在此期间点击演示文稿窗口,使按键发送到演示文稿,而不是终端。
按键时序规则
幻灯片切换效果是帧模糊的常见原因。1 秒的淡入淡出需要至少 1.5 秒的等待,而在演示应用中关闭切换效果是更可靠的解决方法。
修复常见的截图自动化问题
- 只有壁纸。 正在运行的应用缺少屏幕录制权限。授予权限后重新打开应用。
- 只有一个文件而非多个。 每次执行都写入相同的文件名。在文件名中添加计数器。
- 运行后期出现黑帧。 显示器已休眠。在运行期间于终端中执行
caffeinate -di。 - 页面被跳过。 按键在页面渲染完成前触发。延长按键后的等待时间。
- 末尾多出一页。 按键在最后一次截图之后触发。在最后一次执行时跳过按键。
- 第二台显示器缺失。 使用
-D 1和-D 2分别截取每台显示器。
快速找到出错的帧
长时间运行出错时,先找到第一张错误的帧,再进行任何更改。在访达中打开文件夹,切换到图标视图,然后滚动直到某个缩略图看起来不同。帧号可以说明问题是从一开始就存在(权限或区域),是在固定时间出现(休眠或通知),还是随机出现(渲染时序)。
并排的重复帧表示按键未到达应用。两帧只相差一页,则说明按键已到达,但等待时间过短。当变化太小、肉眼难以辨别时,Compare Images 可以显示两帧之间的像素差异。
帧中的通知与覆盖层
全屏截图会记录屏幕上的所有内容,包括通知横幅、音量指示器以及弹出的聊天应用。勿扰模式可消除大部分横幅。使用 -R 指定固定区域并排除右上角,可去除其余横幅,因为横幅通常出现在那里。
Retina 显示器上的区域尺寸
-R 的数值以屏幕点为单位,而非像素。在 Retina 显示器上,1440 × 875 的区域会保存为 2880 × 1750 像素的图像。这样文字和 OCR 更清晰,但宽高都会翻倍,因此文件约为非 Retina 显示器上的四倍大。在规划存储空间之前,使用 Screenshot Resolution Checker 检查实际像素尺寸。
停止失控的循环
计数错误的循环可能运行的时间远超计划。在终端窗口中按 Control+C 可停止循环,已保存的帧会保留在文件夹中。对于快捷指令,选择菜单栏图标中的停止按钮。
内置工具何时不再是更简单的选择
内置工具能很好地处理固定数量、固定节奏的任务。每增加一项需求都要增加一个脚本:按名称截取单个窗口、在某个时钟时间停止、运行中途暂停和恢复,或生成可搜索 PDF或视频。
专用应用会把这些功能整合到设置中。在 Temposhot 的 Auto Capture 中,你可以从 Screens、Windows 或 Custom Area 中选择来源,然后设置停止条件(Screenshots、Duration 或 End time)、以毫秒、秒、分钟或小时为单位的间隔、可选的 Key press,以及 Countdown。悬浮工具栏可暂停、恢复和结束运行,结果可导出为 PNG、JPG、ZIP、可搜索 PDF 或 MP4。Kindle 等预设(20 张截图、500 毫秒、右方向键、3 秒倒计时)可保存配置以便重复使用。

120 张幻灯片任务在 Auto Capture 中的设置
同一任务可以映射为五项设置。窗口来源取代 -R 区域,Temposhot 会在倒计时结束后将窗口置于最前,因此无需点击。
按键自动化需要 Temposhot Pro 和辅助功能权限。若不使用 Pro,对于自行变化的内容(例如仪表盘或进度条),定时运行仍然可用,只是不带按键。
脚本与应用对比
以小时计的运行
内置循环在长时间定时运行中表现最弱,例如一次工作会话的延时摄影。脚本必须计算结束时间,在休眠后仍能继续运行,并处理显示器变化。在 Auto Capture 中,Duration 和 End time 停止条件可以覆盖这些需求,两者都是 Pro 功能。
内置的 Timelapse 预设是一个例子:1 小时 Duration、3 秒间隔、无按键、5 秒倒计时,约生成 1200 帧。以默认的每秒 15 帧导出为 MP4 后,这些帧约播放 80 秒。若 Mac 锁定或休眠,Auto Capture 会暂停其数据流,并在解锁后恢复;暂停的 Duration 运行不计入暂停的时间。
悬浮工具栏和 Capture 菜单也可在其他应用位于前台时提供键盘控制。
常见问题
哪种内置方法设置最快?
终端循环。它只需一项权限和五行代码,同样的代码之后可直接用于 Automator 或快捷指令。
需要让 Mac 保持唤醒吗?
需要。显示器休眠会产生黑帧,锁屏会中断截图。caffeinate -di 可在命令运行期间保持显示器和系统唤醒。
内置工具能截取单个窗口吗?
screencapture -l 可按 ID 截取窗口,但 macOS 没有列出窗口 ID 的内置命令。需要辅助脚本或专用应用。
截图自动化究竟是什么?
指工具按照规则(间隔、点击或 URL 列表)截图,而不是由人每次按快捷键。截图自动化术语条目 提供了更完整的定义。
如何把编号的 PNG 文件合并为一个 PDF?
按顺序使用 Image to PDF 合并。如果 PDF 必须可搜索,再使用 Screenshot to Searchable PDF 添加文字层。补零的文件名可确保添加文件时顺序正确。
为什么帧来自错误的显示器?
-m 始终截取主显示器,即带有菜单栏的那一台。将目标窗口移到该显示器,或使用 -D 加显示器编号截取其他显示器。
将可重复的截图转化为成品
当内置循环需要窗口来源、翻页以及 PDF 或 MP4 导出时,参见 Mac 上的截图自动化,或按照 自动截取指南 操作。
screenshot-automationmacosscreencaptureshortcutsautomator
本文使用的术语: screenshot timer, screenshot workflow, window capture
把重复性截图整理为成品
Temposhot 可按定时或每次点击进行截图,并将结果导出为 PDF、图片、ZIP 或 MP4。
相关文章
- 如何在 Mac 上使用 Automator 重复截图使用 Take Screenshot 和 Loop 构建 Automator 截图工作流,需要有序文件时改用 shell 操作。
- 如何通过命令行在 Mac 上自动截图使用 macOS screencapture 循环进行全屏、固定区域和翻页截图,包含安全的文件命名和故障排查。
- 在 Mac 上使用 Shortcuts 应用自动截图在 Mac 上使用 Shortcuts 定时截图,在设定时间或应用打开时运行快捷指令,并解决脚本和屏幕录制权限问题。
- 2026年Mac最佳截图自动化工具按自动化任务选择 Mac 截图工具:定时间隔截图、每次点击截一张、URL 列表批量截图或生成可搜索 PDF,并比较 Temposhot、Snagit 和 CleanShot X。