Repository navigation
Configuration
한국어 | English
세 가지 경로 — takeout 원본 위치, 마크다운 변환 결과 위치, 실제 Obsidian vault 위치 —
를 config.json으로 관리합니다. 처음 실행하면 프로젝트 루트에 기본값으로 자동 생성됩니다
(구조는 저장소의 config.example.json 참고). 개인 경로가 들어가는 파일이라 .gitignore
대상입니다.
{
"takeout_paths": { "chatgpt": "", "gemini": "", "claude": "" },
"markdown_output_dir": "result",
"obsidian_vault_dir": "",
"vault_subdirs": { "chatgpt": "ChatGPT", "gemini": "Gemini", "claude": "Claude" }
}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/, <vault>/Claude/).
vault_dir/<vendor_subdir>/<filename> 위치만 기준으로 upsert합니다 — 사용자가 vault 안에서
노트를 다른 폴더로 옮기거나 이름을 바꿔도 추적하지 않으므로, 그 세션 내용이 나중에 바뀌면
옮긴 자리가 아니라 원래 위치에 새로 하나가 다시 생길 수 있습니다.
Claude 벤더는 프로젝트 소속 대화를 result/claude/<프로젝트명>/*.md처럼 하위 폴더로
분리하는데, --publish는 이 하위 폴더 구조를 그대로 재현해서
vault_dir/<vendor_subdir>/<프로젝트명>/<filename>에 미러링합니다
(common/publish.py가 result_dir을 재귀 탐색). 같은 이유로 Claude 프로젝트 이름이
나중에 바뀌면 새 하위 폴더에 파일이 다시 생기고 예전 폴더에는 고아 파일이 남을 수
있습니다 — 위 문단의 "옮긴 자리 추적 안 함"과 같은 성격의 한계입니다.
같은 세션을 다시 변환해도 무조건 새로 쓰지 않고, frontmatter의 content_hash(본문
렌더링 결과의 SHA-256)를 이전 노트와 비교해서 created / updated / unchanged로
분기합니다. session_id 존재 여부만으로는 나중에 이어진 대화가 반영 안 될 수 있어서,
매번 실제 렌더링 결과를 비교하는 방식을 씁니다. --publish도 동일한 upsert 로직
(common/upsert.py)을 재사용합니다.
관련 문서: Output Format, Architecture