obsidian探索小记(三)——与flomo笔记的联动
对obsidian笔记软件的继续探索。
零、背景
flomo笔记 是一款简洁的闪念笔记记录软件,由两位互联网资深创业者刘少楠(少楠)与刘白光(Lightory)合作开发。两位作者先前共同打造过二手书漂流网站“摆摆书架”,现在他们的团队除了flomo笔记以外还有两款产品:幕布大纲笔记和付费专栏工具“小报童” 。
和一般的笔记思路不同,flomo采取的是一种“闪念笔记”的思路。说人话,就是你走在路上,突然蹦出来一个点子,这个点子你感觉很有价值却不知道记在哪里合适,此时flomo的应用场景就出现了。如下图,flomo的笔记记录以卡片为单位(被称为"MEMO"
),支持富文本格式和图片插入,此外各条笔记之间还可以通过 tag
进行联动。
那么这样的笔记软件在何时有用呢?一种场景就是前面提到的“走在路上,突然蹦出来一个点子”。而flomo提供的tag
系统和数据统计插件(如下图),也可以帮助我们回顾自己的点子,这或许是另外一种应用场景。
本文主要从obsidian -> flomo
和 flomo -> obsidian
两个方面开展介绍。
一、flomo的注册与配置
1. 注册
根据flomo团队的设计理念(参考《一个笔记服务的长期主义》),flomo笔记的设计一切从简,包括注册和登录界面。因此,与绝大多数软件服务不同,flomo现在支持的登录(和注册)方式较少,只有邮件登录、短信验证码登录和微信登录三种。
如果没有账号,可以在 https://v.flomoapp.com/register 上进行注册,完成登陆后将进入主界面。主界面内容相当简洁,左边是各种统计面板和 tag
的列表,右边则是MEMO
的编辑框和之前记下的各种MEMO
记录。
可以直接在网页端使用flomo记录笔记,也可以使用flomo的app或微信服务进行笔记记录。flomo还提供了上传API ,允许第三方软件开发者通过POST
的方式将笔记上传到flomo中。
(然而很不幸的是,上传API只有会员账号能用,而会员账号一个月要15块钱呢!如果没有会员账号的话,第二节的内容可以全部跳过了——这部分内容需要API😢)
2. API
如何找到这个API呢?方法很简单。点击网页左上角的用户名按钮,在弹出菜单中选择API & Plugin
选项,就能在MEMO API界面中查看到自己的API。
MEMO API界面如下图。注意两点:
- (1)非会员用户也有自己的API,但是无法使用。(因此为了正常使用这一功能,建议冲个VIP?不过,好像完成任务或者邀请好友也能获得VIP天数)
- (2)这个API可以被任何人、任何软件使用,因此为了自己数据的安全,不要轻易泄露API字符串。
3. 在自己的程序中使用API(非obsidian联动必须)
为了说明这个API的原理,我们可以写一个简单的小程序使用这个API(代码中的API
变量需要手动修改为自己的API):
1 | #!/usr/bin/env python |
程序与网站API交互的方式主要有两种: GET
和 POST
。前者将要上传的内容明文存储在URL字符串中,包括百度翻译API在内的许多网站都使用的是这种方法。而后者将要上传的内容存储在POST payload中,其对于使用者来说是不可见的,网站在收到POST请求后会处理POST payload,这也是flomo笔记API所采用的方法。POST方法可以上传的数据量更大,并且在网站设计规范中也推荐使用POST上传大批量的数据。
如上述代码所示,我们将要上传的笔记内容转换为一个json结构体,然后将其附在对flomo API的post请求中,即可实现上传。
测试指令:
1 | python flomo-api-demo.py 这条记录上传自命令行 #computer/api |
运行结果如下,则说明API正常。
1 | ~$ python flomo-api-demo.py 这条记录上传自命令行 #computer/api |
同时,在网页端我们也能看见这条笔记的信息。
基于这一原理,可以实现笔记从任何第三方软件上传到flomo笔记当中。
二、配置obsidian -> flomo
这一部分需要flomo的API。
在obsidian中,需要安装一个插件 Obsidian to Flomo
。在应用内的插件市场搜索Obsidian to Flomo
即可搜到。
打开 Obsidian 的偏好设置,找到第三方插件,选择社区插件市场,即可搜索Obsidian to Flomo
。搜索之后点击安装即可。安装完成后,启用这一插件。
在插件启用之后,我们点击选项按钮,到达插件的配置页面。在这里,需要填写我们的flomo API。获取flomo API的方法见前文。
之后,点击“Send a test request”测试,如果看到成功发送到提示,就表示配置成功。回到 Flomo笔记中,还可以看到测试发送的内容,这条内容删掉即可。
如何使用这个插件呢?其实很简单。如下图所示,在 Obsidian 中打开一个文件,然后打开命令面板或快捷键 command
+ P
,输入obsidian to flomo
,选择“发送当前内容至Flomo”(Send current content to Flomo)即可。这样,就可以将一条笔记同步到flomo中。
如果不想同步整篇笔记,还可以先选中部分文字内容,然后在obsidian命令面板里面选择“发送选中的内容至Flomo”(Send selected content to Flomo)即可。
打开flomo,就可以看到上传的笔记。可以对这些笔记进行编辑,添加标签,修改其中的段落,或者在不同的MEMO之间建立关联。
三、配置flomo -> obsidian
很遗憾,这一部分内容我探索的还不够多,所以能写的也很少。不过确实有插件支持flomo -> obsidian
的笔记导出。
由于API限制,目前flomo仅支持从API导入笔记,并不支持从API中批量导出笔记。flomo仅支持一键批量导出到HTML(在用户名 -> Account -> Data synchronization
页面中,如下图),这种方式并不灵活,在导出后如果笔记有更新,还需要重新进行手动导入导出以同步笔记。
我也曾试过使用网页调试器进行分析,以期找到对flomo笔记的爬虫方法,但一无所获。
所以,现在只有一键导出到html这一种方法允许我们进行探索。
在obsidian上,有一款插件名为 Flomo Importer
。这款插件可以从flomo导出的html笔记中导入obsidian。在obsidian的插件商城中搜索插件名称即可进行安装。
安装完成后,在obsidian的左侧工具栏会出现Flomo Importer的图标(如下图红框所示)。
点击这个按钮,会进入Flomo Importer的界面,它提醒我们选取一个文件,从这个文件中导入数据。其他的一些选项保持默认就行。
如此,可以将flomo的笔记导入obsidian。
flomo笔记的产品思路很独特,感觉未来还能继续探索探索。
以上。