만들어진 방식 · How it works

흩어진 대화가
하나의 지도가 되기까지.

11일 동안 오간 12,507개의 메시지는 그냥 쌓이면 스크롤의 무덤입니다. 이 아카이브는 그것을 물음 단위로 묶고, 입장으로 갈라보고, 개념으로 이어 다시 걸어다닐 수 있는 지형으로 바꾼 결과입니다. 그 네 단계를 그대로 공개합니다.

12,507
원본 메시지
126
참여자
138
토픽
93
개념 노드
2026.06.14–24
대화 기간 (11일)
전체 흐름

원문 → 토픽 → 지도 → 화면

분석은 사이트가 뜨기 전, 오프라인에서 끝납니다. 여러분이 보는 페이지는 그 결과물(JSON 3개)을 읽어 그리는 얇은 껍데기일 뿐입니다.

Layer 1
원문 분석
카톡 로그를 LLM이 읽고 토픽으로 자른다
Layer 2
익명화
동의한 사람만 실명, 나머지는 가린다
Layer 3
지식 그래프
개념을 허브 삼아 망으로 엮는다
Layer 4
화면 렌더
JSON을 읽어 브라우저에서 그린다
1

원문에서 토픽으로

오프라인 LLM 분석 · 이 사이트 코드에는 없고, 결과 데이터(topics.json)로만 존재

12,507개의 메시지를 흐름이 끊기는 지점마다 잘라 138개의 토픽으로 묶습니다. 토픽 하나는 평균 약 90개 메시지, 한 시간대(span)에 오간 하나의 이야기 덩어리입니다.

각 토픽은 8개의 필드로 요약됩니다 — 분류 / 제목 / 핵심 물음(hook) / 요지(gist) / 흐름(flow) / 갈라진 입장(positions) / 남은 물음(open) / 참여자. 특히 positions는 "누가 무엇을 주장했나"를 화자별로 분리해 한 물음 안의 대립을 보존합니다.

모든 토픽은 여섯 갈래 중 하나로 분류됩니다. 한쪽으로 쏠리지 않은 전방위의 사색이 이 분포에서 드러납니다:

사회·정치·역사 32 삶·감정·관계 30 철학·인식 26 예술·문화·언어 20 윤리·종교·죽음 18 AI·기술 12
정직하게: 이 요약들은 원문을 그대로 옮긴 게 아니라 LLM이 해석해 압축한 것입니다. 큰 줄기는 맞지만 뉘앙스는 덜어졌을 수 있습니다. 원래 어떤 대화였는지는 각 토픽 안에서 다시 만나보세요.
2

가릴 것은 가린다

익명화 tier 시스템 · 이 아카이브의 가장 중요한 설계 원칙

126명이 나눈 대화지만, 사람으로서 드러나는 것은 공개에 동의한 17명뿐입니다. 모든 이름은 marks 테이블에서 두 등급으로 통제됩니다:

public — 17명
opt-in 한 사람만. 실명과 고유색으로 표시되고, 목소리 페이지에 등장합니다.
anon — 나머지
‘오래된폭포’ ‘흐릿한빗방울’ 같은 회전 익명 라벨과 회색으로 가려집니다.

대화 내용은 익명 라벨로 남아 보존되지만, ‘이 사람은 누구인가’ 식의 인물 분석은 동의자에게만 적용됩니다. 생각의 지도에서는 사람 노드 자체를 아예 만들지 않습니다(mapShow.person = false).

대화는 공공의 기록으로 남기되, 개인은 본인이 원할 때만 드러나게 — 보존과 프라이버시를 한 시스템 안에서 동시에 지키기 위한 장치입니다.
3

생각의 지도를 엮다

지식 그래프 · graph.json — 237개 노드, 403개 연결

지도는 세 종류의 점으로 이루어집니다 — 분류 6개 · 토픽 138개 · 개념 93개. 연결선은 두 종류입니다: 토픽이 어느 분류에 속하는지(categorized, 138개), 그리고 토픽이 어떤 개념을 언급했는지(mentions, 265개).

핵심은 별도의 군집 알고리즘이 없다는 점입니다. ‘AI’ ‘언어’ ‘죽음’ 같은 개념이 허브 역할을 하고, 같은 개념을 언급한 토픽들이 자연스레 그 주위로 당겨집니다. 군집은 force-directed 물리엔진(cytoscape + cola, 실패 시 cose로 폴백)이 점들을 밀고 당겨 저절로 만들어냅니다. 점의 크기는 토픽이면 메시지 수, 개념이면 그것을 언급한 토픽 수입니다.

AI 9 언어 8 공감 7 죽음 7 오픈채팅 7 ← 가장 많은 토픽을 잇는 개념 허브
4

화면에서 다시 살아나다

프론트엔드 렌더링 · app.js — 이 레포의 실제 코드

브라우저가 하는 일은 결과 JSON을 읽어 그리는 것입니다. 그 안의 작은 장치들:

이름 하이라이트
markNames() — 본문 속 화자명을 인라인 강조. 긴 이름부터 매칭해 부분 겹침을 막습니다.
고정 아바타색
avColor() — 이름을 해시(h*31+charCode)해 사람마다 늘 같은 색을 줍니다.
떠오르는 물음
buildMuse() — 모든 토픽의 ‘남은 물음’을 한 풀에 모아 무작위로 하나 띄웁니다.
필터 · 검색
아카이브·목소리·물음은 전부 클라이언트에서 분류칩 + 부분문자열로 거릅니다.
해시 라우팅
#home #archive #map … 한 페이지 안에서 화면을 전환합니다.
공유 딥링크
/t/<id>.html → 해당 토픽으로 진입 + OG 카드(제목·물음·이미지) 미리보기.
밑바탕

세 개의 데이터 파일

화면 뒤에는 단 세 개의 JSON이 있습니다. 사이트는 이걸 읽기만 합니다 — 쓰지 않습니다.

topics.json
138개 토픽의 8필드 요약 전체. 아카이브·물음·딥링크의 원천.
graph.json
237 노드 · 403 연결. 지도 화면이 그대로 읽어 물리 배치.
analytics.json
개요·분류별·날짜별·시간대별·입장 분포·인물·핵심개념 집계. 홈 통계와 차트.

한 물음에는 평균 3.5개의 입장이 부딪혔고, 가장 흔한 형태는 3~4명이 갈라선 토픽이었습니다. 대화는 끝났지만, 그 갈라짐과 남은 물음은 여기 그대로 있습니다.

← 아카이브로 돌아가기
N의 언어 · 대화 아카이브 · 우리가 함께 그린 생각의 지형