
매달 단톡방을 열어 ‘관리 > 대화 내보내기 > 이번 달치만 추려서 분석’을 반복하고 있었습니다. 이 입력 단계를 오픈소스 하나로 없앴습니다 — macOS 카카오톡 로컬 데이터를 평문으로 복호화하는 katok 위에, “대화방·기간만 지정하면 알아서 캡쳐·분석”하는 자동화를 얹은 기록. 그리고 자동화만큼 공들인 프라이버시·윤리 설계까지.
① 커뮤니티·소모임 운영자가 매달 하던 ‘카톡 내보내기 → 기간 추려서 → AI에 붙여넣기’라는 수작업의 입력 단계를, 오픈소스 katok(NomaDamas, MIT)으로 없앴습니다 — macOS 카카오톡 로컬 데이터베이스를 평문 SQLite로 복호화해 주는 도구입니다.
② 그 위에 “대화방·기간 지정 → 자동 캡쳐 → 요약”하는 얇은 자동화를 얹으니, 매달 손으로 하던 일이 한 번의 명령으로 줄었습니다.
③ 가장 중요한 건 기능이 아니라 경계입니다 — 전 과정이 로컬에서, 읽기 전용으로만 돌아가고 외부 전송이 없습니다. 카톡에 글을 쓰거나 보내는 건 원천적으로 불가능합니다. “분석할 수 있다”와 “분석해도 된다”는 다르기에, 프라이버시·동의 설계에 글의 절반을 썼습니다.
“이번 달 단톡방 좀 정리해 볼까” 한 번에, 매번 30분이 사라졌습니다
모임이든 회사든, 단톡방을 운영해 본 분이라면 익숙한 장면이 있습니다. 월말이 되면 카카오톡을 열고, 관리 > 대화 내용 내보내기를 눌러 텍스트로 뽑고, 이번 달 날짜만 손으로 추려낸 다음, 그걸 다시 AI에게 붙여 넣어 “이번 달 주요 이슈를 정리해 줘”라고 부탁합니다. 한 방이면 다행이지만 방이 여러 개면 같은 일을 여러 번 반복합니다.
문제는 시간만이 아닙니다. 기간을 잘못 추리거나, 한 방을 빠뜨리거나, 내보내기 형식이 매번 미묘하게 달라지는 휴먼 에러가 끼어듭니다. 정작 가치 있는 일—대화 속 흐름과 이슈를 읽고 운영에 반영하는 일—은 그 뒤에야 시작됩니다. 즉 우리는 ‘분석’이 아니라 ‘분석을 위한 준비’에 매달 시간을 쓰고 있었던 셈입니다.
저는 러닝 커뮤니티 운영을 돕고 있습니다. 매달 단톡방의 흐름을 정리해 회원들과 나누는데, 늘 막히는 지점이 ‘내보내기’였습니다. 결국 이런 생각이 들었습니다 — “입력 단계만 자동화해도 운영자의 한 달이 가벼워지지 않을까.” 마침 그 입력을 풀어 주는 오픈소스가 있었습니다.
수작업 워크플로의 진짜 비용
기존 흐름을 그대로 적어 보면 마찰 지점이 분명해집니다.
방이 여러 개면 N번 반복
경계 실수·누락 위험
형식이 매번 미묘하게 다름
진짜 가치는 여기서 시작
①~③은 준비 노동입니다. 사람이 꼭 해야 할 판단이 없는데도 매달 손이 갑니다. 자동화의 1차 표적은 바로 여기였습니다 — ④를 더 똑똑하게 만들기 전에, ①~③을 사라지게 하는 것.
katok — macOS 카톡 로컬 데이터를 평문으로 복호화하는 도구
가장 어려운 단계, 즉 ‘암호화된 카톡 데이터를 읽을 수 있게 만드는 일’을 풀어 주는 오픈소스가 있습니다. katok(NomaDamas, MIT 라이선스)입니다. macOS 카카오톡이 로컬에 보관하는 암호화 데이터베이스를 내 컴퓨터 안에서 복호화해, 평범한 SQLite 파일(누구나 SQL로 조회 가능한 형식)로 정규화해 줍니다.
katok 자체는 조회·검색 도구입니다. 명령어를 보면 성격이 분명합니다 — 상태 점검(doctor), 로컬 데이터 동기화(sync), 색인(index), 검색(search). 카카오톡으로 메시지를 보내거나 데이터를 고치는 명령은 존재하지 않습니다. 즉 설계상 ‘읽기’만 가능하고 ‘쓰기’는 없습니다. 이 점은 뒤의 프라이버시 절에서 다시 중요해집니다.
“대화방 · 기간”만 지정하면 캡쳐·분석까지
katok이 만들어 준 평문 SQLite 위에, 입력 단계를 없애는 얇은 다리(브릿지)를 얹었습니다. 흐름은 이렇게 단순해집니다.
(암호화 데이터 → 평문 SQLite) (SQL 한 줄) (이슈·트렌드 정리)
설계에서 신경 쓴 세 가지만 짚겠습니다.
- 기간은 한국 시간(KST) 기준으로 정확히 — 내부 저장은 세계표준시(UTC)라, “5월”을 말하면 자동으로 한국 시간 경계로 변환해 자릅니다. 사람이 날짜를 손으로 추리지 않습니다.
- 대화가 아닌 것은 걸러냅니다 — 입퇴장·초대 같은 시스템 메시지, 사진·이모티콘 같은 미디어는 분석 잡음이 되므로 자동으로 구분합니다(미디어는 ‘몇 건’으로만 집계).
- 용도에 따라 두 갈래 — 회원 활동 정리는 이슈 중심 월간 요약으로, 정보·도구 트렌드 파악은 키워드·도구 다이제스트로 나눕니다. 같은 원본을 보더라도 보고 싶은 것이 다르기 때문입니다.
효과 — 매달 45분이 1분 이내로, 3년치는 몇 초로
“분석할 수 있다”와 “분석해도 된다”는 다릅니다
대화 데이터를 다루는 도구를 소개하면서 기능만 말하고 끝내는 건 무책임합니다. 이 자동화에서 기능보다 먼저 정한 것은 넘지 않을 선이었습니다.
그래서 무엇이 보이나 — 시간 · 주제 · 사람
입력이 자동화되면, 남는 에너지를 ‘무엇을 볼 것인가’에 쓸 수 있습니다. 운영에 도움이 되는 축은 크게 셋입니다(아래는 일반적인 활용 예시이며, 특정 개인의 데이터를 가리키지 않습니다).
- 시간 흐름 — 언제 대화가 몰리는가. 가장 활발한 시간대를 알면 공지를 언제 올려야 잘 읽히는지가 정해집니다. 조용해진 구간은 자극이 필요한 신호입니다.
- 주제별 — 이번 달 무엇이 화제였는가. 행사·이슈·질문의 덩어리를 보면 운영의 우선순위가 보입니다.
- 사람(참여 양상) — 참여가 소수에 쏠렸는지 고르게 퍼졌는지, 새로 말문을 연 사람은 누구인지. 이는 감시가 아니라 환대의 데이터입니다 — 새 얼굴은 격려하고, 한동안 조용한 분께는 안부를 건네는.
또 하나의 쓸모 — 정보용 오픈채팅방을 ‘단번에’ 파악
우리 모임 방과는 별개로, 정보를 얻으려 들어가 있는 주제 오픈채팅방이 있습니다. 저는 AI·개발 트렌드를 좇는 방 몇 개를 모니터링하는데, 이런 방은 활발하면 한 달에 수천~수만 건이 쌓여 사람이 도저히 다 읽을 수 없습니다.
여기서는 ‘이슈 정리’가 아니라 트렌드 다이제스트가 답입니다 — 한 달 대화에서 ① 어떤 도구·모델이 많이 언급됐는지(랭킹) ② 가장 많이 공유된 링크 ③ 반복되는 질문 ④ 주목할 메시지 ⑤ 핫 키워드를 자동으로 뽑아 줍니다. 방에 며칠 못 들어가도, 다이제스트 한 장이면 흐름이 잡힙니다.
한 번에 끝내는 설치 — 시행착오 없이
설치는 한 번만 하면 됩니다. 처음 시도할 때 막히는 지점이 몇 군데 정해져 있는데, ‘오류가 나면 고치는’ 방식 대신 그 길을 처음부터 피해 가도록 짠 하나의 연속 프롬프트로 정리했습니다. 명령줄이 익숙하지 않아도, AI 코딩 에이전트(터미널을 다루는 도구)에 아래를 그대로 붙여 넣으면 한 번에 끝납니다. 저장소는 github.com/NomaDamas/katok 입니다.
(https://github.com/NomaDamas/katok)을 처음부터 막힘 없이 설치·설정하고 싶습니다.
아래 순서를 그대로, 한 단계씩 실행해 주세요. 각 명령은 실행 전에 무엇을 하는지 한 줄로
설명하고 내 확인을 받은 뒤 진행하며, 한 단계가 끝나면 다음 단계로 이어가세요.
1) Homebrew는 쓰지 마세요. (서드파티 탭 신뢰 게이트와 다운로드 차단으로 자주 막힙니다.)
대신 rustup + cargo로 설치합니다:
curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh -s — -y
source “$HOME/.cargo/env”
2) katok은 반드시 git 최신판으로 설치하세요. (crates.io 등록본은 기능이 빠져 있을 수 있습니다.)
cargo install –git https://github.com/NomaDamas/katok.git –force
3) 전체 디스크 접근 권한을 부여하고, 부여한 뒤 터미널을 재시작하세요.
(이 단계를 건너뛰면 명령은 실행돼도 데이터가 비어 보입니다.)
katok permissions macos
4) 동작은 –version이 아니라 –help와 doctor로 확인하세요. (katok에는 버전 플래그가 없습니다.)
katok –help
katok doctor –macos-probe
5) 어느 단계든 오류가 나면 멈추고 원문 오류를 내게 보여준 뒤, 임의로 다음 단계로 넘어가지 마세요.
6) 중요: 이 도구는 읽기 전용입니다. 내 카카오톡에 메시지를 쓰거나 보내는 동작은 절대 하지 마세요.
처음 한 번 · 분석할 방 찾기
설치 다음에 만나는 작은 벽이 하나 더 있습니다 — 카톡 그룹방은 이름이 비어 있을 때가 많아, 도구에서 ‘chat-(긴 숫자)’처럼 보입니다. 그래서 “○○방”이라고 이름으로 부르면 못 찾습니다. 게다가 메시지가 가장 많은 방이 정작 내가 찾는 모임 방이 아닌 경우도 흔합니다(대형 정보성 오픈채팅이 1등인 식). 그래서 이름이 아니라 ‘발신자’와 ‘내용’으로 찾고, 한 번 찾으면 그 방의 ID를 적어 두고 매달 재사용합니다. 이 또한 처음 한 번이면 끝입니다.
이름이 비어 ‘chat-(숫자)’로만 보일 수 있으니, 이름이 아니라 발신자와 내용으로
찾습니다. 아래를 한 단계씩, 실행 전 한 줄 설명 + 내 확인 후 진행해 주세요.
1) 먼저 대화방 목록을 보여주세요 (본문 말고 방 단위만):
katok source chats –source macos
2) 목록에서 내가 찾는 방을 ① 자주 등장하는 발신자 닉네임이나
② 내가 알려주는 고유 단서로 짚어 주세요. 단서로 검색할 때는:
katok search keyword “<특정 날짜의 한 줄 메시지나 우리끼리만 쓰는 표현>”
그 표현이 어느 방에 있었는지로 방을 역추적합니다.
3) 확정된 방들을 {“방이름”:”방 ID”, …} 형태의 메모(또는 작은 JSON 파일)로
정리해 주세요. 다음부터는 이 ID로 바로 지정해 매달 재사용합니다.
4) 읽기 전용 원칙은 그대로 — 내 카카오톡에 어떤 것도 쓰거나 보내지 마세요.
source chats·search는 katok 자체 명령입니다.)source chats는 --source macos를 붙여야 라이브 카톡 DB를 읽습니다(안 붙이면 샘플 경로를 찾다가 오류가 납니다). ② 그래도 방이 십여 개뿐이라면 도구 버그가 아니라, 이 목록에는 이 Mac에 로컬로 저장(캐시)된 방만 나오기 때문입니다. 카톡을 로그인·실행해 둔 동안 메시지가 도착할 때마다 캐시가 쌓이는 구조라, 오래 쓴 Mac일수록 방이 많고 갓 로그인한 Mac은 최근 활동한 몇 개만 보입니다. 오래된 방을 그냥 열어보는 것만으로는 늘지 않습니다 — 며칠 켜 두며 메시지가 쌓이면 자연히 늘고, 그 뒤 katok sync --source macos를 다시 돌리면 반영됩니다.이렇게 분석을 요청하세요 — 활용 예시 프롬프트
방을 찾았다면, 분석은 자연어로 부탁하면 됩니다. AI 코딩 에이전트가 katok이 만든 로컬 아카이브를 직접 읽어, 원하는 방·기간만 잘라 요약해 줍니다. 목적에 따라 아래처럼 물어보세요 — 모든 예시에 ‘읽기 전용 + 민감정보 가림’을 조건으로 넣어 두었습니다. ○○방 자리에는 위에서 찾은 방 이름(또는 ID)을 넣으면 됩니다.
열어, ‘○○방’의 2026년 5월(한국시간) 대화만 골라 주세요. 그걸로 이번 달 주요
이슈·결정·핵심 인물을 ‘이슈 중심’으로 정리해 주세요. 입퇴장 같은 시스템 메시지와
사진·이모티콘은 빼고, 전화번호·계좌번호는 가려 주세요. 실제 대화는 날짜·발신자와
함께 인용하되, 카톡에 어떤 것도 쓰거나 보내지는 마세요.
② 가장 많이 공유된 링크 ③ 반복된 질문 ④ 핫 키워드 ⑤ 주목할 메시지 5개를 뽑아
한 장으로 요약해 주세요. 본문 전체를 늘어놓지 말고, 위 신호만 집계해서 보여
주세요. (읽기 전용 — 카톡에 쓰기/전송 금지)
시간대를 알려 주세요. 또 이번 달에 처음 말문을 연 새 멤버와, 지난달엔 활발했는데
이번 달 조용해진 멤버를 따로 정리해 주세요. 감시가 아니라 환대가 목적입니다.
(읽기 전용 · 민감정보 가림)
솔직한 전제와 주의
- 환경 제약 — 현재 katok은 Apple Silicon Mac 대상입니다. 설치 후 ‘전체 디스크 접근 권한’을 직접 부여해야 하며, 이는 사람이 해야 하는 보안 단계입니다.
- 업스트림 의존 — 카카오톡의 저장 방식이 바뀌면 복호화가 동작하지 않을 수 있습니다. 오픈소스 갱신에 의존하는 부분입니다.
- 읽기 전용의 양면 — 안전의 핵심이지만, 동시에 “분석만 되고 행동은 안 된다”는 한계이기도 합니다. 의도된 제약입니다.
- n=1 — 이 글은 한 운영자의 사례입니다. 조직·규제 환경에 따라 적용 여부와 방식은 달라집니다.
자동화는 감시가 아니라, 돌봄의 시간을 버는 일
오픈소스 하나가 없앤 것은 ‘내보내기 30분’만이 아니었습니다. 준비 노동에 쏠려 있던 주의를, 정작 중요한 일—이번 달 우리 모임에 무슨 일이 있었고 누구를 더 챙겨야 하는지—로 옮겨 주었습니다. 다만 그 힘이 선을 넘지 않도록, 기능보다 경계를 먼저 설계했습니다. 읽기 전용으로, 로컬에서만, 운영 목적에 한해서.
도구는 점점 강력해집니다. 그래서 매번 같은 질문을 먼저 던지려 합니다 — “이건 할 수 있는 일인가”가 아니라 “이건 해도 되는 일인가, 그리고 무엇을 위해서인가.”
#자동화
#프라이버시
#커뮤니티운영
#카카오톡
이 글은 러닝 커뮤니티 운영을 돕는 한 사람의 자동화 경험을 바탕으로 작성되었습니다. 소개한 오픈소스(katok)는 외부 프로젝트이며, 실제 단톡방 대화나 회원 정보는 본문에 일절 포함하지 않았습니다.