能将 Obsidian 日记同步到系统日历的插件:Diary ICS

开发了一款 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个事件。

使用方法

  1. 在Obsidian中安装并启用此插件
  2. 在插件设置中配置:
    • 要提取的标题级别(一级或二级标题)
    • HTTP服务器端口(默认为19347)
  3. 复制插件提供的ICS订阅链接
  4. 在系统日历应用中添加该订阅链接
  5. 现在,你的Obsidian日记内容将自动同步到系统日历中

下载

安装:直接在obsidian的第三方插件中搜索"diary ics"即可安装

1 个赞

有创意,小而美……