Cách tôi biến một phím tắt trên Mac thành “thư ký AI”
Ở công ty chúng tôi, Slack là “mạch máu” giao tiếp hàng ngày. Khách hàng phần lớn là người Nhật, nên chuyện phải dịch tin nhắn qua lại là thao tác phải làm hàng chục lần mỗi ngày.
Trước đây, quy trình rất mệt mỏi: copy nội dung → mở Google Translate hoặc ChatGPT → dán → bấm dịch → copy lại kết quả → quay lại Slack.
Quá nhiều bước, và mất tập trung vào công việc chính.

Tôi thậm chí đã viết một ứng dụng nhỏ trên Mac để hỗ trợ việc này, tuy nhiên do giới hạn của Mac (cũng như giới hạn của tôi) mà phần mềm vẫn có chỗ chưa được ưng ý.
Cho đến một ngày tôi được bạn Th. chia sẻ về ứng dụng Shortcuts trên MacOS (một ứng dụng có sẵn trong bất kỳ máy Mac nào) thì tôi đã biết đây chính là thứ mình cần.
Kết quả là, giờ đây khi bôi đen một đoạn văn bản trên Slack, email, hay bất kỳ app nào → nhấn phím tắt → AI lập tức dịch sang tiếng Việt (hoặc tiếng Anh nếu đầu vào là tiếng Việt). Không cần rời ứng dụng, không cần copy-paste.
Và hay hơn nữa: đây không chỉ là công cụ dịch, mà chỉ cần đổi vài dòng prompt trong code, tôi có thể biến nó thành một trợ lý AI để:
Tóm tắt nội dung dài.
Viết lại câu văn cho rõ ràng hơn.
Phát hiện và sửa lỗi ngữ pháp.
Soạn email hoặc trả lời tin nhắn giúp tôi.
🛠 Bạn cần gì để bắt đầu?
MacOS (có sẵn ứng dụng Shortcuts).
API Key Gemini (tạo miễn phí tại Google AI Studio).
Một chút JavaScript (copy code mẫu là đủ 😄).
🚀 Các bước thiết lập
1️⃣ Tạo Shortcut mới
Mở Shortcuts trên Mac.
Nhấn + để tạo Shortcut mới, đặt tên ví dụ:
AI Assistant
.
2️⃣ Thêm hành động Run JavaScript for Automation
- Trong ô tìm kiếm của Shortcuts, gõ
Run JavaScript for Mac Automation
.
Kéo hành động này vào Shortcut.
- Tìm tiếp action Show results và kèo vào dưới block Run Javascript ở trên
3️⃣ Trong block Javascript, dán code JavaScript sau
function run(input, parameters) { const geminiApiKey = parameters[0] ?? 'API_KEY_CỦA_BẠN'; return askAI(input[0], geminiApiKey); } function askAI(text, apiKey) { const requestData = prepareRequestData(text); try { const response = sendHttpRequest( `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${apiKey}`, 'POST', requestData, { 'Content-Type': 'application/json' } ); return response.candidates[0].content.parts[0].text; } catch (error) { return `Error: ${error}`; } } function prepareRequestData(text) { return { contents: [ { parts: [ { text: `You are my AI secretary. If the text is not in Vietnamese, translate it to Vietnamese in the most natural and concise way. If the text is in Vietnamese, translate it to English with clear business tone. Additionally, if the text contains a request, respond politely as if you were my assistant. User input: ${text}` } ] } ], generationConfig: { temperature: 0.7, maxOutputTokens: 500 } }; } function sendHttpRequest(url, method, data = null, headers = {}) { const app = Application.currentApplication(); app.includeStandardAdditions = true; let curlCommand = `curl -s -X ${method} "${url}"`; for (const [key, value] of Object.entries(headers)) { curlCommand += ` -H '${key}: ${value}'`; } if (method.toUpperCase() === 'POST' && data) { const escapedData = JSON.stringify(data).replace(/'/g, "'\\''"); curlCommand += ` -d '${escapedData}'`; } const response = app.doShellScript(curlCommand); return JSON.parse(response); }
🔑 Thay
API_KEY_CỦA_BẠN
bằng API key Gemini.
🎯 Chỉ cần sửa phầntext:
trongprepareRequestData()
là bạn đã có thể biến shortcut này thành AI tóm tắt, AI kiểm tra lỗi chính tả, hoặc AI viết nội dung mới.
4️⃣ Cấu hình nhận văn bản từ “selection”
Nhấn nút cài đặt góc bên phải.
Ở mục Receive, chọn
Text
từQuick Actions
.Tích chọn “Services Menu” và “Finder”.
5️⃣ Gán phím tắt
Vào phần setting của ứng dụng (góc bên phải) và cài đặt như hình bên dưới cho 2 tab Details và Privacy
Trong phần Run with: Bấm tổ hợp phím tắt bạn muốn gán
🚀 Ứng dụng khi hoàn thiện sẽ như ảnh bên dưới:
📸 Sử dụng
Bôi đen đoạn văn bản trên Slack, email, web…
Nhấn phím tắt bạn đã gán.
AI sẽ xử lý ngay — dịch, trả lời, hoặc tóm tắt — tùy vào prompt bạn đã cài.
- Kết quả sau khi bôi đen một đoạn text và bấm tổ hợp phím: