Binder Graph로 문서 관계 탐색하기
Binder Graph는 현재 Scope의 Markdown 문서를 노드, 문서 사이의 내부 링크를 연결로 보여 주는 파생 보기다. 별도의 그래프 데이터베이스에 관계를 다시 입력하는 기능이 아니다. 링크를 추가하거나 고치면 Graph가 바뀌고, Graph의 배치·필터·확대 상태를 바꿔도 Markdown 원문은 바뀌지 않는다.
이 장에서는 재현 가능한 작은 프로젝트로 다음 작업을 모두 수행한다.
- Markdown link가 Graph 관계가 되는지 원문과 대조한다.
- 전체 보기에서 Scope의 연결 성분과 고립 문서를 읽는다.
is:hub쿼리로 연결이 많은 문서를 찾고 선택한다.- 로컬 보기로 선택 문서의 1단계 이웃만 좁혀 본다.
- 기본적으로 숨긴
_index.md를 포함해 섹션 구조까지 확인한다. is:orphan으로 아직 연결되지 않은 문서를 찾는다.- 표시 설정, 저장한 뷰, 진단과 타임랩스를 운영한다.
Graph, Link Map, Mindmap의 차이
세 보기는 비슷해 보이지만 서로 다른 질문에 답한다.
| 보기 | 원본 | 범위 | 적합한 질문 |
|---|---|---|---|
| Binder Graph | Scope 안 Markdown의 내부 link | Scope 전체 | 허브, cluster, 고립 문서는 어디인가? |
| Link Map | 현재 문서의 backlink·forward link | 현재 문서의 직접 관계 | 이 문서로 들어오고 나가는 link는 무엇인가? |
| Mindmap | 현재 문서의 heading hierarchy | 현재 문서 내부 | section 구조와 heading 순서는 어떻게 생겼는가? |
Binder Graph에서 가까이 놓인 두 노드가 반드시 의미상 비슷하다는 뜻은 아니다. 화면 배치는 연결을 탐색하기 위한 표현이며, 확정적인 분류나 중요도 점수가 아니다.
실습 프로젝트 준비
Graph Lab 예제 전체를 별도 폴더에 복사하고 그 폴더를 Scope로 연다. 원본 fixture를 직접 수정하지 않으면 이 장의 기준 숫자를 언제든 다시 재현할 수 있다.
| 파일 | 역할 |
|---|---|
00_product-hub.md |
조사와 출시 문서를 잇는 중심 노드 |
research/10_user-research.md |
조사 연결 성분의 문서 |
research/20_value-proposition.md |
제품 허브와 조사 결과를 연결하는 문서 |
release/10_launch-checklist.md |
출시 연결 성분의 문서 |
release/20_media-plan.md |
실증 자산을 가리키는 문서 |
ideas/10_audio-tour.md |
별도의 작은 연결 성분 |
ideas/20_narration-notes.md |
오디오 아이디어와 연결된 문서 |
90_orphan-note.md |
링크가 없는 고립 문서 |
_index.md와 하위 _index.md |
기본 Graph에서는 숨기고 필요할 때 포함할 섹션 index |
기본 상태의 기대값은 다음과 같다.
| 관측값 | 기본 상태 | _index.md 포함 |
|---|---|---|
| 노드 | 9 | 12 |
| 연결 | 8 | 17 |
| 고립 문서 | 1 | 0 |
| 연결 성분 | 3 | 1 |
00_product-hub.md degree |
5 | 6 |
여기서 degree는 들어오거나 나가는 직접 연결을 합친 수다. _index.md를 포함하면 섹션 home이 문서들을 묶기 때문에 노드와 연결 수뿐 아니라 고립·연결 성분 수까지 달라진다.
1. 관계의 원본을 먼저 확인한다
00_product-hub.md의 핵심 부분은 다음과 같다.
# 제품 허브
제품 서사는 [사용자 조사](research/10_user-research.md)에서 시작해
[가치 제안](research/20_value-proposition.md)과
[출시 체크리스트](release/10_launch-checklist.md)로 이어집니다.
실증 자산은 [미디어 계획](release/20_media-plan.md)에서 관리합니다.이 네 link가 제품 허브에서 나가는 연결이 된다. README.md가 제품 허브를 가리키므로 들어오는 연결 한 개가 더해져 기본 degree는 5다.

Graph는 이 관계를 frontmatter에 다시 쓰지 않는다. Markdown과 Scope index에서 파생하므로 cache를 다시 만들어도 원문 link가 같으면 관계를 복원할 수 있다.
2. Binder Graph를 연다
- Graph Lab 폴더를 Scope로 연다.
00_product-hub.md를 열어 원문 link를 확인한다.- 상단 workspace shortcut에서 그래프를 선택한다.
- 오른쪽 Graph 정보 panel이 나타나고 노드가 배치될 때까지 기다린다.
- 진단에서 노드 9, 연결 8, 고립 1, 연결 성분 3인지 확인한다.
처음에는 전체 모드이며 _index.md는 숨겨져 있다. 문서 관계를 먼저 읽기 위한 기본값이다.

화면에서 읽을 요소
| 요소 | 의미 |
|---|---|
| 원 | Markdown 문서 한 개 |
| 선 | 해결된 내부 문서 link |
| 화살표 | link가 향하는 방향 |
| 큰 노드 | 직접 연결이 상대적으로 많은 문서 |
| 선택 색과 label | 현재 선택한 문서 |
| 서로 떨어진 묶음 | 직접 또는 간접 연결이 없는 별도 연결 성분 |
label이 겹칠 수 있는 배율에서는 모든 이름을 동시에 표시하지 않는다. 노드를 선택하거나 확대해 확인하고, 이름이 보이지 않는다는 이유로 문서가 누락됐다고 판단하지 않는다.
3. 노드를 선택하고 후속 작업을 한다
노드를 선택하면 오른쪽 탐색 영역에 문서 이름과 동작이 나타난다.
| 동작 | 결과 |
|---|---|
| 열기 | 선택한 Markdown 문서를 editor에서 연다 |
| 경로 복사 | Scope 기준 문서 경로를 복사한다 |
| 링크 복사 | 선택 문서를 가리키는 wiki link를 복사한다 |
| 고정 | force 배치 중 선택 노드의 위치를 고정한다 |
| 분리 | 선택 노드를 중심으로 로컬 보기에 들어간다 |
canvas 바탕을 drag하면 보이는 영역을 옮기고, wheel로 확대·축소한다. 노드를 drag하면 탐색 중 위치를 조절할 수 있다. 이 조작은 Markdown link를 만들거나 삭제하지 않는다.
4. 필터 쿼리로 필요한 문서만 찾는다
필터의 쿼리에 일반 텍스트 또는 필드:값을 입력한다. 공백으로 나눈 여러 조건은 모두 만족해야 한다.
| 문법 | 찾는 기준 | 예제 |
|---|---|---|
| 일반 텍스트 | label, path, group, tag | product |
path: |
Scope 기준 경로 일부 | path:research |
label: |
화면 label 일부 | label:hub |
group: |
Graph group | group:research |
tag: |
frontmatter tag | tag:product |
degree: |
정확한 직접 연결 수 | degree:5 |
linked: |
해당 경로의 노드와 직접 연결된 문서 | linked:00_product-hub |
is:orphan |
degree가 0인 문서 | is:orphan |
is:hub |
현재 Graph에서 연결이 가장 많은 허브 | is:hub |
is:index |
_index.md 문서 |
is:index |
created: |
생성 날짜 접두어 | created:2026-08 |
updated: |
수정 날짜 접두어 | updated:2026-08-01 |
예를 들어 tag:product path:00_는 product tag가 있고 경로에 00_가 들어간 노드만 남긴다. 조건에 맞는 문서가 없으면 빈 Graph가 보일 뿐 원문이나 index가 삭제되지는 않는다. 해제로 쿼리를 비운다.
허브 찾기
- 쿼리에
is:hub를 입력한다. - 일치 항목으로를 선택한다.
00_product-hub가 선택되고 오른쪽에 이름이 표시되는지 확인한다.

is:hub는 고정된 문서 역할이 아니다. 현재 보이는 Graph의 최대 degree를 기준으로 계산하므로 link를 추가하거나 필터 범위를 바꾸면 결과가 달라질 수 있다.
5. 로컬 보기로 가까운 연결에 집중한다
전체 Graph가 복잡할 때는 노드를 선택한 뒤 쿼리를 해제하고 로컬을 선택한다. 로컬 깊이는 선택 노드에서 몇 단계 떨어진 관계까지 포함할지 정한다.
| 깊이 | 포함 범위 | 권장 용도 |
|---|---|---|
| 1 | 선택 노드와 직접 이웃 | link 방향과 즉시 관련 문서 확인 |
| 2 | 이웃의 이웃까지 | 작은 cluster의 경계 파악 |
| 3 | 세 단계 관계까지 | 전체로 돌아가기 전 넓은 주변 탐색 |

로컬 보기는 문서를 Scope에서 제외하는 기능이 아니다. 같은 Graph의 표시 범위만 좁힌다. 다른 cluster와 고립 문서를 다시 보려면 전체로 돌아간다.
6. _index.md로 섹션 구조까지 확인한다
Desktop Binder Graph는 문서 중심 관계를 먼저 보여 주기 위해 _index.md를 기본적으로 숨긴다. Hugo section home과 navigation 구조를 함께 점검할 때 오른쪽 표시 → 인덱스 파일 포함을 켠다.

Graph Lab에서는 toggle 하나로 다음 변화가 실제 관측됐다.
- 노드가 9개에서 12개로 증가한다.
- 연결이 8개에서 17개로 증가한다.
- 세 연결 성분이 하나로 이어진다.
- 고립 문서가 1개에서 0개가 된다.
- 제품 허브의 degree가 5에서 6으로 증가한다.
90_orphan-note.md의 본문에는 link가 없지만 root _index.md가 그 문서를 가리키므로 index를 포함한 Graph에서는 더 이상 고립이 아니다. “고립”은 절대적인 문서 속성이 아니라 현재 포함 범위에서 계산한 관계 상태다.
7. 고립 문서와 연결 성분을 진단한다
인덱스 파일 포함을 다시 끄고 고립을 선택하면 쿼리가 is:orphan으로 바뀐다. Graph Lab에서는 90_orphan-note.md 한 개만 남는다.

고립 문서가 항상 오류인 것은 아니다. 초안, 개인 메모, 수집 직후 문서는 의도적으로 독립적일 수 있다. 다음 순서로 판단한다.
- 문서를 열어 목적과 상태를 확인한다.
- 기존 hub나 section에서 찾을 수 있어야 하는 문서인지 판단한다.
- 관계가 필요하면 의미가 맞는 문장에서 명시적 Markdown link를 작성한다.
- index 완료 뒤
is:orphan결과와 연결 성분 수를 다시 확인한다.
Graph에서 선을 직접 그어 관계를 만드는 방식은 사용하지 않는다. 관계의 이유가 읽히도록 Markdown 문맥 안에 link를 둔다.
진단 숫자 읽기
| 진단 | 의미 |
|---|---|
노드 보임 / 전체 |
현재 필터에 남은 문서와 포함 범위의 전체 문서 |
연결 보임 / 전체 |
현재 필터에 남은 관계와 전체 관계 |
| 고립 | degree 0인 노드 수 |
| 연결 성분 | 서로 이어지지 않은 노드 묶음 수 |
| 태그 | 현재 Graph가 읽은 tag 종류 수 |
| 허브 | degree가 높은 상위 문서 |
필터가 켜진 상태의 “보임” 수와 Scope 전체 수를 혼동하지 않는다. 쿼리를 해제하고 index 포함 상태를 확인한 뒤 기준 수를 기록한다.
8. 표시와 타임랩스를 조절한다
오른쪽 표시 영역은 원문이 아니라 현재 Graph 표현을 바꾼다.
- 노드 크기: 문서 원의 표시 배율
- 링크 두께: 연결선의 표시 배율
- 화살표: 방향 표시의 크기와 on/off
- 그룹 색상: group별 색 구분
- 인덱스 파일 포함:
_index.md노드와 구조 연결 포함 여부
상단 전체 맞춤은 현재 보이는 노드 묶음을 canvas 안에 다시 배치한다. 너무 멀리 이동하거나 확대해 Graph를 잃었을 때 먼저 사용한다. 그래프 컨트롤 초기화는 표시·필터·모드 값을 기본값으로 되돌린다.
타임랩스
Graph를 다시 재생하면 같은 파생 관계 위에서 노드가 나타나고 배치가 정착하는 과정을 볼 수 있다. 애니메이션 속도를 조절하고 재생 중에는 일시정지·계속·정지를 사용할 수 있다. 타임랩스는 새 관계를 만들지 않는다.
운영체제에서 동작 감소를 켠 환경에서는 긴 타임랩스 대신 seed layout을 새로고침한다. 중요한 상태나 진단을 애니메이션만으로 전달하지 않는다.
9. 반복 작업은 저장한 뷰로 남긴다
필터, 전체·로컬 모드, 로컬 깊이, index 포함과 표시 배율을 조정한 뒤 뷰 이름을 입력하고 뷰 저장을 선택한다. 예를 들면 다음처럼 목적을 이름에 포함한다.
고립 문서 검토research 허브section index 포함
저장한 뷰를 적용하면 그때 저장한 탐색·표시 조건으로 돌아간다. 저장한 뷰는 Markdown 문서나 publish 결과가 아니라 앱의 Graph 작업 상태다. 팀과 공유해야 하는 분류 기준은 저장 뷰 이름만으로 전달하지 말고 문서의 link, tag와 section 구조에 반영한다.
전체 조작 영상
다음 10.9초 영상은 제품 허브 원문에서 시작해 전체 Graph를 열고, is:hub 필터와 일치 항목 선택, 로컬 보기, _index.md 포함, is:orphan 진단까지 실제 Glif에서 이어서 수행한다.
예상과 다를 때
| 증상 | 먼저 확인할 것 | 조치 |
|---|---|---|
| Graph가 비어 있다 | 현재 Scope와 Markdown 파일 존재 여부 | Graph Lab 폴더 자체를 Scope로 열고 index 완료를 기다린다 |
| 기대 노드가 없다 | 쿼리와 _index.md 포함 상태 |
쿼리를 해제하고 index 문서인지 확인한다 |
| link를 썼는데 선이 없다 | target 경로와 저장 상태 | 원문 link target을 열어 실제 파일에 도달하는지 확인하고 저장한다 |
| 노드 수는 맞지만 연결 수가 다르다 | fixture가 이전 실습에서 수정됐는지 | 새 복사본으로 다시 열고 Markdown diff를 확인한다 |
is:hub 결과가 다르다 |
현재 포함 범위와 degree | 쿼리를 해제하고 index toggle을 기본값으로 되돌린다 |
is:orphan 결과가 0이다 |
_index.md 포함 여부 |
index가 고립 문서를 가리키는지 확인하고 기본 숨김 상태와 비교한다 |
| 로컬 버튼이 비활성이다 | 선택된 노드 | 먼저 노드를 선택하거나 일치 항목으로를 사용한다 |
| label이 겹치거나 보이지 않는다 | 확대 배율과 선택 상태 | wheel로 확대하거나 노드를 선택하고 전체 맞춤을 사용한다 |
| 배치가 계속 움직인다 | 타임랩스·force 정착 상태 | 정지를 선택하거나 잠시 기다린 뒤 필요한 노드를 고정한다 |
| Graph를 불러오지 못한다 | Scope index 상태와 최근 파일 변경 | index 갱신 완료를 기다리고 panel을 다시 연다. 반복되면 원문을 보존한 채 진단 기록을 남긴다 |
원본 보존과 검증 범위
이 장이 검증하는 canonical 기능 ID는 VW-01이다. 캡처는 Glif 0.1.0, Windows, 한국어, dark theme, 1200×800 앱 client area에서 수행했다. 캡처 전후 Graph Lab의 12개 Markdown 파일을 SHA-256으로 비교해 같은 값인지 확인했다.
- 확인함: Markdown-link-derived graph, 전체 보기, 허브 쿼리, 일치 항목 선택, 로컬 보기,
_index.md포함, 고립 쿼리, 원문 보존 - 자동 기능 검증: Binder Graph TypeScript suite 106개 통과
- native index 회귀 검증: section
_index.md보존 관련 Rust 표적 테스트 2개 통과 - 아직 주장하지 않음: 공개 Hugo graph 화면 동등성, 노드 drag 위치의 세션 간 지속성, screen reader 사람 청취, 외부 mount 폴더의 Graph 동등성
완료 확인
- Graph, Link Map과 Mindmap이 각각 어떤 원본과 범위를 쓰는지 설명할 수 있다.
- 기본 상태에서 노드 9, 연결 8, 고립 1, 연결 성분 3을 확인했다.
- 제품 허브의 네 outgoing link와 한 incoming link를 원문에서 찾았다.
-
is:hub으로 제품 허브를 선택하고 로컬 깊이 1 이웃을 확인했다. -
_index.md포함 뒤 노드 12, 연결 17, 고립 0, 연결 성분 1을 확인했다. -
is:orphan결과가 index 포함 상태에 따라 달라지는 이유를 설명할 수 있다. - 표시 설정과 저장한 뷰가 Markdown 원본이 아닌 파생 작업 상태임을 이해했다.
- Graph에서 관계를 직접 그리지 않고 의미가 드러나는 Markdown link로 수정했다.
다음에는 보기와 Projection 선택에서 Graph를 다른 구조화 보기와 비교하거나, 링크 상태와 로컬 그래프 읽기에서 현재 문서의 backlink·forward·broken link를 원문 위치별로 점검한다.