{"skill":{"slug":"daily-briefing-skill","displayName":"Daily Briefing","summary":"Automated daily morning briefing generator. Fetches weather, calendar, news, AI/tech updates, OpenClaw insights, and actionable tips. Delivers via iMessage a...","description":"---\nname: daily-briefing\ndescription: Automated daily morning briefing generator. Fetches weather, calendar, news, AI/tech updates, OpenClaw insights, and actionable tips. Delivers via iMessage at 7am daily.\nhomepage: https://github.com/nudge/openclaw-skills/tree/main/daily-briefing\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"📰\",\n        \"requires\": { \"bins\": [\"curl\", \"python3\"] },\n        \"schedule\": \"0 7 * * *\",\n        \"delivery\": \"paulkingham@mac.com\",\n      },\n  }\n---\n\n# Daily Morning Briefing\n\nAn automated daily briefing that compiles weather, calendar, news, AI/tech updates, and OpenClaw insights into a concise morning message delivered via iMessage.\n\n## What It Does\n\nEvery morning at 7am, the briefing delivers:\n\n1. **Weather** – Current conditions and forecast for Leyton, London\n2. **Calendar** – Today's events and context\n3. **Top 5 News** – Headlines from trusted sources\n4. **AI/Tech Pulse** – 3-4 interesting developments in AI and technology\n5. **OpenClaw Deep Dive** – News, new skills, community highlights, suggestions\n6. **Two Things to Try** – Actionable improvements for your workflow\n\n## Quick Start\n\n### Run manually\n\n```bash\ncd /Users/nudge/openclaw/skills/daily-briefing\n./scripts/generate-briefing.sh\n```\n\n### Send via iMessage\n\n```bash\ncd /Users/nudge/openclaw/skills/daily-briefing\n./scripts/send-briefing.sh paulkingham@mac.com\n```\n\n## Configuration\n\nEdit `/Users/nudge/openclaw/skills/daily-briefing/config/config.yaml`:\n\n```yaml\nlocation:\n  city: \"Leyton\"\n  region: \"London\"\n  country: \"UK\"\n  latitude: 51.5667\n  longitude: -0.0167\n\ndelivery:\n  recipient: \"paulkingham@mac.com\"\n  channel: \"imessage\"\n  time: \"07:00\"\n  timezone: \"Europe/London\"\n\ncontent:\n  news_sources:\n    - \"bbc\"\n    - \"guardian\"\n    - \"techcrunch\"\n  ai_sources:\n    - \"openai\"\n    - \"anthropic\"\n    - \"hacker-news\"\n  max_news_items: 5\n  max_ai_items: 4\n\npreferences:\n  temperature_unit: \"celsius\"\n  include_weather_icon: true\n  include_calendar_details: true\n```\n\n## Cron Setup\n\nThe briefing runs automatically via OpenClaw's cron system:\n\n```bash\n# Check current cron jobs\nopenclaw cron list\n\n# The briefing is pre-configured. To update schedule:\nopenclaw cron update daily-briefing --schedule=\"0 7 * * *\"\n```\n\n### Manual cron entry (if needed)\n\nAdd to your system crontab (runs in OpenClaw context):\n\n```cron\n0 7 * * * cd /Users/nudge/openclaw/skills/daily-briefing && ./scripts/generate-and-send.sh\n```\n\n## Scripts\n\n| Script | Purpose |\n|--------|---------|\n| `generate-briefing.sh` | Generates briefing text to stdout |\n| `send-briefing.sh <recipient>` | Generates and sends via iMessage |\n| `generate-and-send.sh` | Full pipeline (used by cron) |\n| `lib/weather.py` | Weather fetching module |\n| `lib/news.py` | News aggregation module |\n| `lib/calendar.py` | Calendar context module |\n| `lib/ai_pulse.py` | AI/tech news module |\n| `lib/openclaw_dive.py` | OpenClaw insights module |\n\n## Customization\n\n### Change location\n\nEdit `config/config.yaml` and update the `location` section.\n\n### Add news sources\n\nModify `lib/news.py` to add RSS feeds or APIs. Default sources:\n- BBC News\n- The Guardian\n- TechCrunch\n- Hacker News\n\n### Change delivery time\n\nUpdate the cron schedule:\n```bash\nopenclaw cron update daily-briefing --schedule=\"0 8 * * *\"  # 8am instead\n```\n\n### Customize content sections\n\nEdit `scripts/generate-briefing.sh` and comment out sections you don't want:\n\n```bash\n# Sections (comment out to disable)\nSECTIONS=(\n  weather\n  calendar\n  news\n  ai_pulse\n  openclaw_dive\n  suggestions\n)\n```\n\n## Output Format\n\nThe briefing produces a well-formatted message like:\n\n```\n📰 Good morning! Here's your briefing for Monday, February 16\n\n🌤️ Weather in Leyton\n   Partly cloudy, 8°C / 46°F\n   High: 12°C · Low: 5°C\n   💧 10% rain · 💨 12km/h wind\n\n📅 Today\n   09:00 - Team standup\n   14:00 - Client call (Zoom)\n\n📰 Top Stories\n   • Headline one...\n   • Headline two...\n   • Headline three...\n   • Headline four...\n   • Headline five...\n\n🤖 AI/Tech Pulse\n   • OpenAI releases new feature...\n   • Anthropic updates Claude...\n   • Hacker News trending: ...\n\n🦾 OpenClaw Deep Dive\n   New this week: skill-name (description)\n   Community highlight: ...\n   Try this: ...\n\n💡 Two Things to Try\n   1. First suggestion...\n   2. Second suggestion...\n```\n\n## Troubleshooting\n\n### Weather not loading\n\n- Check internet connection\n- Verify wttr.in is accessible: `curl wttr.in/London?format=3`\n- Try fallback to Open-Meteo API\n\n### Calendar empty\n\n- Ensure calendar access permissions for terminal\n- Check that Calendar.app has events today\n- Verify `icalBuddy` is installed (optional, for richer calendar data)\n\n### iMessage not sending\n\n- Confirm Messages.app is signed in\n- Check recipient address is correct\n- Verify Automation permission in System Settings\n- Test manually: `imsg send --to \"recipient\" --text \"test\"`\n\n### News not appearing\n\n- News sources may require API keys for production use\n- Default implementation uses web search for headlines\n- For production, add API keys to `config/secrets.yaml`\n\n## Dependencies\n\n**Required:**\n- `curl` – for web requests\n- `python3` – for data processing\n\n**Optional (enhanced features):**\n- `imsg` – for iMessage delivery (via Homebrew: `brew install steipete/tap/imsg`)\n- `icalBuddy` – for rich calendar data\n- `jq` – for JSON processing\n\n## Architecture\n\n```\n┌─────────────────┐\n│  Cron (7am)     │\n└────────┬────────┘\n         │\n┌────────▼────────┐\n│ generate-and-   │\n│ send.sh         │\n└────────┬────────┘\n         │\n    ┌────┴────┬────────┬────────┬──────────┬──────────┐\n    ▼         ▼        ▼        ▼          ▼          ▼\n┌───────┐ ┌──────┐ ┌──────┐ ┌────────┐ ┌──────────┐ ┌─────────┐\n│weather│ │calendar│ │news │ │ai_pulse│ │openclaw  │ │suggestions│\n│  .py  │ │  .py   │ │ .py │ │  .py   │ │_dive.py  │ │  .py    │\n└────┬──┘ └───┬────┘ └──┬───┘ └────┬───┘ └────┬─────┘ └────┬────┘\n     └─────────┴─────────┴──────────┴──────────┴────────────┘\n                             │\n                    ┌────────▼────────┐\n                    │  format-output  │\n                    └────────┬────────┘\n                             │\n                    ┌────────▼────────┐\n                    │  imsg send      │\n                    └─────────────────┘\n```\n\n## Updates & Maintenance\n\nThe skill self-documents its last run. Check status:\n\n```bash\ncat /Users/nudge/openclaw/skills/daily-briefing/.last-run\ncat /Users/nudge/openclaw/skills/daily-briefing/.last-status\n```\n\nTo update the skill itself:\n```bash\ncd /Users/nudge/openclaw/skills/daily-briefing\ngit pull  # If tracked in git\n```\n\n## Ideas to Extend\n\n- **Weekend edition** – Different content for Saturdays/Sundays\n- **Pre-meeting briefings** – 15-min before calendar events\n- **Travel mode** – Weather for destination city\n- **Stock/crypto prices** – Add financial tickers\n- **Podcast recommendations** – Based on listening history\n- **Fitness summary** – Previous day's activity stats\n- **Smart home status** – Brief overview of connected devices\n","tags":{"latest":"0.1.0"},"stats":{"comments":0,"downloads":304,"installsAllTime":1,"installsCurrent":1,"stars":0,"versions":1},"createdAt":1771317306797,"updatedAt":1779077124643},"latestVersion":{"version":"0.1.0","createdAt":1771317306797,"changelog":"- Initial release of daily-briefing: an automated daily morning briefing delivered via iMessage at 7am.\n- Compiles weather, calendar events, top 5 news headlines, 3–4 AI/tech updates, OpenClaw insights, and actionable workflow tips.\n- Highly customizable via `config.yaml` for location, news/AI sources, delivery time, and preferences.\n- Provides manual scripts for generating and sending the briefing, as well as full cron integration.\n- Troubleshooting and extension ideas documented for easy maintenance and future improvements.","license":null},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"justasknudge","userId":"s174qy9ar4p6grv32fwc6v1tdx884n74","displayName":"JustAskNudge","image":"https://avatars.githubusercontent.com/u/259488613?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779972327493}}