From 4c8b4886366211466cede1a961a032cbc9ad7247 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 8 Jun 2026 23:00:24 +0000 Subject: [PATCH 1/7] Make weekly briefing routine-ready: drop X, Notion-authoritative dedup, phone notification - Remove X/Twitter scan + reporting (no X access; runs logged 'X not checked') - Add STEP 1d + STEP 5 note so dedup reads from Notion (durable across cloud fresh-clones) instead of relying on committing previously-recommended.md - Add STEP 7: notify via Notion @mention (reliable phone push) + best-effort PushNotification - Fix stale source count wording; document cloud Routine scheduling in README --- README.md | 7 +++++++ prompts/weekly-briefing.md | 43 ++++++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 836e839..efb99e8 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,13 @@ Full list with feed URLs: [`config/sources.md`](https://github.com/Katherine-Pen # ๐Ÿš€ Setup +## Scheduling: where it runs + +There are two ways to run this on a schedule: + +- **โ˜๏ธ Cloud Routine (recommended) โ€” runs even with your laptop closed.** Create a [Claude Code Routine](https://claude.ai/code/routines): point it at this repo, set the trigger to **Weekly ยท Sunday ยท 7:00 PM** (your local time), set the environment's **Network access to Full** (the briefing fetches ~40 RSS/web sources), and keep the **Notion** connector enabled. The routine runs `prompts/weekly-briefing.md`, writes that week's picks to your Notion **Learning Agent Recommendation** page, and @mentions you so Notion pushes a notification to your phone. Note: routines clone your repo's **default branch**, so merge prompt changes to `main` before they take effect. +- **๐Ÿ’ป Local Desktop scheduled task โ€” runs on your machine.** Use the manual steps below if you'd rather it run locally (requires your machine to be on). + ## Option A โ€” Let Claude Code install it for you (recommended) If you already have [Claude Code](https://docs.anthropic.com/en/docs/claude-code) on your laptop, this is by far the easiest way. You don't follow any steps yourself โ€” just send Claude Code this repo URL and ask it to install: diff --git a/prompts/weekly-briefing.md b/prompts/weekly-briefing.md index 551e2db..7521433 100644 --- a/prompts/weekly-briefing.md +++ b/prompts/weekly-briefing.md @@ -6,15 +6,15 @@ You are Katherine's Learning Partner Agent. Your job is to find the highest-qual --- -## STEP 1 โ€” Read context (2 tool calls) +## STEP 1 โ€” Read context (read all sources below before scanning) ### 1a. Read the local source list -Read the file at `./config/sources.md`. This contains 48 curated sources with Name, Tier, Category, Type, URL, Feed URL, and Agent Notes. +Read the file at `./config/sources.md`. This contains the curated source list โ€” each row has Name, Tier, Category, Type, URL, Feed URL, and Agent Notes. Rows marked `REMOVED` (currently #12 and #29) should be skipped. **Important:** Some Feed URLs may still have backtick formatting โ€” strip backticks before using with WebFetch. -### 1b. Read the previously-recommended log -Read `./config/previously-recommended.md`. Every URL listed here has already been recommended โ€” exclude them from this week's briefing. +### 1b. Read the previously-recommended log (best-effort seed) +Read `./config/previously-recommended.md` if it exists. Treat it as a best-effort seed of already-recommended URLs โ€” **not** the source of truth. In cloud runs this file may be stale (a fresh clone won't include picks from runs that weren't committed back). The authoritative dedup sources are the Notion Weekly Checklist (1c) and the recent briefing pages (1d). ### 1c. Read the Weekly Checklist from Notion (single source of truth) Fetch the Notion page `31982e5a-5fa3-809b-bb66-c3bc6015a92b` (AI Learning Plan โ€” Weekly Checklist). @@ -32,15 +32,16 @@ From this page, determine: 2. **URLs already in the plan**: Extract ALL URLs from the entire checklist (all weeks). These are excluded from recommendations, even if they don't appear in previously-recommended.md. 3. **Current week's topic**: Note the week title and content focus (e.g., "Week 2 ยท Attention, transformers + Learning Partner Agent v1"). +### 1d. Read recent briefing pages from Notion (authoritative dedup) +Fetch the **Learning Agent Recommendation** page (`33f82e5a-5fa3-8062-9bf2-c019bf572c5f`) and open its most recent ~6 child pages (prior "Weekly Picks" briefings). Extract every URL they recommended and add it to the exclusion set. This is the durable dedup memory โ€” it does not depend on any local file being committed back after a run. + --- ## STEP 2 โ€” Collect content (two parallel scans) Run two complementary scans. Budget your tool calls carefully: - **YouTube RSS**: ~13 WebFetch calls (one per channel) -- **Blog/Substack RSS**: ~8 WebFetch calls (Tier 1 feeds) -- **X WebSearch**: ~3 calls (Tier 1 names only) -- **Broad discovery**: ~3 WebSearch calls +- **Blog/Substack RSS**: ~8 WebFetch calls (Tier 1 feeds)- **Broad discovery**: ~3 WebSearch calls - **Evergreen scan**: ~3 WebSearch calls - **YouTube engagement check**: ~3-5 WebFetch calls (top candidates only) - **Notion write**: 1 call @@ -59,14 +60,6 @@ For each Tier 1 source with a Feed URL (not YouTube), WebFetch the RSS/Atom feed Filter for posts published in the last 7 days. Record: title, URL, published date, author, description/summary. For sources marked "No RSS โ€” manual" in Agent Notes (e.g., #17 Microsoft HAX, #24 Emily Campbell, #25 Amelia Wattenberger), WebFetch their homepage URL and check for new content. - -**X / Twitter** (secondary source โ€” WebSearch only): -For the top 5 Tier 1 individuals, run WebSearch queries: -``` -site:x.com "{person name}" {current week primary topic} after:{7 days ago date} -``` -Only surface posts that got enough traction to be indexed by search. - ### 2b. EVERGREEN SCAN โ€” Best of the last 18 months Run 3-5 targeted WebSearch queries focused on the current week's primary topic: @@ -193,7 +186,7 @@ Create a child page under the **Learning Agent Recommendation** page (`33f82e5a- ``` **Generated:** {date} | **Focus:** {week_topic} -**Sources checked:** YouTube ({n} channels), Blogs/RSS ({n}), Web ({n} searches), X ({n} accounts) +**Sources checked:** YouTube ({n} channels), Blogs/RSS ({n}), Web ({n} searches) **Estimated total reading time:** ~{N} hours {M} min --- @@ -254,7 +247,7 @@ Create a child page under the **Learning Agent Recommendation** page (`33f82e5a- {2-3 sentences noting patterns: "Multiple voices discussed X this week", "New tool launched relevant to Week N", "Emerging debate about Y"} ## ๐Ÿ”ง Source Health -YouTube: {OK/Degraded/Failed} | Blogs/RSS: {OK/Degraded/Failed} | Web: {OK/Degraded/Failed} | X: {OK/Degraded/Failed} +YouTube: {OK/Degraded/Failed} | Blogs/RSS: {OK/Degraded/Failed} | Web: {OK/Degraded/Failed} {Note any feeds that returned errors or empty results} --- @@ -279,10 +272,12 @@ CRITICAL: Every checklist item MUST include ALL of these โ€” missing any is a bu --- -## STEP 5 โ€” Update the dedup log +## STEP 5 โ€” Update the dedup log (best-effort) After writing the briefing, append all recommended URLs (Must Read + Recommended + Discovered + Wild Card) to `./config/previously-recommended.md`. +**Note:** The durable dedup record is Notion (the new briefing page plus the prior pages read in Step 1d), because cloud runs start from a fresh clone and can only push to a `claude/` branch. Updating this file is a best-effort convenience for local runs โ€” don't rely on it persisting, and don't block or fail the run trying to commit it. + Format: one URL per line, with a date comment: ``` # Week {N} โ€” {YYYY-MM-DD} @@ -316,6 +311,18 @@ Duration: {approximate} --- +## STEP 7 โ€” Notify Katherine on her phone + +After the briefing page exists, send a notification so Katherine sees it on her phone: + +1. **Notion @mention (primary, reliable).** Post a comment on the **newly created** Weekly Picks page with `notion-create-comment`, tagging Katherine via a `rich_text` user mention (user id `5efdb4b6-c7ef-433b-89f4-5cb49d245f7b`) so Notion pushes it to her mobile app. Keep it to one line โ€” week number, number of picks, and the page URL. Shape: + - text: "๐Ÿ“ฌ Your Week {N} picks are ready ({X} items) โ€” " + - mention: user `5efdb4b6-c7ef-433b-89f4-5cb49d245f7b` + - text: " {page_url}" +2. **Claude push (best-effort).** If the `PushNotification` tool is available during the run, also call it with a short message and the page URL. If it's unavailable or reports it wasn't sent, that's expected โ€” the Notion mention is the reliable channel. Never fail the run over this. + +--- + ## Quality checklist (self-check before finishing) Before creating the Notion page, verify: From 2f2341c7a49c23331efb0dcc9ee857afb6a89a5e Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 9 Jun 2026 09:58:57 +0000 Subject: [PATCH 2/7] README: correct active source count to 47 (2 retired) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index efb99e8..a81399e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A weekly AI learning curator I built for myself โ€” and you can fork it for yours. -Every Sunday at 7pm, this agent scans 49 hand-picked sources, scores everything against the topic I'm studying that week, and writes 5โ€“7 ranked recommendations into my Notion. The whole thing is a structured prompt. No code to maintain. +Every Sunday at 7pm, this agent scans 47 hand-picked sources, scores everything against the topic I'm studying that week, and writes 5โ€“7 ranked recommendations into my Notion. The whole thing is a structured prompt. No code to maintain. **Built for** designers, PMs, and anyone learning AI from a non-CS background who wants the signal without the scrolling. If you can edit a Notion page, you can run this. If you can edit a markdown file, you can adapt it. @@ -92,7 +92,7 @@ Full spec: [`config/scoring-algorithm.md`](https://github.com/Katherine-Peng/Lea --- -## The 49 sources +## The sources | Category | Examples | Count | | --- | --- | --- | @@ -248,7 +248,7 @@ Learning-Agent/ โ”œโ”€โ”€ prompts/ โ”‚ โ””โ”€โ”€ weekly-briefing.md โ† the agent's brain โ”œโ”€โ”€ config/ -โ”‚ โ”œโ”€โ”€ sources.md โ† 49 sources with feed URLs +โ”‚ โ”œโ”€โ”€ sources.md โ† 47 sources with feed URLs โ”‚ โ”œโ”€โ”€ scoring-algorithm.md โ† full scoring spec โ”‚ โ””โ”€โ”€ previously-recommended.md โ† dedup log (appended each run) โ””โ”€โ”€ logs/ From e04824b2c0e8234a452f1453b299abad8e90beeb Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 9 Jun 2026 10:42:30 +0000 Subject: [PATCH 3/7] Tidy repo + switch notify channel - Re-add Benedict Evans as WebSearch-only source (author disabled RSS; site 403s bots) - STEP 7: make Google Calendar the primary phone-notification channel (Notion mention secondary), since Notion mentions aren't reaching the user and email can't auto-send - Add .gitignore; stop tracking .DS_Store (.DS_Store + logs/.DS_Store) - Refresh sources.md cache header (now manually maintained) --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 8 ++++++++ config/sources.md | 6 +++--- logs/.DS_Store | Bin 6148 -> 0 bytes prompts/weekly-briefing.md | 16 +++++++++------- 5 files changed, 20 insertions(+), 10 deletions(-) delete mode 100644 .DS_Store create mode 100644 .gitignore delete mode 100644 logs/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Exported from Notion on 2026-03-18 +> Originally exported from Notion on 2026-03-18; manually maintained since (last edit 2026-06-09). > Source: Master Source Table (32782e5a-5fa3-80de-8f18-c36ae43cffd8) -> To refresh: re-export from Notion +> This file is the source list the agent actually reads. To refresh, edit it directly or re-export from Notion. ## Sources @@ -35,7 +35,7 @@ | 26 | Simon Willison | 1 | AI Engineering | Blog | simonwillison.net | https://simonwillison.net/atom/everything/ | Always surface. MCP + agent posts = Must Read. | | 27 | Ethan Mollick | 1 | AI + Work | Substack | oneusefulthing.org | https://www.oneusefulthing.org/feed | Always surface. Every post is relevant. | | 28 | Lenny Rachitsky | 1 | Product | Substack | lennysnewsletter.com | https://www.lennysnewsletter.com/feed | Surface AI posts as Must Read. Prefer YouTube over paywalled text. | -| ~~29~~ | ~~Benedict Evans~~ | โ€” | โ€” | โ€” | โ€” | โ€” | REMOVED โ€” RSS feed broken (404), no alternative found. Re-add if feed becomes available. | +| 29 | Benedict Evans | 2 | Strategy | Blog | ben-evans.com/benedictevans | No RSS โ€” WebSearch | Re-added 2026-06-09. Author **deliberately disabled RSS** (confirmed 2025) and the site returns HTTP 403 to bots, so no feed or direct fetch works. Discover via WebSearch `site:ben-evans.com/benedictevans {topic}` in the evergreen/discovery scan. Best-effort. | | 30 | AI Snake Oil โ†’ Normal Tech | 1 | Safety | Substack | normaltech.ai (was aisnakeoil.substack.com) | https://www.normaltech.ai/feed | Surface everything. Posts challenging mainstream claims = Must Read. Rebranded from AI Snake Oil to Normal Tech in 2026. | | 31 | Chip Huyen | 2 | AI Engineering | Blog | huyenchip.com | https://huyenchip.com/feed.xml | Surface systems + eval posts. | | 32 | Nathan Lambert | 2 | Alignment | Substack | interconnects.ai | https://www.interconnects.ai/feed | Surface alignment + behaviour posts. Skip if paywalled. | diff --git a/logs/.DS_Store b/logs/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Tue, 9 Jun 2026 10:44:08 +0000 Subject: [PATCH 4/7] Fix active source count to 48 (Benedict Evans re-added; only #12 removed) --- README.md | 4 ++-- prompts/weekly-briefing.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a81399e..b68030e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A weekly AI learning curator I built for myself โ€” and you can fork it for yours. -Every Sunday at 7pm, this agent scans 47 hand-picked sources, scores everything against the topic I'm studying that week, and writes 5โ€“7 ranked recommendations into my Notion. The whole thing is a structured prompt. No code to maintain. +Every Sunday at 7pm, this agent scans 48 hand-picked sources, scores everything against the topic I'm studying that week, and writes 5โ€“7 ranked recommendations into my Notion. The whole thing is a structured prompt. No code to maintain. **Built for** designers, PMs, and anyone learning AI from a non-CS background who wants the signal without the scrolling. If you can edit a Notion page, you can run this. If you can edit a markdown file, you can adapt it. @@ -248,7 +248,7 @@ Learning-Agent/ โ”œโ”€โ”€ prompts/ โ”‚ โ””โ”€โ”€ weekly-briefing.md โ† the agent's brain โ”œโ”€โ”€ config/ -โ”‚ โ”œโ”€โ”€ sources.md โ† 47 sources with feed URLs +โ”‚ โ”œโ”€โ”€ sources.md โ† 48 sources with feed URLs โ”‚ โ”œโ”€โ”€ scoring-algorithm.md โ† full scoring spec โ”‚ โ””โ”€โ”€ previously-recommended.md โ† dedup log (appended each run) โ””โ”€โ”€ logs/ diff --git a/prompts/weekly-briefing.md b/prompts/weekly-briefing.md index 5c51bc9..3e5ecd1 100644 --- a/prompts/weekly-briefing.md +++ b/prompts/weekly-briefing.md @@ -9,7 +9,7 @@ You are Katherine's Learning Partner Agent. Your job is to find the highest-qual ## STEP 1 โ€” Read context (read all sources below before scanning) ### 1a. Read the local source list -Read the file at `./config/sources.md`. This contains the curated source list โ€” each row has Name, Tier, Category, Type, URL, Feed URL, and Agent Notes. Rows marked `REMOVED` (currently #12 and #29) should be skipped. +Read the file at `./config/sources.md`. This contains the curated source list โ€” each row has Name, Tier, Category, Type, URL, Feed URL, and Agent Notes. Rows marked `REMOVED` (currently #12) should be skipped. **Important:** Some Feed URLs may still have backtick formatting โ€” strip backticks before using with WebFetch. From 7cdfe610c4411ac48a227cc6f68d40295838466c Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 9 Jun 2026 11:32:44 +0000 Subject: [PATCH 5/7] STEP 7: calendar reminder 'Learning-Agent Weekly Picks' (10-min event); mention both Notion accounts --- prompts/weekly-briefing.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/prompts/weekly-briefing.md b/prompts/weekly-briefing.md index 3e5ecd1..a54f009 100644 --- a/prompts/weekly-briefing.md +++ b/prompts/weekly-briefing.md @@ -315,12 +315,12 @@ Duration: {approximate} After the briefing page exists, send a notification so Katherine sees it on her phone. The **Google Calendar event is the primary channel** (it reliably pushes to her phone via her active Google account); the Notion mention is a secondary nicety. -1. **Google Calendar event (primary, reliable).** Using the Google Calendar connector, create an event on her primary calendar timed to start ~2 minutes from now, with a popup reminder at 0 minutes so her phone gets an immediate push: - - summary: "๐Ÿ“ฌ Weekly Picks โ€” Week {N} ready ({X} items)" +1. **Google Calendar event (primary, reliable).** Using the Google Calendar connector, create an event on her primary calendar starting at run time, **10 minutes long**, with a popup reminder at 0 minutes so her phone gets an immediate push: + - summary: `Learning-Agent Weekly Picks` - description: the new page URL + a one-line teaser of the top pick - - startTime / endTime: now+2min to now+32min, timeZone `Europe/London` + - startTime / endTime: now to now+10min, timeZone `Europe/London` - overrideReminders: `[{method: popup, minutes: 0}]` -2. **Notion @mention (secondary).** Post a comment on the **newly created** Weekly Picks page with `notion-create-comment`, tagging Katherine via a `rich_text` user mention (user id `5efdb4b6-c7ef-433b-89f4-5cb49d245f7b`) plus the page URL. (Note: only reaches her phone if her Notion mobile app is signed into the account that owns this workspace.) +2. **Notion @mention (secondary).** Post a comment on the **newly created** Weekly Picks page with `notion-create-comment`, tagging Katherine via `rich_text` user mentions โ€” both `1e0d872b-594c-816f-a40c-00027d528a9d` (katherinepeng.uk) and `5efdb4b6-c7ef-433b-89f4-5cb49d245f7b` (catphy0825) โ€” plus the page URL. 3. **Claude push (best-effort).** If the `PushNotification` tool is available during the run, also call it. If not, that's expected โ€” never fail the run over this. --- From a2ead34602cab22a771e6a1a83b3dc2cab31efe2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 9 Jun 2026 12:03:55 +0000 Subject: [PATCH 6/7] Restructure weekly picks page: Highlight first, Weekly plan up top, bulleted summaries, Source Health as collapsed toggle; mention only katherinepeng.uk on the individual page --- prompts/weekly-briefing.md | 95 ++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 45 deletions(-) diff --git a/prompts/weekly-briefing.md b/prompts/weekly-briefing.md index a54f009..e2e4c56 100644 --- a/prompts/weekly-briefing.md +++ b/prompts/weekly-briefing.md @@ -186,20 +186,41 @@ Create a child page under the **Learning Agent Recommendation** page (`33f82e5a- ``` **Generated:** {date} | **Focus:** {week_topic} -**Sources checked:** YouTube ({n} channels), Blogs/RSS ({n}), Web ({n} searches) -**Estimated total reading time:** ~{N} hours {M} min +**Sources checked:** YouTube ({n} channels), Blogs/RSS ({n}), Web ({n} searches) | **Reading time:** ~{N} hr {M} min + +--- + +## โœจ This Week's Highlight +{1โ€“2 short paragraphs โ€” the Learning-Agent's plain-prose summary of the week: what changed, what's most worth focusing on, and any notable industry news / launches / debates relevant to Week {N}. This is the "read this first" overview. (This replaces the old Signals & Patterns section and now lives at the top.)} + +--- + +## โœ… Weekly plan +{The actionable checklist โ€” tick these off / copy into the Weekly Plan. Every item MUST include all four: tier emoji (โญ Must Read ยท ๐ŸŸ  Recommended ยท ๐Ÿ”ต Discovered ยท ๐Ÿƒ Wild Card), title, estimated time, and full clickable URL.} + +- [ ] โญ {Must Read 1 title} ยท ~{N} min {read/watch} ยท {URL} +- [ ] โญ {Must Read 2 title} ยท ~{N} min {read/watch} ยท {URL} +- [ ] ๐ŸŸ  {Recommended 1 title} ยท ~{N} min {read/watch} ยท {URL} +- [ ] ๐ŸŸ  {Recommended 2 title} ยท ~{N} min {read/watch} ยท {URL} +- [ ] ๐Ÿ”ต {Discovered title} ยท ~{N} min {read/watch} ยท {URL} +- [ ] ๐Ÿƒ {Wild Card title} ยท ~{N} min {read/watch} ยท {URL} + +(Adjust lines to match actual count โ€” hard cap 7 items total.) --- ## โญ Must Read ### 1. {Title} -**{Author}** ยท {Platform} ยท {Type ~N min read/watch} ยท Score: {N}/100 -{URL} +**{Author}** ยท {Platform} ยท ~{N} min {read/watch} ยท Score: {N}/100 +๐Ÿ”— {URL} -**Summary:** {One paragraph โ€” what this content IS about. The key argument, framework, or insight. Written so Katherine can decide if she wants to read the full piece.} +**Summary** +- {Key point โ€” what it is, its core argument or framework} +- {Second bullet if needed โ€” one idea per bullet, not a dense paragraph} -**Why it matters for Week {N}:** {2-3 sentences connecting this content to her current week's learning topic, her role at Microsoft M365 Copilot, or her broader learning goals.} +**Why it matters (Week {N})** +- {1โ€“2 bullets connecting it to this week's topic, her M365 Copilot work, or learning goals} ### 2. {Title} ... @@ -209,65 +230,46 @@ Create a child page under the **Learning Agent Recommendation** page (`33f82e5a- ## ๐ŸŸ  Recommended ### {N}. {Title} -**{Author}** ยท {Platform} ยท {Type ~N min read/watch} ยท Score: {N}/100 -{URL} +**{Author}** ยท {Platform} ยท ~{N} min {read/watch} ยท Score: {N}/100 +๐Ÿ”— {URL} -**Summary:** {One paragraph summary.} +**Summary** +- {1โ€“2 concise bullets} -**One-liner:** {Single sentence on why it's worth her time.} +**Worth it because:** {single sentence} ... --- ## ๐Ÿ”ต Discovered (Beyond Your List) -{0-2 items from broad discovery, clearly labeled as new voices} +{0โ€“2 items from broad discovery, clearly labeled as new voices} ### {Title} -**{Author}** ยท {Platform} ยท {Type ~N min read/watch} ยท Score: {N}/100 -{URL} +**{Author}** ยท {Platform} ยท ~{N} min {read/watch} ยท Score: {N}/100 +๐Ÿ”— {URL} -**Who is this:** {1 sentence on who this person is and why they're worth attention.} -**Summary:** {One paragraph.} +- **Who is this:** {1 sentence on who they are and why they're worth attention} +- **Summary:** {1โ€“2 bullets} --- ## ๐Ÿƒ Wild Card ### {Title} -**{Author}** ยท {Platform} ยท {Type ~N min read/watch} ยท Score: {N}/100 -{URL} +**{Author}** ยท {Platform} ยท ~{N} min {read/watch} ยท Score: {N}/100 +๐Ÿ”— {URL} -**Why this is the Wild Card:** {2-3 sentences on what makes this surprising, contrarian, or cross-domain.} -**Summary:** {One paragraph.} +- **Why it's the Wild Card:** {what makes it surprising, contrarian, or cross-domain} +- **Summary:** {1โ€“2 bullets} --- -## ๐Ÿ“Š Signals & Patterns -{2-3 sentences noting patterns: "Multiple voices discussed X this week", "New tool launched relevant to Week N", "Emerging debate about Y"} - -## ๐Ÿ”ง Source Health -YouTube: {OK/Degraded/Failed} | Blogs/RSS: {OK/Degraded/Failed} | Web: {OK/Degraded/Failed} -{Note any feeds that returned errors or empty results} - ---- - -## โœ… Checklist โ€” Copy to Weekly Plan - -CRITICAL: Every checklist item MUST include ALL of these โ€” missing any is a bug: -1. Tier emoji (โญ = Must Read, ๐ŸŸ  = Recommended, ๐Ÿ”ต = Discovered, ๐Ÿƒ = Wild Card) -2. Title -3. Estimated time (e.g. "~15 min read" or "~45 min watch") -4. Full clickable URL - -- [ ] โญ {Must Read 1 title} ยท ~{N} min {read/watch} ยท {URL} -- [ ] โญ {Must Read 2 title} ยท ~{N} min {read/watch} ยท {URL} -- [ ] ๐ŸŸ  {Recommended 1 title} ยท ~{N} min {read/watch} ยท {URL} -- [ ] ๐ŸŸ  {Recommended 2 title} ยท ~{N} min {read/watch} ยท {URL} -- [ ] ๐Ÿ”ต {Discovered title} ยท ~{N} min {read/watch} ยท {URL} -- [ ] ๐Ÿƒ {Wild Card title} ยท ~{N} min {read/watch} ยท {URL} +{Render the Source Health block below as a COLLAPSED TOGGLE so it stays tucked away at the very bottom โ€” see the Notion enhanced-markdown spec for the exact toggle syntax.} -(Adjust lines to match actual count โ€” hard cap 7 items total) +โ–ธ **๐Ÿ”ง Source Health** + YouTube: {OK/Degraded/Failed} | Blogs/RSS: {OK/Degraded/Failed} | Web: {OK/Degraded/Failed} + {Note any feeds that returned errors or empty results} ``` --- @@ -320,7 +322,7 @@ After the briefing page exists, send a notification so Katherine sees it on her - description: the new page URL + a one-line teaser of the top pick - startTime / endTime: now to now+10min, timeZone `Europe/London` - overrideReminders: `[{method: popup, minutes: 0}]` -2. **Notion @mention (secondary).** Post a comment on the **newly created** Weekly Picks page with `notion-create-comment`, tagging Katherine via `rich_text` user mentions โ€” both `1e0d872b-594c-816f-a40c-00027d528a9d` (katherinepeng.uk) and `5efdb4b6-c7ef-433b-89f4-5cb49d245f7b` (catphy0825) โ€” plus the page URL. +2. **Notion @mention (secondary).** Post a **short, simple** comment on the **newly created Weekly Picks page** (never the parent "Learning Agent Recommendation" page), mentioning **only** Katherine's main account `1e0d872b-594c-816f-a40c-00027d528a9d` (katherinepeng.uk). Keep it to one line, e.g. `๐Ÿ“ฌ Your Week {N} picks are ready โ€”` followed by the page link. 3. **Claude push (best-effort).** If the `PushNotification` tool is available during the run, also call it. If not, that's expected โ€” never fail the run over this. --- @@ -336,6 +338,9 @@ Before creating the Notion page, verify: - [ ] Wild Card is genuinely surprising, not just a lower-scoring version of the same type of content - [ ] Source Health accurately reports which sources succeeded/failed - [ ] EVERY item has an estimated time (blogs: ~250 words/min; videos: use actual duration; interactive tools: estimate exploration time) -- [ ] Checklist at bottom has ALL of: tier emoji, title, estimated time, full URL for EVERY item +- [ ] **Weekly plan** section (near the top) has ALL of: tier emoji, title, estimated time, full URL for EVERY item - [ ] Total estimated reading time in header is the sum of all item times - [ ] Hard cap of 7 items total is respected +- [ ] Page order is: โœจ This Week's Highlight โ†’ โœ… Weekly plan โ†’ โญ Must Read โ†’ ๐ŸŸ  Recommended โ†’ ๐Ÿ”ต Discovered โ†’ ๐Ÿƒ Wild Card โ†’ ๐Ÿ”ง Source Health (collapsed toggle at the very bottom) +- [ ] This Week's Highlight is 1โ€“2 short paragraphs at the top (it replaces the old Signals & Patterns) +- [ ] Summaries use bullet points (one idea per bullet), not dense paragraphs From e943369798e8b99496fbc1b3fd2bdfee5623207d Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 9 Jun 2026 16:38:40 +0000 Subject: [PATCH 7/7] Source Health: add clean-heading fallback (toggle unreliable via API markdown) --- prompts/weekly-briefing.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/prompts/weekly-briefing.md b/prompts/weekly-briefing.md index e2e4c56..ab2fb7f 100644 --- a/prompts/weekly-briefing.md +++ b/prompts/weekly-briefing.md @@ -265,11 +265,11 @@ Create a child page under the **Learning Agent Recommendation** page (`33f82e5a- --- -{Render the Source Health block below as a COLLAPSED TOGGLE so it stays tucked away at the very bottom โ€” see the Notion enhanced-markdown spec for the exact toggle syntax.} +{Put Source Health at the very bottom. Prefer a COLLAPSED TOGGLE (read the Notion enhanced-markdown spec for the exact toggle syntax); if a toggle can't be created reliably, fall back to a plain `## ๐Ÿ”ง Source Health` heading โ€” never leave a literal โ–ธ character.} -โ–ธ **๐Ÿ”ง Source Health** - YouTube: {OK/Degraded/Failed} | Blogs/RSS: {OK/Degraded/Failed} | Web: {OK/Degraded/Failed} - {Note any feeds that returned errors or empty results} +## ๐Ÿ”ง Source Health +YouTube: {OK/Degraded/Failed} | Blogs/RSS: {OK/Degraded/Failed} | Web: {OK/Degraded/Failed} +{Note any feeds that returned errors or empty results} ``` ---