Skip to content
On this page

Obsidian_快速剪藏


标签:Obsidian/basic  

URI Scheme

可以通过 URI Scheme 的方式对 Obsidian 快速创建笔记。

有关的官方的文档:Using Obsidian URI - Obsidian Help

bookmarklets

可以通过浏览器快捷收藏栏的方式运行 JavaScript 代码。

这是一个生成小书签的工具:Create bookmarklets online (js.do)

快速剪藏

通过以上两个功能组合,就能够完成对网页的快速剪藏。

以下是一个自己写的剪藏的脚本:

js
(function () {
  /* vault */
  var vault = "Notebook"; 

  /* folder: 保存的文件夹 */
  var foler = "inbox";

  var baseURI = "obsidian://new?";
  var title = document.title;
  var url = document.location.href;

  var date = new Date();
  var day = date.getDay();
  day = day < 10 ? '0' + day : day;
  var month = date.getDate();
  month = month < 10 ? '0' + month : month;
  var year = date.getFullYear();
  var time = year + '-' + month + '-' + day;

  var template = "" +
    "---\n" +
    "title: \"" + title + "\"\n" +
    "created: \"" + time + "\"\n" +
    "modified: \"" + time + "\"\n" +
    "tags:\n" +
    "  - 剪藏\n" +
    "---\n" +
    "\n" +
    title + "\n" +
    "\n" +
    "source: " + url + "\n";

  console.log(template);

  var completeURI = baseURI +
    "vault=" + vault +
    "&file=" + foler +"/" + title + 
    "&content=" + template; 
  window.location.href = encodeURI(completeURI);
})();

最上面 Notebook 改成自己的 vault 名称,inbox 改成自己的文件夹名称(或者删除就是保存根目录),粘贴到Create bookmarklets online 测试 + 生成,然后把标签拉进收藏夹栏就行了。可以在模板 template 变量里修改自己的标签。

运行效果

img/202304061927.gif

类似脚本

Update 2023-04-06:发现一个类似的脚本 github gist ,它还提供了选中内容的保存,但是因为需要导入 html 转 markdown 的 turndown.js 模块,所以速度和成功率(尤其是国内网络)会差一点。但是是个很好的参考,我到时候更新下脚本,让它支持保存选中内容(纯文本,非转 markdown)。


2023-04-08 Update

今天更新了一下脚本obsidianclipper.js,抄了上面那个脚本的代码,但是直接引入了 trundown 的源码,所以可以超快地完成剪藏。如果没有选中任何内容,剪藏的还是和之前一样。

但是:

1,文件非常地长,最好 Uglify 一下,我用了UglifyJS 3: Online JavaScript minifier (skalman.github.io)

2,也发现了自己的脚本的一个 bug -- 没有处理特殊的标题名称里的字符,导致一些标题包含特殊字符(例如:)的页面因为创建文件失败而剪藏失败(这个问题不难,明天修一下)。

3,因为是使用 uri scheme 创建笔记的,所以如果 markdown 带链接,会导致创建失败或者内容错误。可能需要在发送 markdown 前预处理一下链接。(先试一下去掉 https:// 这样的协议名头 split("https://").join(""))。


2023-04-09 Update

今天修改了obsidianclipper.js,基本上就是这个 gist 的拷贝粘贴,但是还是把 import 模块去掉了,改用压缩的模块源码。实际上根本不是什么网络问题,而是很多的网站屏蔽了浏览器对第三方域名的 js 的请求(可能是出于安全考虑,特别是那些登录了账号的网站)。

另外笔记没有创建成功和 https:// 这种字符无关,而是我之前没有转换 # 字符,使得 Obisidian 认为它是 URL 的锚点,所以没有读取它后面的内容。

还有一个点会造成失败是 Obsidian 接收的 URL 的长度有限制,只有 2048 字节,不过上面那个脚本的作者已经帮我们处理好了,剪藏会按照尽可能多的字符保存。

Last updated: