연결노트
마인드맵을 옵시디언 마크다운으로 변경하기
마인드맵 형식으로 정리하던 독서 노트를 옵시디언 마크다운 형식으로 변경하고자 했습니다. 마인드맵은 직관적이고 마음에 들었지만, 책이 많아지면서 원하는 책을 찾는 데 어려움을 겪었습니다. 그래서 이번에 옵시디언 형식으로 변경하면서 마인드맵의 구조를 마크다운으로 변환하기로 결정했습니다.
마인드맵 형식의 JSON 구조
먼저, 마인드맵의 JSON 데이터 구조는 다음과 같습니다:
{
"name": "독서지도",
"children": [
{
"name": "고전소설",
"left": true,
"children": [
{
"name": "셰익스피어"
},
{
"name": "알렉상드르 뒤마"
},
{
"name": "헤르만 헤세",
"children": [
{
"name": "데미안",
"children": [
{
"name": "니체",
"children": [
{
"name": "선악의 저편"
}
]
}
]
}
]
}
]
}
]
}
이 JSON 구조를 바탕으로 마크다운을 생성하려고 합니다.
마크다운 자동 생성
마크다운 파일을 자동으로 생성하기 위해 파이썬 코드를 작성했습니다. 이 코드는 마인드맵에서 JSON을 받아 옵시디언에서 활용할 수 있는 마크다운 파일들을 생성합니다. 아래는 그 코드입니다:
from datetime import datetime
import json
import os
def create_markdown_files(data):
# 현재 시간 가져오기
current_time = datetime.now().strftime("%Y-%m-%d %H:%M")
# 출력 디렉토리 생성
os.makedirs("output", exist_ok=True)
def clean_filename(filename):
# 파일명에서 사용할 수 없는 문자 제거
invalid_chars = '<>:"/\\|?*'
for char in invalid_chars:
filename = filename.replace(char, '')
return filename
def create_single_file(node, parent_path=""):
# 파일명 생성 및 정리
filename = clean_filename(node["name"].strip())
# 메타데이터 생성
metadata = f"""---
created: {current_time}
updated: {current_time}
date: {current_time[:10]}
tags:
- 유형/독서노트
- 독서/진도/미시작
aliases:
links:
- "[[독서]]"
title: "{node["name"]}"
weight:
description:
labels:
author:
cover:
---
"""
# 자식 노드들의 링크 추가
links = ""
if "children" in node:
links = "\n## 연결 문서\n\n"
for child in node["children"]:
child_name = child["name"].strip()
links += f"- [[{child_name}]]\n"
# 전체 콘텐츠 생성
content = metadata + links
# 파일 저장
filepath = os.path.join("output", f"{filename}.md")
with open(filepath, "w", encoding="utf-8") as f:
f.write(content)
# 재귀적으로 자식 노드들의 파일 생성
if "children" in node:
for child in node["children"]:
create_single_file(child)
# JSON 데이터로부터 마크다운 파일 생성 시작
create_single_file(data)
# JSON 파일 읽기
with open("input.json", "r", encoding="utf-8") as f:
data = json.load(f)
# 마크다운 파일 생성
create_markdown_files(data)
print("마크다운 파일이 output 폴더에 생성되었습니다.")
마크다운 예시
이 코드를 실행하면 마크다운 파일이 자동으로 생성됩니다. 예를 들어, 데미안.md
파일은 아래와 같이 생성됩니다:
---
created: 2025-01-19 18:19
updated: 2025-01-19 18:19
date: 2025-01-19
tags:
- 유형/독서노트
- 독서/진도/미시작
aliases:
links:
- "[[독서]]"
title: "데미안"
weight:
description:
labels:
author:
cover:
---
## 연결 문서
- [[니체]]
마무리
이렇게 기존의 마인드맵을 옵시디언 마크다운 형식으로 변경하여, 책에 대한 정보와 연결을 보다 체계적으로 관리할 수 있게 되었습니다. 마인드맵의 직관적인 구조를 유지하면서도, 옵시디언에서 활용할 수 있는 형태로 변환하여 데이터가 많아져도 쉽게 접근할 수 있게 되었습니다.
댓글 쓰기