Install
openclaw skills install calendar-crabGoogle Calendar CLI — list, create, move, and delete events. Zero dependencies, just Node.js + Google OAuth.
openclaw skills install calendar-crabGoogle Calendar management via a single Node.js script. No npm install needed.
~/.openclaw/secrets/ (see Setup below)node calendar-crab.js list --days=7 --max=20
node calendar-crab.js create \
--title="Team Sync" \
--date=2026-03-20 \
--time=10:00 \
--duration=30 \
--location="Zoom" \
--attendees="alice@co.com,bob@co.com" \
--description="Weekly sync" \
--tz="America/Los_Angeles"
# By date + time
node calendar-crab.js move --date=2026-03-20 --from=10:00 --to=14:00
# By event ID
node calendar-crab.js move --id="EVENT_ID" --to="2026-03-20T14:00:00-07:00"
node calendar-crab.js delete --id="EVENT_ID"
node calendar-crab.js delete --date=2026-03-20 --time=10:00
| Env var | Default | Description |
|---|---|---|
CALENDAR_CRAB_SECRETS | ~/.openclaw/secrets | Directory containing OAuth + token JSON files |
CALENDAR_CRAB_TZ | System local | Default timezone for events |
CALENDAR_CRAB_CALENDAR | primary | Google Calendar ID |
Timezone can also be set per-command with --tz=America/Los_Angeles.
list first to verify the target event exists and is unique.move and delete auto-notify all attendees (sendUpdates=all).~/.openclaw/secrets/google-calendar-oauth.json:
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
~/.openclaw/secrets/google-calendar-token.json:
{
"refresh_token": "YOUR_REFRESH_TOKEN",
"access_token": "",
"expires_in": 0,
"obtained_at": ""
}
The script auto-refreshes the access token using the refresh token.