在网上照抄了各种各样的网页剪藏方案, 最后选择了一种比较方便的办法:
toure00/org-capture-tag-bookmark
他这个方法是利用油猴脚本提取网页上选中的文字,再用org-capture的模板,保存在一个文档中.
油猴脚本链接在这儿:
模板在这儿:
(setq org-capture-templates
`(("pb" "Protocol Bookmarks" entry (file+headline org-agenda-file-web "Bookmarks")
"* %U - %:annotation %:initial" :immediate-finish t :kill-buffer t)
("pn" "Protocol Bookmarks" entry (file+headline org-agenda-file-web "Notes")
"* %U - %:annotation %:initial" :immediate-finish t :kill-buffer t))
======
现在的问题是:
因为开始用org-roam了, org-roam的特点是很多文档根据相关性互相联结.
于是, 希望每一次从网上剪藏的内容, 单独保存在一个独立的文档中, 文档名是在保存前手输的内容. 比如说, 保存脚本的文档, 就叫"剪藏脚本.org", 保存模板的文档就叫"剪藏模板.org", 而不是把所有剪藏的内容保存在一个文件中, 没办法发挥org-roam的优势了.
这样保存信息, 还有个好处: 在天长月久的信息积累过程中, 可以把相同的信息, 保存在一个文档中. 比如说剪藏脚本, 以后有新的发现, 又可以添加在"剪藏脚本.org"的后面.
那么, 这个模板应该如何写呢? 找了好多地方, 不得要领. 请大佬施予援手, 指点指点. 多谢多谢…
1 个赞
https://www.orgroam.com/manual/Template-Walkthrough.html#Template-Walkthrough
https://www.zmonster.me/2020/06/27/org-roam-introduction.html#orgec47e48
看你的意思是打算从网上抓取后直接做成roam笔记?org-roam的capture可能会符合你的要求。
如果续用原来的template,就可能要自己写函数了
(defun my-create-notes-file ()
"Create a notes file."
(interactive)
(let ((name (read-string "Filename: ")))
(expand-file-name (format "%s.org"
name) "Your Dir")))
(setq org-capture-templates
`(("pb" "Protocol Bookmarks" entry (file my-create-notes-file)
"* %U - %:annotation %:initial" :immediate-finish t :kill-buffer t)
("pn" "Protocol Bookmarks" entry (file my-create-notes-file)
"* %U - %:annotation %:initial" :immediate-finish t :kill-buffer t))
这个不知道符不符合你的要求
像上面博客一样直接javascript书签就可以了,
javascript:location.href='org-protocol://roam-ref?template=a&ref='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&body='+encodeURIComponent(function()%7Bvar%20html%20=%20%22%22;var%20sel%20=%20window.getSelection();if%20(sel.rangeCount)%20%7Bvar%20container%20=%20document.createElement(%22div%22);for%20(var%20i%20=%200,%20len%20=%20sel.rangeCount;%20i%20%3C%20len;%20++i)%20%7Bcontainer.appendChild(sel.getRangeAt(i).cloneContents());%7Dhtml%20=%20container.innerHTML;%7Dvar%20dataDom%20=%20document.createElement('div');dataDom.innerHTML%20=%20html;dataDom.querySelectorAll('a').forEach(function(item,%20idx)%20%7Bconsole.log('find%20a%20link');var%20url%20=%20new%20URL(item.href,%20window.location.href).href;var%20content%20=%20item.innerText;item.innerText%20=%20'%5B%5B'+url+'%5D%5B'+content+'%5D%5D';%7D);%5B'p',%20'h1',%20'h2',%20'h3',%20'h4'%5D.forEach(function(tag,%20idx)%7BdataDom.querySelectorAll(tag).forEach(function(item,%20index)%20%7Bvar%20content%20=%20item.innerHTML.trim();if%20(content.length%20%3E%200)%20%7Bitem.innerHTML%20=%20content%20+%20'&%2313;&%2310;';%7D%7D);%7D);return%20dataDom.innerText.trim();%7D())
(use-package org-roam-protocol
:after org-protocol)
另外设置对应的 org-roam-capture template:
org-roam-capture-ref-templates
'(("r" "ref" plain (function org-roam-capture--get-point)
"%?"
:file-name "notes/${slug}"
:head "#+title: ${title}\n#+roam_key: ${ref}\n\n"
:unnarrowed t)
("a" "annotation" plain (function org-roam-capture--get-point)
"${body}\n"
:file-name "notes/${slug}"
:head "#+title: ${title}\n#+roam_key: ${ref}\n\n"
:immediate-finish t
:unnarrowed t
:empty-lines 1))
1 个赞