Obsidian + LLM + Git + Quartz: 노트가 공개 지식이 되는 자동화 스택
한 줄 결론: Obsidian으로 쌓고, LLM으로 연결하고, Git으로 보존하고, Quartz로 공개하는 이 네 단계 파이프라인은 개인 지식관리를 "나만 보는 메모"에서 "세상과 나누는 살아있는 지식 기반"으로 바꿉니다. 쌓을수록 복리로 자산이 됩니다.
아무도 제대로 말하지 않는 두 번째 문제
첫 번째 문제는 이미 알고 있습니다. LLM은 무상태(stateless)입니다. 세션이 끝나면 모든 것을 잊습니다. Obsidian + Claude Code + Git 스택은 그 문제를 해결합니다. 이전 글에서 다뤘습니다.
그런데 두 번째 문제가 있습니다.
열심히 관리한 지식이 내 컴퓨터 안에만 갇혀 있다는 것입니다.
3년 동안 Obsidian vault를 관리했습니다. AI 연구 노트, 프로젝트 아키텍처 결정, 읽은 논문 요약, 시행착오 기록. LLM이 접근할 수 있는 수준으로 구조화된, 그리고 실제로 복리로 증가하는 지식 기반입니다. 그 안에는 누군가에게 분명히 도움이 될 내용이 있습니다.
그런데 공개하려면? 복사-붙여넣기, 포맷 변환, 이미지 업로드, 플랫폼 이식. 마찰이 너무 커서 결국 draft 폴더에 쌓였습니다.
Quartz 가 그 마찰을 없앱니다.
Quartz는 Obsidian vault를 있는 그대로 — [[링크]], 태그, 폴더 구조 그대로 — 정적 웹사이트로 변환하는 도구입니다. 추가 플랫폼도, 포맷 변환도 없습니다. 노트가 곧 웹페이지입니다. 그리고 is_public: true 가 붙은 노트만 선택적으로 공개할 수 있습니다.
이 네 번째 레이어가 추가되면 파이프라인이 완성됩니다.
처리 흐름: 5단계, 하나의 방향
노트 작성 → LLM 컴파일 → Git 버전관리 → Quartz 빌드 → 웹 공개
원본을 넣으면 Claude가 구조화하고, Markdown에 저장되며, Obsidian이 연결하고, Git이 보존하고, Quartz가 배포합니다. 각 단계는 다음 단계를 위한 조건이 됩니다. 어느 한 단계도 뺄 수 없습니다.
이전 스택(Obsidian + LLM + Git)은 "나를 위한 지식관리"였습니다. Quartz가 더해지면 "세상과 함께하는 지식관리"가 됩니다.
4+1 툴이 각각 반드시 필요한 이유
Obsidian: 지식의 컨테이너
모든 것이 평문 텍스트입니다. 독점 데이터베이스도, 클라우드 종속도 없습니다. .md 파일이 폴더 안에 있을 뿐입니다. 그래서 Claude Code가 vault 전체를 직접 읽을 수 있고, Quartz가 그대로 정적 사이트로 변환할 수 있습니다.
[[위키링크]] 는 Obsidian 안에서는 노드 그래프를 만들고, Quartz 안에서는 하이퍼링크가 됩니다. 내 vault 안의 연결이 그대로 웹의 연결이 됩니다. 별도 작업 없이.
저는 vault를 4개 상위 폴더로 운영합니다: inbox/ (미처리 입력), concepts/ (개념 노트), projects/ (진행 중 작업), public/ (공개 예정). 이 구조가 Quartz 공개 범위 설정과 자연스럽게 연결됩니다.
Obsidian이 제공하는 것: LLM이 읽고 Quartz가 빌드할 수 있는 단일 진실 원천.
Claude Code: AI 컴파일러
입력 자료를 받아 vault 구조에 통합하는 역할입니다. 새 아티클을 읽거나 미팅이 끝나면, 원본 메모를 inbox/ 에 넣고 Claude에게 처리를 요청합니다.
Claude가 하는 일:
- 기존
concepts/노트와 겹치는 내용 확인 - 새 개념이면 파일 생성, 기존 개념이면 업데이트
- 연관 노트에
[[링크]]추가 - 공개 가치가 있는 내용에
is_public: true태그 제안 - 커밋 메시지 작성 실제 사용하는 프롬프트 패턴:
사용자: "어제 읽은 Andrej Karpathy의 LLM OS 에세이 요약이에요.
vault에 통합해 주세요. 공개할 만한 내용이면 is_public 표시도 해주세요."
Claude Code:
→ /vault/concepts/llm-os.md 없음 → 새 파일 생성
→ /vault/concepts/에이전틱-AI.md 읽기 → 관련 내용 발견
→ llm-os.md에 [[에이전틱-AI]] 링크 추가
→ is_public: true 설정 (공개 가치 있음)
→ 커밋: "add: LLM OS 개념 노트 (Karpathy 에세이 기반)"
```
Claude Code가 제공하는 것: 수동 분류 없이 vault를 유지하는 자율 큐레이터.
Markdown + frontmatter: 이중 기계 읽기
Markdown 자체는 이전 글에서 다뤘습니다. 여기서는 frontmatter가 추가로 중요합니다.
---
is_public: true
tags: [AI, 생산성, LLM]
date: 2026-06-14
---
이 세 줄이 Quartz의 동작을 제어합니다. is_public: false 인 노트는 빌드에서 제외됩니다. 태그는 Quartz 태그 페이지로 자동 생성됩니다. date는 최신 글 정렬에 쓰입니다.
Claude가 새 노트를 만들 때 적절한 frontmatter를 함께 생성하도록 CLAUDE.md 에 지시할 수 있습니다. 그러면 매번 수동으로 설정할 필요가 없습니다.
Markdown이 제공하는 것: LLM이 파싱하고 Quartz가 렌더링하는 범용 포맷.
Git: 기억의 뼈대이자 배포 트리거
Git은 이 스택에서 두 가지 역할을 합니다. 첫 번째 역할은 이전 글에서 다뤘습니다 — 버전 히스토리, 실험 브랜칭, 기기 간 동기화.
두 번째 역할이 Quartz와 함께 생깁니다: 배포 트리거.
GitHub 저장소에 push하면 GitHub Actions가 Quartz 빌드를 실행하고, GitHub Pages 또는 Vercel에 자동 배포됩니다. 커밋 하나가 노트 저장이면서 동시에 배포입니다.
# 일반적인 작업 세션 마무리
cd ~/vault
git add .
git commit -m "update: LLM OS 개념 노트 추가, 에이전틱-AI 연결"
git push origin main
# → GitHub Actions 자동 실행 → Quartz 빌드 → 웹 배포 완료
push 하나로 vault 동기화와 웹 업데이트가 동시에 이루어집니다.
Git이 제공하는 것: 버전관리이자 무중단 배포 파이프라인.
Quartz: 지식의 공개 레이어
이게 새로 추가되는 부분입니다.
Quartz는 Hugo 기반의 정적 사이트 생성기인데, Obsidian vault를 위해 설계되어 있습니다. 설치하면 vault 폴더를 그대로 인식합니다. [[위키링크]] 를 하이퍼링크로 변환하고, 그래프 뷰를 웹으로 렌더링하고, 태그 페이지를 자동 생성합니다.
설정 파일 핵심 부분:
// quartz.config.ts
const config: QuartzConfig = {
configuration: {
pageTitle: "Allen's Notes",
baseUrl: "notes.allenminded.com",
ignorePatterns: ["private", "templates", ".obsidian", "inbox"],
defaultDateType: "modified",
},
plugins: {
filters: [Plugin.RemoveDrafts()], // is_public: false 제외
emitters: [
Plugin.AliasRedirects(),
Plugin.ComponentResources(),
Plugin.ContentPage(),
Plugin.TagPage(),
Plugin.ContentIndex({ enableSiteMap: true, enableRSS: true }),
],
},
}
Plugin.RemoveDrafts() 가 핵심입니다. frontmatter에 is_public: false 이거나 draft: true 인 노트를 자동으로 빌드에서 제외합니다. 내 개인 메모는 vault 안에 있지만 웹에는 나타나지 않습니다.
노트에서 공개 여부를 제어하는 방식:
---
# 이 파일은 웹에 공개됩니다
is_public: true
tags: [AI, 생산성]
---
이 파일은 로컬에만 있습니다
draft: true
```
Quartz가 제공하는 것: vault를 웹사이트로 변환하는 마찰 없는 퍼블리싱 레이어.
Quartz 배포 파이프라인 상세
처음 설정 이후 반복 작업은 단순합니다:
최초 설정 (한 번만)
# 1. Quartz 설치
git clone https://github.com/jackyzha0/quartz.git
cd quartz
npm install
2. vault 연결 (quartz.config.ts에서 contentFolderPath 지정)
또는 vault 폴더를 quartz/content/로 심볼릭 링크
4. GitHub 저장소에 push → GitHub Actions 자동 배포
반복 작업 (매 세션)
# Claude가 vault 업데이트 후 커밋
git add .
git commit -m "update: 새 개념 노트 3개, 기존 노트 2개 연결"
git push origin main
# → 자동 빌드·배포 완료 (보통 2분 이내)
GitHub Actions 설정도 Quartz 공식 문서의 템플릿 하나로 끝납니다. CI 설정에 따로 시간을 쓸 필요가 없습니다.
로컬에서 npx quartz build --serve 로 먼저 확인하고 push하는 습관이 중요합니다. 렌더링 결과를 브라우저로 직접 확인한 후 배포하면 의도치 않은 노트가 공개되는 일을 방지할 수 있습니다.
복리 효과: 지식이 자산이 되는 시점
이 스택을 6개월 운영하면 세 가지가 동시에 복리로 증가합니다.
첫째, LLM이 접근하는 컨텍스트 품질. vault가 쌓일수록 Claude가 내 질문에 내 맥락으로 답합니다. "AI 에이전트 아키텍처에 대해 설명해 줘"가 아니라 "내 프로젝트에서 지난 달 결정한 아키텍처와 새로 읽은 논문을 연결해서 정리해 줘"가 됩니다.
둘째, 공개된 지식이 새 연결을 만듭니다. 내 Quartz 사이트에서 읽은 사람이 피드백을 주거나, 같은 주제를 연구하는 사람을 발견하거나, 내가 놓친 관점을 제안합니다. 닫힌 vault에서는 절대 일어나지 않는 일입니다.
셋째, 쓰기 습관이 생깁니다. 어차피 공개될 것을 알면 처음부터 더 명확하게 씁니다. 더 명확하게 쓰면 Claude가 더 정확하게 연결합니다. 더 정확한 연결은 더 좋은 공개 콘텐츠가 됩니다. 이 루프가 돌기 시작하면 멈추기 어렵습니다.
제가 이 스택을 도입하기 전에는 매달 0~1개 글을 공개했습니다. 3개월이 지난 시점에는 vault의 글 15개가 자동으로 웹에 올라가 있었고, 특별히 "글을 써야겠다"는 결심을 한 기억이 없었습니다. 노트 관리 습관이 그대로 퍼블리싱 습관이 된 것입니다.
실전 설정 방법
추가되는 것은 Quartz 설정 하나뿐입니다. 기존 Obsidian + Claude Code + Git 스택 위에 얹으면 됩니다.
1. Obsidian vault — 폴더 구조 권장안:
vault/
├── inbox/ # 미처리 입력 (Quartz 빌드 제외)
├── concepts/ # 개념 노트 (선택 공개)
├── projects/ # 진행 중 작업 (비공개)
├── public/ # 공개 확정 노트
└── CLAUDE.md # AI 지시 파일
2. CLAUDE.md — Quartz 인식 추가:
# CLAUDE.md
이것은 지식 vault입니다. 새 정보를 처리할 때:
- 기존 파일 먼저 확인, 중복 생성 금지
- 관련 개념에 [[링크]] 추가
- 원자적 노트: 파일당 하나의 개념
- frontmatter 필수 포함:
- 공개 가치 있으면: is_public: true
- 미완성이면: draft: true
- tags: 관련 개념 2~4개
- 각 업데이트 후 커밋 (메시지에 변경 이유 포함)
3. Quartz 설정 — 최소 설정으로 시작:
// quartz.config.ts 핵심 부분
configuration: {
pageTitle: "내 지식 노트",
baseUrl: "your-username.github.io/quartz", // 또는 커스텀 도메인
ignorePatterns: ["private", "templates", ".obsidian", "inbox", "projects"],
},
plugins: {
filters: [Plugin.RemoveDrafts()],
}
4. GitHub Actions — Quartz 공식 템플릿 그대로 사용:
# .github/workflows/deploy.yml (Quartz 문서 제공 템플릿)
name: Deploy Quartz site to Pages
on:
push:
branches: ["main"]
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci && npx quartz build
- uses: actions/upload-pages-artifact@v3
with:
path: public
deploy:
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
steps:
- uses: actions/deploy-pages@v4
5. 일상 워크플로우:
# 작업 세션 마무리 (Claude가 vault 업데이트 후)
git add .
git commit -m "update: [변경 내용 요약]"
git push origin main
# 2분 후 자동 배포 완료
복잡한 것은 없습니다. 기존 스택에 quartz.config.ts 하나와 GitHub Actions 파일 하나가 추가될 뿐입니다.
왜 이 흐름이 앞으로 더 강해질까
세 가지 방향이 이 스택을 점점 더 가치 있게 만듭니다.
에이전틱 AI가 배포까지 자동화할 것입니다. 지금은 Claude가 vault를 업데이트하고 나서 제가 직접 커밋하고 push합니다. 가까운 시일 안에 Claude Code가 "업데이트 완료, 커밋하고 배포할까요?"를 물어보는 것이 표준이 될 것입니다. vault 관리에서 사람이 할 일은 더 줄어듭니다.
정적 사이트가 AI 크롤링에 최적입니다. 동적 웹앱, 로그인 필요 플랫폼, 클라이언트 사이드 렌더링 — 이것들은 AI 에이전트가 접근하기 어렵습니다. 평문 HTML로 이루어진 Quartz 정적 사이트는 반대입니다. 내 지식이 다른 사람의 AI 에이전트에게도 발견 가능한 형태로 존재하게 됩니다.
로컬 LLM이 현실이 되면 이 스택의 프라이버시 모델이 완성됩니다. 지금은 Claude가 내 vault를 처리하면 Anthropic 서버를 거칩니다. 로컬 LLM(Ollama, LM Studio)이 충분히 좋아지면, 내 vault 전체가 인터넷에 나가지 않고도 처리됩니다. 같은 스택, 같은 워크플로우, 완전한 개인정보 보호.
Obsidian + LLM + Git + Quartz가 작동하는 이유는 각 레이어가 표준을 지키기 때문입니다. 평문 텍스트, 오픈 포맷, 버전 컨트롤, 정적 파일. 어떤 툴이 바뀌어도 교체 가능합니다.
결론
기존 스택(Obsidian + LLM + Git)은 "나를 위한 AI 기억 장치"였습니다. Quartz를 더하면 "세상과 나누는 AI 지식 기반"이 됩니다.
핵심 변화는 이것입니다:
기존: 노트 작성 → LLM 처리 → Git 저장 → 내 컴퓨터 안에 있음
신규: 노트 작성 → LLM 처리 → Git 저장 → Quartz 배포 → 웹에 있음
추가되는 마찰은 거의 없습니다. 최초 설정 이후에는 git push 하나입니다. 그 대신 얻는 것은 — 내 지식이 나만이 아니라 그것이 필요한 사람에게도 닿을 수 있다는 것입니다.
AI 도구를 정말로 장기적으로 활용하고 싶다면, 지식 기반이 내 머릿속이나 잠긴 앱 안에만 있어서는 안 됩니다. 읽을 수 있고, 연결되어 있고, 공개될 수 있어야 합니다. 그게 지식이 자산이 되는 방식입니다.
이 스택이 그것을 가능하게 합니다.
Quartz 초기 설정 과정이 궁금하시거나, vault 폴더 구조 예시가 필요하시면 댓글로 알려주세요. 실제 제 vault 구조와 CLAUDE.md 전문을 공유하는 후속 글을 준비하겠습니다.