把属于你的知识,还给自由的你。
本地优先 · 结构无损 · 可验证 · 可恢复 · 可审计 的下一代跨平台知识资产迁移引擎
English Documentation · 下载最新 Release (v1.0.0) · 快速开始 · 核心亮点 · 实战场景
我们日常收藏在各大平台(今日头条、Evernote、印象笔记等)里的文章与笔记,正在无形中面临数字遗失的危机:
- 平台内容下架、账号风控或链接失效,珍藏多年的参考资料瞬间变为
404; - 平台厂商采用专有加密格式锁死导出(如
.notes),想迁移时寸步难行; - 传统的“复制粘贴”丢失元数据、作者信息、附件图片以及笔记间的关联跳转;
- 依赖第三方云端迁移工具?你的隐私笔记可能在云端被二次索引甚至送入公共 AI 训练!
InkMigrate(墨迁) 为彻底夺回个人知识资产主权而生:100% 纯本地运行、零云端中转、无外部 AI 窃密隐患,将散落在各大平台的碎片数据,结构化归档为你真正拥有的持久开放格式——Obsidian 双链本地知识库。
告别繁琐的手动配置文件修改,享受极速、优雅的桌面端视觉交互:
- 系统原生文件选择器:全面支持 macOS AppleScript、Windows PowerShell(自动解决 CP936 中文路径乱码)及 Linux 原生目录选择器,路径有效性实时动态探测。
- 异构来源智能解耦:彻底解决离线文件源(Evernote / 印象笔记)因头条登录态未就绪导致的阻断 Bug,离线文件无需任何登录即可直接一键迁移。
- 可折叠状态栏抽屉 (LogPanel):默认仅占 36px 极简状态条,将 180px+ 核心视口完全释放给业务内容;支持一键展开、错误/警告级别过滤、日志秒级拷贝与清空。
- 资产扫描实时检索:扫描条目以可视化明细表格呈现,支持实时模糊搜索,并可安全调用系统浏览器直达原文。
- WCAG AA 级暗色美学:精心调优的 Slate/Blue 暗黑调色板,全量 Lucide 矢量图标,杜绝系统 Emoji 样式割裂。
- 今日头条 (Toutiao):
- 基于真实浏览器会话(Playwright Chromium)全自动登录保持与收藏解析。
- 支持文章、微头条、视频笔记全量抓取。
- 智能反爬节奏控制与人性化防风控延迟(可自定义间隔)。
- 迁移后支持一键自动化“取消收藏”,清理云端源头。
- Evernote / 印象笔记 (Offline):
- 无需账号凭据,零联网离线解析。
- 完整支持国际版
.enex笔记本导出文件。 - 独家深度支持印象笔记国内版 HTML 导出目录无损还原。
- 自动将 GUID 跨笔记关联解析转换为 Obsidian 原生
[[Wikilinks]]双链网络! - 保留多层级笔记本嵌套(
Stack/Notebook-<hash>/),附件哈希严格对账。
- 确定性幂等保证:任意时刻均可放心中断(Ctrl+C 或关闭应用);再次启动或执行
resume时,已落盘条目毫秒级校验跳过,仅增量补齐未完成条目。 - 双向完整对账审计:每次迁移均生成完整的 SQLite 事务级状态库与结构化审计报告(
summary.json、details.json、failures.json),每一条正文与每个附件皆有据可查。 - 进程隔离与 JSON-RPC 传输:UI 界面与后台高性能数据引擎基于轻量级 stdio JSON-RPC 通信,大并发数据处理不阻塞 UI 渲染。
InkMigrate 生成的笔记完全符合 Obsidian 最佳实践,保留纯净排版与丰富上下文:
---
title: 深入解析现代微前端架构演进
source_url: https://www.toutiao.com/article/71234567890/
source_id: toutiao-main
author: 前端技术精选
published_at: 2026-05-18 09:20:00
migrated_at: 2026-09-11 20:30:00
migration_job_id: mig-20260911-102432
---
> [!info] 来源元数据
> - **原始来源**:今日头条 (toutiao-main)
> - **文章作者**:前端技术精选
> - **发布时间**:2026-05-18 09:20
> - **原文链接**:[点此在浏览器中阅读](https://www.toutiao.com/article/71234567890/)
## 摘要
在大型企业级前端系统演进过程中,模块解耦与独立发布已成为核心诉求...
### 核心设计原则
1. 运行时独立与样式沙箱隔离;
2. 共享依赖与版本降级策略;
3. 参考前序笔记:[[微前端基座与通信机制]](Evernote 链接自动还原)
- Node.js:≥ 24.15.0(内置
node:sqlite支持) - pnpm:≥ 11
- 编译工具:macOS 需安装 Xcode Command Line Tools,Windows 需安装 Visual Studio Build Tools(用于编译 SQLite 原生模块)。
# 1. 克隆代码仓库
git clone https://github.com/hnic/InkMigrate.git
cd InkMigrate
# 2. 安装项目依赖(自动链接 monorepo 子包)
pnpm install
# 3. 安装自动化抓取所需的 Chromium 浏览器内核
pnpm --filter @inkmigrate/source-toutiao exec playwright install chromium
# 4. 全量编译
pnpm -r buildpnpm --filter @inkmigrate/gui run tauri dev启动后即可在现代化图形窗口中直观操作:
- 顶栏切换所需知识来源(今日头条 / Evernote);
- 一键点击「选择目录」设置 Obsidian Vault 路径与工作区;
- 点击「开始扫描」直观预览条目列表;
- 点击「开始迁移」实时监控进度条与审计日志!
可将 CLI 命令注册到本地环境:
ln -sf $(pwd)/apps/cli/dist/index.js ~/.local/bin/inkmigrate# 1. 初始化本地工作区
inkmigrate init
# 2. 扫码登录头条(弹窗扫码,Profile 自动持久化保存在本地)
inkmigrate auth login --source toutiao-main --state-dir .inkmigrate
# 3. 扫描收藏列表
inkmigrate scan \
--source toutiao-main \
--state-dir .inkmigrate \
--favorites-url "https://www.toutiao.com/c/user/token/你的Token/?tab=fav"
# 4. 执行全量迁移到 Obsidian
inkmigrate migrate \
--source toutiao-main \
--target obsidian-main \
--state-dir .inkmigrate \
--vault-path "/Users/you/Documents/Obsidian Vault" \
--favorites-url "https://www.toutiao.com/c/user/token/你的Token/?tab=fav"
# 5.(可选)中途如遇中断,输入 Job ID 随时无损续跑
inkmigrate resume \
--job <原Job-ID> \
--state-dir .inkmigrate \
--vault-path "/Users/you/Documents/Obsidian Vault"无需登录,直接在 inkmigrate.yaml 中声明本地导出路径:
version: 1
workspace:
stateDir: ".inkmigrate"
reportsDir: "reports"
sources:
- id: "evernote-archive"
adapter: "evernote"
enabled: true
config:
inputPaths: ["/Users/you/Documents/EvernoteExports"] # 支持 .enex 文件或 HTML 导出目录
formats: ["enex", "html"]
targets:
- id: "obsidian-main"
adapter: "obsidian"
enabled: true
config:
vaultPath: "/Users/you/Documents/Obsidian Vault"执行迁移:
inkmigrate migrate --source evernote-archive --target obsidian-main --state-dir .inkmigrate --vault-path "/Users/you/Documents/Obsidian Vault"💡 印象笔记中国版用户特别提示: 印象笔记新版客户端导出的
.notes为加密私有格式,无法通用解析。建议:
- 在客户端中导出为 HTML 格式(InkMigrate 完美支持多层级目录解析);
- 或使用开源工具 evernote-backup 执行备份后导出 ENEX(推荐附加
--add-guid --add-metadata参数以保留双链关系)。
InkMigrate 采用了 Tauri 2 + Node.js Sidecar + 内嵌无头 Chromium 的高内聚自包含架构。构建产出的安装包内部已完整携带对应平台的 Node.js 运行时、原生 SQLite 驱动与离线爬虫引擎,在目标机器上无需安装 Node.js 或配置开发环境即可开箱即用。
无论在哪一平台上,项目根目录均支持通过统一命令完成全量打包:
# 全量构建:TypeScript 编译 + 当前平台 Sidecar 资源组装 + 原生安装包封装
pnpm bundle构建流水线说明:
- 底层自动调用
scripts/build-sidecar.mjs,通过 esbuild 把引擎打为自包含单文件,并自动抽取当前操作系统专用(macOS / Windows)的node二进制、better_sqlite3.node原生驱动与 Playwright Chromium 注入到 Sidecar 资源包;- 最终调用
tauri build生成免环境依赖的独立原生安装包。
- Node.js:≥ 24.15.0 / pnpm:≥ 11
- Rust / Cargo:最新稳定版(
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh) - Xcode Command Line Tools:
xcode-select --install
- macOS 原生应用程序:
apps/gui/src-tauri/target/release/bundle/macos/InkMigrate.app - macOS 安装镜像 (DMG):
apps/gui/src-tauri/target/release/bundle/dmg/InkMigrate_1.0.0_aarch64.dmg(根据芯片架构生成aarch64或x64)
由于本地自构建软件包未经过 Apple 商业开发者证书公证(Notarization),首次双击可能会提示 “已损坏” 或 “未受信任开发者”。在终端执行以下命令清除隔离标记即可:
# 解除安装到「应用程序」中的隔离属性
xattr -cr /Applications/InkMigrate.app
# 或针对当前目录下的 .app 文件解除
xattr -cr path/to/InkMigrate.app(亦可在 macOS「系统设置」->「隐私与安全性」底部点击「仍要打开」)
- Node.js:≥ 24.15.0 / pnpm:≥ 11
- Rust / Cargo:最新稳定版(rustup-init.exe)
- Visual Studio 2022 C++ 生成工具:需勾选 “使用 C++ 的桌面开发”(Desktop development with C++,用于编译
better-sqlite3原生模块) - WebView2 运行时:Windows 10/11 系统通常已自带
执行 pnpm bundle 后,安装包生成在:
- NSIS 一键安装程序:
apps/gui/src-tauri/target/release/bundle/nsis/InkMigrate_1.0.0_x64-setup.exe - MSI Windows 安装包:
apps/gui/src-tauri/target/release/bundle/msi/InkMigrate_1.0.0_x64_en-US.msi
自构建软件包无商业 EV 代码签名证书时,Windows Defender SmartScreen 可能会弹出 “Windows 已保护你的电脑” 提示:
- 点击对话框中的 “更多信息” (More info);
- 点击 “仍要运行” (Run anyway) 即可继续正常安装。
InkMigrate 采用现代化的 pnpm monorepo 模块化分层架构:
InkMigrate/
├── apps/
│ ├── gui/ # Tauri 2 + React 19 跨平台桌面端应用
│ ├── engine/ # Node.js 数据迁移后台 Sidecar(stdio JSON-RPC)
│ └── cli/ # 命令行工具 (inkmigrate) 入口
├── packages/
│ ├── core/ # 迁移核心状态机、SQLite WAL 事务持久化、对账审计、限流重试
│ ├── target-obsidian/ # Obsidian 渲染器、Wikilink 语法树重构、Frontmatter 注入
│ ├── source-toutiao/ # 今日头条 Playwright 自动化提取流水线
│ ├── source-evernote/ # Evernote .enex / HTML 导出目录解析与资源对账
│ ├── protocol/ # 跨进程强类型 RPC 契约定义
│ ├── wiring/ # 依赖组装与实例工厂
│ └── testkit/ # 适配器通用契约测试与断言工具
└── docs/ # 详细产品与技术需求规范、设计文档
本项目遵循严苛的测试驱动开发流程,覆盖单元测试、契约测试、状态机回归与端到端集成测试:
# 运行全库单元与集成测试(600+ 项测试用例)
pnpm test
# 运行自动化真实浏览器测试套件
pnpm --filter @inkmigrate/source-toutiao test:browser
# 执行全工程 TypeScript 严格模式类型检查
pnpm -r run typecheck- 绝对本地优先:InkMigrate 不设任何云端收集服务器,不内置任何未经用户许可的数据上报与遥测代码。您的所有账户凭证(Cookies)、网页缓存、附件和文章数据均保存在本地
--state-dir与指定 Vault 目录中。 - 合规提示:请仅用于迁移您享有合法访问权限的个人知识资产。用户在使用过程中应遵守相关源平台的服务条款和适用法律法规。
本项目基于商业友好的开源协议分发,详见 LICENSE。