{"body":{"post":{"id":"480h514w256a6i336s05","createdAt":"2022-10-09T00:46:07.863Z","updatedAt":"2022-10-09T00:46:43.993Z","title":"笔记系统组织思路 2022.10","content":"---\ncreated: 2022-10-09 07:31:07\nupdated: 2022-10-09 07:31:07\naliases: Note/Think-about-note-3\ntags: \n  - Note/Note\n  - Note/Obsidian\n  - Published\n---\n## 文件夹结构\n\n```\n/\n|--assets         < 资源\n|--Inbox          < 收集 ---- 待整理，无需整理的的动态内容\n|  |--List        < 列表\n|  |--WebClipper  < 剪报\n|--Notes          < 笔记 ---- 已归档\n|  |--Article     < 文章\n|  |--Knowledge   < 知识\n|  |--Life        < 生活\n|  |  |--Log      < 日志 ---- 碎碎念归档\n|  |--Note        < 笔记\n|  |--Snippet     < 代码\n|  |  |--snippets < VS Code 代码片段（mklink）\n|  |--Software    < 软件\n|  |--Work        < 工作\n|--Templates      < 模板\n```\n\n忽略资源（assets）和模板（Templates）两个文件夹，整体被分为两大块：收集（Inbox）和归档（Notes），内部都是接近平铺的简单结构。\n\n- Log 是用 QuickAdd 自动添加的碎碎念，所以独立给了一个文件夹。\n- snippets 是连接（mklink）了 VS Code 的代码片段，来实现同步备份。\n\n虽然三层结构，但我坚持认为整理的思路是“平铺”。\n\n## 笔记流程\n\n记录（Inbox） ---> 整理（Notes） ---> 回顾（笔记漫游）。\n\n## 分类\n\n文件夹只是粗分类，因为一个内容同属于多个分类（不同分类标准）是很合理的。\n\n一个可选的方法是用“别名”（aliases），思路上非常顺畅，可以理解为虚拟文件路径，但实际应用起来麻烦也很多。\n\n我目前的方法是用标签进行分类，这样很整齐，不过标签看起来有点长。这个方案不是最终结果，不过在 Obsidian 中用 [Tag Wrangler](https://github.com/pjeby/tag-wrangler) 插件后期修改起来很方便，所以即便这只是中间方案，也是很好调整的。\n\n## 索引页\n\n标签面板的纯列表并不适合组织标签，虽然有了层级以后看起来易读性高了一些，但是某个分类中如果标签较多，依然是乱的，除非弄成多层树状结构，但那样标签书写出来的复杂度又有点高（难看）。所以做了一个索引页，登记和归类所有的标签。\n\n效果大概是这样：\n\n![TagsIndex](https://global.cdn.blingwang.cn/2022/10/09/634213fe4ee64.jpg)\n\n每个列表项代表了一种分类方法。底部的一些其实同属于标记类，但是感觉实在没必要再加一个 Mark 标签了，所以就简单罗列了一下，后期根据情况再调整。\n\nKW 标签下是一些补充关键字，因为有时候笔记本身没有这些关键字，为了优化搜索，用这种方式进行添加。（也是目前还没想到更好的方法\n\n这种标签法虽然复杂了一些，但也避免了一些歧义，比如：`Software/Game` 是说我记录的软件里面的游戏类别，而 `Game` 则是我玩游戏时的一些相关笔记（玩游戏都记笔记，也是……）。\n\n## 查询\n\n为了整理方便，在索引页下面加了两个查询（借助 DataView 插件）：\n\n一个是无标签页面，这样就知道有哪些笔记是还没整理的：\n\n```js\n// 获取所有无标签页面\nlet pages = dv.pages().where(b => b.file.folder!=='Templates' && !b.tags);\n\n// 输出标题\ndv.header(2, \"无标签笔记 - \"+pages.length)\n\n// 输出笔记列表\ndv.list(pages.file.link);\n```\n\n一个是未被索引的标签（没有登记在上面列表中）：\n\n```js\n// 获取当前页面中所有标签\nconst IndexTags = dv.current().file.etags;\n// 查询所有包含标签的页面\nconst pages = dv.pages().where(b => b.tags && b.tags.length);\n// 准备一个标签对象\nconst tags = {};\n// 便利所有标签，并计数\nfor(let t of pages.file.tags){\n  if(IndexTags.indexOf(t)===-1){\n    tags[t] = tags[t] ? tags[t]+1 : 1\n  }\n}\n// 准备一个标签数组\nconst tagsList = []\n// 将标签整理后存入数组\nfor(let t in tags){\n  tagsList.push(t+' '+tags[t])\n}\n// 输出标题\ndv.header(2, \"未索引标签 - \"+tagsList.length)\n// 输出标签列表\ndv.list(tagsList)\n```\n\n现在在思考能不能给最上面的标签索引标记上对应的文章数量。\n\n## 联动\n\n预想中的有几个方面：\n\n- 短地址服务，不过感觉自己用到的也不多\n- 网站收藏，现在用收藏夹有点不爽，这个归类的笔记是合理的，但是最好顺便生成一个导航页面\n- 博客，写笔记，自动发布。但是不是所有笔记都要发布，这里还要进行一层筛选。我的想法是根据文件名中的标记筛选，这样不用读取文件内容就能判断。"}}}