0. 背景
私はこれまでmacOSのlauncherとしてAlfred 3を使っていました。
スニペット機能は有料オプションでしたが、課金して使っていました。
最近、Raycastというlauncherを見つけました。
Raycastのスニペット機能は無料で、しかもオープンソースで、自分でカスタマイズできます。
なので、AlfredをRaycastに移行することにしました。
しかし、AlfredのスニペットファイルのフォーマットはRaycastのスニペットファイルのフォーマットと異なるため、AlfredのスニペットファイルをRaycastのスニペットファイルに変換する必要があります。
1. Migrate Alfred Snippets to Raycast
1.1 Get Alfred Snippets Files
Alfred 3 の collections は一括でエクスポートすることができないので、以下のように一つずつエクスポートする必要があります。🐶

1.2 Convert Alfred Snippets to Raycast Snippets
エクスポートしたAlfredのスニペットファイルを新しいフォルダに入れます。
以下の内容でconvert-alfred-snippets-to-raycast-snippets.shファイルを作成します。
convert-alfred-snippets-to-raycast-snippets.sh
#!/bin/sh -e
# Script for converting Alfred snippets to Raycast snippets
# Usage: chmod +x convert-alfred-snippets-to-raycast-snippets.sh; ./convert-alfred-snippets-to-raycast-snippets.sh
# NOTE: Install jq before running this script
# List up all *.alfredsnippets files and rename them to *.zip
for file in *.alfredsnippets; do
mv "$file" "${file%.alfredsnippets}.zip"
done
# Unzip all *.zip files and get the folders name
for file in *.zip; do
unzip -o "$file" # -o: overwrite existing files without prompting
done
# Merge all *.json files to one file for Raycast snippets
jq -s 'map(.alfredsnippet | {name, keyword, text: .snippet})' *.json > ./output.json
# Clean up all files except output.json
for file in *.json; do
if [ "$file" = "output.json" ]; then
continue
fi
rm "$file"
done
for file in *.zip; do
rm "$file"
done
for file in *.plist; do
rm "$file"
done
# You can now import the output.json file to Raycast
echo "Done! 🎉 You can now import the output.json file to Raycast -> Import Snippets"
Github gistからもDL可能です。
このスクリプトを実行するには、コマンドラインのJSON処理ツールであるjqをインストールする必要があります。
Macの場合、Homebrewを使ってjqをインストールすることができます。コマンドはbrew install jqです。
詳しくは公式サイトを参照してください。
以下のコマンドを実行します。
chmod +x convert-alfred-snippets-to-raycast-snippets.sh
./convert-alfred-snippets-to-raycast-snippets.sh
実行すると、現在のディレクトリにoutput.jsonファイルが生成されます。
1.3 Import Raycast Snippets
Raycast を開き、Import Snippetsをクリックします。
先ほど生成したoutput.jsonファイルを選択して、Raycastにスニペットをインポートします。
