⚙️
Raycastを一段進化させるScript commands
🧑🤝🧑 想定読者
- 毎日の定型作業を手軽に自動化したい人
- 業務効率を上げていきたい人
📝 この記事の内容
- Raycast Script Commandの基本的な仕様と設定方法
- メタデータパラメータの詳細な使い方と設定例
- 実践的なスクリプト例(GitHub PR確認、朝一定例作業の自動化、カスタムURLオープナー)
- 引数を使った柔軟なスクリプトの作り方
🔍 Raycastとは
Windowsもリリース予定?)。キーボードからさまざまな操作ができ、日々の作業を自動化できます。
Raycastは、macOSで使える便利なランチャーアプリ(Spotlightの検索機能を更に使いやすく進化させており、アプリの起動やファイル検索、カレンダーの確認、パソコンの設定変更など、やりたいことを素早く実行することが可能です。
好みに合わせて機能をカスタマイズしたり、自動化の仕組みを作ったりすることもできるアプリ。
🔍 Script Commandとは
定型業務をHotKeyを割り当てたりして、実行できる自動化機能です。自分でスクリプトを組むので作業スタイルに合わせてカスタマイズすることが可能です
できることの一例
- 複数のブラウザタブを開く作業を1つのコマンドに集約
- GitHubのプルリクエスト確認を自動化して定期的に情報更新
- よく使うアプリケーションやツールの起動を効率化
- APIを使った情報取得と表示の自動化
👍 主なメリット
- 割とスムーズに動く&自分でスクリプトをコントロール&色々なことできる
- 好きな言語が使える(Bash、Python、Ruby、PHP、Node.js、Swift、AppleScript)
- コミュニティの作成したスクリプト例もある
Script commandsのことはじめ
既存のScript commandsのインストール
- こちらのリポジトリから使用したいScriptを選択、新規ディレクトリに保存
- Raycastの環境設定→Extensions→+ボタン→Add Script Directoryを選択
- 1で保存したScriptが含まれるディレクトリを選択
- これで、選択したScript Commandが使用可能に!
新規のScript commands
- Raycast上で
Create Script Command
機能を使用 - VSCodeなどで開き、Scriptを作成・編集
- 作成したScript commandsをRaycastから実行できます
- BashでShellを作る場合はShellCheck(拡張機能などの)を通すとよいです
📚 メタデータの仕様
必須パラメータ
パラメータ名 | 説明 | 型 | 設定例・補足 |
---|---|---|---|
schemaVersion | スキーマバージョン | number | 現在はバージョン1 のみ対応 |
title | コマンド名 | string | 検索時に表示される名前。例:"Quick PR Check"
|
mode | 実行・出力方法 | string | 下記の4種類から選択 |
モードの種類
-
silent
: 通知や出力を表示しない。アプリを開く、ファイルを移動する等の単純な操作に使用 -
compact
: 一行の出力を表示。Git branch一覧表示やTODOリスト表示などに最適 -
fullOutput
: 複数行の出力を表示。ログ解析や詳細情報の表示に使用 -
inline
: Raycastウィンドウ内に直接結果を表示。CPU使用率表示などのリアルタイム情報に
オプションパラメータ
パラメータ名 | 説明 | 型 | 設定例・補足 |
---|---|---|---|
packageName | サブタイトル | string | 例:"GitHub Tools"
|
icon | アイコン | string | 以下の形式に対応: - 絵文字: "🔍" - ファイルパス: "./icon.png" - SF Symbols: ""
|
iconDark | ダークモード用アイコン | string | iconと同じ形式 |
needsConfirmation | 確認ダイアログ表示 | boolean | デフォルト:false
|
refreshTime | 自動更新間隔 | string | 例:"10s" , "1m" , "1h"
|
author | 作者名 | string | 例:"John Doe"
|
authorURL | 作者のURL | string | 例:"https://github.com/johndoe"
|
description | コマンドの説明 | string | 検索時に表示される説明文 |
アイコンの設定について
- 絵文字を使用する場合
# @raycast.icon 🚀
- 画像ファイルを使用する場合
# @raycast.icon /absolute/path/to/icon.png
💡 活用例
1. AppleScriptでSlackチャンネルを開く
スクリプト
#!/usr/bin/osascript
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Open General Channel
# @raycast.mode silent
# @raycast.packageName Slack
# Optional parameters:
# @raycast.icon 💬
# @raycast.description Slackの#generalチャンネルを開きます
tell application "Slack"
activate
tell application "System Events"
delay 0.5
-- Cmd + K でチャンネル検索を開く
keystroke "k" using {command down}
delay 0.5
-- チャンネル名を入力
keystroke "general"
delay 0.5
-- Enterでチャンネルに移動
key code 36
end tell
end tell
2. GitHubのPR一覧を取得(GitHub CLI版)
使用前の準備
- GitHub CLI (
gh
) をインストール
brew install gh
- GitHub CLIで認証
gh auth login
GitHub CLIの認証については以下の記事が参考になります
Script
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title List PRs
# @raycast.mode fullOutput
# Optional parameters:
# @raycast.icon 🔍
# @raycast.packageName GitHub
# PRの一覧を取得(最新10件)
gh pr list --limit 10 --format '- %t %U %l%n'
3.GitHubのPR一覧を取得(GitHub API版)
使用前の準備
- node.jsをインストールしてください
- GitHubの個人のsettings>Developer Settings>Personal Access Token>Tokensで、GitHubのTokenを取得してください
Script
#!/usr/bin/env node
// Required parameters:
// @raycast.schemaVersion 1
// @raycast.title List PRs
// @raycast.mode fullOutput
// Optional parameters:
// @raycast.icon 🔍
// @raycast.packageName GitHub
// GitHub Personal Access Tokenを環境変数から取得
const GITHUB_TOKEN = "your_api_key"
const OWNER = "適宜";
const REPO = "適宜";
async function fetchPullRequests() {
try {
const response = await fetch(
`https://api.github.com/repos/${OWNER}/${REPO}/pulls?state=open&per_page=10`,
{
headers: {
Authorization: `token ${GITHUB_TOKEN}`,
Accept: "application/vnd.github.v3+json",
},
}
);
if (!response.ok) {
throw new Error(`GitHub API responded with status ${response.status}`);
}
const pullRequests = await response.json();
pullRequests.forEach((pr) => {
console.log(`- ${pr.title}`);
console.log(` URL: ${pr.html_url}`);
console.log(
` Labels: ${pr.labels.map((label) => label.name).join(", ") || "None"}`
);
console.log("");
});
} catch (error) {
console.log(`GITHUB_TOKEN: ${GITHUB_TOKEN}`);
console.error("Error fetching pull requests:", error.message);
}
}
fetchPullRequests();
上記を実行する以下のようなイメージなります
📌 まとめ
Script commandsは、高度なカスタマイズ性と多言語対応により、業務効率化の可能性を大きく広げてくれるツールです!
活用例は本当に基礎的なものにとどめました!(なんでもできてしまうため...)
コミュニティにもScript例があるため、活用してみてください!
参考
Discussion