The problem

I’m a coach teaching 12+ classes a week across a handful of boutique studios in Zürich. Every night I’d sit down with Canva, check my Google Calendar — which studio tomorrow, what time, what location? — drag text around a template, pick the right colors, and post my teaching schedule as an Instagram Story.

Roughly 10 minutes. Every. Single. Night.

// What I was doing manually every single night

1. Open Calendar — check tomorrow’s shifts
2. Open Canva — find the latest template
3. Type:  THURSDAY · I’M TEACHING
4. Type:  07:00  Challenge Keen   (Keen Wellbeing)
5. Type:  12:00  Lucky Punch      (Bahnhofstrasse)
6. Type:  16:55  Lucky Punch      (Europaallee)
7. Adjust colors, fonts, spacing — export — story

Multiply that out: ~70 minutes a week, almost 60 hours a year, on a task that creates zero unique value. The class times are the class times. Posting them prettier doesn’t change attendance.

Before

10 minutes a night in Canva. Easy to type the wrong studio, miss a class, or skip a night because you’re tired. One wrong time and a member walks into an empty room.

After

12 seconds. I write “post my schedule” in Claude. It reads tomorrow’s calendar, designs a branded story card, and gives me a PDF. I tap Share → Instagram Story. Done.

This is a small task. That’s exactly why it was worth automating. Small tasks that repeat every night are where you lose entire workdays you never notice losing.


How I built it

The tool stack

📅 Google Calendar
🤖 Claude (Anthropic)
🔌 Google Calendar MCP Connector
🎨 HTML Story Card Template

No Zapier. No third-party scheduling tool. No subscription. Just Claude with a calendar connector and one skill I wrote once and never touched again.

Step by step

1

Connect Google Calendar to Claude

I set up the Google Calendar MCP connector in Claude. Two minutes, free. This gives Claude direct read access to my events — names, times, labels, locations.

2

Tag my teaching shifts in the calendar

Every class I teach has a consistent format in my calendar — class name + studio location. That’s all Claude needs to tell a teaching shift apart from a meeting, an admin block, or personal time.

3

Write the “post my schedule” skill

The skill instructs Claude to fetch tomorrow’s events, filter for teaching shifts, sort by start time, and inject them into a branded HTML template. The output is a PDF sized 1080×1920 — ready for an Instagram Story.

4

Type three words. Share.

I open Claude and write: post my schedule. Twelve seconds later I have a PDF. Share → Instagram Story → done. No prompt engineering, no “act as a designer”, no formatting back-and-forth.

The skill itself took about 40 minutes to build and test the first time. It has run every night since without changes.

What the skill actually does

Two parts. First, fetch and filter. Second, render. Plain logic:

# Plain logic of the “post my schedule” skill

1. Fetch   Google Calendar events for tomorrow (00:00–23:59)
2. Filter  events that match my teaching format
          (class name + studio location)
3. Sort    by start time
4. Format  into a clean list:
          — Time block
          — Class name
          — Studio location
5. Inject  into the HTML story card template
          — Brand navy & red, Inter / Anton fonts
          — Day banner: “THURSDAY · I’M TEACHING”
          — Card per shift, color-coded by studio
          — “Join me · @daniel_dmitriouk” footer
6. Output  PDF, 1080×1920, ready for Stories

The template is fixed. Only the class list changes each night. That’s why it’s instant — Claude isn’t designing anything, it’s filling out a form it already knows.


The result

Numbers, after the automation

12 sec
Time to generate and post
0
Manual errors since building it
~58 hrs
Saved per coach per year

The more useful number is what happens across the team. Across a 5-coach team that’s nearly 300 hours of recovered time annually — seven extra weeks of work each year, on this one task alone. The class schedule isn’t better because a human typed it into Canva. It’s just posted.

The other thing I noticed: consistency went up. Every coach now posts on time, every night, in the same format, with the same visual style. That’s worth something for brand recognition even if it’s hard to put a number on.

What I’d do differently

If I were rebuilding it today I’d add direct posting via the Instagram Graph API — skip the manual share step. The 12 seconds could be 0. I haven’t done it yet because tapping share gives me a 2-second sanity check before it goes live. For a larger team, full automation makes sense.


Is this worth building for your studio?

If you or your coaches post schedules manually: yes. Build time is 2–3 hours the first time if you’ve never built a Claude skill. After that it runs itself. The only maintenance is if your calendar naming format changes.

Don’t use Google Calendar? This still works — any calendar with an API or a structured export. Mindbody schedule data, for example, is accessible to Claude directly.

The bigger point isn’t really about schedules. Any task you do the same way every day or every week is a candidate for this kind of automation. Schedule posts happened to be the first thing I tackled because it was visible and annoying. Once you build one of these, the next one takes half the time.