카카오톡 보내기·읽기

SkillSearch

Reads and sends KakaoTalk messages on macOS. Finds and opens unrendered chat rooms via search and preserves line breaks. Includes failing paths alongside fallback paths.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 카카오톡 보내기·읽기 skill

What this skill tells your AI

The instructions your AI receives, as published by bam-bam-2/solo-skills in skills/kakaotalk-cli/SKILL.md and read by ahel’s review.

이 스킬이 시스템에 하는 일 (설치 전 확인)

  • macOS 전용입니다. 접근성(Accessibility) 권한이 필요합니다.
  • 외부 도구 kmsg/kakaocli를 통해 카카오톡 앱을 조작하고 로컬 메시지 DB를 읽습니다.
  • 메시지 내용을 외부로 전송하지 않습니다. 전부 로컬에서 처리됩니다.
  • 접근성 권한은 화면의 다른 앱도 조작할 수 있는 강한 권한입니다. 부여 전에 이해하고 결정하세요.

이 스킬이 시스템에 하는 일 (설치 전 확인)

  • macOS 전용입니다. 접근성(Accessibility) 권한이 필요합니다.
  • 외부 도구 kmsg/kakaocli를 통해 카카오톡 앱을 조작하고 로컬 메시지 DB를 읽습니다.
  • 메시지 내용을 외부로 전송하지 않습니다. 전부 로컬에서 처리됩니다.
  • 접근성 권한은 화면의 다른 앱도 조작할 수 있는 강한 권한입니다. 부여 전에 이해하고 결정하세요.

정본 도구는 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로 막힌다.

절차

# 1. 상태와 열린 창 확인 — 이 단계를 건너뛰지 말 것
kmsg status --verbose

# 2. (메인 창 외에 채팅 창이 열려 있으면 닫는다)

# 3. 보낼 내용을 파일로 빼서 따옴표 문제를 피한다
kmsg send "<방이름>" "$(cat /path/msg.txt)"

# 4. 실제로 나갔는지 읽어서 확인
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/.envKAKAOCLI_KEY이며 --key로 넘긴다(환경변수는 읽지 않는다). 절대 출력하지 말 것.
  • 전체 배경·폴백(수동 AX 주입)·AppleScript 함정: 에이전트 메모
  • 무인 상시 운영이 필요해지면: 에이전트 메모

이 스킬은 GET100 운영하면서 실제로 쓰는 절차입니다. 막히는 부분이 있으면 스레드로 물어보셔도 됩니다.

Signals

GitHub stars
364
Forks
89
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
kakaotalk-cli
Source
github.com/bam-bam-2/solo-skills