Most people start their day reacting. Checking emails, scrolling, putting out fires before they've even had coffee.
This changes that. Here's how I built an n8n workflow that sends me a personalized morning briefing every day at 6:45 AM, straight to Telegram. Takes about an hour to set up and runs forever.
What It Sends You
Every morning you get a single Telegram message with:
- Today's date and a one-line weather summary
- Your top 3 priorities for the day (pulled from a Google Sheet you maintain)
- One calendar event reminder if you have something today
- A short motivator generated by Claude. Not generic. Tailored to what you're working toward.
That's it. No noise. Just what you need to lock in.
The Tech Stack
- n8n: runs the whole workflow on a schedule
- Claude API: generates the daily motivator
- Google Sheets: your priority list lives here
- Google Calendar: pulls today's events
- Telegram Bot: delivers the message to your phone
The Workflow Structure
Schedule Trigger (6:45 AM)
→ Google Sheets (fetch priorities)
→ Google Calendar (fetch today's events)
→ Claude (generate motivator)
→ Format Message
→ Telegram (send)
Total nodes: 6. Build time: under an hour.
Step 1: Set Up Your Priority Sheet
Create a Google Sheet with one tab called Priorities. Three columns: Priority, Status, Notes.
Keep your top 3 active priorities in rows 1 through 3. Update it whenever your focus shifts. The workflow pulls whatever is in those rows. What you write there is what shows up in your briefing.
Step 2: Create the Telegram Bot
- Open Telegram and message
@BotFather - Send
/newbotand follow the prompts - Copy the bot token
- Message your new bot once, then go to
https://api.telegram.org/bot{YOUR_TOKEN}/getUpdatesto grab your chat ID
You'll need both the token and your chat ID for the n8n credentials.
Step 3: The Claude Prompt
This is what makes the briefing feel personal instead of robotic. In the Claude node, use this prompt:
You are a morning coach. The user's name is [YOUR NAME].
Their top priorities this week:
1. {{$json["Priority1"]}}
2. {{$json["Priority2"]}}
3. {{$json["Priority3"]}}
Their goal: [YOUR GOAL, e.g. replace warehouse income with AI services by end of year].
Write a 2-sentence morning motivator that is direct, honest, and grounded in what they are actually working on. No fluff. No generic inspiration quotes. Sound like a person who believes in them.
The output is different every day but always relevant because it knows what you're actually building.
Step 4: Format the Final Message
Use an n8n Code node to assemble everything into one clean message block:
const priorities = [
$('Google Sheets').item.json.Priority1,
$('Google Sheets').item.json.Priority2,
$('Google Sheets').item.json.Priority3,
];
const events = $('Google Calendar').all();
const todayEvent = events.length > 0
? `📅 ${events[0].json.summary} at ${events[0].json.start.dateTime}`
: 'Nothing on the calendar today.';
const motivator = $('Claude').item.json.content[0].text;
return {
message: `☀️ Morning Briefing\n\n🎯 Today's Priorities:\n1. ${priorities[0]}\n2. ${priorities[1]}\n3. ${priorities[2]}\n\n${todayEvent}\n\n💬 ${motivator}`
};
Step 5: Schedule It
Set the Schedule Trigger to fire at whatever time you want your briefing. I use 6:45 AM on weekdays. The whole run takes about 8 seconds.
Download the Template
The full n8n workflow JSON is on the Free Tools page. Import it, swap in your credentials, update the Claude prompt with your name and goal, and it's running.
Want help wiring this up? Book a free call. I can usually get it running with you live in 20 minutes.