No description
Find a file
2025-05-15 19:58:36 +08:00
.github/workflows 文档和 release workflow 2025-05-14 22:17:47 +08:00
.editorconfig use LF instead of CRLF (#28) 2022-04-15 14:13:31 -04:00
.eslintignore fix .eslintignore (#48) 2023-01-19 10:06:51 -05:00
.eslintrc add version bump script (#10) 2022-01-22 16:13:50 -05:00
.gitignore Update .gitignore (#25) 2022-01-28 10:34:53 -05:00
.npmrc add version bump script (#10) 2022-01-22 16:13:50 -05:00
esbuild.config.mjs build: minify prod build 2023-11-15 14:10:43 -05:00
lang.ts 仅在端口变化点击应用后重启服务器,修改其他参数不再频繁重启 2025-05-15 16:02:11 +08:00
LICENSE 仅在端口变化点击应用后重启服务器,修改其他参数不再频繁重启 2025-05-15 16:02:11 +08:00
main.ts 从标题级别创建的日程现在可以跳转到标题位置 2025-05-15 19:58:36 +08:00
manifest.json 从标题级别创建的日程现在可以跳转到标题位置 2025-05-15 19:58:36 +08:00
package-lock.json 第一版 2025-05-14 16:21:41 +08:00
package.json 从标题级别创建的日程现在可以跳转到标题位置 2025-05-15 19:58:36 +08:00
README.md Update README.md 2025-05-15 14:49:11 +08:00
README_zh.md Update README_zh.md 2025-05-15 14:48:19 +08:00
styles.css Update sample css file. 2022-08-09 13:39:02 -04:00
tsconfig.json Fix inconsistent indentation 2024-01-19 21:14:58 +02:00
version-bump.mjs add version bump script (#10) 2022-01-22 16:13:50 -05:00
versions.json Update for 0.15 2022-08-09 13:38:50 -04:00

Obsidian Diary ICS

中文 | English

This is an Obsidian plugin that synchronizes content from Obsidian's diary system to the system calendar application (such as macOS Calendar, Windows Calendar, etc.).

https://github.com/user-attachments/assets/5cca303c-9c91-4805-ad37-8213e5124f62

Core Features

Generate ICS Calendar Subscription File

  • The plugin automatically generates an ICS format calendar subscription file (.ics) based on Obsidian's diary content
  • The file will be hosted on a local HTTP port (e.g., http://127.0.0.1:19347/feed.ics) (you can also check the local network IP to use it for subscription on other devices in the same network)
  • System calendar applications can subscribe to this link to synchronize Obsidian's diary content with the system calendar in real time

Diary Content Parsing Rules

  • The plugin parses Obsidian's diary note files (usually Markdown files named by date)
  • Extracts primary or secondary level headings (configured by the user)
  • Each extracted heading becomes a calendar entry corresponding to the date in the filename

Calendar Entry Details

Each calendar entry (event) will contain:

  • Title: Primary or secondary level heading extracted from the diary file
  • Link (URL): A clickable link
    • Format: obsidian://open?vault=YourVaultName&file=DiaryFilePath
    • Clicking it directly jumps back to the corresponding diary file in Obsidian
  • Description:
    • Contains all subheadings under the extracted heading

Frontmatter

If the diary has frontmatter fields, the plugin concatenates the day's frontmatter into a text output as an additional event. By default, each property is displayed on a separate line as the event description. Custom rules can be edited, for example: weather:{{weather}} mood:{{mood}} to extract weather and mood properties from frontmatter.

Example Explanation

Assume you have a diary file: 2025-05-14.md with the following content:

# Today's Work Summary

## Morning Tasks
- Complete Module 1 of Project A

### Plan with R&D
- Complete Module B
- Contact Client

## Afternoon Tasks
- Meet with team to discuss requirements

If the user sets the plugin to extract all secondary level headings:

The plugin will extract two calendar entries:

  • Event 1: Title "Morning Tasks", description includes "Plan with R&D", link to the diary
  • Event 2: Title "Afternoon Tasks", description is empty, link to the diary

After subscribing to http://127.0.0.1:99347/feed.ics in the system calendar, you can see these two events.

Usage Instructions

  1. Install and enable this plugin in Obsidian
  2. Configure in plugin settings:
    • Heading level to extract (primary or secondary)
    • HTTP server port (default 19347)
  3. Copy the ICS subscription link provided by the plugin
  4. Add this subscription link in your system calendar application
  5. Now your Obsidian diary content will be automatically synchronized to the system calendar

Development Information

  • This plugin is developed using TypeScript
  • Starts a local HTTP server to provide ICS files
  • Generates calendar files according to the ICS standard