建議還沒使用過 Raycast 的朋友可以先參考這篇:
各位效率至上的朋友們,如果你已經熟悉了 Raycast 的基本功能,那麼是時候揭開它更強大的一面了 – 腳本功能。我最近因為組內的一些事項需要大量用到腳本功能,所以不管在 App script 或者 Raycast 上都研究了許多,至於深度就不要太期待了… 一起來看看如何通過編寫自定義腳本來真正釋放你 Mac 的真正的效率吧!。
一、Raycast Script Commands
Raycast 的腳本功能允許你創建自定義的命令,以執行各種複雜的任務。無論是自動化日常工作流程,還是建立特定於你工作的工具,Raycast 腳本都能幫你實現。
為什麼要使用Raycast腳本?
- 自動化重複任務:將日常重複的操作編碼為腳本,熱鍵一按、一鍵執行。
- 建立自定義工具:開發專屬於你工作流程的工具。
- 提高工作效率:通過快速訪問和執行複雜操作,節省寶貴的時間。
- 整合多個應用和服務:將不同的工具和服務整合到一個工作流程中。
二、Raycast支持的腳本語言
Raycast支持多種腳本語言,每種語言都有其獨特的優勢和適用場景。讓我們來了解一下每種語言:
1. Bash:命令行的老朋友
優勢:
- 運行速度快
- 適合系統級操作和文件處理
- 幾乎所有 Unix / Linux 系統都支持
最佳使用場景:
- 執行系統命令
- 批量文件操作
- 快速的文字處理任務
示範 script:
#!/bin/bash
# @raycast.schemaVersion 1
# @raycast.title 查看系統信息
# @raycast.mode fullOutput
system_profiler SPHardwareDataType
2. Python:多才多藝的全能選手
優勢:
- 琳瑯滿目的第三方模組
- 簡潔易讀的語法
- 強大的數據處理能力
最佳使用場景:
- 數據分析和處理
- Web 爬蟲
- 複雜的自動化任務
示範 script:
#!/usr/bin/env python3
# @raycast.schemaVersion 1
# @raycast.title 今日天氣
# @raycast.mode compact
# @raycast.argument1 { "type": "text", "placeholder": "城市名稱" }
import requests
import sys
city = sys.argv[1]
api_key = "YOUR_API_KEY"
url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
response = requests.get(url)
data = response.json()
if response.status_code == 200:
print(f"{city}今日天氣: {data['weather'][0]['main']}, 溫度: {data['main']['temp']}°C")
else:
print("獲取天氣消息失敗,請檢查城市名稱或網路連接。")
3. Ruby:優雅且富有表現力
優勢:
- 語法優雅,易讀易寫
- 強大的文本處理能力
- 適合快速原型開發
最佳使用場景:
- 文字處理和分析
- 快速開發小型工具
- Web 相關任務(如使用 API)
示範 script:
#!/usr/bin/env ruby
# @raycast.schemaVersion 1
# @raycast.title 生成隨機密碼
# @raycast.mode compact
# @raycast.argument1 { "type": "text", "placeholder": "密碼長度" }
length = ARGV[0].to_i
charset = Array('A'..'Z') + Array('a'..'z') + Array('0'..'9') + %w(! @ # $ % ^ & *)
password = Array.new(length) { charset.sample }.join
puts password
4. AppleScript:Mac自動化的不二之選
優勢:
- 深度整合 macOS 系統
- 可以直接控制 Mac 應用程序
- 語法接近自然語言
最佳使用場景:
- 自動化 Mac 特定的任務
- 控制和操作 Mac 應用程序
- 系統級的自動化操作
示範 script:
#!/usr/bin/osascript
# @raycast.schemaVersion 1
# @raycast.title 打開工作區
# @raycast.mode silent
tell application "Finder"
open folder "Macintosh HD:Users:YourUsername:Documents:WorkSpace"
end tell
tell application "Visual Studio Code"
activate
end tell
tell application "Chrome"
activate
open location "https://github.com"
end tell
5. Swift:Apple 生態系統的新寵
優勢:
- 性能優越
- 與 Apple 框架無縫集成
- 型別系統嚴謹,安全性很讚
最佳使用場景:
- 開發複雜的 Mac 工具
- 需要高性能的腳本
- 與 Apple 框架深度交互的任務
示範 script:
#!/usr/bin/swift
import Foundation
// @raycast.schemaVersion 1
// @raycast.title 倒計時
// @raycast.mode compact
// @raycast.argument1 { "type": "text", "placeholder": "事件名稱" }
// @raycast.argument2 { "type": "text", "placeholder": "日期 (YYYY-MM-DD)" }
let eventName = CommandLine.arguments[1]
let dateString = CommandLine.arguments[2]
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let eventDate = dateFormatter.date(from: dateString) {
let timeInterval = eventDate.timeIntervalSince(Date())
let days = Int(timeInterval / (60 * 60 * 24))
print("\(eventName)還有\(days)天")
} else {
print("日期格式錯誤")
}
6. JavaScript (Node.js):全棧開發者的好幫手
優勢:
- 龐大的 npm 生態系統
- 異步編程能力強
- 適合前後端開發
最佳使用場景:
- Web API 交互
- JSON 數據處理
- 開發跨平台的工具
示範 script:
#!/usr/bin/env node
// @raycast.schemaVersion 1
// @raycast.title 獲取比特幣價格
// @raycast.mode compact
const https = require('https');
https.get('https://api.coindesk.com/v1/bpi/currentprice.json', (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
const price = JSON.parse(data).bpi.USD.rate;
console.log(`比特幣當前價格: $${price}`);
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
三、創建和使用 Raycast script
創建 Script 的步驟
- 打開 Raycast General
- 選擇 “Extensions” 標籤
- 點擊 “+” 按鈕,選擇 “Create Script Command”
- 選擇腳本語言
- 輸入腳本名稱和描述
- 編寫腳本內容
- 設置執行模式(如全螢幕、內嵌等)
- 保存並測試腳本
Script 參數的使用
Raycast允許你為腳本添加參數,使其更加靈活。以下是如何在腳本中使用參數:
#!/bin/bash
# @raycast.schemaVersion 1
# @raycast.title 歡迎訊息
# @raycast.mode compact
# @raycast.argument1 { "type": "text", "placeholder": "你的名字" }
echo "歡迎,$1!"
在這個例子中,腳本會提示用戶輸入名字,然後顯示一條歡迎訊息。
Raycast Script 的最佳實踐
- 註釋你的代碼:確保其他人(包括未來會回頭檢視的你)能夠理解腳本的功能。
- 錯誤處理:添加適當的錯誤檢查和處理邏輯。
- 模塊化:將複雜的腳本拆分為小的、可重用的函數。
- 版本控制:使用 Git 等工具管理你的腳本版本。
- 定期更新:隨著 Raycast 的更新,確保你的腳本與最新版本兼容。
四、實用腳本範例
1. 快速開啟你的工作環境
#!/usr/bin/osascript
# @raycast.schemaVersion 1
# @raycast.title 開啟工作環境
# @raycast.mode silent
tell application "Terminal"
do script "cd ~/Projects/current-project && code . && npm start"
end tell
tell application "Google Chrome"
activate
open location "http://localhost:3000"
open location "https://github.com/your-repo"
open location "https://trello.com/your-board"
end tell
這個腳本會打開你的專案文件夾,啟動 VS Code,運行 npm start,然後在 Chrome 中打開本地開發服務器、GitHub 和 Trello。
2. 每日工作報告生成器
#!/usr/bin/env python3
# @raycast.schemaVersion 1
# @raycast.title 生成每日報告
# @raycast.mode fullOutput
import datetime
today = datetime.date.today()
report = f"""
日期:{today}
今日完成:
1.
2.
3.
明日計劃:
1.
2.
3.
問題與障礙:
-
需要幫助:
-
"""
print(report)
這個腳本會生成一個簡單的每日工作報告模板,你可以快速填寫並發送給你的團隊。
3. 快速查詢開發文件
#!/usr/bin/env node
// @raycast.schemaVersion 1
// @raycast.title 查詢開發文檔
// @raycast.mode silent
// @raycast.argument1 { "type": "text", "placeholder": "關鍵詞" }
const opn = require('opn');
const keyword = encodeURIComponent(process.argv[2]);
const docs = {
'js': `https://developer.mozilla.org/en-US/search?q=${keyword}`,
'python': `https://docs.python.org/3/search.html?q=${keyword}`,
'react': `https://reactjs.org/docs/search.html?q=${keyword}`,
'vue': `https://vuejs.org/v2/guide/#Search?q=${keyword}`
};
Object.values(docs).forEach(url => opn(url));
這個腳本允許你快速在多個開發文件當中搜尋關鍵字,節省查找的時間。
上述講的都是比較通用的,但其實用在工作上彈性也非常多。例如我自己本身就做了一個可以自動複製試算表儲存格的 crul 接著開啟終端機後執行,等 JSON 輸出後複製起來繼續下一段操作。這些動作你說難也不難,但就特別煩人,不過 Raycast script 設置好後只要一個熱鍵就可以走完全部的流程,這不是特別美好嗎?
五、進階技巧與優化
1. 使用環境變量
對於包含敏感信息(如 API 密鑰)的腳本,使用環境變量是個好主意:
#!/bin/bash
# @raycast.schemaVersion 1
# @raycast.title 使用API密鑰
# @raycast.mode compact
echo "使用的API密鑰: $MY_API_KEY"
你可以在腳本的數據中設置環境變量:
# @raycast.packageName Utilities
# @raycast.icon 🔑
# @raycast.mode compact
# @raycast.environment MY_API_KEY
2. 管理程式需要的套件
對於 Python 或 Node.js 的腳本,你可以用 requirements.txt
或 package.json
來列出並管理程式需要的套件:
# @raycast.packageName My Python Script
# @raycast.icon 🐍
# @raycast.mode fullOutput
# @raycast.schemaVersion 1
# @raycast.title My Python Script
# @raycast.description A script that does something awesome
# @raycast.currentDirectoryPath ~
# @raycast.needsConfirmation false
# @raycast.argument1 { "type": "text", "placeholder": "Argument 1" }
# This will install the required packages when the script is first run
# @raycast.setupCoffee pip3 install -r requirements.txt
3. 讓腳本跑得更有效率
- 對於常常要執行的腳本,可以考慮這些方法:
- 使用暫存機制:把常用的資料先存起來,下次用時就不用重新處理。
- 用異步操作來處理需要等待的工作:讓程式在等待某些動作時可以先做其他事。
- 處理大量資料時,考慮用「邊讀邊處理」的方式:不要一次把所有資料都載入記憶體。
六、結語:釋放 Raycast Script 的潛力
Raycast 的腳本功能為 Mac 用戶提供了一個強大的工具,讓我們能夠將日常工作流程自動化,大大提高工作效率。相信看完這篇文章,大家都已經了解了如何利用不同的程式語言來創建各種實用的腳本。但這僅僅是開始,Raycast 腳本的潛力遠不止於此!
持續學習和改進要充分發揮 Raycast 腳本的潛力,持續學習和改進是關鍵:
- 追蹤 Raycast 的更新:Raycast 團隊常常推出新功能和改善,隨時關注這些更新可以讓你的腳本保持在最好的狀態。
- 參與社群:加入 Raycast 的使用者社群,和其他喜歡寫腳本的人交流想法和經驗。你可以在官方論壇或社群上找到這些資訊。
- Github – raycast/script-commands
- Script Commands Store ➡️ 這個超狂,裡頭一堆已經設置好的 script。
- 增進程式技能:當你越來越熟悉寫腳本時,可以考慮學習新的程式語言或技術,這樣你就能創造出更複雜和強大的腳本。
最後的話
Raycast 腳本給了我們一個強大的工具,讓我們能夠按照自己的需求客製化和優化工作流程。不管你是經驗豐富的開發者,還是剛開始接觸程式設計的新手,Raycast 腳本都給你一個很棒的平台來提升工作效率。
每個人的工作流程都是獨一無二的。別怕嘗試新點子,創造屬於你自己的腳本。慢慢你會發現自己建立了一套功能強大、高度個人化的工具組,這些工具會讓你的日常工作變得更輕鬆、更有效率。
我一開始其實建立這些全部都只靠 GenAI 來處理,每次出錯就丟回 AI 解析,不斷的重複再重複… 直到腳本可以使用。有些過程老實說蠻痛苦的,主要也是因為我根本不懂程式… 但這也是最好的機會,利用 AI 加快我們平時的工作效率,我覺得這是每個工作者未來最重要的功課!