跳至内容

在 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。只有下文可选的翻页步骤需要此设置。

创建并测试重复截图快捷指令

  1. 创建快捷指令

    打开 Shortcuts,点击加号按钮,将快捷指令命名为 “Repeat Screenshots”。

  2. 添加 Repeat

    添加 Repeat 操作,首次测试时将次数设为 3。

  3. 在循环内添加 Take Screenshot

    将 Take Screenshot 拖入 Repeat 块内。默认截取整个屏幕。

  4. 保存每张图片

    在块内添加 Save File。关闭每次询问保存位置的选项,选择仅用于此任务的文件夹,并在文件名中使用 Repeat Index 变量,使每次循环写入一个新文件。

  5. 添加等待

    在 Save File 之后添加 Wait,设为 3 秒。

  6. 运行测试

    点击运行按钮,检查文件夹中是否有 3 个文件。确认无误后再提高次数。

Repeat Index 从 1 开始,因此文件名与截取顺序一致。可以使用 “frame-1”、“frame-2” 等名称。除非按添加日期排序,否则 Finder 会把 “frame-10” 排在 “frame-1” 之后。

Repeat Screenshots 快捷指令中的四个操作,按顺序为:循环次数、循环内的 Take Screenshot、以 Repeat Index 命名的 Save File,以及 3 秒的 Wait。

根据目标时长设置次数

次数是决定快捷指令运行时长的唯一设置。每次循环的耗时包括截图和保存的时间,以及 Wait 操作的时间。假设截图与保存合计约 0.2 秒,则 3 次循环、每次等待 3 秒的测试约需 9.6 秒完成。

3 次循环测试的时间线:第 1 次循环在 0:00,第 2 次约在 0:03,第 3 次约在 0:06,最后一次等待结束后快捷指令于约 0:09 完成。

要覆盖更长的时间,用时长除以间隔。若仪表盘运行 30 分钟,每 15 秒截取一次,需要将 30 乘以 60 再除以 15,即 120 次循环。每次循环约 0.2 秒,因此 Wait 应为 14.8 秒,使间隔保持为 15 秒。设为 120 次之前,先用 4 次循环测试该设置。

在 Temposhot 中完成同一任务时,使用 Duration 停止条件。将 Duration 设为 30 分钟,Interval 设为 15 秒,会话到达时间上限后结束,无需设置次数。暂停的时间不计入时长,因此暂停会延长实际经过的时间,但不会延长运行时长。

30 分钟仪表盘运行的三个数值:120 次循环、每次截取间隔 15 秒、每次循环的 Wait 为 14.8 秒。
Repeat Screenshots 测试运行的设置:重复次数为 3,Save File 不询问保存位置,保存文件夹仅用于本任务,Wait 为 3 秒。

可选:每次截取之间翻页

在 Wait 之后添加 Run AppleScript,输入以下一行:

tell application "System Events" to key code 124

键码 124 为右方向键。按键发送给最前面的应用,因此快捷指令开始前需要先点击阅读窗口。快捷指令从菜单栏或键盘快捷键运行时,启动时位于前方的应用会接收按键。此步骤需要 Shortcuts 具有辅助功能权限。

设置翻页后的等待时间

翻页需要两段等待:页面渲染所需的时间,以及每次循环之间的间隔。Run AppleScript 之后的 Wait 操作负责渲染时间。若页面渲染需要 2 秒,在按键后设置 1 秒的 Wait,则下一次 Take Screenshot 之前,页面共有 3 秒时间。按键操作应放在 Wait 之前,使 Wait 在页面翻转后开始计时。

四步循环:Take Screenshot,以 Repeat Index 命名的 Save File,Run AppleScript 发送右方向键,然后等待页面渲染。

顺序很重要。若在按键之后才保存,第一次循环就会截取到下一页,第一页将永远不会出现在文件夹中。长时间运行前,应在 Preview 中检查首尾两个文件的内容是否与文档对应。

长时间运行前检查第一帧

简短的测试运行能发现大部分设置错误。将次数提高到 3 以上之前,请按以下清单检查:

长时间运行前的四项检查:文件夹中有 3 个文件,第 1 帧显示目标而非桌面,文件夹中没有旧帧,Mac 保持唤醒或在终端中运行 caffeinate。

在 Preview 中同时打开第一个和最后一个文件。若两张图片完全相同,说明循环之间页面没有变化。此时应增加按键后的等待时间,或确认阅读窗口位于最前。

从个人自动化启动

在 macOS Tahoe 26 及更高版本上,Mac 版 Shortcuts 应用有 Automation 部分。个人自动化会在触发器满足时运行快捷指令,触发器可以是一天中的某个时间,也可以是指定应用打开时。例如,09:00 的自动化可以运行 “Repeat Screenshots” 来截取仪表盘。

在边栏中选择 Automation,新建个人自动化,选择触发器,并选择快捷指令。检查运行设置,避免自动化等待一个你看不到的确认。若 Shortcuts 窗口中没有 Automation 部分,说明该 macOS 版本不提供 Mac 上的自动化功能,请改从终端运行快捷指令。

定时截图需要在触发时间让 Mac 处于唤醒且已解锁的状态。据此安排时间表:若 Mac 在 08:30 进入睡眠,则 09:00 的运行要等到有人唤醒它才会开始。下方设置与仪表盘示例一致。

个人自动化设置:每天 09:00 的时间触发器,运行 Repeat Screenshots 快捷指令,关闭确认选项,触发时 Mac 保持唤醒。

从终端运行快捷指令

macOS 自带 shortcuts 命令:

shortcuts list
shortcuts run "Repeat Screenshots"

这使 shell 脚本、定时任务或其他工具能够启动快捷指令。快捷指令仍以 Shortcuts 应用的权限运行,而不是终端的权限。

在设置时间表之前,若要测量一次运行的实际耗时,可以用 time 包裹该命令:

time shortcuts run "Repeat Screenshots"

先以 3 次循环运行快捷指令,将输出的时间与时间估算部分的结果比较。两者差距较大,通常是某个 Wait 操作比预期长,或所选磁盘上的保存步骤较慢。在完整次数下使用同一命令验证后,再信任该时间表。

Shortcuts 与 Automator 的比较

对比项ShortcutsAutomator
循环按次数重复(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 次循环测试后的文件夹。序列中缺少的编号表示某次循环失败,或某个文件被手动重命名。

3 次循环测试后快捷指令输出文件夹的文件树:任务的 Screenshots 文件夹中包含 frame-1.png、frame-2.png 和 frame-3.png。

打开任何文件之前先统计文件数量。文件数量符合预期、文件名按顺序排列且大小接近第一帧,即通过基本检查。随后打开运行开始、中间和结束部分的若干帧以确认内容。若页面在运行中途停止变化,生成的文件仍会在文件名和大小上看起来正确,因此这一步不可省略。

应将数量与所设置的循环次数比较,而不是与根据时间估算出的文件数比较。提前停止的运行留下的文件更少;跳过 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 中对应的停止条件、间隔、按键和开始设置进行比较。

此对应关系涵盖常见情况。快捷指令可以在两次循环之间运行脚本,而 Auto Capture 不能。若任务需要在两次截取之间执行自定义逻辑,应保留快捷指令,仅将 Temposhot 用于取景和导出步骤。

Auto Capture 不会在某个时钟时间自动启动。若任务必须在 09:00 无人值守地开始,仍需要自动化或脚本。若要在某个时钟时间停止,可使用 End time,它会在所选的本地时间结束会话。

Temposhot 定时运行中使用的快捷键:

Temposhot 运行的快捷键列表:Shift+Command+R 启动 Auto Capture,Command+句点 结束截取,Command+3 打开 Action Capture。

常见问题

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 帧测试。

仪表盘运行的四个设置步骤:选择 Screens 来源,将 Duration 设为 30 分钟、Interval 设为 15 秒,将倒计时设为 5 秒,然后运行 3 帧测试。

在 Auto Capture 中,3 帧测试使用 Screenshots 停止条件,次数为 3,因此测试在截取 3 帧后结束,无需等待完整时长。对照仪表盘检查这 3 帧,然后将停止条件改为 Duration 进行正式运行。倒计时为点击 Start 后将仪表盘调到最前提供时间,因此可替代快捷指令每次运行时所需的手动步骤。

运行开始后,浮动工具栏会显示剩余时间。Finish Capture 可提前结束运行,并保留已保存的帧。

若快捷指令所需的窗口来源、翻页以及 PDF 或 MP4 导出功能都需要,请在 Auto Capture 中设置相同的任务,或从 截取预设 开始。

shortcutsscreenshot-automationmacosworkflows

把重复性截图整理为成品

Temposhot 可按定时或每次点击进行截图,并将结果导出为 PDF、图片、ZIP 或 MP4。

相关文章