카톡 백업 수집기 완전 가이드 — 사람 손 한 번 없이 사진·대화를 NAS까지
카톡 백업 수집기 완전 가이드
여러 채팅방에서 매일 흘러가는 사진·동영상·파일·대화까지, 사람의 클릭 한 번 없이 맥미니가 수집하고 NAS에 보관하는 시스템. 이 글은 그 시스템의 기능·사용법·구축 과정을 처음부터 정리한 가이드다.
관리 주소: k.pinksky.kr (화이트리스트 등록 IP만 접근) · 버전 v0.18.00 (2026-09-29 기준) · 누적 NAS 보관 45,450개 · 수집 방 12개 (전체 478개 중 선택)
1. 한눈에 보는 화면

위 화면이 관리페이지 전부다. 위에서부터:
- 카카오 세션 쿠키 카드 — 로그인 세션의 남은 수명
- 백업(staging→NAS) 카드 — NAS 전송 대기 개수
- 💬 대화 백업 카드 — 대화 텍스트 백업 3단계 상태
- 채팅방 카드들 — 방별 수집·백업 상태와 버튼
- 수집기 로그 — 실시간 동작 기록 (아래 접기)
2. 구성요소 — 어떻게 돌아가나
| 구성요소 | 주기 | 하는 일 |
|---|---|---|
| talkcloud 수집기 | 5분 | 방 목록 재확인 → 방별 신규 파일 다운로드 → 썸네일 → NAS 전송 → 대화 백업 체크 |
| 헤드리스 Chrome | 상시 | 카카오 세션 쿠키 보관소 (화면에 창이 절대 안 뜬다) |
| 관리페이지 API | 상시 | k.pinksky.kr 상태 대시보드 |
| 감시자(doctor) | 5분 | Chrome/데몬/세션 사망 감시 → 자동 복구/푸시 알림 |
| 자동 백업 트리거 | 15분 | 미완료 방 재처리 자동 발동 |
| 저녁 스윕 | 매일 18:30 | 전 방 백업완료 검증 · 빠진 것 재처리 |
데이터 흐름:
카톡 클라우드(talkcloud) ──5분 폴링──▶ 맥미니 staging ──청크 전송──▶ 미디어 NAS
카톡 앱(폰)의 대화 백업 ──스냅샷 자동 감지──▶ 대화 텍스트 수집 ──▶ NAS 대화백업/
3. 카드별 버튼 설명
카카오 세션 쿠키 카드
- 상태 표시 — 남은 시간(초록 12h↑ / 주황 / 빨강)과 만료 예정 시각. 수집기의 심장이라 제일 위에 있다.
- [쿠키 갱신(브라우저)] — 헤드리스 Chrome에서 세션을 새로고침. 보통 누를 일이 없다(자동갱신이 한다).
- 쿠키 직접 붙여넣기(수동) — 브라우저 자동화가 막혔을 때 수동 투입하는 비상구.
백업(staging→NAS) 카드
- 전부 전송됨 / N개 미전송 — NAS 전송 대기 파일 수.
- [지금 수집·백업] — 5분 타이머를 기다리지 않고 즉시 한 사이클. 방금 올라온 사진 바로 보관 용도.
💬 대화 백업 카드
- 3단계 상태: 🟢 백업완료(NAS까지 등록) · 🟠 동기화완료(카카오 클라우드에 스냅샷 있음) · ⚪ 미백업(폰에서 백업 전)
- [대화 수집] — 완료된 스냅샷의 대화를 즉시 수집해 NAS로 전송.
- 스냅샷 목록 — 방별 대화 백업 상세(용량·메시지 수).
채팅방 카드 (방마다)
| 버튼 | 기능 |
|---|---|
| 사진 보기 | 방의 사진을 날짜별 그리드로 열람 (클릭 시 원본 라이트박스) |
| 추가저장 | 누락/삭제 건 재확인 후 재다운로드 — 백업완료 방은 숨는다 |
| 🧹 클라우드 정리 | NAS에 이미 보관된 방의 카카오 클라우드 데이터를 휴지통으로 이동(복구 가능) — NAS 백업본은 영향 없음 |
| 💬 백업완료 / 동기화완료 / 미백업 | 대화 텍스트 백업 상태 버튼 (색으로 즉시 판독) |
배지: 백업완료(일자) / 백업 중 (서버 4204 · 클라우드 4217) / 대기 중(큐에서 순번 획득) / 미전송 N

방 선택 / 전체보기 모달
- 검색 — 방 이름 실시간 필터
- 전체선택 / 선택해제 — 대상 일괄 토글
- 최근순 / 사진순 — 최근 활동 방부터 또는 사진 많은 순 정렬
- [저장] — 체크한 방을 백업 대상으로 등록 (다음 사이클부터 자동 수집)
- 🧹 (행마다) — 그 방만의 클라우드 정리
4. 사진 열람

방 카드의 [사진 보기] → 날짜별로 정렬된 그리드. 각 썸네일 상단 표시는: ✅ = NAS 전송 완료, ⏳ = 전송 대기.

썸네일 클릭 → 원본 풀화면 라이트박스.
5. 대화 백업 — 폰에서 시작해야 하는 이유
카카오 API 특성상 대화 텍스트는 폰 카톡에서 백업(채팅방 저장소)을 시작해야 카카오가 방 대화 스냅샷을 클라우드에 만들어 준다. 맥미니는 완료된 스냅샷을 자동 감지해 전체 대화를 페이징 수집한다. 시험 결과: 1분 만에 58,132개 메시지(35MB JSON + 3.7MB 읽기용 TXT) 수집·NAS 저장.

스냅샷이 없는 방에서 💬 버튼을 누르면 위처럼 안내 팝업이 뜬다:
- 폰 카톡 → 방 → ≡ 메뉴 → 채팅방 저장소(대화 백업)에서 백업 시작
- 백업 완료 (카카오가 스냅샷 생성)
- 맥미니가 5분 내 자동 수집 → NAS 대화백업/ 저장 → 버튼이 초록 백업완료로 바뀜

헤더의 v0.18.00 라벨 클릭 → 버전별 변경 이력 모달.
6. 구축 과정 — 진행기록
| 시기 | 작업 |
|---|---|
| 08-27 | 시작. 브라우저 자동화(CUA)로 카카오 웹을 여는 방식 시도 → 로그아웃/안정성 문제로 CDP(Chrome 디버그 포트) 방식으로 전환 |
| 08-28 | 수집기 v2: /chat/list의 방 식별자(hashedChatId)로 {방이름}ID 폴더 구조 확립. 초기 스크립트는 CDN URL 해시를 방 식별자로 써서 모든 파일이 한 폴더에 몰렸었음(해시는 계정 단위였다는 걸 찾아냄) |
| 08-28 | 관리페이지(k.pinksky.kr) 개설 — caddy 화이트리스트 게이트웨이 |
| 08-29 | 방 선택 UI(478개 방 토글) + 최근 활동순 정렬 |
| 08-29 | 맥미니 재부팅 사태: 쿠키 로그인 유실 → 수동 재로그인 → 자동화 갱신회로 설계 시작 |
| 09-07 | 세션 만료 오판 무한루프 수정(쿠키 판독을 안정적 방식으로 전환), 창 깜빡임 1차 해소 |
| 09-07~09-19 | 저녁 전체 백업 스윕(18:30) 가동. 볼륨 급증 대응 커서 백필 구조 확립 |
| 09-14 | 대화 백업 경로 발견: 톡클라우드 웹의 chatSnapshots API — 폰 백업→스냅샷→chatLogs 페이징으로 텍스트 수집 가능. 3단계 상태 표기까지 완성 |
| 09-19 | headless Chrome 전환 — 화면에 창이 아예 뜨지 않게 됨. 세션 자동갱신이 headless에서도 통과하는 걸 실측 확정 |
| 09-29 | 현재: 45,450개 NAS 보관, 무인 운영 중 |
7. 장애 극복 메모 (같은 곳에서 넘어지지 말자)
- sips(맥 썸네일 도구)는 부모 폴더가 없으면 파일이 엉뚱한 경로로 쓰인다 — 썸네일 생성 전 폴더 생성 필수
- 카톡 동영상은 전부 같은 파일명(talkv_hevc.mp4) — 병렬 다운로드 충돌 방지를 위해 고유명 개명 필수
- 카카오 쿠키 판독은 브라우저 API가 간헐적으로 결과 누락 — 판독 실패를 만료로 착각하면 무한 갱신 루프. 판독 실패는 스킵한다
- 세션 자동갱신은 완전 만료 직후에 성공 — 임박 시점에 시도하면 카카오가 재발급을 안 해준다
- 문자열의 개행이 실제 줄바꿈으로 저장되면 페이지 전체가 사망(0.16.01 사건) — 배포 전 스크립트 파싱 검증 습관화
8. 재해/복구
- 세션 만료 알림(ntfy)이 오면: 헤드리스 자동갱신이 자기 처리(통상 무관). 예외로 재로그인이 필요한 경우에만 맥미니 Chrome에서 카카오 로그인
- 데몬 관리: pm2 ls / pm2 restart kakao-talkcloud-collector
- 로그: collector.log(수집기) · doctor.log(감시자) · 관리페이지 하단 로그뷰
- NAS 경로: kakao-chat/{방이름}ID/날짜/… · 대화: kakao-chat/대화백업/{방이름}/
시스템은 아직도 매 5분마다 돌고 있다. 이 글을 쓰는 10분 동안에도 오늘의 사진 9장이 무인으로 NAS에 넘어갔다.
PINKSKY NEWS 기술 기록 · dsh (2026-09-29)