macOSで特定のフォルダにファイルが保存されたタイミングで処理を走らせたいとき、これまではAutomatorでフォルダアクションを作るのが定番でした。しかし今はショートカット(Shortcuts.app)というアプリが存在し、カスタムした一連の処理を1アクションで起動したり、それを特定のトリガーで起動するなどということができるようになっています。
今回は「スクリーンショットを保存したら自動でWebP形式へ変換する」という例を題材に、Shortcutsで同じことを再現する手順をまとめました。特に、ファイル保存に連動して起動したショートカットへ対象ファイルを渡すという設定に苦戦したので、備忘として残しておきます。
Shortcutsでシェルスクリプトを呼び出すショートカットを作る
まずは従来のAutomatorワークフローに相当するショートカット本体を作ります。
1. 新規ショートカットの追加
Shortcuts.appを起動したあと左カラムの「All Shortcuts」へ移動し、ウインドウ右上の + ボタンまたは ⌘ + N で新規ショートカットを作成します。

2. Run Shell Script アクションを追加する
右カラムの検索フィールドに script などと入力し、“Run Shell Script” をダブルクリックしてアクションとして追加します。

初回はショートカットからスクリプトを実行する許可を与える必要があります。アラートが表示されたら設定を開き Allow Running Scripts にチェックを入れます。

3. 入力設定をフォルダアクション向けに調整する
フォルダに追加されたファイルのパスをシェルスクリプトの引数として受け取れるよう、アクションの入力方法を設定します。
まず “Run Shell Script” の各項目を以下のようにします。
- Input:
Shortcut Input - Pass Input:
as arguments(ここはスクリプトの仕様に合わせる)
こうすると “Run Shell Script” の上に新しくボックスが現れるので、以下のように設定します。
- “Receives” のところを
Filesのみにする - “If there’s no input:” は
Ask for,Filesとする - ボックス内の “Receives” の行に現れる
>をクリック- “Type:” と “Select Multiple:” をそれぞれ
Shortcut Inputにする
- “Type:” と “Select Multiple:” をそれぞれ

続いて “Run Shell Script” アクション側の “Input:” の “Shortcut Input” をクリックすると先ほどと違うポップオーバーが出るので、この “Get:” から Added files を選択します。

4. 変換用のシェルスクリプトを書く
設定が整ったら、実行したいスクリプトを “Run Shell Script” アクションに記述します。例えばPNG形式のスクリーンショットをcwebpでロスレスWebPに変換する場合は次のようになります。
for filename in "$@"; do
extension="${filename##*.}"
if [[ "$extension" == "png" ]]; then
outputfilename="${filename%.*}.webp"
/path/to/cwebp -lossless -mt -quiet ${filename} -o ${outputfilename}
fi
done
環境に合わせて実行ファイルのパスや変換オプションを調整してください。
フォルダを監視するオートメーションを設定する
ショートカット本体ができたら、フォルダに新しいファイルが追加されたときに自動で起動するようオートメーションを構成します。Shortcuts.appの左サイドバーから Automation を選び、右上の + ボタンをクリックして新規オートメーションを作成します。
フォルダを選択し次へをクリック、対象のフォルダ(例: スクリーンショット保存先)を選び、トリガーの種類は追加されたときを指定します。その後に実行するショートカットとして、先ほど作成したものを選択しましょう。

これで設定完了です。フォルダにスクリーンショットが保存されるたびに先ほど作成したショートカットが起動し、指定したスクリプトが自動的に実行されます。
まとめ
フォルダやファイルに連動した処理をShortcuts.app (ショートカット) で扱えるようになりました。Automatorと違い処理とトリガーをそれぞれ定義して接続するというのが1つのアプリで完結するようになっており、直感的に扱いやすくなったのではないかと思います。