一键导入
apollo-calendar-ingest
Sync, query, and ingest calendar events from Google Calendar (work and personal) to drive daily schedule planning and automated work logs.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Sync, query, and ingest calendar events from Google Calendar (work and personal) to drive daily schedule planning and automated work logs.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when Justin asks you to search, read, write, or manage notes in the vault, OR when performing structural/physical vault maintenance (hygiene, task archiving, capitalization healing, link repair, and nightly cron plumbing).
Run vault compile-inputs — Phase 0 apply Ready to Apply, then phased Readings/Sources/Meetings/Others.
Interactive daily wrap-up: 1. Input candidates (Slack/email); 2. Discovered contacts; 3. Work log draft/write; 4. Next day's calendar preview.
Master Justin's automated note-taking, ingestion, and logging pipeline (Brain Feeds Ingest). Coordinates email forwarding, Linear reactions, Telegram bookmarks, and central vault logging/entity integration.
Manage and operate the Obsidian Semantic Pointer CLI for on-demand historical bridging, semantic search, and context pruning.
Master conventions for chronological logs: governs Daily Notes, Meetings, and incoming Inputs (Emails, Slack, Readings).
| name | apollo-calendar-ingest |
| description | Sync, query, and ingest calendar events from Google Calendar (work and personal) to drive daily schedule planning and automated work logs. |
| version | 1.0.0 |
| author | Apollo |
| license | MIT |
| metadata | {"hermes":{"tags":["calendar","google-workspace","ingest","logs"],"related_skills":["google-workspace","work-log","morning-briefing","wind-down"]}} |
Handles Google Calendar syncs across all of your accounts (work, personal-main, personal-junk) to drive schedule-planning, morning briefings, and automated work log accomplishments.
~/.hermes/google_tokens/{work,personal-main,personal-junk}.json~/.hermes/skills/productivity/google-workspace/scripts/gws_multi.pyTo retrieve schedule events for a specific timeframe (e.g. today or tomorrow):
python3 ~/.hermes/skills/productivity/google-workspace/scripts/gws_multi.py --account all calendar list --start <YYYY-MM-DD>T00:00:00<OFFSET> --end <YYYY-MM-DD>T23:59:59<OFFSET> --max 50
This schedule feeds directly into:
## 📅 Schedule & Events.Apollo has write access to Google Calendar. You can directly schedule events on Justin's behalf (e.g., during briefings or from forwarded email instructions) rather than creating tasks in Todoist:
python3 ~/.hermes/skills/productivity/google-workspace/scripts/gws_multi.py --account work|personal-main calendar create --summary "Event Title" --start "2026-06-09T14:00:00" --end "2026-06-09T15:00:00" --description "Context..."
Note: Specify the single correct target account; do not use --account all for write operations.
status of the event in the API response remains "confirmed". The declined status is nested inside the attendees list under the owner's email as responseStatus: "declined". Always verify the owner's response status before compiling schedules; otherwise, declined/cancelled meetings will mistakenly be shown as active/confirmed.calendar delete EVENT_ID under the correct account (e.g. work) to completely purge the event from their calendar views.When Justin informs you that he is taking a day off, has cancelled work meetings, or is on vacation through a specific date, you must actively update the environment:
YYYY-MM-DD format, one per line) to ~/.hermes/days-off.txt. This ensures the work-day checking system (work_day.py) evaluates them as non-work days, setting is_work_day: False and skipping work log reviewer warnings.~/Developer/obsidian-vault/Daily Notes/ for the affected dates.Preview Summary blockquote to note the cancellation/vacation.## 🗓 Schedule & Events, cross out the cancelled work meetings using strike-through syntax (e.g., ~~Meeting Name~~) and append — *Cancelled*.python3 ~/.hermes/scripts/generate_morning_cache.py
Verify that the output confirms Is Work Day: False, Work Log Status: skipped.status: "confirmed", report the discrepancy clearly to Justin and ask if he wants you to delete them on his behalf.