synthadoc

Document to MarkdownCLIPython

★ 1,176주당 +126조회 5

무엇인가

Synthadoc은 문서를 수집하는 시점에 LLM으로 지식을 컴파일해 지속적인 위키를 만드는 엔진이다. 질의 시점에 청크를 검색하는 RAG와 달리, 산출물 자체가 사람이 읽고 고칠 수 있는 Markdown 파일 묶음이다. 같은 위키에 CLI, Obsidian 플러그인, 웹 UI, MCP 네 경로로 접근한다.

어떻게 동작하나

수집 파이프라인은 PDF, 스프레드시트, PPT, 웹 페이지, 이미지, 영상, Word, TXT, AI 세션 기록(.jsonl)을 입력으로 받는다. LLM이 이를 위키 페이지로 합성하고, 페이지 간 상호 참조를 자동으로 만들며, 서로 모순되는 서술을 탐지해 표시하고, 고아 페이지를 따로 표시한다. 생성된 페이지의 각 주장에는 원본 행을 가리키는 인라인 인용이 붙는다. 결과물은 로컬 Markdown 파일로 저장되고, 엔진은 127.0.0.1:7070에만 바인딩되는 서버로 동작한다.

무엇과 다른가

RAG는 질의할 때마다 문서 청크를 검색해 요약을 만들기 때문에 근거가 대화 안에서 사라진다. Synthadoc은 수집 시점에 컴파일하므로 새 문서 하나가 전체 코퍼스의 상호 참조를 갱신한다. 위키는 도구를 실행하지 않은 상태에서도 편집기에서 열리고, git으로 백업되고, 클라우드 드라이브로 동기화된다. 사람이 검토해 active 상태로 승격한 페이지는 보호되며, 이를 반박하는 소스는 덮어쓰지 않고 검토 대상으로 표시된다.

어떻게 쓰나

설치는 pip wheel로 하고 Python 3.11+만 있으면 된다. LLM API 키가 최소 하나 필요하며 기본값은 Gemini Flash(무료 티어, 하루 100만 토큰)이고, Claude Code나 Opencode를 제공자로 쓰면 별도 키가 필요 없다. synthadoc install로 위키를 만들면 Obsidian 플러그인이 함께 설치되고, 기존 설치본은 synthadoc plugin upgrade로 플러그인을 갱신한다. History of Computing 데모는 미리 만들어진 페이지를 API 키 없이 열람할 수 있다. 웹 검색 수집은 Tavily 키를 설정한 뒤 synthadoc ingest "search for: ..." 형태로 실행한다.

전제와 한계

프로덕션 실행에는 Node.js나 Git, 빌드 단계가 필요 없다. 테스트 스위트는 소스 체크아웃에서만 돌아가며 pip wheel에는 포함되지 않는다. 인라인 인용 주석은 Gemini 2.5 Flash 이상에서 안정적으로 동작하고, 그보다 낮은 모델에서는 인용 없는 페이지에 대해 모델 호환성 경고가 발생한다. 서버는 localhost에만 바인딩된다.

관련 논문 4

유사 도구