--- name: morning-newspaper description: Use when the user asks for their morning paper, daily briefing, front page, or "what do I need to know today", or when a scheduled morning routine runs this skill. Builds a personalized, newspaper-style briefing with top stories, the user's chosen topics, markets, weather, a calendar glance, and one long read, every item linked to a source published in the last 24 hours. metadata: id: morning-newspaper version: "1.0.0" author: BotPlaza --- # Morning Newspaper > Wake up to a front page built for you. ## What it does Assemble a one-page, newspaper-style briefing the reader can finish over coffee: a masthead, a lead story, the topics they care about, markets, weather, today's calendar, and one long read worth saving for later. Every story links to its source. Nothing is invented. ## When to use - The user asks for "my paper", "the morning paper", "today's front page", "daily briefing", or "what's going on today". - A scheduled routine (for example "every day at 7:00 AM") calls this skill. - The user asks to change what the paper covers. Update the saved preferences, then confirm the change in one line. ## Requires Web search and web access for news and weather. Optional: a calendar connector (Google Calendar or Outlook) for "Your day", and an email connector for "Inbox watch". If an optional connector is missing, skip that section and say so in one line. ## Schedule Default: Daily, 7:00 AM. Run it from a routine or scheduled task at that time; the user can change the time in the routine, not in this skill. ## Inputs Read these from saved preferences or memory. On the first run, ask for them once in a single short message, offer the defaults, and save the answers. | Setting | Default | Notes | |---|---|---| | `masthead` | "The Morning Edition" | Paper name shown at the top. Many readers use "The [Name] Daily". | | `reader_name` | user's first name | Used in the greeting line only. | | `location` | ask | City for weather. Also sets the "local" section. | | `timezone` | user's timezone | All times print in this zone, with its label. | | `topics` | World, Technology, Business, Science | Toggle any of: World, Local, Politics, Business, Technology, AI, Science, Health, Climate, Sports, Culture, Books, Design, Startups, Crypto. Custom topics allowed (e.g. "Formula 1", "Denver housing"). | | `teams_or_tickers` | none | Sports teams to follow and market tickers to watch. | | `sections` | all on | Front page, Topics, Markets, Weather, Calendar, Long Read, Inbox Watch (off by default), On This Day (off by default), Quote (off by default). | | `length` | standard | `brief` (about 3 min read), `standard` (about 6 min), `full` (about 12 min). | | `tone` | straight | `straight` (wire-service neutral), `conversational`, or `witty` (light, never flippant about tragedy). | | `sources_prefer` / `sources_avoid` | none | Outlets to favor or skip. | | `delivery` | this chat | Where the paper lands: chat, email draft, or a document. | ## Steps 1. **Load preferences.** Read saved settings. If any required setting (`location`, `timezone`) is missing, use the defaults above, run anyway, and ask for it at the end of the paper in one line. 2. **Set the news window.** The window is the 24 hours before now in the reader's timezone. On Monday, widen to 72 hours so weekend news isn't lost. Write today's date in full for the masthead (e.g. "Saturday, October 31, 2026"). 3. **Gather the front page.** Search the web for the biggest stories in the window. Pick candidates that at least two independent outlets are reporting. Open each article; do not write from search snippets alone. Record the outlet, headline, publish time, and URL. 4. **Gather each topic.** For each toggled topic, find 1 to 3 stories in the window (1 for `brief`, 2 for `standard`, 3 for `full`). Prefer original reporting, primary sources (filings, papers, official statements), and the user's `sources_prefer`. Skip `sources_avoid`. 5. **Markets.** If the Markets section is on, get the latest close or current level for major indexes plus each ticker in `teams_or_tickers`, with percent change and the "as of" time. On weekends and market holidays, show the last close and say so ("Markets closed; figures as of Friday's close"). 6. **Weather.** Get today's forecast for `location`: high, low, conditions, precipitation chance, and anything notable (warnings, air quality, sunset time). One sentence on what it means for the day ("Bring an umbrella after 3 PM"). 7. **Calendar glance.** If a calendar connector is available, list today's events with start times in the reader's timezone, and flag conflicts, early starts, and travel gaps. If no calendar is connected, drop the section silently on scheduled runs, and mention once on manual runs that connecting a calendar adds it. 8. **Inbox watch (optional).** If enabled and an email connector is available, list up to 3 messages that need a reply today. Show sender and subject only, never full message bodies. 9. **Long read.** Pick one substantial piece (feature, essay, investigation, or interview) published in the last 7 days that matches the reader's topics. Give its reading time and a two-sentence reason it's worth the time. 10. **Rank and cut.** Lead with the story that most affects the reader: global significance first, then topic match, then local relevance. Remove duplicates across sections. Cut to the length budget. A short paper beats a padded one. 11. **Write.** Use the output format below. Headlines in sentence case, active voice, under 12 words. Each summary is 1 to 3 sentences: what happened, why it matters, what's next. Write in the chosen tone. No hype words ("game-changer", "revolutionary"), and no opinions presented as fact. 12. **Check before sending.** Every story has a working link and a publish time inside the window. Every number (prices, percentages, temperatures) comes from a source opened this run. Dates and times show the reader's timezone. If a fact can't be verified, cut it. 13. **Deliver.** Post to the `delivery` destination. If delivery means sending an email or posting somewhere new, draft it and ask for approval the first time. ## Output format ```markdown # {MASTHEAD} **{Weekday, Month D, YYYY}** · {Location} · {Edition No. N, optional} *Good morning, {reader_name}. {One sentence on the shape of the day.}* --- ## Front page ### {Lead headline} {2–3 sentence summary.} [{Outlet}]({url}) · {time, tz} ### {Second headline} {1–2 sentences.} [{Outlet}]({url}) ## {Topic name} - **{Headline}.** {1–2 sentences.} [{Outlet}]({url}) ## Markets | Index / ticker | Level | Change | |---|---|---| *As of {time, tz}. Source: [{source}]({url})* ## Weather: {Location} {High}/{Low}, {conditions}. {Precip chance}. {What it means for the day.} ## Your day - {time} · {event} {flag if any} ## The long read **[{Title}]({url})**, {Outlet}, {N} min read {Two sentences on why it's worth it.} --- *Sources opened this morning: {count}. Reply "more on {topic}", "less {topic}", or "add {topic}" to adjust tomorrow's paper.* ``` ## Customization - "Add Formula 1 and drop crypto." Update `topics`. - "Make it shorter on weekdays and full on Sundays." Store a per-day `length`. - "Call it The Rivera Herald." Update `masthead`. - "Deliver at 6:30 AM." Update the routine schedule, not this skill. - "Only Canadian sources for local news." Add to `sources_prefer` for Local. ## Edge cases - **Quiet news day:** run fewer stories. Never pad with old news. Say "A quiet morning" in the greeting. - **Breaking story still developing:** label it "Developing" and say what is confirmed and what isn't. - **Paywalled source:** summarize only what's visible and mark the link "(paywall)". Prefer an open source covering the same story. - **Topic with no news in the window:** omit the topic. Don't stretch the window except on Mondays. - **Reader is traveling:** if the calendar shows travel or the user says they're away, use the destination for weather and local news and label it. - **Tragedy or sensitive news:** use the straight tone for that item even when the paper is set to witty. - **A source fails or a connector is down:** run with what works and note it in one line at the bottom ("Calendar unavailable this morning"). - **Conflicting reports:** give both figures and their sources rather than picking one. ## Boundaries - Read-only. This skill never sends email, accepts invites, or posts publicly without the user's approval. - Never present unverified claims, search snippets, or model memory as today's news. - Don't quote more than a sentence or two from any article. Summarize and link.