채팅 목업 개인정보 보호에서 바로 확인할 기준은 웹 빌더 직접 입력과 MCP 서버 생성을 구분하는 것입니다. 웹 빌더 상태는 서버 대화 DB가 아니라 현재 브라우저의 localStorage·IndexedDB에 남고, MCP 입력은 서버로 전송되어 PNG로 렌더링됩니다. 입력 상태와 생성 PNG에는 생성 시점 기준 10분의 만료 시각이 설정되며 활성 서버 인스턴스 메모리에 최대 32건 임시 캐시됩니다. 만료 뒤 조회 또는 예약 타이머 실행 시 제거됩니다.
민감한 실제 대화 대신 가명과 더미 값을 쓰는 것이 가장 안전합니다. 직접 동작을 확인하려면 웹 빌더, MCP 입출력과 제한은 MockaoTalk MCP 사용법, 제품 기능 범위는 MockaoTalk 소개를 참고하세요.
한눈에 요약
- 웹 빌더는 참가자·메시지·방 설정을
localStorage의mockaotalk-state에 자동 저장합니다. - 프로필 사진은
FileReader로 데이터 URL이 되어 참가자 상태와 함께 브라우저 저장소에 포함될 수 있습니다. - 사진 메시지는 원본 파일을 보관하지 않고 긴 변 최대 1024px의 썸네일로 처리하며, IndexedDB
MockaoTalkDS의photo_attachments에 저장합니다. - 이미지·MP4 내보내기 작업은 고유 ID로 IndexedDB
MockaoTalkDS에 임시 저장하며, 최신 8건과 24시간 만료 기준을 적용합니다. - MCP는 대화 스크립트와 렌더 옵션을 서버로 보내며, 입력 상태와 PNG base64·builder URL을 포함한 생성 결과에 생성 시점 기준 10분의 만료 시각을 설정하고 활성 서버 인스턴스 메모리에 최대 32건 임시 캐시합니다.
#state=...URL fragment는 일반 HTTP 요청에 실리지 않지만, URL을 받은 사람은 텍스트 대화 상태를 복원할 수 있습니다. 사진 메시지의 썸네일 Blob은 URL에 포함되지 않습니다.
채팅 목업 개인정보 보호란?
채팅 목업 개인정보 보호는 서버에 저장되는가 한 가지만 보는 것이 아니라, 데이터가 어디로 전송되고, 어느 저장소에 얼마나 남고, 누가 다시 열 수 있는지를 기능별로 확인하는 일입니다. MockaoTalk 웹 빌더는 직접 입력한 대화를 별도 서버 대화 DB에 저장하는 흐름이 아니지만, 같은 브라우저에서 작업을 이어가도록 로컬 저장소를 사용합니다. 따라서 서버 미저장과 기기 미저장은 같은 말이 아닙니다.
MCP는 웹 빌더와 다릅니다. AI 클라이언트가 대화와 설정을 원격 endpoint로 보내고 서버가 헤드리스 브라우저로 PNG를 만듭니다. 영구 대화 DB가 없다는 사실만으로 전송·로그·메모리 잔존 가능성이 사라지는 것은 아닙니다. 또한 AI 클라이언트와 네트워크 사업자의 보관 정책은 MockaoTalk 소스만으로 확인할 수 없습니다.
기능별 데이터 흐름
| 기능 | 데이터가 가는 곳 | 확인된 저장·잔존 | 사용자가 할 일 |
|---|---|---|---|
| 웹 빌더 편집 | 현재 브라우저 상태 | localStorage 자동 저장 | 공용 기기에서 초기화·사이트 데이터 삭제 |
| 프로필 이미지 | FileReader로 브라우저에서 읽음 | 데이터 URL이 참가자 상태에 포함 가능 | 실사진 대신 권리 확인된 가상 이미지 사용 |
| 사진 메시지 | 브라우저 canvas 처리 | MockaoTalkDS/photo_attachments에 처리된 썸네일, localStorage에 참조 정보 | 한 메시지 최대 30장·원본 한 장당 40MiB, URL·다른 기기 복원 불가 |
| 이미지 내보내기 | 브라우저 DOM → canvas → Blob/data URL | 다운로드 전 메모리, 선택 흐름은 IndexedDB 가능 | 파일 저장 위치와 공유 범위 확인 |
| MP4 내보내기 | 브라우저 렌더링·인코딩 | IndexedDB 고유 작업 ID/Blob, 최신 8건·24시간 만료 | 완료 후 공용 기기 사이트 데이터 삭제 |
| MCP 생성 | AI 클라이언트 → MockaoTalk 서버 | 활성 서버 인스턴스 메모리, 10분 만료 시각·최대 32건; 만료 뒤 조회 또는 예약 타이머 실행 시 제거 | 가명·더미 값만 전송 |
| builderUrl | 대화 상태가 URL fragment에 포함 | URL 자체와 연 사람의 localStorage | 전체 URL을 민감정보처럼 취급 |
| 분석·광고 | Google Analytics·AdSense는 전 지역에서 로드, Naver Analytics는 유럽경제지역·영국·스위스 밖에서 로드 | 해당 유럽권 거부 시 쿠키 없는 GA 측정과 제한적 광고, 허용 시 Google 쿠키 기반 분석·맞춤형 광고 가능 | 해당 유럽권은 Google CMP, 그 밖의 지역은 브라우저·Google 광고 설정 확인 |
유럽경제지역·영국·스위스 동작은 코드만으로 끝나지 않습니다. 운영 AdSense 계정의 Privacy & messaging → European regulations에서 Google CMP 메시지를 게시하고 광고 목적·분석 목적 Consent Mode를 모두 켜야 합니다. Brand safety → Blocking controls → Ad serving의 Limited ads도 켜져 있어야 거부 상태에서 적격 제한적 광고를 요청할 수 있습니다. 코드에는 해당 유럽권의 Google 저장 기본값을 denied로 두고 그 밖의 지역은 granted로 유지하는 역할만 있습니다.
웹 빌더는 무엇을 로컬에 저장하나요?
빌더는 초기화 뒤 참가자, 방 설정, 메시지가 바뀔 때마다 localStorage.setItem("mockaotalk-state", JSON.stringify(state))를 실행합니다. 같은 브라우저 프로필에서 다시 열면 이 값을 읽어 참가자·메시지·시간을 복원합니다. 초기화 버튼은 해당 키를 지우고 기본 데이터로 되돌립니다. 브라우저의 사이트 데이터 삭제나 시크릿 창 종료로도 값이 사라질 수 있습니다.
프로필 사진 업로드는 파일을 서버 업로드 endpoint로 보내는 대신 FileReader.readAsDataURL로 읽습니다. 하지만 이 데이터 URL은 참가자 객체에 들어가고, 참가자 객체는 빌더 상태와 함께 localStorage에 저장됩니다. 탭을 닫으면 반드시 사라지는 일회성 Blob URL이라고 설명하면 현재 구현과 맞지 않습니다. 같은 기기·브라우저 계정을 공유한다면 사진과 대화가 다시 나타날 수 있습니다.
사진 메시지는 한 메시지에 최대 30장, 원본 한 장당 40MiB까지 선택할 수 있습니다. 브라우저는 각 사진을 긴 변 최대 1024px로 축소하고 WebP를 우선 사용한 썸네일을 만든 뒤 IndexedDB MockaoTalkDS/photo_attachments에 저장합니다. 메시지 상태에는 Blob 대신 사진 ID·크기·MIME 형식·바이트 크기만 들어갑니다. 메시지나 사진 삭제와 빌더 초기화는 연결된 썸네일 삭제를 시도하며, 참조되지 않은 오래된 썸네일은 24시간 유예 후 정리 대상이 됩니다.
이미지와 MP4는 어떻게 만들어지나요?
PNG·JPEG·WebP 내보내기는 html-to-image의 toCanvas로 미리보기 DOM을 캔버스로 변환하고, canvas.toDataURL과 canvas.toBlob으로 결과를 만듭니다. 일반 다운로드는 브라우저 링크를 눌러 파일을 저장합니다. 긴 대화 캡처는 화면 복제본의 스크롤 영역을 확장한 뒤 같은 과정을 거칩니다.
다운로드 페이지를 거치는 이미지·영상 흐름은 IndexedDB MockaoTalkDS의 pending_downloads store에 각 작업을 고유 ID로 저장합니다. MP4는 메시지, 참가자, 방 설정과 옵션을 video_job으로 넣거나 완성된 Blob을 저장할 수 있습니다. 다운로드가 시작되면 해당 ID만 삭제하며, 새 작업을 저장할 때 만료 항목을 제거하고 최신 8건만 유지합니다. 각 작업은 생성 후 24시간이 지나면 조회할 수 없고, 이후 새 작업 저장 또는 해당 ID 조회 시 실제로 제거됩니다. 사이트가 닫혀 있으면 정리 코드가 실행되지 않으므로 공용 기기에서는 브라우저 사이트 데이터도 직접 삭제하는 편이 안전합니다.
MCP 서버에서는 무엇이 달라지나요?
generate_chat_image 요청에는 script 또는 구조화된 state, 방 이름, 참가자 이름, 기준 시각과 렌더 옵션이 들어갈 수 있습니다. 이 JSON은 https://mockaotalk.com/mcp로 POST되고 서버 프로세스에서 검증됩니다. 서버는 Chromium으로 /mcp-render#state=...를 열어 PNG를 만들고 base64 이미지와 편집 URL을 응답합니다.
렌더러는 입력 상태와 생성 PNG를 URL 키로 한 프로세스 메모리 Map에 보관합니다. 각 항목에는 생성 시점 기준 10분의 만료 시각을 기록합니다. 만료 뒤 조회하면 반환하지 않고 즉시 제거하며, 조회가 없어도 예약된 타이머가 실행되면 제거합니다. 새 결과를 넣어 32건을 넘으면 오래된 항목부터 정리합니다. Node.js 타이머는 이벤트 루프 지연이나 인스턴스 일시 중지로 늦게 실행될 수 있으므로, 물리적 메모리 삭제가 생성 후 정확히 10분 이내라고 보장하지는 않습니다. 이는 영구 데이터베이스나 디스크 파일 저장과는 다르지만, 서버 플랫폼의 접근 로그나 AI 클라이언트 로그 보관 기간은 이 애플리케이션 코드만으로 확정할 수 없습니다.
builderUrl의 fragment는 안전한가요?
builderUrl은 https://mockaotalk.com/builder#state=mt1...처럼 대화 JSON을 압축한 값을 URL fragment에 넣습니다. 브라우저 표준상 # 뒤 fragment는 일반 HTTP 요청의 request target에 포함되지 않으므로 서버가 페이지 요청만으로 그 값을 받지는 않습니다. 그러나 압축은 암호화가 아니며, 전체 URL을 받은 사람은 내용을 복원할 수 있습니다.
빌더는 URL 상태를 불러온 뒤 history.replaceState로 주소창의 fragment를 지웁니다. 이어서 가져온 참가자·메시지·방 설정을 localStorage에 저장합니다. 메신저, 문서, 브라우저 동기화, 화면 캡처에 전체 URL이 남으면 다른 사람이 열 수 있으므로 builderUrl을 공개 공유 링크처럼 다루지 마세요.
사진 메시지의 썸네일 Blob은 builderUrl에 직렬화되지 않습니다. 현재 URL 가져오기 스키마도 텍스트 메시지만 허용하므로, 사진이 있는 웹 빌더 작업을 URL로 백업하거나 다른 기기로 옮길 수 있다고 설명하면 안 됩니다. 사진이 포함된 결과는 PNG·JPEG·WebP 또는 MP4 파일로 내보내 보관해야 합니다.
공용 기기에서 실제로 지워야 할 곳 10가지
공용 기기에서 개인정보 삭제 기준은 저장소·파일·공유 기록 3개 범주를 확인하는 것입니다. MockaoTalk 빌더 초기화만으로는 다운로드 파일이나 AI 클라이언트 기록까지 지워지지 않으므로 아래 10곳을 순서대로 점검하세요.
- 빌더의 초기화 버튼으로
mockaotalk-state를 지웁니다. - 공용 기기에서는 사이트의
localStorage를 브라우저 설정에서 삭제합니다. - IndexedDB의
MockaoTalkDS사이트 데이터를 삭제합니다. - 다운로드 폴더에 남은 PNG·JPEG·WebP·MP4를 확인합니다.
- 휴지통과 클라우드 자동 동기화 폴더도 확인합니다.
- builderUrl을 붙여 넣은 메신저·문서·이메일 기록을 확인합니다.
- AI 클라이언트의 대화 기록과 도구 호출 로그를 확인합니다.
- 프로필 원본 사진과 편집 사본의 공유 권한을 확인합니다.
- 브라우저 프로필 동기화가 켜져 있는지 확인합니다.
- 외부 게시물·CMS에 올린 최종 이미지의 개인정보를 다시 검사합니다.
민감정보 없이 재현하는 방법
| 실제 값 | 목업용 대체값 |
|---|---|
| 고객 실명 | 고객 A, 민지(가명) |
| 전화번호 | 010-0000-0000 또는 항목 삭제 |
| 주문 번호 | SAMPLE-1001 |
| 주소 | 샘플시 예시로 1 |
| 인증번호 | 000000이 아니라 인증번호 입력 문구 |
| 회사 내부 URL | https://example.com/internal |
| 결제 금액 | 시나리오에 필요 없으면 삭제 |
| 실제 프로필 사진 | 기본 이미지 또는 권리 확인된 일러스트 |
더미 값도 실제 사람이나 활성 계정과 우연히 겹치지 않게 명백한 샘플 표기를 쓰세요. 비밀번호와 인증번호는 숫자 예시 자체를 넣기보다 입력하지 마세요 또는 인증번호 같은 라벨로 대체하는 편이 좋습니다. 의료·급여·평가·미성년자 정보는 장면 목적에 꼭 필요하지 않으면 완전히 제거합니다.
과장된 개인정보 문구를 피하는 기준
다음 표현은 현재 제품 전체에 쓰기 어렵습니다: 모든 데이터는 브라우저에서만 처리, 서버로 단 1비트도 전송되지 않음, 완벽한 프라이버시, 탭을 닫으면 사진이 즉시 삭제, MCP 요청이 저장되지 않음. 각각 MCP 서버 전송, 로컬 저장소, 메모리 캐시, 제3자 분석·광고 트래픽을 무시하기 때문입니다.
정확한 표현은 기능을 나눕니다. 웹 빌더에서 직접 입력한 대화 내용은 별도 서버 대화 DB에 저장되지 않지만 현재 브라우저 localStorage에 자동 저장됩니다. MCP 입력은 PNG 렌더링을 위해 서버로 전송되며 입력 상태와 생성 PNG에는 생성 시점 기준 10분의 만료 시각이 설정됩니다. 활성 서버 인스턴스 메모리에는 최대 32건이 캐시되고 만료 뒤 조회 또는 예약 타이머 실행 시 제거됩니다.처럼 전송·저장 위치·정리 조건을 구체적으로 적어야 합니다.
자주 묻는 질문
웹 빌더에 입력한 대화가 서버에 저장되나요?
검사한 2026년 8월 11일 소스에서는 웹 빌더 직접 입력을 별도 서버 대화 DB로 보내 저장하는 로직을 확인하지 못했습니다. 대신 참가자·메시지·방 설정은 현재 브라우저의 localStorage에, 사진 메시지 썸네일은 IndexedDB photo_attachments에 저장됩니다. 분석·광고 등 별도 네트워크 요청도 존재하므로 네트워크 요청이 전혀 없다는 뜻은 아닙니다.
사진 메시지를 URL로 다른 기기에 옮길 수 있나요?
아니요. builderUrl에는 사진 Blob이 포함되지 않고 현재 URL 가져오기 스키마도 텍스트 메시지만 허용합니다. 같은 브라우저에서는 IndexedDB가 유지되는 동안 다시 볼 수 있지만, 다른 브라우저나 기기에서는 사진이 복원되지 않습니다. 사진이 포함된 완성본은 이미지나 MP4 파일로 내려받아 보관하세요.
프로필 사진은 탭을 닫으면 사라지나요?
반드시 그렇지 않습니다. 사진은 FileReader로 데이터 URL이 되고 참가자 상태에 포함되며, 그 상태가 localStorage에 저장될 수 있습니다. 같은 브라우저 프로필에서 빌더를 다시 열면 사진이 복원될 수 있습니다. 공용 기기에서는 빌더 초기화뿐 아니라 사이트 데이터 삭제를 확인하세요.
MCP 요청은 서버에 영구 저장되나요?
검사한 소스에는 영구 대화 DB나 렌더 파일 저장 로직이 없습니다. 입력 상태와 생성 PNG에는 생성 시점 기준 10분의 만료 시각이 설정되며 활성 서버 인스턴스의 프로세스 메모리에 최대 32건 임시 캐시됩니다. 만료 뒤 조회 또는 예약 타이머 실행 시 제거되고, 한도를 넘으면 오래된 항목부터 삭제됩니다. 호스팅 접근 로그와 AI 클라이언트 기록은 별도 정책의 영향을 받습니다. 따라서 민감한 실제 대화를 넣어도 된다는 의미로 해석하면 안 됩니다.
builderUrl을 팀원에게 보내도 되나요?
가명과 샘플 정보만 든 검수용 목업이라면 공유할 수 있지만, 전체 URL을 받은 사람은 압축된 상태를 복원할 수 있습니다. fragment가 서버 요청에 포함되지 않는 것과 수신자에게 비밀이라는 것은 다릅니다. 실명·연락처·고객 정보가 없는지 확인하고, 외부 문서나 공개 이슈에 URL을 남기지 마세요.
안전하게 시작하기
실제 대화를 복사하지 말고 장면에 필요한 패턴만 가명으로 다시 작성하세요. 채팅 목업 빌더에서 더미 값으로 목업을 만든 뒤, 공개 전 10가지 삭제 위치와 최종 이미지의 개인정보를 확인하면 됩니다.