MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

8분 읽기 · 마지막 업데이트

ChatGPT 대화 기록 내보내기, 읽기, 검색, 장기 보관하는 방법

ChatGPT는 내 기록 전체를 ZIP 하나로 내려줍니다. 하지만 그 안의 파일은 사람이 읽도록 만들어지지 않았습니다. 구조를 이해하고 10년 뒤에도 열어 볼 수 있는 아카이브로 바꾸는 과정을 설명합니다.

대화를 따로 보관해야 하는 이유

ChatGPT 대화가 쌓이다 보면 어느새 업무 일지가 됩니다. 겨우 맞춘 정규식, 협상 전에 연습한 논리, 나중에 이어서 하려던 설계 초안이 모두 거기 있습니다. 그런데 웹 화면은 이런 자료를 오래 두기에 좋은 곳이 아닙니다. 검색 범위는 서비스가 정한 만큼이고, 삭제한 대화는 내 화면에서 사라지며, 계정 문제나 정책 변경이 생기면 접근이 한꺼번에 끊길 수 있습니다.

로컬 아카이브는 세 가지 문제를 한 번에 풀어 줍니다. 서비스와 무관한 사본이 생기니 백업이 되고, 평범한 텍스트 파일이라 이미 쓰는 도구로 검색할 수 있고, 대화 하나만 Markdown이나 HTML로 저장해 계정을 공유하지 않고도 티켓에 붙이거나 동료에게 보낼 수 있습니다.

내보내기 신청

내보내기는 계정에 기본으로 들어 있는 기능입니다. ChatGPT에서 설정, 데이터 제어, 데이터 내보내기 순서로 들어가 신청합니다. 서비스가 백그라운드에서 파일을 만든 뒤 계정 이메일로 다운로드 링크를 보냅니다. 기록이 많으면 시간이 걸리니 필요해지기 전에 미리 신청하고, 메일이 오면 바로 받아 두세요. 링크가 얼마나 유효한지는 숫자를 외우지 말고 받은 메일에서 직접 확인하세요. 이 정책은 서비스 쪽 사정이라 바뀔 수 있습니다.

ZIP을 받았다면 다른 작업을 하기 전에 읽기 전용으로 바꾸고 안전한 곳에 복사해 두세요. 이 첫 사본이 원본 증거입니다. 아래에서 설명하는 뷰어를 포함해 모든 도구는 복제본으로만 작업해야 합니다. 체크섬도 남겨 두면 나중에 사본이 온전하다는 것을 확인할 수 있습니다.

sha256sum chatgpt-export-2026-10-01.zip > chatgpt-export-2026-10-01.zip.sha256
chmod a-w chatgpt-export-2026-10-01.zip

ZIP 안에는 무엇이 있나

아카이브는 평평하게 파일이 늘어선 구조입니다. 핵심은 모든 대화를 담은 conversations.json입니다. 기록이 많으면 conversations-000.json, conversations-001.json처럼 여러 조각으로 나뉘는 경우가 많습니다. 뷰어는 조각을 모두 읽고, 같은 대화 id가 중복되면 수정 시각이 더 늦은 쪽을 남깁니다. 그 옆에는 보통 미리 렌더링된 chat.html, 계정 정보를 담은 작은 파일, 첨부한 이미지와 파일이 임의로 생성된 이름으로 들어 있습니다.

내보내기마다 구성이 똑같다고 가정하면 안 됩니다. 부가 파일의 종류와 첨부 파일 이름은 시기에 따라 달라져 왔습니다. 그래서 제대로 된 읽기 도구는 고정 경로 대신 패턴으로 대화 파일을 찾고, 첨부 매칭도 느슨하게 처리합니다.

구성 요소내용다루는 방법
conversations.json (또는 conversations-NNN.json)대화 객체의 배열, 즉 모든 대화아카이브의 핵심입니다. 파싱만 하고 직접 수정하지 마세요
chat.html기록 전체를 미리 렌더링한 페이지훑어보기엔 편하지만 거대한 파일 하나이고 대화별 내보내기가 없습니다
계정 정보 파일내 프로필 정보개인정보이므로 공유물에 섞이지 않게 하세요
첨부 파일업로드했거나 생성된 이미지·문서내부 id로 이름이 붙어 있어 참조로 대화와 연결합니다

대화는 목록이 아니라 트리입니다

각 대화 객체에는 id, 제목, create_time과 update_time(초 단위 Unix 시간, 소수점이 붙기도 함), current_node, mapping이 있습니다. mapping은 노드 id를 키로 하는 객체이고, 모든 노드는 parent를 가리키며 children 목록을 가집니다. 메시지는 노드 안에 있고 author.role(user, assistant, system, tool), 텍스트가 담긴 content.parts 배열, create_time이 따라붙습니다.

트리 구조인 이유는 답변을 다시 생성하거나 이전 메시지를 수정할 수 있기 때문입니다. 이런 동작은 아무것도 덮어쓰지 않고 같은 부모 아래 형제 노드를 추가합니다. 화면에서 화살표로 버전을 넘겨 보는 것은 이 형제 노드를 따라 걷는 일입니다. 아래 발췌는 사용자가 두 번째 답변을 마음에 들어 하지 않고 더 나은 후속 질문을 입력한 대화입니다. 그래서 노드 n3의 자식이 둘입니다.

{
  "id": "6f2a9c10-aaaa-4bbb-8ccc-0123456789ab",
  "title": "Retry logic for a flaky API",
  "create_time": 1760000000,
  "update_time": 1760000900,
  "current_node": "n4b",
  "mapping": {
    "root": { "id": "root", "parent": null, "children": ["n1"], "message": null },
    "n1":   { "id": "n1", "parent": "root", "children": ["n2"],
              "message": { "author": { "role": "system" },
                           "content": { "parts": [""] } } },
    "n2":   { "id": "n2", "parent": "n1", "children": ["n3"],
              "message": { "author": { "role": "user" },
                           "content": { "parts": ["How do I retry a flaky HTTP call?"] } } },
    "n3":   { "id": "n3", "parent": "n2", "children": ["n4a", "n4b"],
              "message": { "author": { "role": "assistant" },
                           "content": { "parts": ["Just wrap it in a while loop."] } } },
    "n4a":  { "id": "n4a", "parent": "n3", "children": [], "message": { "author": { "role": "user" },
                           "content": { "parts": ["Not good enough. Be specific."] } } },
    "n4b":  { "id": "n4b", "parent": "n3", "children": [], "message": { "author": { "role": "user" },
                           "content": { "parts": ["Use exponential backoff with jitter. Show code."] } } }
  }
}

어느 분기를 남길지 정하기

트리를 읽을 수 있는 글로 바꾸려면 루트에서 잎까지 경로를 하나 골라야 합니다. current_node는 내보내기 시점에 화면에 보이던 경로의 잎을 가리키므로, 보통은 거기서 시작해 parent를 따라 루트까지 거슬러 올라간 뒤 순서를 뒤집습니다. ChatGPT 내보내기 뷰어도 같은 방식으로 동작합니다. 위 발췌에서는 질문, 첫 답변, 개선된 후속 질문의 세 메시지가 나오고 형제 노드 n4a는 나오지 않습니다.

내가 기억하는 대화와 일치하니 이쪽이 맞는 기본값입니다. 다만 버려진 분기는 뷰어의 Markdown·HTML·JSON 출력에 남지 않는다는 뜻이기도 합니다. 다시 쓰라고 요청하기 전의 원래 답변처럼 옛 분기가 중요하다면, ChatGPT에서 그 대화를 열어 원하는 버전으로 넘겨 화면에 보이는 경로로 만든 뒤 내보내기를 새로 신청하세요. current_node가 없으면 뷰어는 모든 노드를 시간순으로 정렬하는데, 이때 분기가 섞여 어색하게 읽힐 수 있습니다. 예제에서는 거절된 n4a와 채택된 n4b가 연달아 나옵니다.

  • 텍스트가 없는 메시지는 출력에서 빠집니다. ChatGPT가 숨김으로 표시한 system 프롬프트와 보조 메시지는 숨긴 메시지 표시를 켜야 나오며, 메시지 수와 내보내기도 이 선택을 따릅니다.
  • 모델의 추론은 Thought for Ns 줄이 붙은 접힌 추론 블록으로, 도구 호출과 결과는 도구 이름이 붙은 접힌 도구 블록으로 나옵니다. 내보내기에서는 추론과 도구(이름)로 표시됩니다.
  • 합치거나 요약하는 일은 없습니다. 고른 경로에 저장된 텍스트가 그대로 나옵니다.

Markdown, HTML, JSON으로 변환하기

형식은 아카이브를 어떻게 쓸지에 따라 고르세요. 장기 보관에는 Markdown이 가장 좋습니다. 평범한 텍스트라 어떤 도구로도 검색되고 30년 뒤에도 소프트웨어 없이 읽힙니다. 예제에 적용하면 뷰어는 제목 헤딩, UTC ISO 8601 형식의 생성·수정 시각 줄, 가로줄로 구분된 메시지별 섹션을 씁니다.

자체 완결형 HTML은 어느 브라우저에서나 읽기 좋은 레이아웃을 유지하고 메시지 텍스트를 이스케이프하므로 붙여 넣은 코드의 꺾쇠괄호가 실행되지 않고 문자로 보입니다. JSON에는 역할, 초 단위 타임스탬프, 첨부 파일 이름이 남아 스크립트나 후속 가공에 알맞습니다. 인쇄를 누르면 선택한 대화의 인쇄 화면이 열리고, 브라우저의 PDF로 저장을 쓰면 문서가 만들어집니다.

# Retry logic for a flaky API

- Created: 2025-10-09T08:53:20.000Z
- Updated: 2025-10-09T09:08:20.000Z

## You

How do I retry a flaky HTTP call?

---

## Assistant

Just wrap it in a while loop.

---

## You

Use exponential backoff with jitter. Show code.

첨부 파일과 대화 색인

업로드한 파일이나 생성된 이미지는 메시지 안에서 이름이나 asset pointer를 가진 part와 메시지 메타데이터 항목으로 나타납니다. 본문에는 [Attachment: 이름] 표시가 남습니다. 파일을 복구하려면 뷰어가 이 참조를 ZIP 안의 파일 이름과 대조합니다. 파일 이름이 정확히 같거나 긴 참조 id가 경로에 포함되어 있으면 일치로 칩니다. 일치한 파일은 별도의 첨부 ZIP으로 묶이고, README에 매칭하지 못한 참조의 수가 적힙니다.

매칭되지 않은 참조는 아카이브가 깨졌다는 뜻이 아닙니다. 대개 그 파일이 처음부터 내보내기에 들어 있지 않았다는 뜻이고, 도구가 없는 파일을 만들어 낼 수도 없습니다. 전체를 한눈에 보려면 대화 색인을 쓰세요. 대화 하나당 한 행인 CSV로 열은 id, title, created_at, updated_at, messages, attachment_refs입니다. 긴 대화, 첨부가 많은 대화, 어떤 주제가 잠잠해진 해를 찾는 가장 빠른 방법입니다.

개인정보: 내보내기 파일은 전부입니다

ZIP에는 내 전체 기록이 평문으로 들어 있습니다. 대화에 붙여 넣었던 모든 민감한 내용, 즉 인증 정보, 고객 이름, 의료·금융 정보, 아무에게도 보일 생각이 없던 초안까지 포함됩니다. 비밀번호 관리자의 내보내기 파일처럼 다루세요. 믿을 수 없는 온라인 변환기에 올리지 말고, 지원 티켓에 첨부하지 말고, 다른 사람이 읽을 수 있는 동기화 폴더에 두지 마세요.

ChatGPT 내보내기 뷰어처럼 브라우저 안에서 파일을 처리하는 도구는 내용을 서버로 보내지 않습니다. 네트워크 활동을 지켜보거나 페이지를 불러온 뒤 오프라인으로 전환해 보면 확인할 수 있습니다. 대화 하나를 남에게 넘기기 전에는 한 번 읽어 보고 비밀 정보를 지우세요. 내보낸 파일에는 접근 제어가 없기 때문입니다. 장기 보관용 아카이브는 암호화된 디스크 이미지나 비밀번호 볼륨 등으로 암호화하고, 원본 ZIP도 같은 보호 공간에 두세요.

  • 대화를 공유하기 전에 긴 임의 문자열 같은 키 패턴이 있는지 텍스트를 검색해 보세요.
  • 공유할 때는 전체 ZIP이 아니라 대화 한 건의 PDF나 Markdown 사본만 내보내세요.
  • 아카이브를 만든 뒤에는 임시로 풀어 둔 폴더를 지우세요.

현실적인 보관 절차

분기마다 10분 정도면 되는 루틴이 좋습니다. 내보내기는 매번 전체 기록을 담고 있어서 증분을 합칠 필요가 없고, 새 내보내기가 이전 것을 대체합니다. 중요한 것은 받은 사본을 어떻게 다루느냐입니다.

  • 내보내기를 신청해 내려받고, 체크섬을 기록하고, 읽기 전용으로 바꿉니다.
  • 뷰어에서 열어 날짜별로 묶인 목록을 훑고, 프로젝트명·사람 이름·코드 용어로 검색해 남길 대화를 추립니다.
  • 추린 대화를 연도별 폴더, 예컨대 archive/2026/ 아래에 Markdown으로 내보내고 대화 색인 CSV를 옆에 둡니다.
  • 대화 서너 건을 실제 화면과 대조합니다. 첫 메시지와 마지막 메시지, 순서, 코드 블록을 확인하세요.
  • 원본 ZIP, Markdown 폴더, 색인을 서로 다른 두 기기에 두고, 하나는 오프라인으로 보관합니다.
  • 폴더 이름에 내보낸 날짜를 적어 아카이브가 얼마나 최신인지 알 수 있게 합니다.

직접 해보기