Skip to content

Configuration

ClarusIubar edited this page Aug 14, 2026 · 5 revisions

Configuration (config.json)

한국어 | English

세 가지 경로 — takeout 원본 위치, 마크다운 변환 결과 위치, 실제 Obsidian vault 위치 — 를 config.json으로 관리합니다. 처음 실행하면 프로젝트 루트에 기본값으로 자동 생성됩니다 (구조는 저장소의 config.example.json 참고). 개인 경로가 들어가는 파일이라 .gitignore 대상입니다.

{
  "takeout_paths": { "chatgpt": "", "gemini": "" },
  "markdown_output_dir": "result",
  "obsidian_vault_dir": "",
  "vault_subdirs": { "chatgpt": "ChatGPT", "gemini": "Gemini" }
}

우선순위

CLI 플래그 > config.json > 내장 기본값. 아무것도 안 정하면 기본값(원본은 data/<vendor>/, 변환 결과는 result/, vault는 미설정)으로 동작합니다. 매번 다른 위치를 쓰고 싶으면 CLI로 그 실행만 오버라이드하고, 계속 같은 위치를 쓰고 싶으면 config.json을 직접 고치면 됩니다.

경로 config.json 키 CLI 오버라이드 기본값
takeout 원본 takeout_paths.<vendor> --input VENDOR=PATH data/<vendor>/
마크다운 변환 결과 markdown_output_dir --output-dir PATH result/
Obsidian vault obsidian_vault_dir --vault-dir PATH (--publish와 함께) 미설정(발행 안 함)

--publish로 vault에 반영할 때는 vault_subdirs에 설정된 이름으로 벤더별 하위 폴더가 자동 생성됩니다(<vault>/ChatGPT/, <vault>/Gemini/).

publish는 단순 미러링

vault_dir/<vendor_subdir>/<filename> 위치만 기준으로 upsert합니다 — 사용자가 vault 안에서 노트를 다른 폴더로 옮기거나 이름을 바꿔도 추적하지 않으므로, 그 세션 내용이 나중에 바뀌면 옮긴 자리가 아니라 원래 위치에 새로 하나가 다시 생길 수 있습니다.

upsert 동작 방식

같은 세션을 다시 변환해도 무조건 새로 쓰지 않고, frontmatter의 content_hash(본문 렌더링 결과의 SHA-256)를 이전 노트와 비교해서 created / updated / unchanged로 분기합니다. session_id 존재 여부만으로는 나중에 이어진 대화가 반영 안 될 수 있어서, 매번 실제 렌더링 결과를 비교하는 방식을 씁니다. --publish도 동일한 upsert 로직 (common/upsert.py)을 재사용합니다.

관련 문서: Output Format, Architecture

Clone this wiki locally