10년치 디지털 자산이 사일로에 갇히면 어떻게 될까?
WizNote는 5년, 8년, 10년에 걸쳐 수천 개의 글을 쌓아 온 기술 전문가들에게 사랑받은 노트 플랫폼이었습니다.
로컬 우선이고 양방향 링크 그래프를 갖춘 Obsidian 같은 생태계가 부상하면서, 빌더들은 데이터 주권을 점점 더 요구하고 있습니다.
- 벤더 종속 없음: 임의의 가격 인상, 중단된 동기화 API, 서비스 종료로부터 자유로워집니다;
- 파일 시스템의 완전한 소유: 모든 문서가 순수 텍스트
.md와 로컬 자산으로 존재해, 백업하거나 Git으로 동기화하기 쉽습니다; - 고차원 지식 그래프: 네이티브 WikiLinks
[[Note Title]]으로 아이디어가 동적으로 연결됩니다.
하지만 그 전환을 실행하는 일은 지금까지 수작업 마찰의 거대한 벽이었습니다.
기본 내보내기의 악몽: 고통스러운 노트 단건 수동 저장
WizNote의 공식 클라이언트로 이전을 시도하면 바로 장애물에 부딪힙니다.
- 진짜 일괄 내보내기 없음, 노트 단건 수동 저장뿐: 공식 데스크톱 인터페이스에는 사용자 정의 디렉터리 트리를 위한 실제 일괄 내보내기 기능이 없습니다. 노트가 3,000개에서 10,000개 이상인 파워 유저는 파일을 하나씩 우클릭해 저장해야 하는 암담한 일을 마주합니다. 몇 주가 걸리는 영혼을 갉아먹는 수작업입니다;
- 누락된 문서와 불완전한 아카이브: 수동 내보내기는 하위 폴더를 자주 빠뜨리거나, 큰 폴더에서 멈춰 버립니다;
- 형식 종속: 많은 노트 형식(웹 클립, 리치 텍스트 초안)은 GUI 대화상자로는 표준 Markdown으로 저장할 수 없습니다;
- 깨진 노트 간 참조: 내부 링크가 독점
wiz://GUID 프로토콜로 무너져 죽은 링크가 됩니다; - 미디어 자산 소실: 삽입된 스크린샷, 다이어그램, PDF 첨부 파일이 독점적인 압축 구조 때문에 깨집니다.
해결책: Shadow Shift의 자동화된 일괄 무손실 파이프라인
수작업 없이 개인 지식 보관소를 해방하기 위해, 우리는 오픈 소스 CLI 유틸리티 Shadow Shift를 만들었습니다. 핵심 돌파구는 자동화된 전체 보관소 일괄 처리입니다.
1. 자동화된 전체 보관소 일괄 내보내기 (핵심 돌파구)
클라이언트 UI의 한계를 우회해, Shadow Shift는 로컬 WizNote SQLite 데이터베이스와 컨테이너 파일에 직접 접근합니다.
- 명령 한 줄로 일괄 처리: 수천 개의 노트를 재귀적으로 추출하고 변환해 몇 분 안에 처리합니다;
- 범용 형식 추출: 사용자가 직접 암호를 설정해 잠근 노트(보안상 WizNote 안에서 먼저 표준 복호화가 필요합니다)를 제외하면, 리치 텍스트, Markdown, 마인드맵, 웹 클립 등 거의 모든 노트가 손실 없이 분석되고 추출됩니다.
2. 쓰기 없는 읽기 전용 불변성
Shadow Shift는 로컬 WizNote 데이터베이스에 엄격한 읽기 전용 모드로 접근합니다. 원본 데이터를 수정, 갱신, 삭제하지 않습니다. 모든 변환 결과는 격리된 대상 폴더(wiznote_obsidian/)에 깔끔하게 출력됩니다.
3. 두 단계 WikiLinks 재구성
- 1단계 (그래프 위상 인덱싱): 모든 문서의 GUID, 정규 제목, 상대 경로를 메모리에서 스캔해 포괄적인 참조 맵을 만듭니다.
- 2단계 (링크 다시 쓰기): 더 이상 쓰지 않는 내부 태그와 상대 참조를 표준 Obsidian
[[Document Title]]WikiLinks로 다시 씁니다.
4. 미디어 자산 복구와 “5+2” 파이프라인
Shadow Shift는 결정론적인 파이프라인으로 보관소 위생을 관리합니다.
- 표준 5단계 모드: 구문 검증 → 서식 및 간격 정규화 → WikiLinks 변환 → 상대 이미지 경로 복구 → 마이그레이션 감사 보고서;
- 종합 7단계 모드(`--all`): 파이프라인을 확장해 첨부 파일을 전용
attachments/폴더로 중앙 통합하고 스마트 자산 재연결을 수행하여, 미디어 손실이 없도록 보장합니다.
빠른 시작 가이드
# 1. Clone repository and install dependencies
git clone https://github.com/WardLu/shadow-shift.git
cd shadow-shift
pip3 install -r requirements.txt
# 2. Download and extract local database
python3 tools/wiznote_downloader.py
# 3. Format and rebuild links (all 7 steps)
python3 tools/obsidian_formatter.py --all
# 4. Open the generated wiznote_obsidian folder in Obsidian!진정한 데이터 주권을 체험하기
명령 한 번으로 수만 개의 복잡한 노트와 자산이 몇 분 안에 정리됩니다.
새 Obsidian 보관소를 열고 Cmd + G를 눌러 10년치 아이디어가 연결된 노드의 별자리로 빛나는 것을 보는 순간이야말로 디지털 해방의 궁극적인 기쁨입니다. GitHub에서 코드를 살펴보세요!