| name | kakaotalk-cli |
| description | macOS에서 카카오톡 메시지를 읽고 보낸다. 렌더링 안 된 채팅방도 검색으로 찾아 열고 줄바꿈을 보존한다. 실패하는 경로와 대체 경로를 함께 담았다. |
카카오톡 보내기·읽기
정본 도구는 kmsg다. kakaocli send는 쓰지 않는다 — 화면에 렌더링된 채팅
목록만 훑어서 아래로 밀린 방을 못 찾고, DB 키를 받는 옵션도 없다.
왜 SSH를 거치나
Aside 샌드박스는 GUI 실행·AX(손쉬운 사용)·타 프로세스 조회가 전부 막혀 있다.
그래서 모든 명령은 SSH 루프백으로 샌드박스 밖에서 실행한다.
ssh -o BatchMode=yes localhost 'export PATH=/opt/homebrew/bin:$PATH; kmsg ...'
kakaocli status가 "App state: notRunning"이라고 해도 믿지 말 것. 샌드박스가
프로세스를 못 볼 뿐 카톡은 대개 켜져 있다.
선행 조건(2026-08-15 부여 완료): /usr/libexec/sshd-keygen-wrapper에
시스템 설정 → 개인정보 보호 및 보안 → 손쉬운 사용 권한. 없으면 모든 AX 호출이
-25211로 막힌다.
절차
kmsg status --verbose
kmsg send "<방이름>" "$(cat /path/msg.txt)"
kmsg read "<방이름>" --limit 1 --json
kmsg send는 성공 후 방 창을 닫는다. 그래서 직후 kmsg read는 창이 없다며 실패한다. 발송 검증은 kakaocli messages --chat-id ... --key로 DB를 보거나, 창을 다시 열고 읽는다.
- 방은 이름 substring 또는
--chat-id로 지정한다. kmsg chats --json로 목록.
- 보내기 전
--dry-run으로 수신자를 한 번 확인한다.
- 나와의 채팅은
나와의 채팅이 아니라 프로필명 내 프로필명으로 지정한다.
- 처음 보내는 상대이거나 내용이 길면 먼저
내 프로필명으로 연습 발송해 서식을 확인한다.
AI가 보냈다는 표시 (필수)
카톡은 사용자 본인 명의로 나가므로, 대신 보내는 전달·공지·안내성 메시지에는
본문 맨 끝에 서명 한 줄을 붙인다.
— 이 메시지는 사용자을 대신해 AI가 정리해서 보냈습니다
사용자가 2026-08-15에 직접 요청했다("디스코드 봇은 그렇게 해주잖아"). 디스코드는
커뮤니티봇 봇 계정이라 이미 드러나지만 카톡은 안 드러난다는 게 이유.
개인 브랜드 콘텐츠(블로그·스레드·링크드인)는 예외.
단톡방에 보낼 때
- 진짜 @멘션은 걸 수 없다. 카톡 멘션은
@ 입력 시 뜨는 멤버 선택 팝업에서
골라야 생기고, 자동 입력은 그 팝업 때문에 문장이 깨질 위험이 있다.
이름을 본문에 나열하는 방식으로 쓰고, 하이라이트가 필요하면 사용자가 직접 단다.
- 여러 명이 읽는 메시지는 먼저
내 프로필명으로 연습 발송해 서식을 확인하고,
사용자 승인을 받은 뒤 보낸다.
실패하면
| 증상 | 원인과 조치 |
|---|
[SEARCH_MISS] Search field not found | 다른 채팅 창이 열려 있다. 닫고 --refresh-cache |
| 같은 오류인데 창이 메인 하나뿐 | 방 창이 막 열리는 중이라 AX 캐시가 어긋난 것. 그대로 --refresh-cache로 한 번만 재시도하면 나간다(2026-08-16 실측). 첫 실패로 발송이 안 된 것이 맞는지 kakaocli messages로 먼저 확인할 것 |
[WINDOW_NOT_READY] | 같은 원인. open -a KakaoTalk 후 재시도 |
[BACKGROUND_SAFE_BLOCKED] | --background-safe는 이미 열린 창만 읽는다. 정상 동작 |
| 방을 못 찾음 | kmsg chats --limit 200 --json로 이름 확인 |
하지 말 것
kmsg harvest류의 메타데이터 재수집을 실행하지 말 것. kakaocli harvest가
~/.kakaocli/metadata.json의 방 이름을 전부 (unknown)으로 덮어쓴 사고가 있었다.
백업: ~/.kakaocli/backups/
- AppleScript
keystroke로 한글을 치지 말 것 — ㅁㅁㅁ으로 깨진다. SSH pbcopy도
GUI 페이스트보드에 닿지 않는다.
- 대량 발송·무인 자동응답 봇으로 확장하지 말 것. 카카오 운영정책에 자동화
프로그램 이용 제한이 있고 계정 제재 가능성이 있다. 사용자가 2026-08-15에 무인
자동응답은 돌리지 않겠다고 명시했다.
참고
- 읽기 전용 대량 조회·검색이 필요하면
kakaocli(DB 직접 복호화)를 쓴다.
키는 원격 머신 ~/Projects/<프로젝트>/dashboard/.env의 KAKAOCLI_KEY이며
--key로 넘긴다(환경변수는 읽지 않는다). 절대 출력하지 말 것.
- 전체 배경·폴백(수동 AX 주입)·AppleScript 함정:
에이전트 메모
- 무인 상시 운영이 필요해지면:
에이전트 메모