<< All versions
1. 配置 vdirsyncer(
2. 配置 khal(
Skill v1.0.0
currentAutomated scan100/100l-lesteryu/openclaw-hot-skills-zh/caldav-calendar-zh
──Details
PublishedOctober 23, 2026 at 03:50 PM
Content Hashsha256:16ff568fd00eaea6...
Git SHA5d5a533e2fed
──Files
Files (1 file, 3.5 KB)
SKILL.md3.5 KBactive
SKILL.md · 151 lines · 3.5 KB
version: "1.0.0" name: caldav-calendar-zh description: 使用 vdirsyncer + khal 同步和查询 CalDAV 日历(iCloud、Google、Fastmail、Nextcloud 等)。适用于 Linux 系统。 metadata: {"clawdbot":{"emoji":"📅","os":["linux"],"requires":{"bins":["vdirsyncer","khal"]},"install":[{"id":"apt","kind":"apt","packages":["vdirsyncer","khal"],"bins":["vdirsyncer","khal"],"label":"通过 apt 安装 vdirsyncer + khal"}]}}
CalDAV 日历(vdirsyncer + khal)
vdirsyncer 将 CalDAV 日历同步到本地 .ics 文件。khal 负责读取和写入这些文件。
首先同步
查询前或修改后务必先同步:
bash
vdirsyncer sync
查看事件
bash
khal list # 今天khal list today 7d # 未来7天khal list tomorrow # 明天khal list 2026-01-15 2026-01-20 # 日期范围khal list -a Work today # 特定日历
搜索
bash
khal search "会议"khal search "牙医" --format "{start-date} {title}"
创建事件
bash
khal new 2026-01-15 10:00 11:00 "会议标题"khal new 2026-01-15 "全天事件"khal new tomorrow 14:00 15:30 "电话" -a Workkhal new 2026-01-15 10:00 11:00 "带备注" :: 这里写描述
创建后,同步以推送更改:
bash
vdirsyncer sync
编辑事件(交互式)
khal edit 是交互式的 — 需要 TTY。自动化时请使用 tmux:
bash
khal edit "搜索词"khal edit -a CalendarName "搜索词"khal edit --show-past "旧事件"
菜单选项:
s→ 编辑摘要d→ 编辑描述t→ 编辑日期时间范围l→ 编辑位置D→ 删除事件n→ 跳过(保存更改,下一个匹配项)q→ 退出
编辑后,同步:
bash
vdirsyncer sync
删除事件
使用 khal edit,然后按 D 删除。
输出格式
用于脚本化:
bash
khal list --format "{start-date} {start-time}-{end-time} {title}" today 7dkhal list --format "{uid} | {title} | {calendar}" today
占位符:{title}、{description}、{start}、{end}、{start-date}、{start-time}、{end-date}、{end-time}、{location}、{calendar}、{uid}
缓存
khal 在 ~/.local/share/khal/khal.db 中缓存事件。如果同步后数据看起来过时:
bash
rm ~/.local/share/khal/khal.db
初始设置
1. 配置 vdirsyncer(~/.config/vdirsyncer/config)
iCloud 示例:
ini
[general]status_path = "~/.local/share/vdirsyncer/status/"[pair icloud_calendar]a = "icloud_remote"b = "icloud_local"collections = ["from a", "from b"]conflict_resolution = "a wins"[storage icloud_remote]type = "caldav"url = "https://caldav.icloud.com/"username = "your@icloud.com"password.fetch = ["command", "cat", "~/.config/vdirsyncer/icloud_password"][storage icloud_local]type = "filesystem"path = "~/.local/share/vdirsyncer/calendars/"fileext = ".ics"
服务提供商 URL:
- iCloud:
https://caldav.icloud.com/ - Google:使用
google_calendar存储类型 - Fastmail:
https://caldav.fastmail.com/dav/calendars/user/EMAIL/ - Nextcloud:
https://YOUR.CLOUD/remote.php/dav/calendars/USERNAME/
2. 配置 khal(~/.config/khal/config)
ini
[calendars][[my_calendars]]path = ~/.local/share/vdirsyncer/calendars/*type = discover[default]default_calendar = Homehighlight_event_days = True[locale]timeformat = %H:%Mdateformat = %Y-%m-%d
3. 发现并同步
bash
vdirsyncer discover # 仅首次运行vdirsyncer sync