Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Interact with the Calendar Bridge — a self-hosted Node.js service that provides a persistent REST API for Google Calendar events. Handles OAuth token auto-re...
Interact with the Calendar Bridge — a self-hosted Node.js service that provides a persistent REST API for Google Calendar events. Handles OAuth token auto-re...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Use this skill to interact with the Calendar Bridge service — a local REST API that wraps Google Calendar OAuth with persistent token storage and auto-refresh. GitHub: https://github.com/DanielKillenberger/gcal-oauth-bridge
A tiny Node.js/Express service running at http://localhost:3000 that: Handles Google Calendar OAuth once via browser Stores and auto-refreshes tokens (solves the "token expired every 7 days" problem) Exposes a dead-simple REST API for events, calendars, and auth
EndpointDescriptionGET /healthService status + auth stateGET /auth/urlGet OAuth consent URLGET /events?days=7Upcoming events from primary calendarGET /events?days=7&calendar=allEvents from ALL calendarsGET /events?days=7&calendar=<id>Events from a specific calendarGET /calendarsList all available calendarsPOST /auth/refreshForce token refresh (normally automatic) Events response includes: id, summary, start, end, location, description, htmlLink, status, calendarId, calendarSummary
# Quick event check (7 days, primary calendar) curl http://localhost:3000/events # All calendars, next 14 days curl http://localhost:3000/events?days=14&calendar=all # With API key (if CALENDAR_BRIDGE_API_KEY is configured) curl -H "Authorization: Bearer $API_KEY" http://localhost:3000/events?calendar=all To call from OpenClaw/skill context (no API key needed when running on same host): GET http://localhost:3000/events?calendar=all&days=7
git clone https://github.com/DanielKillenberger/gcal-oauth-bridge.git cd gcal-oauth-bridge npm install cp .env.example .env # Edit .env with GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET
Go to https://console.cloud.google.com/apis/credentials Create OAuth 2.0 Client ID (Desktop app) Enable Google Calendar API Add redirect URI: http://localhost:3000/auth/callback Copy Client ID + Secret to .env
node app.js # or: npm start
If on a remote VPS, first tunnel port 3000: # From your local machine: ssh -L 3000:localhost:3000 your-server Then: curl http://localhost:3000/auth/url # Open the returned URL in your browser # Complete Google consent → tokens saved automatically Verify: curl http://localhost:3000/health # {"status":"ok","authenticated":true,"needsRefresh":false}
systemctl --user enable calendar-bridge.service systemctl --user start calendar-bridge.service
If tokens are ever revoked (rare — auto-refresh prevents expiry): ssh -L 3000:localhost:3000 your-server curl http://localhost:3000/auth/url → open URL → complete consent Done — new tokens overwrite old ones
{"error":"Not authenticated"} → Run the OAuth setup flow above 401 Unauthorized → CALENDAR_BRIDGE_API_KEY is set; add Authorization: Bearer <key> header Can't reach localhost:3000 → Service not running; check systemctl --user status calendar-bridge "invalid_grant" / "token expired" → Tokens were revoked externally; re-authenticate
Works with personal Gmail. Google shows an "unverified app" warning — click Advanced → Go to [app] to proceed. Tokens are stored locally on your server, not shared with anyone.
GitHub repo: https://github.com/DanielKillenberger/gcal-oauth-bridge App: app.js — main Express server Config: .env (from .env.example) Tokens: tokens.json (auto-generated, gitignored, never committed)
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.