name: xs:calendar
description: カレンダー予定を確認するスキル。ICS(Googleカレンダー等)と手動追加(画像読み取り)を統合。「今日の予定」「明日の予定」「カレンダー画像送って」「スケジュール確認」で使用。/calendar で発動。
calendar スキル
ICSカレンダー(Googleカレンダー等)+ 手動追加の予定(画像読み取り等)を統合して予定を確認する。
セットアップ
[SKILL_DIR]/calendar_urls.json にICS URLを登録する:
{
"calendars": [
{
"name": "main",
"url": "https://calendar.google.com/calendar/ical/xxxxx/basic.ics"
},
{
"name": "family",
"label": "家族",
"url": "https://calendar.google.com/calendar/ical/yyyyy/basic.ics"
}
]
}
name: カレンダー識別名(必須)url: ICSのURL(必須)。Googleカレンダーの場合「設定 → カレンダーの統合 → iCal形式の非公開URL」label: 表示ラベル(任意)。設定すると予定に[家族]のようなタグが付く。共有カレンダーなど、自分の予定とは限らないものに付けると便利
コマンド
cd [SKILL_DIR] && uv run python calendar_check.py [引数]
today/ 引数なし → 今日tomorrow→ 明日week→ 今後7日間0 7→ 今日から7日間(範囲指定)-7 0→ 過去7日間
画像からの予定追加
カレンダーのスクリーンショットが送られたら:
Step 1: 画像を読み取る
添付画像を Read ツールで確認する。
Step 2: 予定を抽出
画像から以下の情報を読み取る:
- 日付、開始時刻、終了時刻、予定名
- 終日予定かどうか
Step 3: manual_events.json に保存
[SKILL_DIR]/manual_events.json に保存。既存の予定とマージする(同じ日付の予定は上書き)。
{
"events": [
{
"date": "2026-03-01",
"time_start": "09:00",
"time_end": "10:00",
"summary": "ミーティング",
"all_day": false
},
{
"date": "2026-03-01",
"summary": "有給休暇",
"all_day": true
}
],
"updated_at": "2026-03-01T12:00:00+09:00"
}
保存ルール
- 同じ日付の予定は上書き(最新の画像が正)
updated_atを更新時刻に設定- 過去の予定は放置OK(表示時にフィルタされる)
Step 4: 再確認
保存後、calendar_check.py を再実行して反映を確認。
チェックリスト(実行時に必ず確認)
-
calendar_urls.jsonが存在するか(初回はセットアップを案内) - 画像から予定を追加した場合、保存後に再実行して確認したか
- 🚨 共有カレンダーの予定を「あなたの予定」と断定しない(labelで区別する)