Voice-activated morning briefing that fetches weather, Google Calendar, and Gmail in parallel, then synthesizes everything into one ~60-second spoken summary. Weather is personalized per user via IP geolocation.
- "good morning"
- "give me my brief"
- "give me a brief"
- "daily brief"
- "brief me"
- "start my day"
- "what did I miss"
-
Google Cloud Console — Create a project, enable Google Calendar API and Gmail API.
-
Create OAuth 2.0 credentials: Go to APIs & Services -> Credentials -> Click create credentials -> select Web application -> give it a name -> and under Authorized redirect URIs add this URL:
https://developers.google.com/oauthplayground. Click save and download the JSON. -
Get tokens — Use Google OAuth 2.0 Playground:
- Click the gear icon (⚙️) and enable "Use your own OAuth credentials"
- Enter your Client ID and Client Secret from the downloaded JSON
- Select scopes:
https://www.googleapis.com/auth/calendar.readonlyandhttps://www.googleapis.com/auth/gmail.readonly - Click "Authorize APIs" and sign in with your Google account
- Click "Exchange authorization code for tokens"
- Copy the
access_tokenandrefresh_token— you'll paste these intomain.py
-
Update main.py — Replace
YOUR_CLIENT_ID_HERE,YOUR_CLIENT_SECRET_HERE,YOUR_ACCESS_TOKEN_HERE, andYOUR_REFRESH_TOKEN_HEREwith your values. -
Upload — Zip this folder, upload to app.openhome.com → Abilities → Add Custom Ability, set trigger words in the dashboard.
- User says a trigger phrase (e.g. "good morning").
- Ability fetches weather (Open-Meteo, free), calendar (Google Calendar API), and email (Gmail API) in parallel.
- LLM synthesizes the data into one cohesive spoken briefing.
- User can say "repeat", "check my calendar", or "no" to exit.
User: "Good morning." AI: "Good morning! Let me get your brief." AI: "Right now in Lahore it's 79 degrees with clear skies. Your calendar is clear today. You've got 201 unread emails including one from iCloud about storage. That's your brief!" AI: "Anything else?" User: "Check my calendar." AI: "There's nothing on your calendar today." AI: "Anything else?" User: "No." AI: "Have a great day!"