Skip to main content
Data Migration•8 min read

Migrating WizNote to Obsidian Without Loss: Rebuilding WikiLinks and Recovering Attachments

Liberating locked notes from tedious single-note exports and broken links. How Shadow Shift batch-exports full WizNote archives, rebuilds two-pass WikiLinks, and repairs media attachments for Obsidian.

#WizNote to Obsidian#Batch Markdown Export#WikiLinks Repair#Attachment Recovery#Vault Migration#Local-First CLI

What Happens When a Decade of Digital Capital Is Locked in a Silo?

WizNote served as a beloved note-taking platform for technical professionals who accumulated thousands of articles over 5, 8, or 10 years.

With the rise of local-first, bidirectional link graph ecosystems like Obsidian, builders increasingly demand total data sovereignty:

  • Zero vendor lock-in: Freedom from arbitrary pricing shifts, deprecated sync APIs, or service sunsets;
  • Total filesystem ownership: Every document is pure plaintext .md paired with native local assets, easily backed up or synced with Git;
  • High-dimensional knowledge graphs: Interlinked ideas connected dynamically via native WikiLinks [[Note Title]].

Yet executing that transition has historically presented a brutal wall of manual friction.


The Default Export Nightmare: Agonizing Manual Single-Note Saves

Attempting to migrate using WizNote's official client presents immediate roadblocks:

  1. No True Batch Export, Only Manual Single-Note Saves: The official desktop interface lacks a real batch exporter for custom directory trees. Power users with 3,000 to 10,000+ notes face the grim prospect of right-clicking and saving files one by one—a soul-crushing manual chore spanning weeks;
  2. Missing Documents & Incomplete Archives: Manual exports routinely miss subfolders or freeze during large folders;
  3. Format Lock-in: Many note formats (web clips, rich drafts) cannot be saved as standard markdown via GUI dialogs;
  4. Broken Inter-Note References: Internal links collapse into dead proprietary wiz:// GUID protocols;
  5. Media Asset Disappearance: Embedded screenshots, diagrams, and PDF attachments break due to proprietary compression structures.

The Solution: Shadow Shift's Automated Batch Lossless Pipeline

To liberate personal knowledge vaults without manual toil, we created Shadow Shift, an open-source CLI utility. Its primary breakthrough is automated full-vault batch processing:

1. Automated Full-Vault Batch Export (Core Breakthrough)

Bypassing client-side UI limitations, Shadow Shift interfaces directly with local WizNote SQLite databases and container files:

  • One-Command Batch Processing: Recursively extracts and converts thousands of notes simultaneously in minutes;
  • Universal Format Extraction: Except for notes specifically locked with user-defined passwords (which require standard decryption inside WizNote first for security reasons), virtually all other notes—rich text, Markdown, mind maps, and web clips—are fully parsed and extracted without loss.

2. Zero-Mutation Read-Only Invariance

Shadow Shift accesses local WizNote databases in strict read-only mode. It never modifies, updates, or deletes source data. All conversions output cleanly into an isolated target folder (wiznote_obsidian/).

  • Pass One (Graph Topology Indexing): Scans all document GUIDs, canonical titles, and relative paths in memory to construct a comprehensive reference map.
  • Pass Two (Link Rewriting): Rewrites deprecated internal tags and relative references into standard Obsidian [[Document Title]] WikiLinks.

4. Media Asset Recovery and "5+2" Pipeline

Shadow Shift standardizes vault hygiene through a deterministic pipeline:

  • Standard 5-Step Mode: Syntax verification → Formatting & spacing normalization → WikiLinks conversion → Relative image path repair → Migration audit report;
  • Comprehensive 7-Step Mode (`--all`): Extends the pipeline with centralized attachment consolidation and smart asset re-linking into a dedicated attachments/ folder, guaranteeing zero media loss.

Quickstart Guide

bash
# 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!

Experiencing Real Data Sovereignty

Running a single command reconciles tens of thousands of complex notes and assets in minutes.

Opening your new Obsidian vault and striking Cmd + G to watch a decade of ideas illuminate a constellation of connected nodes is the ultimate feeling of digital liberation. Explore the code on GitHub!

All Field Notes →