RohDongHyun

rohdonghyun.github.io

Quartz 5 기반 개인 지식 저장소. AI Agent 또는 웹(Pages CMS)에서 글을 작성해 바로 발행하는 흐름이 목적이다.

글 작성 규칙·카테고리·태그·subagent 워크플로 등 상세 운영 규칙은 CLAUDE.md를 참고.

디렉토리 구조

content/
├── index.md          홈 페이지
├── images/           업로드 이미지 (/images/* 로 서빙)
└── posts/            발행된 글 (사이트에 노출)
    ├── foundations/  카테고리: 학술 기초 지식
    │   ├── statistics/
    │   ├── optimization-in-learning/
    │   ├── introduction-to-ml/
    │   ├── introduction-to-dl/
    │   └── introduction-to-rl/
    ├── insights/     카테고리: 세미나·기사·글 신지식
    └── papers/       카테고리: 논문 요약
.pages.yml            Pages CMS 설정 (웹 편집·이미지 업로드)
quartz/               Quartz 5 엔진 (수정 금지)
quartz.config.yaml    사이트 설정
scripts/build.mjs     배포 빌드 (카테고리/태그 검증 + 비공개 글 암호화)
.github/workflows/    Pages 자동 배포

사전 준비 (최초 1회)

npm ci                       # 의존성 설치 (lockfile 변경 시 재실행)
npx quartz plugin install    # 플러그인 설치 (quartz.lock.json 변경 시 재실행)

Node 22 이상 / npm 10.9.2 이상 필요.

로컬에서 글 확인하기 (commit 전 미리보기)

npx quartz build --serve     # http://localhost:8080

배포용 빌드 (push 전 최종 검증)

npm run build                # scripts/build.mjs → public/ 생성

비공개 글

frontmatter에 private: true를 추가하면 빌드 시 본문이 암호화된다 (제목·태그·링크는 그대로 노출, 본문만 잠김). 비밀번호는 frontmatter가 아니라 환경변수 PRIVATE_POSTS_PASSWORD에서 읽는다.

브라우저에서 비공개 글에 접근하면 비밀번호 입력 UI가 뜨고, 한 번 입력하면 localStorage에 캐싱된다. 우하단 🔒 로그아웃 버튼으로 캐시를 비울 수 있다.

웹 편집 (Pages CMS)

사람이 직접 쓸 때는 Pages CMS에서 웹으로 편집한다 (.pages.yml이 설정). 이미지를 본문에 붙여넣으면 content/images/에 커밋되고 /images/... 링크가 자동 삽입된다. 저장하면 main에 직접 커밋 → 자동 배포.

배포

main 브랜치에 push → GitHub Actions가 npm ciquartz plugin installnpm run buildpublic/을 GitHub Pages로 업로드. (Settings → Pages 의 Source는 GitHub Actions여야 한다.)