πŸ€– Clive — Cron Automation Map

The scheduled jobs that keep my Obsidian vault ticking over, unattended — plus the on-demand voice briefing.
4 scheduled jobs + 1 on-demand · all times UTC · snapshot 2026-07-30

⏱ Daily timeline

diary-prep
03:00 Β· Mon–Fri
ingest
05:00 Β· daily
maintenance
06:00 Β· daily
meet-ingest
08:00 Β· daily
diary-prep ingest maintenance meet-ingest
Why this order? The morning jobs form a deliberate pipeline: diary-prep (03:00) lays down today's note and sweeps yesterday's human notes β†’ ingest (05:00) files those into the wiki β†’ maintenance (06:00) tidies links & tags β†’ meet-ingest (08:00) folds in what actually happened from Granola. Each waits comfortably behind the last.

πŸ“‡ The jobs

πŸŒ… obsidian-diary-prep ok

0 3 * * 1-5  Β·  weekdays 03:00

Builds today's daily note from scratch: weather + local news briefing, the day's calendar with per-meeting context briefings, and empty ## Human Notes / ## Robonotes scaffolding. Also writes a ## Spoken Briefing β€” an ear-optimised ~90 s script for the on-demand voice read. Sweeps yesterday's hand-written notes into _dropbox/ for the ingest job. Skips Berlin public holidays.

glm-5.2 filewebterminal β†’ local

πŸ“₯ obsidian-ingest ok

0 5 * * *  Β·  daily 05:00

Runs the vault ingestion pipeline per CLAUDE.md: picks up the braindumps dropped in _dropbox/ and files them into the right people / project / tech wiki pages. The cheap workhorse β€” pinned to a local model to keep the nightly cost near zero.

gemma4:31b fileterminal β†’ local

🧹 obsidian-maintenance ok

0 6 * * *  Β·  daily 06:00

Housekeeping pass over the whole vault: normalises tags, checks for broken [[wikilinks]], and regenerates the index. Keeps the knowledge graph coherent as pages accrete. Also local-model to stay cheap.

gemma4:31b fileterminal β†’ local

πŸŽ™ obsidian-meet-ingest ok

0 8 * * *  Β·  daily 08:00

Pulls yesterday's Granola meeting notes via the official API and routes each meeting β€” by attendee email β€” onto the relevant people & project pages, plus a ## Robonotes mirror in that day's diary. Granola is treated as ground truth for what actually happened; cancelled calendar entries are ignored. Handles phonetic name mis-hears and dual-domain (lifesum/lykon) identities.

glm-5.2 fileterminal β†’ origin

πŸ”Š spoken-briefing on-demand

no schedule  Β·  triggered on request

Not a cron β€” a skill Clive runs when Kieran asks for the briefing "in his ears". Extracts the day's ## Spoken Briefing script, sends it through ElevenLabs (voice Daniel, British male), and delivers a Telegram voice bubble. Deliberately on-demand: the written note suffices most mornings, and it keeps ElevenLabs credits for when audio's actually wanted.

elevenlabs Β· Daniel skilltext_to_speech β†’ voice bubble

πŸ”€ How the data flows

Calendar + Weatherexternal
β†’
diary-prep03:00
β†’
daily/today.mdbriefing Β· schedule
Yesterday's
## Human Notes
your braindumps
β†’
diary-prepsweeps β†’ _dropbox/
ingest05:00
β†’
wiki/ pagespeople Β· projects Β· tech
maintenance06:00
↻
whole vaulttags Β· links Β· index
Granola APImeetings that happened
β†’
meet-ingest08:00 Β· by email
β†’
wiki/ people + projects## Meetings
daily/yesterday.md## Robonotes
daily/today.md## Spoken Briefing
β†’
spoken-briefingon request Β· ElevenLabs
β†’
TelegramπŸ”Š voice bubble