/install calendar-extractor
Calendar Extractor
Periodically scan recent recording sessions, extract calendar events from transcripts, and push a daily summary to your iOS chat.
When to use
- "today's meetings"
- "calendar extract"
- "今日会议"
- "提取日历"
Core commands
# Register (first use)
node scripts/register.js \x3CuserId> \x3Cname>
# Run today's flow (also what the cron triggers)
node scripts/calendar-extractor.js \x3CuserId>
# Push management
node scripts/push-toggle.js on \x3CuserId> [--time HH:MM] [--channel iOS|Telegram|Discord|Slack]
node scripts/push-toggle.js off \x3CuserId>
node scripts/push-toggle.js status \x3CuserId>
Workflow
- Fetch recent transcripts via the LLM's javis_mcp tools (get_transcript_tool / search_transcripts_tool) and pass the relevant text to this script on stdin.
- Fetch from the configured HTTP endpoint (set HTTP_SOURCE_URL env var when registering the cron).
- Format output and POST to
http://javis-server:8000/api/agent/pushwith{"skill": "calendar-extractor", "content": "\x3Cformatted>"}usingOPENCLAW_GATEWAY_TOKENfor auth.
Push setup (cron registration)
When user requests scheduled push:
Step 1: Save preferences
node scripts/push-toggle.js on \x3CuserId> --time \x3CHH:MM> --channel \x3Cchannel>
Step 2: Create cron job via openclaw CLI
openclaw cron add \
--name "calendar-extractor-\x3CuserId>" \
--schedule "0 8,18 * * *" \
--tz "America/Los_Angeles" \
--channel \x3Cchannel> \
--to "\x3Cchannel-target-id>" \
--session isolated \
--command "Run /calendar-extractor: execute node scripts/calendar-extractor.js \x3CuserId>, format output nicely. Then POST to http://javis-server:8000/api/agent/push with JSON body {\"skill\": \"calendar-extractor\", \"content\": \"\x3Cformatted output>\"} using the gateway bearer token for auth."
Step 3: Confirm to user
Push is set up; results land in iOS agent chat under /calendar-extractor.
Supported channels: iOS, Telegram, Discord, Slack
Notes
- Data stored in
data/users/\x3CuserId>.json; external HTTP source configured separately viaHTTP_SOURCE_URLenv var. - Run
npm installbefore first run (none needed beyond Node 18+ built-ins, but theenginesfield gates the runtime). - User IDs only allow letters, digits,
-,_(path-traversal guard indata.js). - Additional data sources picked but NOT auto-wired in
main():pure-local-stateanduser-typed-text. The template only emits code for the first 2 sources (transcripts + external-http). To activate the others, hand-editscripts/calendar-extractor.js:- For pure-local-state:
const userState = fs.existsSync(safeUserPath(userId)) ? readJson(safeUserPath(userId)) : {}; - For user-typed-text:
const text = process.argv.slice(3).join(' ');
- For pure-local-state:
- TZ caveat: cron tz is hardcoded to
America/Los_Angelesat registration time. If you travel, re-register with the new tz:node scripts/push-toggle.js off \x3CuserId>, thennode scripts/push-toggle.js on \x3CuserId> --tz \x3Cnew-tz>, then re-run theopenclaw cron addcommand above with the new--tz. - Multi-channel cron: each non-iOS channel (Telegram, Discord, Slack) needs a SEPARATE
openclaw cron addwith its own--channeland--to \x3Cchannel-target-id>. iOS push is automatic via the/api/agent/pushcall (no separate cron needed for iOS). - Session-finalize trigger (NOT implemented): the "fire on each finished recording" requirement is out-of-scope for skill-creator's periodic-push template. It requires server-side wiring: javis-server watches
audio_recordings.session_completedflips and POSTs a synthetic prompt to the user's openclaw container/v1/responsesto invoke this script with the finalized session id. Track as a follow-up in javis-server.
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install calendar-extractor - After installation, invoke the skill by name or use
/calendar-extractor - Provide required inputs per the skill's parameter spec and get structured output
What is for HiJavis calendar-extractor via conversation?
Periodically scans recent transcripts to extract calendar events and sends a daily summary of meetings to your iOS chat via push notifications. It is an AI Agent Skill for Claude Code / OpenClaw, with 56 downloads so far.
How do I install for HiJavis calendar-extractor via conversation?
Run "/install calendar-extractor" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is for HiJavis calendar-extractor via conversation free?
Yes, for HiJavis calendar-extractor via conversation is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does for HiJavis calendar-extractor via conversation support?
for HiJavis calendar-extractor via conversation is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created for HiJavis calendar-extractor via conversation?
It is built and maintained by SamuelWei (@samuel-wei); the current version is v0.1.0.