乐于分享
好东西不私藏

超好用知识管理AI工具:Obsidian+flomo一键双写 智能笔记/IOS快捷指令

超好用知识管理AI工具:Obsidian+flomo一键双写 智能笔记/IOS快捷指令

IOS 快捷指令 OB+flomo笔记自动化工作流
# Obsidian # Flomo # 快捷指令 # 自动化
程律进化论
如果你也在同时使用 Obsidian 和 flomo,那么这篇文章值得你认真看下。
我花了一周时间,在 iOS 快捷指令里搓了一个笔记自动化工作流。
具体功能是这样的:复制一段文字,双击手机背面,等两秒,完事。
AI 会自动提炼标签,内容同时写入 flomo 和 Obsidian,排版完整保留。
整个过程不用切换任何 App。
写这篇文章是想跟大家聊聊:做这个东西的过程中,我踩了哪些坑,以及为什么一个看似简单的”复制粘贴”,底层其实没那么简单。
这个快捷指令能干什么
一句话:读到好内容 → 复制 →双击手机背面→ 自动完成”AI 打标 + 双端归档”。
具体流程:
第一步读取你刚复制的内容。
第二步把内容清洗成干净的 Markdown 格式。
第三步把清洗后的文本扔给大模型,让它提炼 1 到 3 个关键标签。
第四步把正文和标签同时发送给 flomo 和 Obsidian。而且两个笔记端收到的内容格式还不一样。
flomo 那边是带 #标签 的卡片,适合快速回顾;Obsidian 这边是带 YAML 属性头的 .md 文件,直接进入本地知识库的 Inbox,标签干干净净地躺在 Properties 里,等你后续做关联。
为什么要自己做工具?
起因是我一直有在阅读文章时,将一些好的内容保存到 flomo 的习惯。
通常我都是手动复制,打开 flomo,然后新建笔记,再粘贴保存。
直到最近开始学习用 Obsidian 做知识库,尝试了各种插件和工具,最后通过公众号“ Obsidian 助手“,实现了公众号导入 Obsidian 笔记的需求。
所以我就在想,这些碎片化的文章片段,能不能像“ Obsidian 助手“一样,一键保存到 flomo 里。
但是这也有个问题:
如果我想将一份内容,同时保存到 flomo 和 Obsidian 笔记里的话。
同一段内容,我得复制两次,切换两个 App,手动打两遍标签。
不仅阅读的心流断了,保存笔记的动力也没了。
这也太傻了。
所以我决定自己尝试找个方法,来实现自动化存储笔记片段的功能。
我问了 claude 和 gemini,都说通过快捷指令就能实现。
那就干。
(以下是一些踩坑记录,使用教程在后面)
踩坑记录:六个差点让我放弃的 Bug
这个工作流的最终版本大概有二十几个动作模块。跑通它花了我将近一周,因为”快捷指令 + API + 跨平台写入”这个组合,踩坑密度极高。
挑几个印象最深的记录一下,留个纪念。
坑 1:API 返回空白,但没有报错
这个症状很有意思,快捷指令跑完了,弹窗也出来了,但标签那一栏是空的。检查了半天网络、检查了 API Key,都没问题。
最后发现是 JSON 请求体里一个键名少打了一个字母。content 写成了 conte。 
一个非常低级的错误。
API 没有崩溃,只是静默地返回了一个空结果。这种 Bug 最折磨人了,因为它不报错,你只能逐字段排查。
这件事之后,我跟 gemini 沟通确立了一个原则:在快捷指令里构建复杂 JSON 时,必须用”模块化积木封装法”,把每一层字典单独建好再嵌套。
否则层级一多,肉眼根本审不出来哪里拼错了。就算是截图发给 gemini,它也不知道问题在哪。
坑 2:AI 生成的标签在 Obsidian 里”消失”了
这次大模型乖乖返回了 #股权纠纷 #对赌协议,我也确认写进了文件。
但打开 Obsidian 一看,Properties 里面是空的。 
查了很久才搞明白:YAML 语法里,# 是注释符号。AI 返回的 #标签 直接拼进 YAML 头部,Obsidian 会把整行当成注释,静默吞掉。 
早期我采用的妥协方案是把标签挪到正文末尾。但最终版用了正则表达式一刀切:先用 [^\s#]+ 把纯文字标签提取出来,再组装成 tags: [标签A, 标签B] 的 YAML 数组格式。
这下子就干净利落了,还不留隐患。
坑 3:中文乱码,苹果底层的”史诗级暗坑”
这个坑是整个开发中最难受的一个。
我为了保留原文的加粗、超链接这些排版信息,最初的想法是把富文本直接喂给大模型。
结果 Mac 端直接报 NSString 转换错误崩溃,iOS 端用系统自带的”从富文本制作 Markdown”功能,中文全部变成乱码。 
在 AI 协助下排查到最后,结论是:这是苹果系统底层的编码处理缺陷。富文本里的复杂数据包(字体、颜色、嵌入对象)会撑爆 JSON 的安全边界;而苹果的中文编码引擎在富文本转 Markdown 时存在断链问题。
没办法,再想解决方案。
后来定下来的是一套三步”洗码”流程,因为以 md 格式为核心,所以给这个快捷指令的版本代号叫了MD-Core。
核心逻辑是:
1.先把剪贴板内容转成 HTML(利用网页标签强行锁定 UTF-8 编码),
2.再把 HTML 转成富文本(滤掉危险的网页代码),
3.最后把富文本转成 Markdown。三次转换听起来绕,但因为出错太多了,为了求稳定,不得不将流程尽量都明确化,每一步都只解决一个具体的编码或格式问题。
最终的效果要求是,转完之后,不乱码,段落和加粗和链接都在。
坑 4:段落全部糊成一坨
期间有几次指令都跑通了,但是还不够完美。
因为在处理 flomo 端的显示问题时,我试过用”获取纯文本”来去掉 Markdown 的星号(**)。结果所有段落、所有空行全部消失,几百字挤成了一个巨型段落。 
核查后才发现,原因很简单,快捷指令在提取纯文本时,把换行符也一起抹掉了。
又经过几次尝试后,最终方案是:不再追求纯文本,让 flomo 和 Obsidian 统一接收 Markdown。
flomo 里虽然会显示 ** 星号,但段落清晰舒适,而且星号反而成了一种视觉锚点,回顾时能快速定位重点内容。
坑 5:删了一个”多余”的步骤,整个系统崩了
最后的一个坑,是在最后阶段精简流程时,我觉得有一个“设定变量”的动作是多余的,就删了。 
然后发现,保存进 Obsidian 和 flomo的内容,都变成了一堆二进制乱码。
经过排查后发现,原来快捷指令的 “设定变量” 不只是给数据起个名字,它还充当”类型锁定器”。
删掉之后,系统会把 Markdown 文本误判成二进制文件包。 
这样就又有了一个教训:在快捷指令里,”看起来没用”的步骤,很可能在底层承担着类型转换的关键任务。
不确定就别删,先注释观察。
为什么不直接用现成的自动化工具?
有人可能会问:Shortcuts 这么折腾,为什么不用 Zapier、Make 这些成熟平台?
两个原因。
第一,我的阅读大多是在手机端完成的,为了不破坏阅读体验,我希望转存的动作可以最小的打扰静默进行。
所以设计的这个工作流需要自动读取 iOS 剪贴板, Shortcuts 快捷指令能在系统层面原生做到。
第二,我不希望我的阅读笔记过第三方服务器。
内容从手机本地出发,调一次大模型 API,然后直接写入 flomo 和本地 Obsidian 库,链路越短越安全。
至于大模型的选择,目前我默认接入的是 DeepSeek,性价比高、中文理解准。
而API Key 是可选配置,不填的话工作流会自动降级为手动输入标签模式,核心的双写功能并不受影响。
获取方式及使用说明(三分钟配完)
获取方式:
关注公众号「程律进化论」,后台私信关键词 “双写“。
然后你会收到一个 iCloud 安装链接,点击后就可以直接导入到你的手机。 
配置过程很简单,不需要写代码,做三道填空题就行。
下面是具体的配置步骤:
(1)配置第一项:flomo Webhook 链接。

1. 开启 flomo 的“传送门” (API 链接)

  • 获取路径:打开 flomo 官网或 App ➡️ 点击“设置” ➡️ “账号详情” ➡️ “API ”。

  • 操作:复制那串以 https://flomoapp.com/i/webhook/... 开头的专属链接。

  • 填写位置:安装快捷指令时,在弹出框中粘贴此链接。

(2)配置第二项:Obsidian 库名称。

为了确保笔记能精准存入你的本地库,请核对以下信息:

  • Vault 名称:这是你 Obsidian 仓库的名字(例如:我的库名叫 Work,就填 Work)。

  • 文件夹路径:快捷指令默认将笔记存放在 Inbox 文件夹中。请确保你的仓库根目录下有一个名为 Inbox 的文件夹(首字母大写)。

  • 注意:如果你的库名或路径填写错误,快捷指令会提示无法找到文件。

  • 如果你没有 Inbox,手动建一个就行。
  • 如果想要将笔记保存到指定文件夹,也可以手动设置。
(3)配置第三项(可选):获取Deepseek API Key。
  • 获取路径:登录DeepSeek 开放平台➡️ 点击左侧“API Keys” ➡️ “Create new secret key”。

  • 操作:创建并复制生成的 Key(注意:Key 只会出现一次,请妥善保存)。

  • 填写位置:安装快捷指令时,在弹出框中粘贴此 Key。

  • 提示:DeepSeek 目前性价比极高,充值几元钱即可支撑数万次的打标需求。

  • 填了就有 AI 自动打标;不填就手动输入,工作流照样跑。

这里需要注意的是:
1.如果使用Deepseek的API,上面的地址不要动;
2.点击蓝色的“URL”链接;
3.仅修改“sk-13”开头的Deepseek的API,“Bearer”和“sk”之间有一个空格,不要误删了。
(4)推荐触发方式:
把快捷指令绑定到 iOS 的”轻点背面两下”(设置 → 辅助功能 → 触控 → 轻点背面 → 轻点两下 → 选择“双写flomo+OB”),或者放进控制中心的悬浮球。
(5)极致静默方式:
如果不想在转存时,看到手机桌面弹出的“标签”提示框,可以将快捷指令中的“显示‘最终标签’提醒”删除,则以后始终都是静默保存。
(6)AI提示词修改方式:
如果不想让AI仅有打标签功能,比如想让AI做智能总结,则可在下方图片中显示的快捷指令中,修改相应的prompt即可。
(7)最后效果和选择
如果选择“直接保存”,则无标签;
如果选择“加标签后保存”,则弹出标签填写框,需要手动填写标签;
如果选择“AI智能打标并保存”,则弹出AI撰写的标签,确认后自动写入笔记。
写在后面
为什么要写这篇文章呢。
是因为我觉得,对我来说,做这个工具的过程比结果本身更有价值。

我的目标实现了:从源头起,把”捕获-保存”这个动作的阻力降到接近于零。

自己亲手一步步将工具打造出来,既快乐,也满足。
这是我制作的第一个快捷指令。
如果你在使用过程中遇到问题或者有改进想法,欢迎在评论区或私信留言反馈。