[기술검토] OSAScript — macOS Open Scripting Architecture
macOS 내장 스크립팅 시스템 OSAScript(AppleScript·JXA)의 구조, 앱 제어·GUI 자동화·알림 기능과 제약을 검토하고 Claude Code CLI 및 훅 시스템과의 연동 패턴을 정리한 기술 보고서.
OSAScript (Open Scripting Architecture) 기술 검토 보고서
macOS 내장 스크립팅 시스템 OSAScript(AppleScript / JXA)의 구조·기능·제약을 검토하고, Claude Code CLI(
claude -p)·훅 시스템과의 조합 가능성을 정리한다. 결론: macOS 한정 자동화 레이어로서claude -p와 보완 관계이며, 네이티브 알림·앱 제어·GUI 자동화에 효과적이다.
작성일: 2026-06-12
1. 개요
OSAScript는 Apple이 macOS에 내장한 Open Scripting Architecture(OSA) 프레임워크 위에서 동작하는 스크립팅 시스템이다. 앱 간 자동화, 시스템 이벤트 제어, GUI 조작, 셸 명령 실행을 단일 스크립트에서 처리할 수 있다. 주로 AppleScript 또는 JavaScript for Automation(JXA) 언어로 작성한다.
2. 핵심 개념
2.1 Open Scripting Architecture (OSA)
- macOS 시스템 전체에 걸쳐 앱들이 스크립팅 명령을 주고받을 수 있는 표준 인터페이스
- Apple Event 메시지 프로토콜을 기반으로 동작
- Script Editor, osascript CLI, Automator 등이 모두 OSA 위에서 구현됨
2.2 지원 언어
| 언어 | 특징 | 도입 시기 |
|---|---|---|
| AppleScript | 영어 문장형 문법, macOS 전통 자동화 언어 | macOS 7.1 (1993) |
| JavaScript for Automation (JXA) | 표준 JS 문법으로 동일한 OSA API 접근 | macOS 10.10 Yosemite (2014) |
3. 실행 방법
3.1 CLI (osascript)
# 인라인 실행
osascript -e 'display notification "빌드 완료!" with title "알림"'
# 파일 실행 (AppleScript)
osascript script.applescript
# 파일 실행 (JXA)
osascript -l JavaScript script.js
# 파이프라인 입력
echo 'display dialog "Hello"' | osascript
3.2 Script Editor
macOS 기본 앱 /Applications/Script Editor.app에서 작성·디버그·컴파일(.scpt) 가능.
4. 주요 기능
4.1 macOS 앱 제어
-- Finder로 폴더 열기
tell application "Finder"
open folder "Downloads" of home
end tell
-- Safari URL 열기
tell application "Safari"
open location "https://example.com"
end tell
4.2 시스템 UI 자동화 (System Events)
-- 버튼 클릭, 메뉴 선택 등 GUI 자동화
tell application "System Events"
tell process "Finder"
click menu item "새로운 폴더" of menu "파일" of menu bar 1
end tell
end tell
4.3 셸 명령 실행
-- 셸 명령 실행 후 결과 반환
set output to do shell script "ls -la ~/Desktop"
display dialog output
4.4 알림 및 대화상자
-- 시스템 알림 (배너)
display notification "작업 완료" with title "자동화 알림" subtitle "훅 실행됨"
-- 확인 대화상자
set answer to button returned of (display dialog "계속할까요?" buttons {"취소", "확인"} default button "확인")
4.5 클립보드 제어
-- 클립보드에 텍스트 쓰기
set the clipboard to "복사할 내용"
-- 클립보드 읽기
set copied to the clipboard
5. JXA (JavaScript for Automation) 예시
AppleScript와 동일한 OSA API를 JS 문법으로 사용:
// 알림 띄우기
const app = Application.currentApplication();
app.includeStandardAdditions = true;
app.displayNotification("빌드 완료!", { withTitle: "자동화 알림" });
// 셸 명령 실행
const result = app.doShellScript("git status");
console.log(result);
// Finder 제어
const finder = Application("Finder");
finder.activate();
6. Claude Code와의 연동 가능성
6.1 claude -p와의 조합
OSAScript는 claude -p(Claude Code CLI의 비대화형 실행 모드)를 내부에서 호출하는 래퍼로 활용할 수 있다. 양방향 모두 가능하다.
-- OSAScript → claude -p 호출
set review to do shell script "claude -p '코드 리뷰해줘'"
display notification review with title "코드 리뷰 완료"
# 셸 스크립트 → OSAScript로 알림 전송
claude -p "이 오류 분석해줘: $ERROR_LOG" && \
osascript -e 'display notification "분석 완료" with title "Claude"'
역할 비교:
claude -p | OSAScript | |
|---|---|---|
| 목적 | AI 프롬프트 실행 → 응답 반환 | macOS 앱/시스템 자동화 |
| AI 기능 | O | X |
| 앱 제어 | X | O |
| 크로스 플랫폼 | O | macOS 전용 |
| 상호 호출 | do shell script로 OSAScript 호출 가능 | claude -p 호출 가능 |
💡 두 도구는 대체 관계가 아니라 보완 관계다. OSAScript는 macOS 이벤트/앱 레이어를 담당하고,
claude -p는 AI 추론 레이어를 담당한다.
6.2 Claude Code 훅 시스템과의 연동
Claude Code 훅(PostToolUse, Stop 등) 이벤트 발생 시 OSAScript로 macOS 네이티브 알림을 전송하는 패턴:
# .claude/settings.json 훅 예시
{
"hooks": {
"Stop": [{
"command": "osascript -e 'display notification \"세션 종료\" with title \"자동화 알림\"'"
}]
}
}
7. 제약 사항
| 제약 | 내용 |
|---|---|
| 플랫폼 | macOS 전용. Linux/Windows 미지원 |
| 보안 | macOS 13+ 접근성 권한(Accessibility) 별도 허용 필요 |
| 샌드박스 | 앱 샌드박스 환경에서 일부 기능 제한 |
| 성능 | Apple Event 기반 IPC로 대용량 데이터 처리에 부적합 |
| 디버깅 | 에러 메시지가 불친절한 편 |
⚠️ GUI 자동화(System Events)는 접근성 권한이 없으면 조용히 실패한다. CI 등 무인 환경에서 쓸 때는 권한 사전 부여 여부를 반드시 확인할 것.
8. 결론
OSAScript는 macOS 환경 한정의 강력한 자동화 도구다. Claude Code 훅 시스템, 셸 스크립트, CI/CD 파이프라인과 조합해 macOS 네이티브 알림·앱 제어·GUI 자동화를 추가할 때 효과적으로 활용할 수 있다. AI 응답 처리(claude -p)나 크로스 플랫폼 자동화가 필요한 경우에는 별도 도구와 병행 사용해야 한다.
요약
| 항목 | 평가 |
|---|---|
| 강점 | macOS 앱 제어 · GUI 자동화 · 네이티브 알림을 스크립트 1개로 처리 |
| 언어 | AppleScript(전통) / JXA(표준 JS 문법) — 동일 OSA API |
| Claude Code 연동 | 훅 → osascript 알림, OSAScript → claude -p 래핑 양방향 가능 |
| 한계 | macOS 전용 · 접근성 권한 필요 · 대용량 IPC 부적합 |
| 권고 | AI 추론은 claude -p, macOS 이벤트/앱 레이어는 OSAScript 로 역할 분담 |
댓글
아직 댓글이 없어요. 첫 댓글을 남겨보세요!
★이 강의 후기
후기 남기기아직 이 강의에 대한 후기가 없어요.