mcpbeat Sign in

Kakaotalk CLI Agent Skill

macOS에서 카카오톡 메시지를 읽고 보낸다. 렌더링 안 된 채팅방도 검색으로 찾아 열고 줄바꿈을 보존한다. 실패하는 경로와 대체 경로를 함께 담았다.

1k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
183
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/bam-bam-2/solo-skills --skill kakaotalk-cli

The instruction itself

2 sections, as written by the author

카카오톡 보내기·읽기

정본 도구는 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/.env의 KAKAOCLI_KEY이며

--key로 넘긴다(환경변수는 읽지 않는다). 절대 출력하지 말 것.

  • 전체 배경·폴백(수동 AX 주입)·AppleScript 함정:

에이전트 메모

  • 무인 상시 운영이 필요해지면: 에이전트 메모

How to use it

Copy the folder

Take bam-bam-2/kakaotalk-cli from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.