옵시디언을 사용하다 보면 '프로젝트 관리 노트'에 있는 마감일이나, '인물 노트'에 있는 나이 정보를 다른 노트(예: 주간 리포트, 소설 원고)에서 그대로 가져와 쓰고 싶을 때가 있습니다.
매번 복사해서 붙여넣기 하면 원본이 수정될 때마다 일일이 다 고쳐야 하는 번거로움이 있죠. 오늘은 Dataview 플러그인을 활용해 원본 노트의 속성 값이 바뀌면, 참조하는 노트의 내용도 자동으로 바뀌게 하는 방법을 소개합니다.
1. 준비물: Dataview 플러그인 설정
가장 먼저 커뮤니티 플러그인인 Dataview가 설치되어 있어야 합니다. 설치 후에는 반드시 아래 설정을 켜주셔야 이 기능이 작동합니다.
- 설정(Settings) > Dataview 메뉴로 진입합니다.
- Enable Inline Queries (인라인 쿼리 활성화)를 켭니다.
- Enable JavaScript Queries (자바스크립트 쿼리 활성화)를 켭니다.
💡 왜 켜야 하나요?
우리는 문장 중간에 코드를 넣는 '인라인(Inline)' 방식과, 특정 페이지의 데이터를 가져오는 '자바스크립트(JS)' 문법을 사용할 것이기 때문입니다.
2. 사용 방법 (문법)
다른 노트의 속성을 불러오는 기본 문법은 다음과 같습니다. 이 코드를 노트 아무 곳에나 붙여넣으면 됩니다.
`$= dv.page("파일제목").속성이름`
$=: 자바스크립트 인라인 쿼리를 시작한다는 뜻입니다.dv.page("파일제목"): 특정 노트를 지목합니다. (확장자 .md는 뺍니다).속성이름: 그 노트의 YAML/Properties에 있는 키(Key) 값을 적습니다.
3. 실전 예시: 프로젝트 상태 관리
상황을 가정해 봅시다. Project A라는 노트가 있고, 여기에 현재 진행 상황을 속성으로 관리하고 있습니다.
A. 원본 노트 (Project A.md)
속성(Properties)에 아래와 같이 데이터가 들어 있습니다.
---
status: 진행중
deadline: 2025-12-31
manager: 김철수
---
B. 참조할 노트 (주간업무보고.md)
이제 주간 업무 보고서에서 Project A의 상태를 불러와 보겠습니다. 글을 쓰다가 필요한 곳에 백틱(`)을 포함한 코드를 넣습니다.
작성 내용:
현재 프로젝트 A의 상태는$= dv.page("Project A").status입니다.
담당자는$= dv.page("Project A").manager님이며, 마감일은$= dv.page("Project A").deadline까지입니다.
C. 결과 화면 (읽기 모드 / 라이브 프리뷰)
현재 프로젝트 A의 상태는 진행중 입니다.
담당자는 김철수 님이며, 마감일은 2025-12-31 까지입니다.
이제 Project A 노트에서 status를 "완료"로 바꾸면, 주간 업무 보고서의 내용도 즉시 "완료"로 바뀝니다.
4. 주의사항 (Tip)
- 파일명 변경 주의: 위 방식은 파일 제목을 텍스트(
"Project A")로 지정하기 때문에, 만약 원본 노트의 파일명을 바꾸면 링크가 깨집니다. 파일명을 바꿨다면 코드 안의 제목도 수정해줘야 합니다. - 편집 모드 vs 읽기 모드: 편집 모드(Source Mode)에서는 코드가 그대로 보이고, 라이브 프리뷰(Live Preview)나 읽기 모드(Reading Mode)로 전환해야 실제 값이 보입니다.
- 속성 이름 띄어쓰기: 속성 이름에 띄어쓰기가 있다면 대괄호를 써야 합니다.
- 예:
created date→dv.page("Project A")["created date"]
마무리
이처럼 Dataview의 인라인 쿼리($=)를 활용하면, 데이터를 한 곳에서만 관리하고 여러 곳에서 재사용하는 '단일 진실 공급원(SSOT)'을 구축할 수 있습니다.
여러분의 옵시디언 활용에 도움이 되길 바랍니다!