daily-briefing

Verified·Scanned 2/17/2026

Generates a warm daily briefing from local calendars, contacts, reminders, and optional emails. It runs run_daily_briefing.sh, reads ~/.openclaw/openclaw.json (including emails.icloudPassword), executes local gatherer tools, and fetches weather from https://wttr.in/{ENCODED_LOCATION}?format=j1.

from clawhub.ai·v7bf9ed8·50.6 KB·0 installs
Scanned from 1.0.4 at 7bf9ed8 · Transparency log ↗
$ vett add clawhub.ai/antgly/daily-briefing

daily-briefing

🌅 Generates a warm, compact daily briefing with weather, calendar, reminders, birthdays, and important emails for cron or chat delivery.

Features

  • Weather — Current conditions, highs/lows, precipitation chances via wttr.in
  • Calendar Events — Unified view from Google Calendar and iCloud Calendar
  • Reminders — Due and past-due items from Apple Reminders
  • Birthdays — Today and upcoming from iCloud Contacts and Google Contacts
  • Important Emails — AI-powered semantic analysis to surface actionable emails (transactions, shipments, security alerts, etc.)
  • Cron-safe — Always succeeds with sensible defaults; never prompts in automation mode
  • Warm, calm tone — A gentle gift for the day with no productivity pressure

Installation

1. Install via ClawHub (recommended)

clawhub install daily-briefing

Or copy manually to any skills directory:

  • ~/.openclaw/skills/daily-briefing
  • <workspace>/skills/daily-briefing

2. Run the installer

cd <skill-directory>
chmod +x install.sh
./install.sh

3. Grant macOS permissions

Grant Terminal.app (or your terminal) access in System Settings > Privacy & Security:

PermissionRequired for
ContactsBirthday tracking from iCloud Contacts
CalendarsiCloud Calendar events (via icalpal)
RemindersApple Reminders (via remindctl)

4. Install optional CLI tools

# Google services (Calendar, Gmail, Contacts)
brew install steipete/tap/gogcli

# iCloud Calendar
brew install ajrosen/tap/icalpal

# Apple Reminders
brew install steipete/tap/remindctl

# iCloud Mail
brew install himalaya

Configuration

Edit ~/.openclaw/openclaw.json:

{
  "skills": {
    "entries": {
      "daily-briefing": {
        "config": {
          "location": "New York, NY",
          "timezone": "America/New_York",
          "units": "F",
          "birthdays": {
            "enabled": true,
            "lookahead": 14,
            "sources": ["contacts", "google"]
          },
          "calendar": {
            "enabled": true,
            "lookahead": 0,
            "sources": ["google", "icloud"]
          },
          "reminders": {
            "enabled": true,
            "dueFilter": "today",
            "includePastDue": true
          },
          "emails": {
            "enabled": false,
            "icloudPassword": "",
            "limit": 10,
            "sortNewest": true,
            "starredFirst": true,
            "unreadOnly": true
          }
        }
      }
    }
  }
}

Configuration Options

OptionTypeDefaultDescription
locationstring""Location for weather (e.g., "New York, NY")
timezonestringsystemTimezone (e.g., "America/New_York")
unitsstring"C"Temperature units: "C" or "F"
birthdays.enabledbooltrueEnable birthday tracking
birthdays.lookaheadint14Days ahead to show upcoming birthdays
birthdays.sourcesarray["contacts"]Sources: "contacts" (iCloud), "google"
calendar.enabledbooltrueEnable calendar events
calendar.lookaheadint0Days ahead (0 = today only)
calendar.sourcesarray["google", "icloud"]Calendar sources
reminders.enabledbooltrueEnable Apple Reminders
reminders.dueFilterstring"today"Due date filter: "today", "week", or "all"
reminders.includePastDuebooltrueInclude overdue/past-due reminders
emails.enabledboolfalseEnable important emails feature
emails.icloudPasswordstring""iCloud Mail app-specific password for himalaya
emails.limitint10Maximum emails to show
emails.sortNewestbooltrueSort newest first
emails.starredFirstbooltruePrioritize starred/flagged emails
emails.unreadOnlybooltrueOnly show unread emails

Important Emails Feature

The important emails feature uses AI-powered semantic analysis to identify actionable emails:

  • Order shipments and tracking
  • Receipts and transaction confirmations
  • Banking and payment alerts
  • Account security notices
  • Subscription renewals
  • Calendar invites
  • Messages from your contacts
  • Job-related communications

To enable:

  1. Set emails.enabled to true in your config
  2. For iCloud Mail: Generate an app-specific password and set it in emails.icloudPassword
  3. For Gmail: Ensure gog is authenticated

Privacy note: Email analysis happens locally using the agent's model context. No email data is sent to external services beyond what you've configured.

Usage

Interactive Mode

Simply ask your agent for your daily briefing:

What's my briefing for today?

The agent will:

  1. Check if location/timezone are configured
  2. Prompt for missing info if needed
  3. Generate your personalized briefing

Cron Mode

For automated delivery (e.g., via Telegram bot), the skill:

  • Uses sensible defaults without prompting
  • Omits weather if location is unavailable
  • Always succeeds and outputs the briefing text

Example cron setup:

# Daily briefing at 7:00 AM
0 7 * * * /path/to/your/agent --skill daily-briefing >> /var/log/briefing.log

Example Output

Good morning - Today is Saturday, February 3, 2024. Partly cloudy skies, around 45°F this afternoon, with a low around 32°F.

🎂 **Birthdays:**
• Today: Jane Doe
• Feb 5: John Smith

📅 **Today's schedule:**
• All-day: Doctor appointment
• 9:00 AM: Team standup
• 2:00 PM: Coffee with Alex

✅ **Reminders:**
• Pick up prescription
• Call mom

📧 **Emails needing attention:**
• Amazon: Your order has shipped
• Chase: Payment received
• Google Drive: Document shared with you

Take things one step at a time today—you've got this.

Troubleshooting

Weather not showing

  • Ensure location is set in your config
  • Check that curl can reach wttr.in: curl -fsSL "https://wttr.in/London?format=j1"

Calendar events not showing

  • For iCloud: Install icalpal and grant Calendar permission
  • For Google: Ensure gog is authenticated: gog auth login

Reminders not showing

  • Install remindctl: brew install steipete/tap/remindctl
  • Grant Reminders permission to Terminal.app

Birthdays not showing

  • Grant Contacts permission to Terminal.app
  • For Google: Ensure gog is authenticated

Emails not showing

  • Set emails.enabled to true in config
  • For Gmail: Ensure gog is authenticated
  • For iCloud: Set emails.icloudPassword with an app-specific password

Permission denied errors

Grant Terminal.app (or your terminal) access in System Settings > Privacy & Security for Contacts, Calendars, and Reminders.

Dependencies

Required:

  • curl — for weather fetching (built into macOS)
  • bash — for orchestrator script (built into macOS)
  • python3 — for JSON parsing (built into macOS)

Optional:

  • gogbrew install steipete/tap/gogcli (Google Calendar, Gmail, Contacts)
  • icalpalbrew install ajrosen/tap/icalpal (iCloud Calendar)
  • remindctlbrew install steipete/tap/remindctl (Apple Reminders)
  • himalayabrew install himalaya (iCloud Mail via IMAP)

File Structure

daily-briefing/
├── SKILL.md                              # Skill definition
├── README.md                             # This file
├── install.sh                            # Installer script
├── scripts/
│   └── daily_briefing_orchestrator.sh    # Data gathering script
└── bin/
    └── run_daily_briefing.sh             # Runner script (created by install.sh)

License

MIT