开发了一款 Obsidian 插件——Diary ICS,主要解决 Obsidian 日记内容与系统日历同步的问题。
这是一个Obsidian插件,用于将Obsidian的日记系统内容同步到系统的日历应用中(如macOS日历、Windows日历等)。
视频效果见: Diary ICS 的GitHub说明页面
核心功能
生成ICS日历订阅文件
- 插件会根据Obsidian中的日记内容,自动生成一个ICS格式的日历订阅文件(.ics)
- 该文件将被托管在本地的一个HTTP端口上(例如:
http://127.0.0.1:19347/feed.ics)(也可自行查看局域网内的ip并用于在局域网内的其他设备订阅) - 系统日历应用可以订阅这个链接,从而实时同步Obsidian的日记内容到系统日历中
日记内容解析规则
- 插件会解析Obsidian中的日记笔记文件(通常是按日期命名的Markdown文件)
- 从这些文件中提取出一级或二级标题(由用户配置)
- 每个提取出的标题将作为一条日历条目,对应当天(即文件名中的日期)
- 如果标题中包含了时间(HH:mm)则把时间填充到生成的ics事件中,如果标题中没有时间的话则保持原样看作全天事件。
日历条目详情
每个日历条目(事件)将包含以下内容:
- 标题:从日记文件中提取的一级或二级标题
- 链接(URL):包含一个可点击的链接。
- 格式为:
obsidian://open?vault=你的库名&file=日记文件路径 - 点击后可以直接跳转回 Obsidian 的对应日记文件中
- 格式为:
- 备注(Description):
- 包含提取的此级标题下的所有次级标题
frontmatter
如果日记有属性(frontmatter)字段,则把当天日记的frontmatter 拼接成文字 输出为一个额外日程。
默认就是一行一个属性作为日程描述。
允许自行编写规则,如可以编辑:天气:{{weather}} 心情:{{mood}} 表示从frontmatter里提取当天的天气和心情属性。
如果你不了解frontmatter,可以先参考Obsidian的官方文档。
时间解析规则
如果用户在写日记文档的标题中包含了时间(HH:mm)或者时间范围(HH:mm~HH:mm)则把时间填充到生成的ics事件中,如果标题中没有时间的话则保持原样(看作全天事件)。
例如:
## 10:00~12:00 团队会议会被解析为 10:00-12:00 的会议事件## 10:00 团队会议会被解析为 10:00-11:00 的会议事件(默认结束时间为开始时间的1小时后)## 户外郊游会被解析为全天事件
示例说明
假设你有一个日记文件: 2025-05-14.md 内容如下:
# 今天的工作总结
## 上午任务
- 完成项目A的模块1
### 和研发制定计划
- 完成B模块
- 联系客户
## 下午任务
- 与团队开会讨论需求
## 下班后聚餐 19:00
- 和团队成员聚餐
用户在插件设置中设置了提取所有二级标题。
则,插件会提取出3个日历条目:
- 事件1:标题为“上午任务”,备注中包含"和研发制定计划",链接可跳转到日记
- 事件2:标题为“下午任务”,备注为空,链接可跳转到日记
- 事件3:标题为“下班后聚餐”,在日历上的时间为19:00-20:00,备注为空,链接可跳转到日记
系统日历订阅了 http://127.0.0.1:99347/feed.ics 后,就能看到这3个事件。
使用方法
- 在Obsidian中安装并启用此插件
- 在插件设置中配置:
- 要提取的标题级别(一级或二级标题)
- HTTP服务器端口(默认为19347)
- 复制插件提供的ICS订阅链接
- 在系统日历应用中添加该订阅链接
- 现在,你的Obsidian日记内容将自动同步到系统日历中
下载
安装:直接在obsidian的第三方插件中搜索"diary ics"即可安装