华为备忘录迁移小米笔记完整指南(油猴脚本方案)

AI摘要针对华为备忘录迁至小米笔记无官方通道的痛点,本文提供纯前端自动化方案。通过油猴脚本,在华为云页面一键导出所有笔记为JSON(含标题、时间、正文),再在小米笔记页面导入,完整保留信息。全程浏览器本地运行,免安装,数据不经过第三方,安全高效,彻底告别手动复制粘贴。

适用场景:从华为云空间备忘录批量迁移至小米笔记,保留标题、时间戳与正文内容,全程自动化,无需手动复制粘贴。

一、方案概述

在更换手机品牌或整理跨平台笔记时,华为备忘录与小米笔记之间没有官方迁移通道。手动复制几百条笔记不仅耗时,还容易丢失创建时间等元数据。
本方案通过 Tampermonkey(油猴) 浏览器插件,在网页端模拟人工操作,实现:

环节 动作 输出
导出
自动遍历华为云备忘录列表,逐条点击并提取正文 结构化 JSON 文件
导入
读取 JSON,在小米笔记网页版逐条新建文本笔记 完整还原标题与内容

核心优势:纯前端实现,无需安装任何软件,不经过第三方服务器,数据隐私完全本地化。

二、准备工作

1. 环境要求

  • 浏览器:Chrome / Edge / Firefox / Safari(推荐 Chromium 内核)
  • 插件:安装 Tampermonkey(油猴)扩展
  • 账号

2. 获取脚本

将以下两个脚本分别添加为油猴脚本:

  • 导出脚本华为云备忘录批量导出(匹配 cloud.huawei.com

  • 导入脚本小米笔记 JSON 批量导入(匹配 i.mi.com/note*

安装后刷新对应页面,右上角会出现悬浮操作按钮。

三、第一步:导出华为备忘录

3.1 脚本工作原理

华为云备忘录网页版采用 CodeMirror 作为富文本编辑器。页面同时存在多个 CodeMirror 实例(如标题栏也可能被识别),脚本通过行数最多优先的策略智能定位正文编辑器,避免抓到标题输入框的残留镜像。

3.2 执行导出

  1. 进入华为云备忘录网页版,确保左侧列表已加载全部笔记
  2. 点击右上角 「📥 导出所有备忘录」 按钮
  3. 确认弹窗提示的总条数,点击确定
  4. 导出期间请勿操作页面(脚本会自动滚动、点击、等待内容稳定)

导出流程细节

  • 每条笔记点击后,脚本会等待右侧编辑器内容连续两次读取结果一致与上一条不同,确保异步加载完成
  • 自动提取:标题、时间戳、正文内容
  • 最终生成 华为云备忘录_YYYY-MM-DD_时间戳.json,格式如下:

四、第二步:导入小米笔记

4.1 脚本工作原理

小米笔记网页版基于 ProseMirror 编辑器框架,采用 contenteditable 实现富文本编辑。脚本需要解决两个核心问题:

  1. 动态编辑器定位:标题与正文编辑器都是动态创建的 div[contenteditable="true"],脚本通过多种降级策略(类名 → 样式特征 → DOM 结构位置)稳定定位
  2. 内容注入与保存触发:直接修改 innerHTML 后,必须派发 focus/input/change/keyup/keydown/blur 事件序列,才能触发 ProseMirror 的状态更新与自动保存

4.2 执行导入

  1. 进入小米笔记网页版,确保处于笔记列表页
  2. 点击右上角 「📥 导入 JSON」 按钮
  3. 选择刚才导出的 .json 文件
  4. 脚本读取后显示条数,3 秒倒计时后开始自动导入
  5. 保持页面在前台,不要切换浏览器标签

导入流程细节

  • 逐条点击「新建笔记」→「文本笔记」
  • 等待编辑器完全加载(默认等待 2 秒,确保 ProseMirror 初始化)
  • 填写标题 → 填写正文(自动将 \n 转换为 <p> 段落)
  • 触发 blur 事件保存 → 返回列表 → 间隔 1 秒继续下一条

兼容性处理

  • 脚本会按倒序导入(notes.length - 10),确保最终列表顺序与华为端一致
  • 若某条失败,会记录错误并继续,不会中断整体流程

五、技术深度解析

5.1 华为端:CodeMirror 的"镜像"陷阱

华为备忘录编辑器使用 CodeMirror 6,其 DOM 结构特点是:

  • 标题栏与正文区可能同时存在 .CodeMirror-code
  • 标题区通常只有 1 行,而正文区可能有多行
  • 存在零宽空格(\u200B)作为占位符,需过滤避免产生空行

脚本采用双维度排序(行数优先,长度次之),在 99% 的场景下能正确识别正文。

5.2 小米端:ProseMirror 的状态同步

ProseMirror 不是简单的 textarea,它是一个受控文档模型

  • 直接修改 innerHTML 不会更新内部 EditorState
  • 必须通过合成事件(Synthetic Event)让编辑器感知变化
  • 保存机制依赖 blur 事件触发的自动同步

脚本在设置内容后,主动将光标移至最后一段,并派发完整的输入事件链,确保内容被纳入 ProseMirror 的撤销历史与持久化队列。

5.3 稳定性设计

风险点 应对策略
元素异步加载 MutationObserver+ 多选择器降级 + 超时重试
内容未渲染完成 连续两次读取一致才视为稳定
编辑器未初始化 固定等待 2 秒 + 动态检测contenteditable
导入顺序错乱 倒序遍历,利用列表"最新在前"特性还原顺序
单条失败阻断 try/catch包裹单条逻辑,记录失败数继续执行

六、常见问题与注意事项

⚠️ 关键提醒

  1. 导出时不要操作页面:任何鼠标滚动或点击都可能干扰脚本的元素定位
  2. 导入时保持页面可见:浏览器后台标签可能被节流,导致定时器延迟
  3. 网络稳定:华为云与小米云服务均为在线编辑器,断网会导致内容提取或保存失败

🔧 故障排查

现象 原因 解决
导出的内容全是标题 抓到了标题栏的 CodeMirror 检查正文是否有多行,脚本已优化行数判断
小米导入后内容为空 ProseMirror 未触发保存 增加 waitAfterClickTextNote 到 3000ms 以上
找不到标题输入框 小米更新了类名 打开控制台查看 contenteditable 元素列表,更新脚本选择器
导入顺序相反 正常 脚本故意倒序导入,最终列表顺序会与华为一致

🛡️ 数据安全

  • 脚本仅在浏览器本地运行,不连接任何第三方服务器
  • JSON 文件保存在本地磁盘,建议迁移完成后加密备份或删除

七、结语

通过油猴脚本实现华为备忘录到小米笔记的迁移,本质上是一次跨平台 DOM 自动化工程。它充分利用了现代网页编辑器的可访问性,将数百次重复的人工操作压缩为一次点击。
如果你有一定的前端基础,还可以基于这个框架二次开发:

  • 增加标签/文件夹映射
  • 转换 Markdown 格式
  • 接入其他笔记平台(如 Notion、Obsidian)

技术让数据自由流动,而不应被生态壁垒囚禁。


作者注:脚本基于华为云备忘录网页版(2026)与小米笔记 H5 版(2026)编写。若后续官方更新 DOM 结构,可通过浏览器开发者工具(F12 → Elements)比对类名后微调选择器。

纪小年

Jing

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理