Skip to content

tomerlieber/tomorrow-brief

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Tomorrow Brief

Automated daily schedule summary via Telegram. Every day at 10 PM (Asia/Jerusalem), this Make.com scenario fetches tomorrow's events from two Google Calendars and sends a formatted summary to your Telegram.

Architecture

Schedule (10 PM daily)
  │
  ▼
Google Calendar: Search Events (personal)
  │
  ▼
Array Aggregator 1 (filter cancelled/declined)
  │
  ▼
Google Calendar: Search Events (work)
  │
  ▼
Array Aggregator 2 (filter cancelled/declined)
  │
  ▼
Set Variable (merge + sort)
  │
  ▼
Router ──────────────────────┐
  │                          │
  │ has events               │ no events
  ▼                          ▼
Iterator                   Telegram: Send
  │                        "No events scheduled"
  ▼
Text Aggregator
  │
  ▼
Telegram: Send Message

10 modules, approx. 10 operations per run, approx. 300 ops/month (30% of free tier).

Message Format

Tomorrow's Schedule (Thu, Apr 9):

• All day -- Birthday: Alex
• All day -- Company Holiday
• 09:00-09:30 -- Standup (https://zoom.us/j/123456)
• 11:00-12:00 -- 1:1 with Alex
• 15:00-16:00 -- Design Review (Room 3)
  • Each event is prefixed with a bullet ()
  • All-day events appear first, formatted as • All day -- Title
  • Timed events follow in chronological order, formatted as • HH:mm-HH:mm -- Title
  • Meeting links (Zoom, Google Meet, Teams) are shown as clickable URLs in parentheses
  • Physical locations are shown in parentheses if no meeting link exists
  • Empty days send: "No events scheduled for tomorrow (Thu, Apr 9)."

Prerequisites

Before importing the blueprint, set up these three things:

1. Telegram Bot

  1. Open Telegram and search for @BotFather.
  2. Send /newbot and follow the prompts to create a bot. Save the bot token (looks like 123456789:ABCdefGhi...).
  3. Send /setjoingroups to BotFather, select your bot, and choose Disable (security hardening).
  4. Open a chat with your new bot in Telegram and send any message (e.g., "hello").
  5. Get your chat ID by opening this URL in a browser (replace YOUR_BOT_TOKEN):
    https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates
    
    Look for "chat":{"id":123456789} in the response. That number is your chat ID.

2. Make.com Account

  1. Sign up at make.com (free tier, no credit card required).
  2. The free plan includes 1,000 operations/month and 2 active scenarios.

3. Google Account Access

You need OAuth access to both Google accounts (personal and work). Make.com handles the OAuth flow -- you just sign in when prompted.

Important: Some Google Workspace organizations restrict third-party OAuth apps. If your work account connection fails, see Limitations for the workaround.

Setup

Step 1: Import the Blueprint

  1. In Make.com, click Create a new scenario.
  2. Click the ... menu (bottom of the editor) and select Import Blueprint.
  3. Open scenario-blueprint.json from this repository, copy its contents, and paste into the import dialog.
  4. Click Save.

Step 2: Connect Google Accounts

After import, the two Google Calendar modules will show connection errors (expected -- connections can't be included in blueprints).

  1. Click the first Google Calendar module (Module 1 -- personal).
  2. Click Add next to the Connection field.
  3. Sign in with your personal Google account.
  4. Verify the permission dialog requests read-only calendar access (calendar.readonly). Do not grant write access.
  5. Click the second Google Calendar module (Module 3 -- work).
  6. Click Add and sign in with your work Google account.
  7. Same read-only verification.

Step 3: Configure Telegram

  1. Click each Telegram Bot module (Module 9 and Module 10).
  2. Click Add next to the Connection field.
  3. Enter your bot token from the prerequisites.
  4. In the Chat ID field, replace __PLACEHOLDER_CHAT_ID__ with your numeric chat ID.
  5. Do this for both Telegram modules (the "has events" path and the "no events" path).

Step 4: Configure the Schedule

  1. Click the clock icon at the bottom-left of the scenario editor.
  2. Set the schedule to Every day at 22:00 (10 PM).
  3. Verify the timezone shows Asia/Jerusalem. If not, change it in Scenario settings > Scheduling > Timezone.

Step 5: Test

  1. Click Run once at the bottom of the scenario editor.
  2. Check your Telegram -- you should receive tomorrow's schedule summary.
  3. If no events exist for tomorrow, you should see "No events scheduled for tomorrow."
  4. If a module shows an error, click it to see the details. Common issues:
    • Google Calendar connection failed: Re-authorize the connection.
    • Telegram 401 Unauthorized: Verify the bot token is correct.
    • Telegram 400 Bad Request: Verify the chat ID is correct and you've sent at least one message to the bot.

Step 6: Activate

  1. Toggle the scenario ON (bottom-left switch).
  2. The scenario will now run automatically every day at 10 PM.

Module Reference

ID Module Purpose
1 Google Calendar: Search Events Fetch tomorrow's events from personal calendar
2 Array Aggregator Collect personal events, filter out cancelled/declined
3 Google Calendar: Search Events Fetch tomorrow's events from work calendar
4 Array Aggregator Collect work events, filter out cancelled/declined
5 Set Multiple Variables Merge both arrays, sort by start time
6 Router Branch: has events vs. no events
7 Iterator Loop through merged events
8 Text Aggregator Format each event into a message line
9 Telegram: Send Message Send the formatted summary
10 Telegram: Send Message Send "no events" message

Operation Budget

The free tier allows 1,000 operations/month. Each module execution counts as 1 operation.

Daily events Ops/run Monthly (30 days) % of free tier
0 (empty day) 8 240 24%
5 10 300 30%
10 10 300 30%
15 10 300 30%

The operation count is roughly constant regardless of how many events you have, because the Array Aggregators and Text Aggregator each count as 1 operation (they collect all bundles internally).

Post-Import Adjustments

The blueprint provides the complete module structure and logic. A few things may need manual tuning after import:

Calendar ID

Both Google Calendar modules use "primary" as the calendar ID, which corresponds to the main calendar of each connected account. If you want to pull events from a specific sub-calendar, replace "primary" with that calendar's ID (found in Google Calendar Settings > Integrate calendar).

Security

  • Work calendar data passes through third parties. Event titles, attendee names, meeting links, and locations flow through Make.com servers and are delivered to a personal Telegram account. Be aware of your organization's data policies.
  • Google OAuth scope must be read-only. When connecting accounts, verify the requested permission is calendar.readonly. This scenario never writes to your calendars.
  • Telegram bot token is the primary secret. Never commit it to version control or paste it into any file. It should only exist inside Make.com's encrypted connection storage.
  • Telegram bot discoverability. The bot only sends messages -- it does not process incoming ones. Disable group invites via BotFather (/setjoingroups > Disable) to reduce exposure.

Limitations

  • Google Workspace admin restrictions. Some organizations block third-party OAuth apps. If your work account connection fails, the workaround is to share the work calendar with your personal Google account (Settings > Share with specific people > "See all event details" permission), then use a single Google connection for both calendar modules.
  • Make.com free tier cap. 1,000 ops/month, 2 active scenarios. This scenario uses approximately 300 ops/month, leaving room for one more scenario.
  • Blueprint does not include credentials. OAuth connections and bot tokens must be configured manually after import (covered in the setup steps above).

About

Make.com scenario that fetches tomorrow's events from two Google Calendars every evening and sends a formatted summary to Telegram. Free tier, no code, no server.

Topics

Resources

Stars

Watchers

Forks

Contributors