Skill: justasknudge/daily-briefing-skill (version 0.1.0)

--- name: daily-briefing description: Automated daily morning briefing generator. Fetches weather, calendar, news, AI/tech updates, OpenClaw insights, and actionable tips. Delivers via iMessage at 7am daily. homepage: https://github.com/nudge/openclaw-skills/tree/main/daily-briefing metadata: { "openclaw": { "emoji": "📰", "requires": { "bins": ["curl", "python3"] }, "schedule": "0 7 * * *", "delivery": "[REDACTED_SECRET]", }, } --- # Daily Morning Briefing An automated daily briefing that compiles weather, calendar, news, AI/tech updates, and OpenClaw insights into a concise morning message delivered via iMessage. ## What It Does Every morning at 7am, the briefing delivers: 1. **Weather** – Current conditions and forecast for Leyton, London 2. **Calendar** – Today's events and context 3. **Top 5 News** – Headlines from trusted sources 4. **AI/Tech Pulse** – 3-4 interesting developments in AI and technology 5. **OpenClaw Deep Dive** – News, new skills, community highlights, suggestions 6. **Two Things to Try** – Actionable improvements for your workflow ## Quick Start ### Run manually ```bash cd /Users/nudge/openclaw/skills/daily-briefing ./scripts/generate-briefing.sh ``` ### Send via iMessage ```bash cd /Users/nudge/openclaw/skills/daily-briefing ./scripts/send-briefing.sh [REDACTED_SECRET] ``` ## Configuration Edit `/Users/nudge/openclaw/skills/daily-briefing/config/config.yaml`: ```yaml location: city: "Leyton" region: "London" country: "UK" latitude: 51.5667 longitude: -0.0167 delivery: recipient: "[REDACTED_SECRET]" channel: "imessage" time: "07:00" timezone: "Europe/London" content: news_sources: - "bbc" - "guardian" - "techcrunch" ai_sources: - "openai" - "anthropic" - "hacker-news" max_news_items: 5 max_ai_items: 4 preferences: temperature_unit: "celsius" include_weather_icon: true include_calendar_details: true ``` ## Cron Setup The briefing runs automatically via OpenClaw's cron system: ```bash # Check current cron jobs openclaw cron list # The briefing is pre-configured. To update schedule: openclaw cron update daily-briefing --schedule="0 7 * * *" ``` ### Manual cron entry (if needed) Add to your system crontab (runs in OpenClaw context): ```cron 0 7 * * * cd /Users/nudge/openclaw/skills/daily-briefing && ./scripts/generate-and-send.sh ``` ## Scripts | Script | Purpose | |--------|---------| | `generate-briefing.sh` | Generates briefing text to stdout | | `send-briefing.sh <recipient>` | Generates and sends via iMessage | | `generate-and-send.sh` | Full pipeline (used by cron) | | `lib/weather.py` | Weather fetching module | | `lib/news.py` | News aggregation module | | `lib/calendar.py` | Calendar context module | | `lib/ai_pulse.py` | AI/tech news module | | `lib/openclaw_dive.py` | OpenClaw insights module | ## Customization ### Change location Edit `config/config.yaml` and update the `location` section. ### Add news sources Modify `lib/news.py` to add RSS feeds or APIs. Default sources: - BBC News - The Guardian - TechCrunch - Hacker News ### Change delivery time Update the cron schedule: ```bash openclaw cron update daily-briefing --schedule="0 8 * * *" # 8am instead ``` ### Customize content sections Edit `scripts/generate-briefing.sh` and comment out sections you don't want: ```bash # Sections (comment out to disable) SECTIONS=( weather calendar news ai_pulse openclaw_dive suggestions ) ``` ## Output Format The briefing produces a well-formatted message like: ``` 📰 Good morning! Here's your briefing for Monday, February 16 🌤️ Weather in Leyton Partly cloudy, 8°C / 46°F High: 12°C · Low: 5°C 💧 10% rain · 💨 12km/h wind 📅 Today 09:00 - Team standup 14:00 - Client call (Zoom) 📰 Top Stories • Headline one... • Headline two... • Headline three... • Headline four... • Headline five... 🤖 AI/Tech Pulse • OpenAI releases new feature... • Anthropic updates Claude... • Hacker News trending: ... 🦾 OpenClaw Deep Dive New this week: skill-name (description) Community highlight: ... Try this: ... 💡 Two Things to Try 1. First suggestion... 2. Second suggestion... ``` ## Troubleshooting ### Weather not loading - Check internet connection - Verify wttr.in is accessible: `curl wttr.in/London?format=3` - Try fallback to Open-Meteo API ### Calendar empty - Ensure calendar access permissions for terminal - Check that Calendar.app has events today - Verify `icalBuddy` is installed (optional, for richer calendar data) ### iMessage not sending - Confirm Messages.app is signed in - Check recipient address is correct - Verify Automation permission in System Settings - Test manually: `imsg send --to "recipient" --text "test"` ### News not appearing - News sources may require API keys for production use - Default implementation uses web search for headlines - For production, add API keys to `config/secrets.yaml` ## Dependencies **Required:** - `curl` – for web requests - `python3` – for data processing **Optional (enhanced features):** - `imsg` – for iMessage delivery (via Homebrew: `brew install steipete/tap/imsg`) - `icalBuddy` – for rich calendar data - `jq` – for JSON processing ## Architecture ``` ┌─────────────────┐ │ Cron (7am) │ └────────┬────────┘ │ ┌────────▼────────┐ │ generate-and- │ │ send.sh │ └────────┬────────┘ │ ┌────┴────┬────────┬────────┬──────────┬──────────┐ ▼ ▼ ▼ ▼ ▼ ▼ ┌───────┐ ┌──────┐ ┌──────┐ ┌────────┐ ┌──────────┐ ┌─────────┐ │weather│ │calendar│ │news │ │ai_pulse│ │openclaw │ │suggestions│ │ .py │ │ .py │ │ .py │ │ .py │ │_dive.py │ │ .py │ └────┬──┘ └───┬────┘ └──┬───┘ └────┬───┘ └────┬─────┘ └────┬────┘ └─────────┴─────────┴──────────┴──────────┴────────────┘ │ ┌────────▼────────┐ │ format-output │ └────────┬────────┘ │ ┌────────▼────────┐ │ imsg send │ └─────────────────┘ ``` ## Updates & Maintenance The skill self-documents its last run. Check status: ```bash cat /Users/nudge/openclaw/skills/daily-briefing/.last-run cat /Users/nudge/openclaw/skills/daily-briefing/.last-status ``` To update the skill itself: ```bash cd /Users/nudge/openclaw/skills/daily-briefing git pull # If tracked in git ``` ## Ideas to Extend - **Weekend edition** – Different content for Saturdays/Sundays - **Pre-meeting briefings** – 15-min before calendar events - **Travel mode** – Weather for destination city - **Stock/crypto prices** – Add financial tickers - **Podcast recommendations** – Based on listening history - **Fitness summary** – Previous day's activity stats - **Smart home status** – Brief overview of connected devices


Security scan verdicts — ClawScan: suspicious | static analysis:  | VirusTotal: suspicious | SkillSpector: suspicious (CRITICAL)