279개 노트를 검색가능한 지식 데이터베이스로 바꾸기


한줄 요약

쌓아둔 279개 노트가 검색도 안 되는 파일 더미였는데, AI가 분석-설계-실행을 한 번에 해결해줬습니다.


이런 분들께 도움돼요

  • 옵시디언을 쓰는데 Dataview를 제대로 못 쓰고 있다

  • 남의 PKM 템플릿을 찾아봤는데 내 업무와 잘 안 맞는다

  • 파일이 너무 많아서 정리를 포기했다

  • 잘 모르면 "보고 배운다"에서 "AI와 직접 상의한다"으로 바꾸어 보련다


소개: 시도하고자 했던 것과 그 이유

옵시디언을 사용한지 반년이 되어가면서부터 문제를 느끼기 시작했습니다.

노트가 쌓여 파일을 찾으려면 항상 폴더를 직접 뒤져야 했고, 컨설팅 노트와 스터디 노트가 왔다갔다 연결이 안 됐습니다. 최근에는 Dataview라는 강력한 쿼리 플러그인이 있다는 것도 알게됐지만, 소용이 없었습니다. 속성(Properties)이 하나도 없으니 쿼리를 써도 아무것도 안 나왔습니다.

해결책은 알았습니다. frontmatter 속성을 붙이면 된다. 그런데 막혔습니다.

"이미 만들어진 279개 노트는... 내가 일일이 보고 직접 입력해야 하는 거 아닌가?"

그래서 옵시디언 책과 남이 만든 템플릿들을 찾아보고 다니기 시작했습니다. 제텔카스텐 템플릿, PKM 시스템 사례글... 그런데 전부 내 업무(컨설팅, AI교육, 제조업 데이터분석)와는 맞지 않았습니다. 결국 그 상태로 계속 쌓아만 두고 있었습니다.


진행 방법: Claude Code와 어떻게 협업했나요

1단계: 볼트 구조 설명 → 속성 체계 설계

Claude Code에게 볼트 구조와 고민을 설명했습니다. 폴더 구조, 파일 수, 어떤 업무를 하는지까지요.

그랬더니 Claude가 직접 제안을 했습니다:

"이 볼트에는 6개 속성이면 충분합니다: created, type, domain, tools, source, company"

특히 company 속성은 생각도 못 한 것이었습니다. 컨설팅 고객사가 많아도 회사별로 노트를 꺼낼 수 있어야 한다는 거였습니다. 내 볼트를 분석하니까 나온 속성이었습니다.

2단계: Python 스크립트 자동 생성

설계가 끝나자 Claude가 _add_properties.py 스크립트를 만들었습니다.

  • 파일시스템 날짜 → created 자동 추출

  • 파일명 + 폴더 위치 + 본문 키워드 → type, domain, tools, source, company 추론

  • CSV 미리보기 먼저 출력 → 검수 후 일괄 적용

"CSV를 먼저 보여줄게요"라는 순서를 Claude가 스스로 설계한 것도 인상적이었습니다. 덮어쓰기 전에 확인할 수 있게요.

type 값과 폴더 자동 추천 규칙

스크립트는 파일의 위치와 내용을 분석해서 각 노트에 자동으로 type을 부여하고, 그에 맞는 폴더를 추천합니다:

type

설명

추천 폴더

memo

빠른 메모, 스크랩, 링크 모음

00_임시메모/

project

프로젝트 진행 기록, 보고서

01_진행프로젝트/{domain별}/

consulting

컨설팅 고객사별 수행 기록

01_진행프로젝트/컨설팅 Proj/{company}/

study

강의·세미나·스터디 노트

02_스터디/{domain별}/

concept

개념 정리, 학습 요약

02_스터디/{domain별}/

curriculum

교육 커리큘럼, 교안

02_스터디/GPT기초강의/

guide

도구 사용법, 설정 가이드

02_스터디/{tool관련}/

todo

할일, 실습 계획

To Do List/

추론 로직의 핵심 코드:

def infer_type(filename: str, content: str, rel_path: str, domain: str) -> str:
    """type 추론 - 폴더위치 + 파일명 패턴 + 본문"""

    # 폴더 기반 (가장 강력한 힌트)
    if "00_임시메모" in rel_path:
        return "memo"
    if "To Do List" in rel_path:
        return "todo"
    if "컨설팅 Proj" in rel_path:
        return "consulting"
    if "01_진행프로젝트" in rel_path:
        return "project"

    # 파일명 패턴 (App으로 시작하는 루트 파일)
    if filename.lower().startswith("app "):
        if "manual" in filename.lower():
            return "guide"
        return "project"

    # 02_스터디 안이면 study (또는 더 세분화된 type)
    if "02_스터디" in rel_path:
        return "study"

    # 이외: domain 기반으로 학습(study) vs 업무(project) 구분
    if domain in ["AI", "프롬프트", "GPT", "교육"]:
        return "study"

    return "memo"  # fallback

3단계: 279개 파일에 일괄 적용

검수 후 apply 모드로 실행하자, 279개 파일 전체에 frontmatter가 삽입됐습니다.

추가로 만들어진 것들:

  • _recommend_folder.py — 속성 기반 폴더 추천 스크립트

  • _Dataview 대시보드.md — 10개 Dataview 쿼리 모음

  • 5.템플릿/새 노트 템플릿.md — 앞으로 새 노트에 쓸 Templater 템플릿


결과와 배운 점

결과

279개 파일이 검색 가능한 지식 데이터베이스로 바뀌었습니다.

이제 Dataview에서 이런 쿼리가 됩니다:

WHERE company = "아르비젼"
WHERE contains(tools, "n8n")
WHERE type = "consulting" AND domain = "제조"

한 줄로 관련 노트를 전부 꺼낼 수 있습니다.

domain과 tools 자동 추론

domain은 학습/업무 분야를, tools는 사용한 도구를 자동으로 인식합니다:

domain 값

추천 폴더

domain 값

추천 폴더

AI

02_스터디/AI ML DL/

데이터분석

01_진행프로젝트/데이터분석 Proj/

프롬프트

02_스터디/Prompt Engineering/

제조

01_진행프로젝트/컨설팅 Proj/

GPT

02_스터디/GPTs/

교육

01_진행프로젝트/교육 Proj/

자동화

02_스터디/업무자동화 도구/

웹개발

02_스터디/프로그래밍/웹개발 프레임워크/

클로드

02_스터디/클로드MCP 클로드Code/

앱개발

01_진행프로젝트/앱 솔루션 개발 Proj/

tools 추론 코드의 일부:

def extract_tools(filename: str, content: str) -> list:
    """파일명+본문에서 도구명 추출"""
    text = filename + " " + content
    found = set()

    # 도구 키워드 사전 (150+ 도구)
    tool_keywords = {
        "n8n": "n8n", "Make": "Make", "Power BI": "Power BI",
        "Cursor": "Cursor", "Claude Code": "Claude Code",
        "Supabase": "Supabase", "Firebase": "Firebase",
        "Next.js": "Next.js", "React": "React", "Rails": "Rails",
        "Expo": "Expo", "Flutter": "Flutter",
        # ... 더 많은 도구들
    }

    for keyword, tool_name in tool_keywords.items():
        if keyword in text:
            found.add(tool_name)

    return sorted(found) if found else []

예를 들어 n8n 업무자동화.md 파일은:

  • domain: 자동화 (자동화 키워드 포함)

  • tools: [n8n, Make] (파일명과 본문에서 자동 추출)

  • 추천 폴더: 02_스터디/업무자동화 도구/

배운 점

이번 작업에서 가장 크게 깨달은 것은 기술적인 내용이 아닙니다.

"보고 배우자"는 태도를 바꿔야 한다는 것.

저는 늘 남이 만든 템플릿을 찾고, 남의 PKM 시스템을 참고하려 했습니다. 내가 직접 만드는 시도는 생각조차 못 했습니다. 잘 모르니까요.

그런데 실제로 해보니, 잘 모를 때 AI와 먼저 상의하는 게 답이었습니다.

내가 뭘 모르는지 → AI에게 설명하기 → 어떻게 하면 좋을지 같이 논의하기 → 실행

이 순서가 "남의 사례 찾기"보다 훨씬 빠르고, 내 상황에 정확히 맞는 결과가 나왔습니다.


재사용 가능한 프롬프트

내 옵시디언 볼트 구조를 설명할게.
[폴더 구조 붙여넣기]

파일이 약 [N]개 있고, frontmatter 속성이 전혀 없어.
이 볼트의 성격과 내 업무([업무 설명])를 고려해서,
어떤 속성 체계가 적합할지 설계해줘.

그리고 기존 파일들에 자동으로 속성을 추론해서 붙여주는
Python 스크립트도 만들어줘.
(CSV 미리보기 → 검수 → 일괄 적용 순서로)

도움 받은 글

  • 옵시디언 Dataview 플러그인 공식 문서

  • 지피터스 AI토크: 구요한님, 이태극님 글

2
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요