Flomo Extension 如何保存到 flomo:真实流程与故障排查
作者:Flomo Extension · 发布于 · 更新于
Flomo Extension 的保存方式与“输入 API 地址后直接提交”不同。当前版本依赖一个已经打开并登录的 flomo 网页标签:扩展把草稿交给该页面中的内容脚本,再由内容脚本操作 flomo 网页编辑器。
理解这条链路后,“为什么按钮是灰色”“已经打开 flomo 仍然提示失败”“看到成功动画但暂时找不到笔记”等问题会更容易定位。
本文核对的是 Flomo Extension 1.20.0 源码,时间为 2026 年 8 月 1 日。flomo 网页结构变化可能影响后续版本;本文不是 flomo 官方故障说明。
保存前需要满足的三个条件
1. 当前窗口中打开了 v.flomoapp.com
扩展弹窗打开时,会在当前浏览器窗口查询 *://v.flomoapp.com/*。如果没有找到,页面会显示“请先点击底部的【打开 flomo 页面】并完成登录”,保存按钮也会被禁用。
点击底部“打开 flomo 页面”后:
- 已有匹配标签页时,扩展会尝试切换到它;
- 没有匹配标签页时,会新开
https://v.flomoapp.com。
如果 flomo 打开在另一个浏览器窗口,当前弹窗仍可能判断为未打开。先把 flomo 页面放在准备使用扩展的同一窗口中,是最直接的排查方法。
2. flomo 网页本身已经登录
flomo 页面内容脚本会读取该页面本地存储中的 me 数据,并检查是否存在用户名称。检查失败时,页面会显示“保存笔记失败,请先登录 flomo”。
这里检查的是 flomo 官方网页的登录状态,不是扩展底部显示的 Flomo Extension 账户状态。两个账户分别承担不同职责:
| 状态 | 用途 |
|---|---|
| flomo 网页登录 | 让当前网页有权限保存笔记到用户自己的 flomo 账户 |
| Flomo Extension 登录 | 识别扩展套餐和使用次数 |
只登录其中一个,不能替代另一个。
3. flomo 页面处于能找到编辑器的界面
内容脚本会查找 #fl_editor,再在其中查找 .tiptap.ProseMirror 编辑区域。找不到时,当前版本会提示用户在 flomo 首页点击“全部笔记”;确认提示后,页面会跳转到 https://v.flomoapp.com/mine。
因此,登录后停留在某些没有主编辑器的页面,也可能无法保存。先进入“全部笔记”并等待编辑器完整加载,再重新打开扩展。
点击“保存 flomo 笔记”后发生什么
当前源码的完整顺序如下:
- 扩展检查编辑器内容不为空;
- 检查与 flomo 标签页的通信端口是否存在;
- 根据扩展账户套餐和本地当日计数判断能否继续;
- 把黄色背景标记从编辑器样式转换为
<mark>; - 将 HTML 草稿发送给 flomo 页面内容脚本;
- 内容脚本检查 flomo 页面登录状态;
- 查找 flomo 编辑器并聚焦;
- 构造
text/html粘贴事件,把草稿放入网页编辑器; - 查找 flomo 网页中的保存按钮并触发点击;
- 页面脚本向扩展弹窗返回结果。
当弹窗收到正向结果时,会清空本地草稿、增加当日使用计数,并显示庆祝动画。
一个重要边界:正向结果不等于已验证服务端写入
当前页面脚本在找到保存按钮并触发点击后,就返回 true。它没有继续等待 flomo 的网络请求完成,也没有查询笔记列表确认新笔记已经出现。
因此,扩展中的“成功”更准确地表示:
草稿已经写入 flomo 网页编辑器,并且保存按钮的点击事件已经触发。
它不等同于对 flomo 服务端最终保存结果的独立确认。网络中断、flomo 页面自身报错或网页结构变化,仍可能发生在点击之后。对于重要笔记,尤其是首次使用或网络不稳定时,应回到 flomo 页面确认笔记已经出现。
由于弹窗收到 true 后会清空本地草稿,重要内容在点击保存前最好先复制一份。这个限制不是用户操作错误,而是当前确认机制的能力边界。
按提示文字排查问题
| 看到的现象或提示 | 源码对应的判断 | 建议操作 |
|---|---|---|
| 保存按钮为灰色 | 当前窗口没有查到 v.flomoapp.com |
点击“打开 flomo 页面”,完成登录后重新打开扩展 |
| “请先打开 flomo 页面……” | 弹窗与页面的通信端口没有建立 | 确认在同一窗口,刷新 flomo 页面,再关闭并重新打开扩展弹窗 |
| “保存笔记失败,请先登录 flomo” | flomo 页面本地登录信息中没有用户名称 | 在 flomo 网页完成登录,不是只登录扩展账户 |
| “找不到 flomo 编辑框” | 没找到 #fl_editor 或内部编辑区 |
进入“全部笔记”,等待页面加载完毕后重试 |
| “找不到 flomo 保存按钮” | 没找到当前代码依赖的保存按钮选择器 | 刷新 flomo 页面后重试;仍失败时记录页面与时间并反馈 |
| “笔记保存失败,请打开 flomo 页面查看原因” | 页面脚本返回了 false |
切换到 flomo 标签页查看登录、编辑器或弹窗提示 |
| 标签按钮不可用 | 没有从 flomo 页面读到置顶或全部标签 | 确认 flomo 页面已加载标签列表;也可以直接手动输入 #标签 |
| 免费次数或套餐过期提示 | 扩展根据本地日期、计数及账户套餐阻止本次发送 | 核对的是扩展套餐,不是 flomo 官方会员 |
推荐的恢复顺序
当保存链路失效时,按下面顺序处理,可以减少反复操作:
- 先备份草稿。 在扩展编辑器中全选并复制重要内容;
- 确认窗口。 把
v.flomoapp.com与当前扩展放在同一个浏览器窗口; - 确认 flomo 登录。 在网页中查看自己的笔记列表,而不是只看到登录页;
- 进入“全部笔记”。 确保主编辑器可见并完成加载;
- 刷新连接。 刷新 flomo 页面,随后关闭并重新打开扩展弹窗;
- 用短文本测试。 先保存一条可删除的测试内容;
- 在 flomo 中核对。 确认新笔记真实出现后,再保存重要草稿。
不要连续快速点击保存。当前代码没有通过服务端笔记 ID 做幂等校验,重复触发可能形成重复内容;本次核验也没有对快速连续点击做兼容性测试。
为什么刷新页面后要重新打开扩展
扩展弹窗与 flomo 页面之间使用标签页端口通信。刷新 flomo 页面会销毁旧页面中的内容脚本,原有端口也会断开。新页面加载完成后,需要重新打开扩展弹窗,让它使用当前标签页 ID 建立新的连接。
同样地,如果 flomo 标签页被关闭、页面脚本尚未加载完成,或标签页 ID 已经变化,弹窗保存前检查与实际连接状态可能不同。重新打开弹窗不是清除数据,而是重建通信链路;本地草稿通常仍由 storage 保留。
标签读取为什么也依赖 flomo 页面
扩展的标签菜单不是从 Flomo Extension 服务器获取。页面内容脚本会从当前 flomo 页面 DOM 中读取置顶标签和全部标签,去重后发送给弹窗。
这带来两个边界:
- flomo 页面未打开或尚未加载标签时,扩展拿不到列表;
- flomo 修改页面结构后,旧版选择器可能暂时失效。
即使标签菜单不可用,编辑器仍可以手动输入 #标签。标签无法加载与笔记正文无法保存并不一定是同一个故障。
什么时候应该反馈问题
完成上述恢复步骤后仍然失败,反馈时请提供:
- Flomo Extension 版本;
- 出现问题的日期和大致时间;
- 浏览器中看到的原始提示文字;
- flomo 页面当时是否已登录、是否能看到“全部笔记”编辑器;
- 问题发生在连接、粘贴内容还是点击保存之后;
- 去除邮箱、笔记正文等敏感信息后的截图。
不要提交 flomo 密码、Google 令牌、邮箱验证码或包含私人笔记的完整截图。
核验范围与版本
本文由 Flomo Extension 项目于 2026 年 8 月 1 日依据版本 1.20.0 源码整理。核验范围包括弹窗编辑器、标签页连接、flomo 页面登录检查、DOM 编辑器定位、HTML 粘贴、保存按钮点击和本地草稿清理。未进行 flomo 服务端日志核对,也没有把页面按钮触发等同于服务端成功。
需要了解权限与账户数据边界,可继续阅读《Flomo Extension 权限与数据流》;首次安装流程见使用指南。