Notion weekly
Skill NovateStudioGit/novate-studio-skills/knowledge-ops/notion-weekly
Monday-morning Notion brief. Pulls rollups from one or more configured Notion databases (OPEX total, this-week tasks, status changes, renewals due) into a single recap page in the vault and (optionally) Notion. Mirrors the /klaviyo-weekly pattern. Use when the user says "weekly Notion brief", "Monday update from Notion", "what changed in Notion this week", or via cron / scheduled run.From its SKILL.md
npx -y skills add NovateStudioGit/novate-studio-skills --skill notion-weeklyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.3 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
/notion-weekly
Synthesizes the state of Will's Notion workspace into a one-page Monday brief. ~2 min runtime.
Inputs
- Config file at
~/Desktop/ADMIN/skills/Notion Skills/notion-weekly/config.json(created on first run). Schema:
If no config exists on first run, interactively build it and save.{ "databases": [ {"name": "OPEX & SaaS", "url": "https://www.notion.so/...", "type": "tracker", "rollups": ["sum:Monthly Cost $", "count:Status=Trial"]}, {"name": "Leads", "url": "https://www.notion.so/...", "type": "pipeline", "rollups": ["count_by:Stage", "new_this_week"]} ], "output": { "vault_path": "Admin/sessions", "notion_target_page": "https://www.notion.so/<weekly-briefs-page>" } } - Week scope (optional). Default: last 7 days from now. User can pass "since 2026-05-10" or "this month".
Steps
- Load config. If missing, prompt to set up databases inline before continuing.
- For each configured database:
notion-fetchthe schema.- Enumerate rows using the search-letter workaround.
- Compute rollups:
sum:<prop>→ SUM across all rowssum:<prop>:filter→ SUM where filter matchescount_by:<prop>→ grouped counts (returns top 5)new_this_week→ rows wherecreatedTime> (now - 7d)changed_this_week→ rows wherelast_edited_time> (now - 7d) ANDcreatedTime≤ (now - 7d)renewals_due_30d→ if the DB has a Renewal date property, list rows where date ≤ now + 30d
- Compose brief. Markdown structure:
# Notion Weekly — YYYY-MM-DD- One section per configured DB
- Key rollup numbers at the top (e.g. "Monthly burn: $250 — up $24 from last week")
- "New this week" list
- "Changed this week" list (status flips most useful)
- "Heads up" callouts (renewals, trial expirations, stale Active rows)
## Recommended actionssection — one or two specific things based on the data (e.g. "3 tools still on trial — convert or cancel", "Domain renewal in 7 days").
- Write outputs:
- Vault:
~/Obsidian/<vault_path>/YYYY-MM-DD-notion-weekly.mdwith frontmatter (type: business-decision,tags: [notion, weekly, novate-studio]). - Notion (optional): if
notion_target_pageis configured, create a sub-page under it with the same content vianotion-create-pages.
- Vault:
- Print summary to conversation: 3-bullet TL;DR + path to the full brief.
Decision rules
- Compare to last week. Always include deltas where possible — burn is more useful as "$250 (+$24)" than "$250".
- Surface 1–2 actions max. A wall of action items is noise; surface the highest-leverage couple.
- Renewals beat sums. If a renewal is in the next 7 days, that goes at the top of the heads-up section regardless of other content.
Anti-patterns
- Don't include rollups the user didn't configure. The config is the contract.
- Don't write a generic "looks healthy" if nothing changed — say "No changes this week" tersely.
- Don't propose recommended actions that go beyond what the data supports. If the data is thin, say so.
Hard-won gotchas
- History. Last week's brief lives at
Admin/sessions/YYYY-MM-DD-notion-weekly.md. Read it to compute deltas. If it doesn't exist, compute current state only and note "first run — no comparison available". - Cron compatibility. This skill should work from a non-interactive context for scheduled runs. If config is missing in non-interactive mode, exit with error rather than prompting.
- Time zones. Use local time (the user's machine) for date math, not UTC.
createdTimefrom Notion is UTC — convert.
Companion: setting up cron
If user wants this to run automatically every Monday:
0 9 * * 1 cd ~ && claude -p "/notion-weekly" >> ~/Obsidian/Admin/sessions/.weekly-runs.log 2>&1
Suggest only if user asks; don't auto-install.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.