Note-10-46

Token ID: 1

ERC-721 1 Transfers

Metadata

{
  "title": "基于 Obsidian 的生活记录系统",
  "tags": [
    "post",
    "分享境"
  ],
  "summary": "正如我在 2020 年终总结 中提到,我一直在用 Notion 写子弹笔记,现在它有了亿点点不一样,现在我们就来重新窥探一下我目前的生活记录系统",
  "sources": [
    "xlog"
  ],
  "external_urls": [
    "https://blog.diygod.me/obsidian"
  ],
  "date_published": "2022-07-09T18:23:52.000Z",
  "content": "---\ntitle: 基于 Obsidian 的生活记录系统\ndate: 2022-07-09 18:23:52\ntags: 分享境\n---\n\n正如我在 [2020 年终总结](/2020) 中提到,我一直在用 Notion 写子弹笔记,现在它有了亿点点不一样,现在我们就来重新窥探一下我目前的生活记录系统\n\n**日记**\n\n![image](ipfs://bafybeibmsjjzstiylsmrkmgn5xa2ppoyoqdpazxzuzpkomkdydsb2utbli)\n\n**周记**和**月记**\n\n![image](ipfs://bafybeihh2bollhn2r5c72d4vicl4jyudakiqkowozmwm66zh4rrqjdqssa)\n\n**年记**\n\n![image](ipfs://bafybeiflctmxmg3fcjijwzdfa5xcaaxafadvvqhasslpsb6ahybg5gtmeu)\n\n原 Notion 子弹笔记\n\n<div style=\"width: 50%\" >\n<img src=\"ipfs://bafybeie4dklkwdhw7ch3hcrucsj4oanecti53px7i454kaeeihkyjsfjy4\" />\n</div>\n\n受益于 Obsidian 强大的自动化能力和极高的自由度,日/周/月/年笔记通过预设模板自动生成,互相联动,需要手动处理的部分很少\n\n全部文件已上传至 GitHub:<https://github.com/DIYgod/DIYgod-Obsidian-Starter>,包括主题、插件、配置文件、自己定制的样式、模板文件、示例文件等,只是作为一个示例,请根据自己实际情况修改\n\n这些东西乍一看是有一些复杂,但其实用起来很简单,自由度和可扩展性也很强,下面我来详细介绍\n\n## 结构\n\n目录结构如日记图左侧栏所示\n\n```\n├── OKR.md\n└── Journal\n    └── 2022\n        ├── W1\n        |   └── 2022-01-01.md\n        |   └── 2022-W1.md\n        ├── 2022-01.md\n        └── 2022.md\n```\n\n每天会自动在本周的文件夹中生成当天的日记文件 `YYYY-MM-DD.md`,每周会自动新建一个周文件夹 `[W]ww` 和周记 `YYYY-[W]ww.md`,每月会自动生成月记 `YYYY-MM.md`,每年会自动新建一个年文件夹 `YYYY` 和年记 `YYYY.md`(更正:不是自动,仍然需要命令面板手动触发)\n\n这些文件的内容也都是模板预设好的,已经自动填充了日期、本周期 OKR 分数和图表,甚至当天的位置、天气、月相等信息,还留出了记录当天状态和动态的位置\n\n外面有一个 OKR 文件,大概半年更新一次,里面记录这半年的人生目标,其中有一些目标是需要每天持续努力的,日记系统的很大部分就是围绕这些目标来构建的\n\n目录结构主要通过 [Periodic Notes](https://github.com/liamcain/obsidian-periodic-notes) 实现,模板主要通过 [Templater](https://github.com/SilentVoid13/Templater) 和 [Dataview](https://github.com/blacksmithgu/obsidian-dataview) 和核心插件 Templates 实现\n\n## 日记\n\n![image](ipfs://bafybeibmsjjzstiylsmrkmgn5xa2ppoyoqdpazxzuzpkomkdydsb2utbli)\n\n### Info\n\nInfo 是自动生成的当天信息,包括指向年月周记和 OKR 的链接,位置、天气、月相等信息\n\n位置、天气、月相信息来自 Templater 的调用系统命令功能\n\n获取位置和天气\n\n```sh\ncurl wttr.in/\"$(curl -s --header \"user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36\" https://api.ip.sb/geoip | /opt/homebrew/bin/jq -r \".city\" | sed 's/ /%20/')\"\\?format=\"%l+%c%t\"\n```\n\n获取月相\n\n```sh\ncurl wttr.in/\"$(curl -s --header \"user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36\" https://api.ip.sb/geoip | /opt/homebrew/bin/jq -r \".city\" | sed 's/ /%20/')\"\\?format=\"%m\"\n```\n\n### OKR Tracker\n\nOKR Tracke 跟踪记录当天当前阶段的 OKR 完成状况,比如 `Sleep:: 10.3` 代表今天睡了 10.3 小时,`Healthy Eating:: 5` 代表今天吃得很健康,`::` 是 Dataview 语法,会给当前页面增加\n\n```js\npage = {\n    ...\n    \"Sleep\": 10.3,\n    \"Healthy Eating\": 5,\n}\n```\n\n这样的属性,方便接下来在周月年记中做分析和处理\n\n其中 O1 KR2 下有一个特殊的列表,通过 API 展示了当天 Toggl Track 数据, Toggl Track 是一个时间记录应用,记录我每天在各项事务中花费的时间,比如看番时间、刷B站时间、工作时间等,这些数据同样可以反映我今天的生产力是否符合预期\n\n### Notes\n\n这里是真正写日记的地方,多数是一些流水账,来弥补我天生糟糕的记忆力,偶尔也会写一些想法\n\n## 周记和月记\n\n![image](ipfs://bafybeihh2bollhn2r5c72d4vicl4jyudakiqkowozmwm66zh4rrqjdqssa)\n\n### Jornal List\n\nJornal List 是自动生成的本周/月全部日记的列表,通过 Dataview 实现\n\n获取全部日记\n\n```js\n// Week\nwindow.pages = dv.pages(`\"${dv.current().file.folder}\"`).where(p => p.file.name.match(new RegExp(`${dv.current().file.name.split('-')[0]}-\\\\d{2}-\\\\d{2}`))).sort(p => p.file.name);\n\n// Month\nwindow.pages = dv.pages().where(p => p.file.name.match(new RegExp(`${dv.current().file.name}-\\\\d{2}`))).sort(p => p.file.name);\n```\n\n渲染列表\n\n```js\ndv.paragraph(window.pages.file.link.join(', '))\n```\n\n### Summary\n\n这里是月末做总结和反思的地方,对应日记里的 Notes\n\n### OKR Tracker\n\n在这里处理和分析全部日记里的 OKR 数据,最后生成分数,对应日记里的 OKR Tracker\n\n它通过 Dataview 实现,以睡眠为例,≥ 6.5 小时且 ≤ 8.5 小时计为有效睡眠,有效睡眠天数占总天数的百分比即为得分\n\n```js\nlet count = 0;\nlet total = 0;\nfor (let page of window.pages) {\n    if (page['Sleep']) {\n        count++;\n        if (page['Sleep'] >= 6.5 && page['Sleep'] <= 8.5) {\n            total++;\n        }\n    }\n}\nconst score = (total / count * 100).toFixed(2);\ndv.el('div', score + '%', {\n    cls: score > 80 ? 'score-class1' : score > 50 ? 'score-class2' : 'score-class3'\n});\n```\n\n再自己加一点 CSS,> 80 分显示为绿色,50-80 分显示为黄色,< 50 分显示为红色,这样就可以很清楚看出本周/月的睡觉情况,图里是黄色区间,不太好但还可以接受,下个月需要多留意\n\n### Statistics\n\n在这里把睡眠和运动数据生成统计图,可以清楚看出睡眠时长还是挺不稳定的,运动天数和时长都很少\n\n统计图通过 [Obsidian Charts](https://github.com/phibr0/obsidian-charts) 绘制,睡眠统计图代码如下\n\n```js\nconst times = [];\nfor (let page of window.pages) {\n    times.push(page['Sleep']);\n}\n\nconst chartData = {\n    type: 'line',\n    data: {\n        labels: window.pages.file.name.array(),\n        datasets: [{\n            label: 'Sleep Time',\n            data: times,\n            pointBackgroundColor: '#6c40d6',\n            borderColor: '#6c40d65c',\n            tension: 0.4,\n            spanGaps: true,\n        }],\n    },\n    options: {\n        scales: {\n            y: {\n                type: 'linear',\n                min: 2,\n                max: 13\n            }\n        }\n    }\n}\n\nwindow.renderChart(chartData, this.container);\n```\n\n### Finance\n\n本月的财务数据饼状图,通过 MoneyWiz 生成\n\n## 年记\n\n![image](ipfs://bafybeiflctmxmg3fcjijwzdfa5xcaaxafadvvqhasslpsb6ahybg5gtmeu)\n\n年记与周记月记相似度也很高,但通过扩大时间尺度,可以得出很多新的有用结论\n\n比如同样的睡眠和运动统计图,在年的尺度里就可以看出我是在 5 月底睡眠开始失控,在这期间运动也中断了,又从 6 月中旬得到缓解\n\n还有新的体重体脂统计图,可以看出我的体重和体脂都在稳步下降,健康状况有明显改善\n\n年记还出现了新的一种热图,记录达到目标的日子,通过 [Heatmap Calendar](https://github.com/Richardsl/heatmap-calendar-obsidian) 绘制,以睡眠为例\n\n```js\nconst calendarData = { \n    entries: [],\n}\n\nconst pages = window.pages\n    .where(p => p.Sleep && p.Sleep >= 6.5 && p.Sleep <= 8.5)\n    .sort(p => p.file.name);\n\nfor(let page of pages){ \n    calendarData.entries.push({\n        date: page.file.name,\n        intensity: page.Sleep,\n    })\n}\n\nrenderHeatmapCalendar(this.container, calendarData);\n```\n\n## 局限\n\n子弹笔记有一个很重要的任务清单模块,如上面子弹笔记截图所示,我之前会把一周的任务清单都提前写在笔记里,但现在日记都是当天自动生成,无法提前计划,所以我把任务清单都改用了滴答清单来管理,滴答清单当然也很好用,但是这样就少了与日记的联动,手动添加又会造成很多重复工作,就不是很爽\n\n最后需要注意的是,即使有这样的生活管理系统也不意味着生活就会一切按照预期,就像上面举例的 5 月底睡眠失控事件,一旦放松失控仍会发生,笔记会告诉我生活正在失控,但如何回到正轨和追赶上 OKR 还是要靠自控力和坚持的定期总结、反思和改进\n",
  "attributes": [
    {
      "value": "obsidian",
      "trait_type": "xlog_slug"
    }
  ]
}