开发了一款 Obsidian 日记同步日历插件:Diary ICS

最近开发了一款 Obsidian 插件——Diary ICS,主要解决 Obsidian 日记内容与系统日历同步的问题。

核心功能

  1. ICS 日历订阅生成
    插件会基于日记内容自动生成 ICS 格式文件,通过本地 HTTP 服务器(默认端口 19347)提供订阅链接(如 http://127.0.0.1:19347/feed.ics),支持局域网内其他设备订阅。

  2. 日记内容解析规则

    • 提取指定级别标题(一级或二级,可配置)作为日历事件
    • 标题包含时间(如 19:0010:00~12:00)时,自动解析为事件时间;无时间则视为全天事件
    • 事件包含跳转链接(obsidian:// 协议),点击可直接打开对应日记
    • 子标题内容会作为事件备注
  3. Frontmatter 支持
    可将日记的属性字段(frontmatter)作为独立事件同步,支持自定义标题和内容模板(如 天气:{{weather}} 心情:{{mood}})。

使用流程

  1. 安装并启用插件
  2. 在设置中配置:
    • 标题提取级别
    • 服务器端口
    • 日记文件格式与存放路径(默认 YYYY-MM-DD 命名)
  3. 复制插件生成的 ICS 链接
  4. 在系统日历(macOS 日历、Windows 日历等)中添加订阅

技术实现

  • 基于 TypeScript 开发,使用 ics 库生成标准日历文件
  • 本地 HTTP 服务提供实时订阅能力
  • 解析 Obsidian 元数据缓存获取标题结构,避免重复读取文件

下载与反馈

源码地址:github.com/mousebomb/obsidian-diary-ics
支持 Obsidian 0.15.0 及以上版本,欢迎提交 Issue 反馈问题。