Macのコマンドラインでスクリーンショットを自動撮影する方法
macOSのscreencaptureをループで実行し、全画面、固定範囲、ページ送り付きのスクリーンショットを撮る方法を解説します。安全なファイル名とトラブル対処も紹介します。

この記事では、macOSのscreencaptureをTerminalから実行し、スクリーンショット撮影を自動化します。権限を確認して1枚を試し、全画面と固定範囲のループを作ります。必要ならページ送りのキー入力も追加し、停止方法とトラブル対処まで確認します。
コマンドを調べる前に権限を確認する
画像が真っ黒になる場合や、保護されたアプリの内容が写らない場合は、Terminalに画面収録アクセスが必要な可能性があります。システム設定 > プライバシーとセキュリティ > 画面収録とシステムオーディオを開いてTerminalを許可し、macOSから求められたらTerminalを開き直します。
スクリーンショットを撮るだけなら、アクセシビリティ権限は不要です。osascriptで別のアプリを操作したり、System Events経由でキーを送ったりするときだけ必要になります。
Terminalからスクリーンショットを1枚撮る
まずは、1つのファイルを保存します。
screencapture -x "$HOME/Desktop/test-screenshot.png"
-xオプションは、スクリーンショットの効果音を鳴らさないための指定です。ファイルが正しく撮れていれば、短いループへ進みます。
主な標準オプションは次のとおりです。
| オプション | 結果 |
|---|---|
-R x,y,width,height | 固定した長方形の範囲を撮る |
-m | メインモニターだけを撮る |
-i | 範囲またはウインドウを対話式に選ぶ |
-w | 対話式でウインドウだけを選べるようにする |
-T 5 | 撮影を5秒遅らせる |
-t jpg | JPG形式で保存する |
-C | 非対話式キャプチャにカーソルを含める |
-Tフラグは簡単なスクリーンショットタイマーとして使えます。利用中のmacOSで使えるオプションは、Terminalでman screencaptureを実行して確認してください。
数秒おきに画面全体を撮る
長時間動かす前に、次の3フレームのループを試します。
RUN_DIR="$HOME/Desktop/screenshot-run-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$RUN_DIR"
COUNT=3
for ((i=1; i<=COUNT; i++)); do
screencapture -x "$RUN_DIR/frame-$(printf "%03d" "$i").png"
if (( i < COUNT )); then
sleep 5
fi
done
ファイルはframe-001.png、frame-002.pngのような順に並びます。条件分岐があるため、最後のスクリーンショットの後に不要な5秒待機は入りません。
本番用にCOUNTを増やす前に、3ファイルすべてを確認します。途中で止めるにはControl-Cを押します。それまでに保存されたファイルは実行用フォルダに残ります。
固定範囲を繰り返し撮る
対象が同じ位置にある場合は、-Rを追加します。
RUN_DIR="$HOME/Desktop/area-run-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$RUN_DIR"
COUNT=20
for ((i=1; i<=COUNT; i++)); do
screencapture -x -R 100,100,1200,800 "$RUN_DIR/frame-$(printf "%03d" "$i").png"
if (( i < COUNT )); then
sleep 5
fi
done
長方形の形式はx,y,width,heightです。ウインドウを動かしても、コマンドは元の座標を撮り続けます。まず3フレームで試し、ループが終わるまでは対象を動かさないでください。
Retinaディスプレイでは、論理サイズが400x300の範囲から800x600のRetina画像が作られることがあります。コマンドが違う範囲を選んだのではなく、macOSがディスプレイのピクセル密度に合わせて保存した結果です。
PNGではなくJPGで保存する
-t jpgと.jpg拡張子を使います。
screencapture -x -t jpg "$HOME/Desktop/test-screenshot.jpg"
インターフェース上の文字や図には、PNGのほうが無難です。写真中心の内容ではJPGのほうが小さくなりますが、細かな文字がにじむことがあります。
最後のページを行き過ぎず、撮影の間にキーを送る
次のページ送り用ループは、まず画面を撮影し、次のキャプチャが残っている場合だけ右矢印キーを送ります。その後、新しいページが描画されるまで待ちます。
RUN_DIR="$HOME/Desktop/page-run-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$RUN_DIR"
COUNT=50
for ((i=1; i<=COUNT; i++)); do
screencapture -x "$RUN_DIR/page-$(printf "%03d" "$i").png"
if (( i < COUNT )); then
osascript -e 'tell application "System Events" to key code 124'
sleep 1
fi
done
key code 124は右矢印キーです。if (( i < COUNT ))の条件により、最後のページを撮り終えた後はキーが送られません。
まず3ページで試してください。実行中は対象アプリを前面に保ちます。フォーカスが移ると、System Eventsは別のアプリへ右矢印を送ってしまいます。
長時間実行中のスリープを防ぐ
無人で長く動かす場合は、スクリプトをファイルに保存し、caffeinate経由で起動します。
caffeinate -i /bin/zsh "$HOME/Desktop/capture-run.zsh"
-iオプションは、スクリプトの実行中にアイドル状態のシステムがスリープするのを防ぎます。画面のロック、動かしたウインドウ、更新が止まったアプリまでは直せません。離れる前にワークフローを試してください。
screencaptureループのトラブルシューティング
| 症状 | 確認すること |
|---|---|
| 画像が真っ黒、または一部しか写らない | Terminalに「画面収録とシステムオーディオ」を許可し、開き直して再試行する |
could not create image from display | セッションにログイン中で、ディスプレイが利用できることを確認する |
| 切り抜く範囲が違う | ウインドウを最終位置へ置いてから、-Rの座標を更新する |
| ファイルが上書きされる | 新しいタイムスタンプ付きフォルダと、一意の連番ファイル名を使う |
| 右矢印が別の場所へ送られる | 対象アプリを前面に戻し、テストを3ページに短縮する |
| ページが飛ばされる | キー入力後の待ち時間を長くする |
| スクリプトが動き続ける | Terminalに戻ってControl-Cを押す |
スクリプトが簡単な方法ではなくなったら
コマンドラインによるスクリーンショット自動化は、座標が固定され、素材ファイルをそのまま扱い、ワークフローを自分で保守できる場合に向いています。実行ごとに対象、枚数、間隔、キー入力、確認手順を変えるなら、画面上で調整できるインターフェースのほうが扱いやすくなります。
Shotomaticは、こうしたキャプチャ設定と撮影後のフレームを1つのMacアプリにまとめ、画像、ZIP、PDF、MP4へ書き出せます。ShotomaticでMacのスクリーンショットを自動化する方法をご覧ください。
画像がすでに揃っていて、1つのファイルにまとめることが主目的なら、MacでスクリーンショットをPDFに保存する方法に進んでください。
よくある質問
MacのTerminalからスクリーンショットを自動撮影できますか?
はい。macOS標準のscreencaptureをシェルループで実行すると、全画面または固定範囲のスクリーンショットを一定間隔で保存できます。
screencaptureのループを止めるには?
ループを実行しているTerminalウインドウでControl-Cを押します。それまでにディスクへ書き込まれたスクリーンショットは、出力先フォルダに残ります。
screencaptureでPNGではなくJPGやPDFを保存できますか?
はい。-tオプションにjpgやpdfなど対応形式を指定し、出力ファイルにも形式と一致する拡張子を付けます。
スクリーンショット用スクリプトで、撮影の間にキーを送れますか?
はい。System Eventsをosascriptから操作します。ただし、必要な場合にだけアクセシビリティ権限を与え、対象アプリを前面に保ってください。
関連記事
ほかの記事を見るMac の標準機能でスクリーンショットを自動撮影する方法
screencapture、Automator、ショートカットを使って Mac のスクリーンショットを自動化します。権限、安全なループ、トラブル対処も説明します。

MacのAutomatorでスクリーンショットを繰り返し撮る方法
Automatorの「Take Screenshot」と「Loop」でスクリーンショット用ワークフローを作り、連番で整理できるファイルが必要な場合はシェルアクションを使う方法を解説します。

MacのAppleショートカットでスクリーンショットを自動撮影する方法
Macのショートカットでスクリーンショット用ルーチンを作り、個人用オートメーションのトリガーから実行する方法と、スクリプトや画面収録の権限問題を直す手順を解説します。


繰り返しのスクリーンショットを完成した成果物に
ShotomaticはMacでスクリーンショットのセッションを撮影、整理、書き出しできます。