Frank Chen

Collecting stories by foot, lens, and occasional propeller

← Back to Posts

Building a personal AI assistant for Notion

Step-by-step tutorial explaining how to automate meeting notes, task tracking and summaries using Notion, Google Calendar, OpenAI and GitHub Actions.

Thoughts 12 Mar 2026

Managing meetings, tasks and research notes can be repetitive. If you already use Notion and Google Calendar, you can automate much of the work using a small set of scripts and GitHub Actions.

This tutorial explains how to build an automation workflow that:

  • reads events from Google Calendar
  • creates meeting pages in Notion
  • generates AI summaries of meetings
  • tracks deadlines
  • produces daily task summaries The system runs automatically in the cloud.

1 System Architecture

The repository is organised around two main components:

  • automation scripts
  • GitHub Actions workflows Scripts perform the logic while GitHub Actions schedules them.

Example repository structure:

automation
├── scripts
│   ├── calendar-to-meetings.mjs
│   ├── notion-ai-summary.mjs
│   ├── tasks-deadline-alert.mjs
│   ├── tasks-daily-summary.mjs
│   ├── tasks-phd-sync.mjs
│   ├── tasks-timeline.mjs
│   └── get-google-refresh-token.mjs
│
├── .github/workflows
│   ├── calendar-to-meetings.yml
│   ├── tasks-deadline-alert.yml
│   └── notion-openai-summary.yml

Typical workflow:

Google Calendar
      ↓
calendar-to-meetings script
      ↓
Notion meeting page
      ↓
notion-ai-summary script
      ↓
OpenAI generates meeting minutes

2 Required Services

You need accounts for:

  • GitHub
  • Notion
  • Google Cloud
  • OpenAI Each service provides an API used by the automation scripts.

3 Configure Notion

Create a database called Meetings.

Recommended properties:

FieldType
Meeting NameTitle
DateDate
ParticipantsText
MinutesText
TLDRText
RefreshCheckbox
CategorySelect
TagsMulti-select

Then share the database with your Notion integration and copy the database ID.


4 Configure Google Calendar API

Create a Google Cloud project and enable:

Google Calendar API

Then create OAuth credentials and obtain:

GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET

5 Generate Google Refresh Token

Run the helper script:

node scripts/get-google-refresh-token.mjs

The script launches an OAuth login and returns:

GOOGLE_REFRESH_TOKEN

This allows the automation to access your calendar automatically.


6 Environment Variables

The scripts read configuration from environment variables.

Example configuration:

NOTION_API_KEY=xxxx
OPENAI_API_KEY=xxxx

GOOGLE_CLIENT_ID=xxxx
GOOGLE_CLIENT_SECRET=xxxx
GOOGLE_REFRESH_TOKEN=xxxx

MEETINGS_DATA_SOURCE_ID=xxxx
GOOGLE_CALENDAR_IDS=primary
TIMEZONE=Europe/London

Optional settings:

OPENAI_MODEL=gpt-4.1-mini
RUN_LIMIT=3

7 Import Calendar Events into Notion

Script:

calendar-to-meetings.mjs

What it does:

  1. read events from Google Calendar
  2. extract event metadata
  3. create meeting pages in Notion Example result:
Meeting Name: Weekly PhD Meeting
Date: 2026-03-10
Participants: Supervisor, Student
Minutes: (empty)
TLDR: (empty)

8 AI Meeting Summaries

Script:

notion-ai-summary.mjs

Workflow:

  1. find meeting pages where TLDR is empty
  2. read page content
  3. send text to OpenAI
  4. write the generated summary back to Notion Example output:
TLDR:
Discussed research progress and next steps for data acquisition.

Minutes:
- Reviewed dataset access timeline
- Agreed to revise research questions
- Plan causal inference training

9 Deadline Alerts

Script:

tasks-deadline-alert.mjs

Purpose:

  • check upcoming deadlines
  • notify the user when tasks are due soon The script queries Notion tasks and filters those approaching their
    deadline.

10 Daily Task Summary

Script:

tasks-daily-summary.mjs

This generates a daily overview such as:

Daily Summary

Tasks today
- Finish literature review
- Prepare supervisor meeting

Upcoming
- Ethics application deadline in 3 days

11 Automating with GitHub Actions

Example workflow:

.github/workflows/calendar-to-meetings.yml

Typical schedule:

on:
  schedule:
    - cron: "0 6 * * *"

Example timeline:

06:00 import calendar events
06:10 generate AI summaries
08:00 send daily task report

All tasks run automatically in the cloud.


12 Example Daily Workflow

Morning:

Calendar event created
↓
GitHub Action runs
↓
Meeting page created in Notion

After meeting:

Notes written in Notion
↓
Automation runs
↓
OpenAI generates structured summary

The result is a continuously updated knowledge base of meetings and
tasks.


13 Benefits

Automation replaces many manual steps:

TaskManualAutomated
Create meeting pagesYesAutomatic
Copy calendar eventsYesAutomatic
Write meeting notesYesAI
Track deadlinesYesAutomatic
Daily task overviewYesAutomatic

14 Possible Extensions

You can expand the system with:

  • Slack notifications
  • Telegram reminders
  • literature tracking
  • automated research summaries
  • PhD progress dashboards The same architecture can power many productivity tools.