Daily Morning Brief is an OpenHome community ability that gives the user a short voice briefing for the day. It combines weather, today’s Google Calendar events, and today’s unread Gmail count into three concise spoken sections.Documentation Index
Fetch the complete documentation index at: https://docs.openhome.com/llms.txt
Use this file to discover all available pages before exploring further.
What It Does
- Gives a warm morning introduction
- Fetches local weather using Open-Meteo
- Uses the user’s OpenHome timezone for today’s date and calendar window
- Fetches today’s Google Calendar events from the primary calendar
- Counts today’s unread Gmail messages in the inbox
- Synthesizes weather, email, and calendar into a short spoken briefing
- Speaks temperatures in Celsius
- Falls back from IP-based location to saved location, then timezone-based location when possible
- Stores only non-secret location preferences for faster future weather lookup
- Exits cleanly back to the normal OpenHome conversation
Briefing Sections
| Section | Data source | What it says |
|---|---|---|
| Weather | Open-Meteo plus detected location | Current temperature, conditions, high, low, and rain chance |
| Gmail API | Today’s unread inbox count | |
| Calendar | Google Calendar API | Up to five events from today’s primary calendar |
Example Prompts
- “Daily brief.”
- “Morning brief.”
- “Brief me.”
- “Start my day.”
- “What’s up for today?”
- “What’s on my calendar today?”
Example Conversation
User: Daily brief. AI: Good morning. It’s 18 degrees and partly cloudy in Dallas, with a high of 24 and a low of 14. You have three unread emails in your inbox. On your calendar today: standup at 9, design review at 1, and gym at 6. Have a good one.
Trigger Phrases
daily briefmorning briefbrief mestart my daywhat's up for todaywhat's on my calendar today
good morning as the trigger phrase because it can overlap with normal assistant conversation.
Account Linking Guide
This ability does not use a manual Google API key. It reads a Google OAuth token from OpenHome with:- Open OpenHome.
- Go to Settings -> Linked Accounts.
- Choose Google.
- Sign in to the Google account you want to use.
- Approve the requested Google permissions for Gmail and Calendar access.
- Return to OpenHome and enable or install the Daily Morning Brief ability.
- Add trigger phrases such as
daily brief,morning brief, andstart my day. - Start a conversation and say one of the trigger phrases.
Data Access
| Service | Authentication | Used for |
|---|---|---|
| Google Calendar API | Linked Google account | Reading today’s primary calendar events |
| Gmail API | Linked Google account | Counting today’s unread inbox messages |
| Open-Meteo | No API key | Fetching current weather and daily forecast |
| IP geolocation | Public client IP | Estimating location for weather |
Location Behavior
Weather needs a latitude and longitude. The ability resolves location in this order:- Public IP geolocation when available.
- A previously saved location from
daily_brief_prefs.json. - A timezone-based fallback for known timezones.
- If none of those work, the weather section is reported as unavailable.
Stored Data
The ability stores non-secret location preferences indaily_brief_prefs.json. Example shape:
Voice Flow
- User triggers the ability.
- The ability checks for a linked Google account.
- It speaks a short opening line.
- It determines the user’s timezone.
- It resolves a weather location.
- It fetches weather, today’s calendar events, and today’s unread Gmail count.
- It asks the LLM to synthesize the data into three short sections: weather, email, and calendar.
- It speaks each section with a short pause between them.
- It speaks a short closing line.
- It calls
resume_normal_flow()so the OpenHome agent can continue normally.
Failure Handling
- If Google is not linked, the ability gives setup guidance and exits.
- If weather location cannot be determined, the weather section becomes unavailable instead of guessing.
- If Gmail or Calendar is temporarily unavailable, the brief continues with the data that did load.
- If every data source fails, the ability asks the user to try again later.
Developer Credit
Developed by @ammyyou112.View on GitHub
Source code for the
google-daily-brief community ability.
