{"repo":"WardLu/shadow-shift","free":true,"listed":false,"github":"https://github.com/WardLu/shadow-shift","clone":"git clone https://github.com/WardLu/shadow-shift.git","description":"影迁 Shadow Shift｜为知笔记 WizNote → Obsidian 迁移工具，保留笔记、图片、附件与 WikiLinks。Open-source Python toolkit.","language":"Python","stars":13,"topics":["shadow-nexus","wiznote","data-migration","data-migration-tool","markdown","markdown-converter","migration-tool","obsidian","obsidian-importer","obsidian-migration"],"license":"MIT","category":"productivity","readme_excerpt":"影迁 Shadow Shift —— 一键将 WizNote 笔记迁移到 Obsidian，保留笔记、图片、附件与 WikiLinks 内部链接。 📖 快速参考指南 · 📚 文档索引 · 📝 更新日志 --- 为什么用它 - 一键迁移 ：两条命令完成 WizNote → Obsidian，99% 用户只需默认流程。 - 格式完整 ：自动执行 5 步格式化 —— 语法检查 → 格式修复 → 链接转换（WikiLinks）→ 图片修复 → 生成报告。 - 数据无损 ：原始 wiznote download/ 只读不变，格式化结果写入独立的 wiznote obsidian/ 。 - 零额外依赖（离线） ：格式化工具纯 Python 3.6+ 实现；仅在线下载需 requests / markdownify / websocket-client 。 - 实测规模 ：单次迁移 449 篇笔记、7198 张图片、30 个附件。 快速开始 就这么简单。需要附件集中管理时，把第 3 步换成 python3 tools/obsidian formatter.py --all （7 步）。 目录 说明 是否修改 --- --- --- wiznote download/ 原始下载笔记 只读，保持不变 wiznote obsidian/ 格式化后笔记 在 Obsidian 中打开此目录 命令速查 命令 作用 步骤 --- --- --- python3 tools/wiznote downloader.py 在线下载 WizNote 笔记 登录 · 扫描 · 下载 · 转 Markdown python3 tools/obsidian formatter.py 离线格式化（默认） 5 步：语法 / 格式 / 链接 / 图片 / 报告 python3 tools/obsidian formatter.py --all 完整迁移 7 步：5 步 + 附件迁移 + 附件链接 单步命令 （只执行某一阶段）： 下载参数 （网络环境调节）： 核心工具 工具 用途 依赖 --- --- --- tools/wiznote downloader.py 从 WizNote 云端下载笔记 需在线依赖 tools/obsidian formatter.py 离线格式化为 Obsidian 规范 纯 Python，无依赖 tools/sync deletions.py 安全同步两目录删除（含干运行、备份、日志） 无 tools/config helper.py 配置管理（环境变量 / JSON），供其他工具调用 无 五步格式化详解 1. 语法检查 — 标题空格、层级跳跃、列表格式、代码块语言标识 2. 格式修复 — 标题空格、统一列表标记（ - ）、空行、多余空格 3. 链接转换 — 文本 → [[笔记名]] ，转换 WizNote 内部链接与附件链接 4. 图片修复 — 统一路径格式、修复相对路径 5. 生成报告 — 统计 Markdown 文件数、WikiLinks 数 sync deletions.py 使用流程 常见问题 Q1：登录后出现 None/ks/... 或无法获取目录？ 通常表示登录未真正成功。若账号启用二次登录验证，请先在 WizNote X 或网页版 关闭二次验证后重试（经典版客户端无关闭选项）。 Q2：默认命令和 --all 的区别？ - 默认 （5 步）：图片保持在 files/ 目录，大多数用户足够。 - --all （7 步）：额外把附件迁移到 atta","default_branch":null,"files":null,"tree":[],"storefront":"/r/WardLu","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/WardLu/shadow-shift/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}