在 Mac 上使用 Shortcuts 应用自动截图
在 Mac 上使用 Shortcuts 定时截图,在设定时间或应用打开时运行快捷指令,并解决脚本和屏幕录制权限问题。
8 分钟阅读效率作者:Temposhot Team
Mac 上的 Shortcuts 应用可以截图、等待并重复执行,操作通过拖拽放入即可。快捷指令还可以从菜单栏、键盘快捷键、终端,或在较新的 macOS 版本上通过个人自动化运行。本文构建一个重复截图的快捷指令,以三种方式启动它,并解决阻止其运行的权限问题。
允许脚本操作和屏幕截取
有两项权限决定快捷指令能否运行。
屏幕截取。 快捷指令第一次截图时,macOS 会请求录制屏幕的权限。请允许。如果之前拒绝了,打开 System Settings,进入 Privacy and Security,在屏幕录制列表中开启 Shortcuts。不同 macOS 版本中该项的名称有所不同。
脚本操作。 在允许之前,Shortcuts 会阻止 “Run Shell Script” 和 “Run AppleScript” 操作。打开 Shortcuts 应用,选择 Settings,然后进入 Advanced,开启 Allow Running Scripts。只有下文可选的翻页步骤需要此设置。
创建并测试重复截图快捷指令
创建快捷指令
打开 Shortcuts,点击加号按钮,将快捷指令命名为 “Repeat Screenshots”。
添加 Repeat
添加 Repeat 操作,首次测试时将次数设为 3。
在循环内添加 Take Screenshot
将 Take Screenshot 拖入 Repeat 块内。默认截取整个屏幕。
保存每张图片
在块内添加 Save File。关闭每次询问保存位置的选项,选择仅用于此任务的文件夹,并在文件名中使用 Repeat Index 变量,使每次循环写入一个新文件。
添加等待
在 Save File 之后添加 Wait,设为 3 秒。
运行测试
点击运行按钮,检查文件夹中是否有 3 个文件。确认无误后再提高次数。
Repeat Index 从 1 开始,因此文件名与截取顺序一致。可以使用 “frame-1”、“frame-2” 等名称。除非按添加日期排序,否则 Finder 会把 “frame-10” 排在 “frame-1” 之后。
根据目标时长设置次数
次数是决定快捷指令运行时长的唯一设置。每次循环的耗时包括截图和保存的时间,以及 Wait 操作的时间。假设截图与保存合计约 0.2 秒,则 3 次循环、每次等待 3 秒的测试约需 9.6 秒完成。
要覆盖更长的时间,用时长除以间隔。若仪表盘运行 30 分钟,每 15 秒截取一次,需要将 30 乘以 60 再除以 15,即 120 次循环。每次循环约 0.2 秒,因此 Wait 应为 14.8 秒,使间隔保持为 15 秒。设为 120 次之前,先用 4 次循环测试该设置。
在 Temposhot 中完成同一任务时,使用 Duration 停止条件。将 Duration 设为 30 分钟,Interval 设为 15 秒,会话到达时间上限后结束,无需设置次数。暂停的时间不计入时长,因此暂停会延长实际经过的时间,但不会延长运行时长。
可选:每次截取之间翻页
在 Wait 之后添加 Run AppleScript,输入以下一行:
tell application "System Events" to key code 124
键码 124 为右方向键。按键发送给最前面的应用,因此快捷指令开始前需要先点击阅读窗口。快捷指令从菜单栏或键盘快捷键运行时,启动时位于前方的应用会接收按键。此步骤需要 Shortcuts 具有辅助功能权限。
设置翻页后的等待时间
翻页需要两段等待:页面渲染所需的时间,以及每次循环之间的间隔。Run AppleScript 之后的 Wait 操作负责渲染时间。若页面渲染需要 2 秒,在按键后设置 1 秒的 Wait,则下一次 Take Screenshot 之前,页面共有 3 秒时间。按键操作应放在 Wait 之前,使 Wait 在页面翻转后开始计时。
顺序很重要。若在按键之后才保存,第一次循环就会截取到下一页,第一页将永远不会出现在文件夹中。长时间运行前,应在 Preview 中检查首尾两个文件的内容是否与文档对应。
长时间运行前检查第一帧
简短的测试运行能发现大部分设置错误。将次数提高到 3 以上之前,请按以下清单检查:
在 Preview 中同时打开第一个和最后一个文件。若两张图片完全相同,说明循环之间页面没有变化。此时应增加按键后的等待时间,或确认阅读窗口位于最前。
从个人自动化启动
在 macOS Tahoe 26 及更高版本上,Mac 版 Shortcuts 应用有 Automation 部分。个人自动化会在触发器满足时运行快捷指令,触发器可以是一天中的某个时间,也可以是指定应用打开时。例如,09:00 的自动化可以运行 “Repeat Screenshots” 来截取仪表盘。
在边栏中选择 Automation,新建个人自动化,选择触发器,并选择快捷指令。检查运行设置,避免自动化等待一个你看不到的确认。若 Shortcuts 窗口中没有 Automation 部分,说明该 macOS 版本不提供 Mac 上的自动化功能,请改从终端运行快捷指令。
定时截图需要在触发时间让 Mac 处于唤醒且已解锁的状态。据此安排时间表:若 Mac 在 08:30 进入睡眠,则 09:00 的运行要等到有人唤醒它才会开始。下方设置与仪表盘示例一致。
从终端运行快捷指令
macOS 自带 shortcuts 命令:
shortcuts list
shortcuts run "Repeat Screenshots"
这使 shell 脚本、定时任务或其他工具能够启动快捷指令。快捷指令仍以 Shortcuts 应用的权限运行,而不是终端的权限。
在设置时间表之前,若要测量一次运行的实际耗时,可以用 time 包裹该命令:
time shortcuts run "Repeat Screenshots"
先以 3 次循环运行快捷指令,将输出的时间与时间估算部分的结果比较。两者差距较大,通常是某个 Wait 操作比预期长,或所选磁盘上的保存步骤较慢。在完整次数下使用同一命令验证后,再信任该时间表。
Shortcuts 与 Automator 的比较
| 对比项 | Shortcuts | Automator |
|---|---|---|
| 循环 | 按次数重复(Repeat with a count) | 按次数或分钟循环(Loop with a count or minutes) |
| 等待 | 以秒为单位的 Wait 操作 | Pause 操作 |
| 文件名 | Repeat Index 变量 | 固定名称,除非重命名 |
| 触发方式 | 菜单栏、键盘、终端,以及较新 macOS 上的自动化 | 在应用中运行、保存为应用、快速操作 |
| 脚本 | 允许后可用的 shell 和 AppleScript 操作 | shell 和 AppleScript 操作 |
| 共享 | 快捷指令文件通过 iCloud 同步 | 工作流文件和应用 |
两者使用相同的截取权限模型。对于新工作流和新的触发方式,Shortcuts 是更好的起点。Automator 仍适用于已在维护的旧工作流。Automator 版本的同一任务展示了使用 Pause 和 Loop 的相同循环。
排查快捷指令问题
- 图片只显示壁纸。 Shortcuts 缺少屏幕录制权限。允许后重新运行。
- 文件夹中只有一个文件。 Save File 覆盖了固定名称。在文件名中加入 Repeat Index。
- “Run Shell Script” 或 “Run AppleScript” 失败。 在 Shortcuts 设置中开启 Allow Running Scripts。
- 按键没有反应。 Shortcuts 需要辅助功能权限,且目标应用必须位于最前。
- 自动化从未运行。 可能在等待确认,或触发时 Mac 处于睡眠状态。
- 画面全黑。 显示器已休眠。运行期间在终端中执行
caffeinate -di。 - 画面显示通知横幅。 截图包含截取时屏幕上的所有内容。运行前开启专注模式,或关闭通知来源。
- 画面显示了错误的应用。 Take Screenshot 截取整个屏幕,因此截图时位于前方的应用会出现在画面中。将目标窗口置于最前并保持。
- 文件夹中积累了旧帧。 第二次运行若使用同一文件夹,会在第一次运行的文件后追加,或覆盖同名文件。每次运行使用一个文件夹,并以日期命名。
运行结束后检查文件夹
正确的运行会在一个文件夹中为每次循环留下一个文件,文件名按循环顺序排列。下面的目录树显示 3 次循环测试后的文件夹。序列中缺少的编号表示某次循环失败,或某个文件被手动重命名。
打开任何文件之前先统计文件数量。文件数量符合预期、文件名按顺序排列且大小接近第一帧,即通过基本检查。随后打开运行开始、中间和结束部分的若干帧以确认内容。若页面在运行中途停止变化,生成的文件仍会在文件名和大小上看起来正确,因此这一步不可省略。
应将数量与所设置的循环次数比较,而不是与根据时间估算出的文件数比较。提前停止的运行留下的文件更少;跳过 Wait 操作的运行会留下相同数量的文件,但耗时更短。将首尾文件的修改时间与运行前记录的开始、结束时间比较。
按失败点规划运行
快捷指令中的每个步骤都可能因不同原因失败。下表列出失败情况、在文件夹中可见的信号,以及应优先检查的项目。
| 步骤 | 失败 | 文件夹中的信号 | 优先检查 |
|---|---|---|---|
| Take Screenshot | 缺少权限 | 仅有壁纸或菜单栏 | 屏幕录制列表 |
| Save File | 文件夹缺失或只读 | 没有新文件,或出现错误 | 文件夹存在,且 Finder 可以写入 |
| Repeat Index 名称 | 固定名称 | 只有一个文件,每次循环都会变化 | 文件名包含 Repeat Index |
| Run AppleScript | 不允许运行脚本 | 页面不翻转,出现错误信息 | 允许运行脚本(Allow Running Scripts) |
| Wait | 对页面而言过短 | 重复的帧 | 将 Wait 时长与渲染时间比较 |
按此顺序测试各步骤。一个步骤失败会掩盖后面的步骤,因此应先修复第一条失败的项目,再查看其他项目。
为慢速页面调整节奏
在短暂加载后才刷新数据的仪表盘,比静态文档需要更长的等待。应测量最慢的页面,而不是第一个页面。打开页面并重新加载,记录最后一个图表绘制完成所需的时间。加 1 秒作为余量,并将结果用作翻页后的 Wait。
例如,某页面需要 4 秒才能绘制完最后一个图表,则按键后的 Wait 至少应为 5 秒。以此速度运行 120 次循环,仅等待时间就至少为 600 秒,即 10 分钟,另加每次保存的时间。设置时间表时应计入该总时长。
每次循环的小额延迟会累积。若保存耗时 0.5 秒而非 0.2 秒,每次循环增加 0.3 秒,120 次循环共增加 36 秒。将 time 命令测得的总时长与 3 次循环测试后的估算比较,差距扩大时,应修正 Wait。
若 Wait 长于所需间隔,快捷指令的运行速度会慢于计划。应将多出的时间移出循环,使间隔等于 Wait 与保存时间之和,然后用 3 次循环测试验证。
避免私人内容出现在画面中
Take Screenshot 会截取屏幕上的所有内容,包括邮件预览、聊天窗口和与任务无关的浏览器标签页。运行前请关闭或隐藏这些内容。若截图包含客户数据,应为截取单独使用一个用户账户。
分享每张画面前请逐一检查。在编辑器中进行模糊或裁剪是快捷指令不执行的第二步,快捷指令会原样保存整个屏幕。
快捷指令不是最佳截取工具的情况
Shortcuts 是通用的自动化工具。截取循环可以运行,但以下任务需要额外的搭建工作:
- 截取单个窗口或固定区域,需要使用
screencapture -l或-R的 shell 步骤。 - 在某个时钟时间停止,需要在循环中加入日期检查。
- 运行期间没有暂停、继续或完成按钮。
- 生成合并的可搜索 PDF,需要其他工具进行 OCR。
Temposhot 的 Auto Capture 将这些控制项作为设置提供:Screens、Windows 或 Custom Area 来源,Screenshots、Duration 或 End time 停止条件,Key press 字段,Countdown 选项(None、3、5 或 10 秒),以及浮动工具栏。Key press 为 Pro 功能。免费方案限制每个会话的截图数量,Temposhot Pro 取消该限制。
下表将快捷指令的每个步骤对应到 Auto Capture 的设置。
此对应关系涵盖常见情况。快捷指令可以在两次循环之间运行脚本,而 Auto Capture 不能。若任务需要在两次截取之间执行自定义逻辑,应保留快捷指令,仅将 Temposhot 用于取景和导出步骤。
Auto Capture 不会在某个时钟时间自动启动。若任务必须在 09:00 无人值守地开始,仍需要自动化或脚本。若要在某个时钟时间停止,可使用 End time,它会在所选的本地时间结束会话。
Temposhot 定时运行中使用的快捷键:
常见问题
Take Screenshot 会截取每个显示器吗?
默认截取整个屏幕。显示器或窗口的选择选项取决于 macOS 版本。打开该操作的详细信息,查看当前版本提供的选项。
快捷指令能把截图制作成 PDF 吗?
可以。Make PDF 操作会将图片合并为一个 PDF。这种方式生成的 PDF 没有文本层,因此无法搜索或复制其中的内容。若需要可搜索的文件,可将帧交给 Screenshot to Searchable PDF,或在 Temposhot 中选择可搜索 PDF 选项导出。
能为快捷指令设置键盘快捷键吗?
可以。打开快捷指令的详细信息,添加键盘快捷键。避免使用 macOS 已占用的组合,例如 Shift+Command+3。
Repeat 操作能截取多少张截图?
Repeat 按输入的次数执行。长时间运行会迅速占满磁盘空间,因此应先以小次数测试,并检查文件大小。若每次循环输出一个 PNG,120 次循环会产生 120 个文件,文件夹大小等于单张帧的大小乘以 120。已知单帧大小时,可用此方法估算总大小。
快捷指令能只截取当前窗口吗?
不能。Take Screenshot 默认截取整个屏幕。仅截取窗口需要其他来源。在 Temposhot 中,可在 Auto Capture 中选择 Windows 来源,或在 Action Capture 中使用 Specific Window。
快捷指令能裁剪帧吗?
快捷指令本身不能。Take Screenshot 保存整个屏幕。Temposhot 的 Auto Capture 提供 Framing 选项,可裁剪每一帧;其编辑器中的 Blur 可在导出前遮盖细节。可在运行结束后使用这些功能,或使用 Custom Area 截取固定区域。
同一任务能同时从终端和自动化运行吗?
可以,但应只保留一份次数和等待时间的设置。两份设置若只修改其中一份,就会出现偏差。每次修改后都应运行时间部分的测试。
将可重复的截图变为成品
配方:在 Temposhot 中运行 30 分钟仪表盘
以下设置使用 Auto Capture 复现快捷指令示例。按此顺序设置,然后在完整运行前进行 3 帧测试。
在 Auto Capture 中,3 帧测试使用 Screenshots 停止条件,次数为 3,因此测试在截取 3 帧后结束,无需等待完整时长。对照仪表盘检查这 3 帧,然后将停止条件改为 Duration 进行正式运行。倒计时为点击 Start 后将仪表盘调到最前提供时间,因此可替代快捷指令每次运行时所需的手动步骤。
运行开始后,浮动工具栏会显示剩余时间。Finish Capture 可提前结束运行,并保留已保存的帧。
若快捷指令所需的窗口来源、翻页以及 PDF 或 MP4 导出功能都需要,请在 Auto Capture 中设置相同的任务,或从 截取预设 开始。
shortcutsscreenshot-automationmacosworkflows
把重复性截图整理为成品
Temposhot 可按定时或每次点击进行截图,并将结果导出为 PDF、图片、ZIP 或 MP4。
相关文章
- 如何在 Mac 上使用 Automator 重复截图使用 Take Screenshot 和 Loop 构建 Automator 截图工作流,需要有序文件时改用 shell 操作。
- 如何通过命令行在 Mac 上自动截图使用 macOS screencapture 循环进行全屏、固定区域和翻页截图,包含安全的文件命名和故障排查。
- 如何用 Mac 内置工具自动截图用 screencapture、Automator 或快捷指令在 Mac 上自动截图,包括权限设置、安全的循环方式和故障排查。
- Mac 上的截图自动化是什么?Mac 上截图自动化的含义,它与手动截图和屏幕录制的区别,以及何时需要专用的截图捕获工作流。