把 Apple 日历导出为 Markdown
Mac 上每月一个文件,每天一个标题,重复的日程出现在每个发生的日子里。
一个月,一个文件。
文件开头是这个月有什么,接着是每天一个标题、每个日程一行:时间、是什么、来自哪个日历、在哪里。
2026-09.md
---
title: "日历,2026 年 9 月"
created: 2026-09-01T09:00:00
tags:
- "calendar"
month: 2026-09
events: 284
calendars: ["工作", "个人", "生日"]
---
## 2026-09-17, 星期四
- all day 玛丽莲生日 · 生日
- 09:30-10:00 站会 · 工作 · Zoom [repeats:: weekly] [with:: 6]
- 13:00-14:00 和 Kevin 吃午饭 · 个人 · Philz Coffee
- 19:00-22:00 SF Database Meetup · 工作 · 655 Montgomery St
## 2026-09-19, 星期六
- all day, 3 days 里斯本 · 个人
- 08:00 SFO 飞 LIS · 工作导出什么
每月一个文件,都放在一个文件夹里。没有日程的月份不会生成文件。
每天一个标题
先是全天日程,然后按开始时间排,这正是日历画一天的顺序。全天日程就写成全天,而不是凭空得到一个从未有过的零点。
重复出现在每个发生的日子里
每周的站会每周都在,而不是只有一次。Exporter 读的是日历自己保存的发生记录,所以文件和 app 显示的一致。
每个日程来自哪个日历
工作、个人、共享日历或订阅日历。当月用到的日历写在前置信息里,vault 可以据此筛选。
在哪里
会议室、场地或地址,日程带什么就写什么。视频通话的链接以 join:: 放在同一行。
按账户分组,而不是一长串
选择器按账户把日历归类,和日历的边栏一样,所以取消一个勾就能把整个账户排除在外。
往回读多久
今年、2 年、5 年或全部,在卡片上选。日历本身只保存大约两年的发生记录,能读的也就这些。
怎么用
- 1连接日历
会在日历自己的文件夹里打开一个窗口:点“选择此文件夹”。Exporter 读取其中的数据库,macOS 从不索取日历权限。
- 2选择日历
所有日历默认勾选,按账户归类。取消一个,它的日程会在下次同步时从各月份里消失。
- 3自动同步
按 sync。每个月成为一个文件,移动一个日程会在一分钟内重写那个月。
问题
还有问题? 联系我们
这会索取日历权限吗?
不会。Exporter 通过你授权的文件夹读取日历自己的数据库,而不是通过 EventKit,所以不会弹出权限对话框,也不会碰到其他 app。
为什么按月一个文件,而不是每个日程一个?
一年是几百个日程和十二个能读的文件。每个日程一个文件,就是一整个文件夹的一行笔记。
免费的部分是什么?
前 100 个事件会导出并持续免费同步。解锁日历是 Exporter 里的一次性购买。
邀请和参与者包含在内吗?
行里会写一个日程有多少人。他们的姓名和答复留在日历里。
有东西被上传吗?
没有。Exporter 读取你的日历,把文件写在你的 Mac 上。没有账户,没有服务器。
与其他做法相比
日历能导出 .ics,那是给另一个日历用的格式,不是用来读或搜的。
| 功能 | Exporter | 导出 .ics | 截图 |
|---|---|---|---|
| 可读的 Markdown | 是 | 否 | 否 |
| 每月一个文件,每天一个标题 | 是 | 否 | 否 |
| 重复出现在每一天 | 是 | 否 | 是 |
| 所有日历一次导出 | 是 | 一个一个来 | 否 |
| 持续同步 | 是 | 否 | 否 |
| 价格 | 100 个事件免费,之后一次性购买 | 免费 | 免费 |
让 Claude 读你的日历
导出的月份可以通过 Exporter 的本地 MCP 服务器搜索。去设置。
连接 Claude Code。
然后问:“我九月做了什么,谁见了两次?”Claude 会把每个月当作文件来读。
$ claude mcp add --transport http exporter http://localhost:8744/mcp