Что происходит, когда десятилетие цифрового капитала заперто в изолированной системе?
WizNote был любимой платформой заметок для технических специалистов, накопивших тысячи статей за 5, 8 или 10 лет.
С ростом экосистем с локальными двусторонними графами ссылок вроде Obsidian разработчики всё чаще требуют полного суверенитета над данными:
- Никакой привязки к вендору: свобода от произвольных изменений цен, устаревших API синхронизации и закрытия сервисов;
- Полное владение файловой системой: каждый документ — чистый текстовый
.mdс локальными ресурсами, который легко резервировать или синхронизировать через Git; - Многомерные графы знаний: связанные идеи динамически соединены нативными WikiLinks
[[Note Title]].
Но сам переход исторически упирался в жестокую стену ручной работы.
Кошмар стандартного экспорта: мучительное сохранение по одной заметке
Попытка миграции через официальный клиент WizNote сразу упирается в препятствия:
- Нет настоящего пакетного экспорта, только сохранение по одной заметке: в официальном десктопном интерфейсе нет реального пакетного экспортёра для произвольных деревьев каталогов. Продвинутые пользователи с 3 000–10 000+ заметок сталкиваются с перспективой кликать правой кнопкой и сохранять файлы по одному — изматывающей ручной работой на недели;
- Пропавшие документы и неполные архивы: ручной экспорт регулярно теряет подпапки или зависает на больших каталогах;
- Привязка к формату: многие форматы заметок (веб-клипы, насыщенные черновики) нельзя сохранить как обычный Markdown через диалоги интерфейса;
- Сломанные ссылки между заметками: внутренние ссылки превращаются в мёртвые проприетарные протоколы
wiz://с GUID; - Исчезновение медиафайлов: встроенные скриншоты, схемы и PDF-вложения ломаются из-за проприетарных структур сжатия.
Решение: автоматический пакетный конвейер без потерь в Shadow Shift
Чтобы освободить личные хранилища знаний без ручного труда, мы создали Shadow Shift — открытую CLI-утилиту. Её главный прорыв — автоматическая пакетная обработка всего хранилища:
1. Автоматический пакетный экспорт всего хранилища (главный прорыв)
Обходя ограничения клиентского интерфейса, Shadow Shift работает напрямую с локальными базами SQLite и контейнерными файлами WizNote:
- Пакетная обработка одной командой: рекурсивно извлекает и конвертирует тысячи заметок одновременно за минуты;
- Универсальное извлечение форматов: кроме заметок, специально защищённых пользовательским паролем (их по соображениям безопасности сначала нужно штатно расшифровать внутри WizNote), практически все остальные заметки — форматированный текст, Markdown, интеллект-карты и веб-клипы — полностью разбираются и извлекаются без потерь.
2. Неизменность: только чтение, без мутаций
Shadow Shift обращается к локальным базам WizNote строго в режиме чтения. Он никогда не изменяет, не обновляет и не удаляет исходные данные. Все результаты конвертации выводятся в изолированную целевую папку (wiznote_obsidian/).
3. Восстановление WikiLinks в два прохода
- Первый проход (индексация топологии графа): сканирует в памяти все GUID документов, канонические заголовки и относительные пути, чтобы построить полную карту ссылок.
- Второй проход (перезапись ссылок): превращает устаревшие внутренние теги и относительные ссылки в стандартные WikiLinks Obsidian
[[Document Title]].
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, увидев, как десятилетие идей загорается созвездием связанных узлов, — это высшее чувство цифрового освобождения. Изучите код на GitHub!