[Quicker 动作]通过 Quicker 进一步增强简悦 Markdown 定制化导出到 Obsidian 流程 #3224
1wingedangel
started this conversation in
服务
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
众所周知,简悦扩展面对高级账户用户提供了增强导出功能,使得我们可以快捷方便地把我们看到的文章以及标注以 Markdown 的形式保存在本地的文件夹中。简悦扩展的开发者同时也是一个双链笔记爱好者,所以与此同时也提供了深度定制的功能以供用户根据自己的需求进行定制。
但是用户(其实是我)的需求是非常多样的,定制模板可能也满足不了用户(其实是我)的日常需求,所以我会通过一系列的 Quicker 脚本来对简悦扩展导出的 Markdown 文档再进一步地进行修正和补充,比如之前发布的 Quicker 脚本如下载远程图片后替换为本地位置以及离线图片替换。
今天,我准备分享一个 Quicker 脚本用于更进一步地增强定制由简悦扩展导出的 Markdown 格式文本到 Obsidian。我先声明一下:该脚本需要使用我定制好了的简悦的 Markdown 定制模板以及 obsidian 的第三方插件设置,请你在使用该脚本之前根据自己的需要调整一下脚本。
脚本思路
主要思路非常简单,是通过简悦扩展的
复制Markdown到剪贴板的功能把标注或是文章以 Markdown 形式复制到剪贴板,由 Quicker 获取剪贴板内容之后,对里面的内容进行修改之后,在把它通过Obsidian-Advanced-URI插件传给 Obsidian 创建笔记。由于在 Windows 环境中,URI 的长度是有限制的(经过简单实验大概是 5000 字符左右),所以我采取了逐行进行转换添加的过程。相比通过简悦扩展的增强导出功能,有以下好处:Obsidian-Advanced-URI的话,便可直接新建 Markdown 文档到 Obsidian 的 Vault 中,并且能够自己定制放在哪个路径下。备注来充当这篇文章的Shortname的角色,摘自标题且能用于精确描述这篇文章的主要内容。通过 Quicker 脚本,即可实现如果在备注里写了Shortname,导出时 markdown 的文件名为该Shortname,如果没有的话才使用文章的标题。Obsidian-Advanced-URI直接根据 GUID 生成指向该笔记的永久链接,使其不再受限于 Obsidian Vault 的相对目录位置。当然,如果导出的 markdown 文档开头没有 Frontmatter 段落,则自动生成一段 Frontmatter。准备工作
脚本安装
脚本地址:https://getquicker.net/Sharedaction?code=0832cd11-df2a-45f2-028e-08d9bb767db8
安装过程请参考相关文档。
简悦扩展的 Markdown 导出模板
这里先放出我的 Markdown 导出模板:
简悦的导出模板其实有一些细微的限制,需要注意一下:
{{#each}}下方和{{/each}}上方加了多少行空行,实际导出时每一条标注之间是没有空行的。{{>|an_html}}之后会强制放一个空行。所以当你的标签使用了这个格式,后面就最好不要追加其他文本内容,他们会显示在下一行。所以在我的模板里,{{>|an_html}}和^{{an_id}}之间没有空行。实际上牵涉到通过此 Quicker 脚本修改的内容部分为这几个位置:
title和aliasDate:段落除了上述的内容必须格式固定之外,其他内容的修改应该不会影响脚本的运行。
第一次运行
第一次运行时需要指定:
notes/04-Articles。末尾不能有/。这些内容将会以状态的形式保存在本地的
c:\Users\yourusername\AppData\Local\Quicker\states\的相应动作 id 的 json 文件中。如果要从外部进行修改,修改后要重启 Quicker 才能生效。如果遇上第一次运行错误退出,请尝试再运行一次。
运行脚本
运行脚本时,会根据你的剪贴板的内容,会出现对话框提示你输入 markdown 的笔记名称。
title和alias属性。此时提示你输入笔记名称的输入框的默认值为alias值或者是title值。当你alias值不为空,则使用alias;否则为title值。然后你就可以慢慢等待 markdown 文章的生成了。(途中不小心按到鼠标右键不过不影响脚本运行)
mhu96jSzlx.mp4
脚本修改的内容
在这里,我详细说明一下本脚本所修改的内容。除了根据 Frontmatter 智能识别 title 之外,此脚本对一些从个人角度感觉简悦的模板定制化不够满意的地方进行了优化和修正。
每个标注前面都加上一个空行
就如上面所说,无论你在
{{#each}}下方和{{/each}}上方加了多少行空行,实际导出时每一条标注之间是没有空行的。如:这样的模板,最后做出来是:
所以当我在逐行进行文本转换的时候,根据判断行首是否有
##,有的话在前面加一个换行符的 unicode 码%0A。最后出来的效果是:替换日期格式
你们可能发现了我模板上有这么一条:
在这里,我们的标注日期是默认的格式,即
yyyy年mm月dd日 hh:mm:ss。看过简悦的定制化文档的人可能注意到了,如果用{{date_format|now|yyyy-MM-dd hh.mm:ss}}的话,仅可在全局或标注中使用一次且此标识后必须要加一个空格。为了让 Obsidian 和 Logseq 能够识别出日期标识并和 Journals 进行关联,我们需要弄成诸如[[yyyy-mm-dd]]的形式,如果我需要在多个地方使用日期的标识并且需要更灵活的定制性,我们就可以通过 Quicker 脚本在逐行转换途中通过正则提取出日期信息,然后再整合成我想要的日期格式:写在最后
当然,除了我以上列的几个需求之外,应该还会有一些其他的不一样的玩法,比如
{{tags}}的进一步定制化、原始链接中选中文本部分的 base64 解码等,我就不展开了有兴趣折腾的就花点时间折腾吧。这也算是纯文本笔记系统的优势之一吧,只要有一个快捷方便的文本处理自动化软件,就能让笔记系统扩展性更高,写作更加自由。
Beta Was this translation helpful? Give feedback.
All reactions