iMessage
imsg를 사용하여 macOS Messages.app을 통해 iMessage/SMS를 읽고 보냅니다.
사전 요구 사항
- macOS에 Messages.app이 로그인되어 있어야 함
- 설치:
brew install steipete/tap/imsg - 터미널에 전체 디스크 접근 권한 부여 (시스템 설정 → 개인정보 보호 → 전체 디스크 접근)
- 메시지 앱 자동화 권한 부여 (메시지가 요청할 때)
사용 시점
- 사용자가 iMessage 또는 문자 메시지 보내기를 요청할 때
- iMessage 대화 기록을 읽을 때
- 최근 Messages.app 채팅을 확인할 때
- 전화번호 또는 Apple ID로 메시지 보내기
사용 금지 시점
- Telegram/Discord/Slack/WhatsApp 메시지 → 적절한 게이트웨이 채널 사용
- 그룹 채팅 관리 (멤버 추가/제거) → 지원되지 않음
- 대량/일괄 메시지 발송 → 항상 사용자와 먼저 확인
빠른 참조
채팅 목록 조회
imsg chats --limit 10 --json
기록 보기
# 채팅 ID로 조회
imsg history --chat-id 1 --limit 20 --json
# 첨부 파일 정보 포함
imsg history --chat-id 1 --limit 20 --attachments --json
메시지 보내기
# 텍스트만
imsg send --to "+14155551212" --text "안녕하세요!"
# 첨부 파일 포함
imsg send --to "+14155551212" --text "이거 확인해봐" --file /path/to/image.jpg
# iMessage 또는 SMS 강제
imsg send --to "+14155551212" --text "안녕" --service imessage
imsg send --to "+14155551212" --text "안녕" --service sms
새 메시지 감시
imsg watch --chat-id 1 --attachments
서비스 옵션
--service imessage— iMessage 강제 (수신자가 iMessage를 사용해야 함)--service sms— SMS 강제 (초록색 버블)--service auto— Messages.app이 자동 선택 (기본값)
규칙
- 메시지 전송 전 항상 수신자와 내용을 확인할 것
- 명시적인 사용자 승인 없이 알 수 없는 번호로 절대 전송하지 않음
- 파일 경로가 존재하는지 확인한 후 첨부할 것
- 스팸 금지 — 요청 속도를 제한할 것
예제 워크플로
사용자: "엄마한테 늦을 거라고 문자 보내줘"
# 1. 엄마 채팅 찾기
imsg chats --limit 20 --json | jq '.[] | select(.displayName | contains("Mom"))'
# 2. 사용자 확인: "+1555123456에서 엄마를 찾았습니다. iMessage로 '늦을 거예요' 보낼까요?"
# 3. 확인 후 전송
imsg send --to "+1555123456" --text "늦을 거예요"