notion-automation

Notion database automation - sync, templates, workflows, and cross-platform integrations

INSTALLATION
npx skills add https://github.com/claude-office-skills/skills --skill notion-automation
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

Notion Automation

Automate Notion databases and workflows with cross-platform integrations, templates, and intelligent triggers. Based on n8n's Notion workflow templates.

Overview

This skill covers:

  • Database automation and triggers
  • Template and page creation
  • Cross-platform sync (Slack, Calendar, CRM)
  • Content management workflows
  • Team collaboration automation

Core Workflows

1. Form → Notion Database

workflow: "Form to Notion"

trigger: typeform_submission OR google_form

steps:

  1. capture_data:

      fields: [name, email, company, message, source]

  2. enrich_data:

      clearbit: lookup_by_email

      append: [company_size, industry]

  3. create_notion_page:

      database_id: "leads_database"

      properties:

        Name: "{name}"

        Email: "{email}"

        Company: "{company}"

        Status: "New"

        Source: "{source}"

        Created: "{timestamp}"

      content:

        - heading: "Contact Details"

        - text: "{message}"

        - divider

        - heading: "Enriched Data"

        - text: "Industry: {industry}, Size: {company_size}"

  4. notify:

      slack:

        channel: "#new-leads"

        message: "New lead: {name} from {company}"

2. Notion → Email Digest

workflow: "Weekly Notion Digest"

schedule: "Monday 9am"

steps:

  1. query_notion:

      database: "Tasks"

      filter:

        - property: "Due Date"

          date: this_week

        - property: "Status"

          not_equals: "Done"

  2. group_by_assignee:

      method: aggregate

  3. generate_digest:

      for_each: assignee

      template: |

        Hi {assignee},

        Here are your tasks for this week:

        {for task in tasks}

        • {task.title} - Due: {task.due_date}

        {endfor}

        Total: {task_count} tasks

  4. send_emails:

      to: each_assignee

      subject: "Your Weekly Task Digest"

3. Slack → Notion Task

workflow: "Slack to Notion Task"

trigger: slack_reaction (✅ emoji)

steps:

  1. capture_message:

      extract: [text, author, channel, timestamp, thread]

  2. parse_task:

      ai_extraction:

        title: extract_action_item

        due_date: extract_date_if_mentioned

        priority: infer_from_context

  3. create_notion_task:

      database: "Tasks"

      properties:

        Title: "{extracted_title}"

        Status: "To Do"

        Source: "Slack - #{channel}"

        Assignee: "{slack_user_to_notion_user}"

        Due Date: "{due_date}"

        Priority: "{priority}"

      content:

        - quote: "{original_message}"

        - text: "Created from Slack message"

        - link: "{slack_permalink}"

  4. thread_reply:

      slack:

        thread_ts: "{timestamp}"

        message: "✅ Task created in Notion: {notion_url}"

4. Calendar Sync

workflow: "Google Calendar ↔ Notion"

trigger: bidirectional

google_to_notion:

  trigger: calendar_event_created

  action:

    - create_notion_page:

        database: "Meetings"

        properties:

          Title: "{event.title}"

          Date: "{event.start}"

          Attendees: "{event.attendees}"

          Location: "{event.location}"

          Calendar Link: "{event.link}"

notion_to_google:

  trigger: notion_page_created

  filter: database == "Meetings"

  action:

    - create_calendar_event:

        title: "{page.Title}"

        start: "{page.Date}"

        description: "{page.Notes}"

        attendees: "{page.Attendees}"

5. Content Pipeline

workflow: "Content Publishing Pipeline"

database_structure:

  properties:

    - Title: title

    - Status: select [Idea, Writing, Review, Published]

    - Author: person

    - Due Date: date

    - Platform: multi_select [Blog, LinkedIn, Twitter]

    - Content: rich_text

automations:

  status_changed_to_review:

    - notify_slack: "#content-review"

    - assign_reviewer: round_robin

    - set_due_date: 3_days_from_now

  status_changed_to_published:

    - post_to_platforms: based_on_Platform_property

    - update_analytics_tracker: add_row

    - archive_after: 7_days

Database Templates

Project Management

project_database:

  name: "Projects"

  properties:

    - Name: title

    - Status: select

        options: [Planning, In Progress, Review, Complete]

    - Priority: select

        options: [P0, P1, P2, P3]

    - Owner: person

    - Team: multi_select

    - Start Date: date

    - Due Date: date

    - Progress: number (percent)

    - Related Tasks: relation → Tasks

  views:

    - Board: group_by Status

    - Timeline: gantt chart

    - Calendar: by Due Date

    - Table: all properties

  automations:

    - when: all_tasks_complete

      then: set_status "Complete"

    - when: due_date_approaching (3 days)

      then: slack_reminder to Owner

CRM Database

crm_database:

  name: "Contacts"

  properties:

    - Name: title

    - Email: email

    - Company: text

    - Stage: select

        options: [Lead, Qualified, Proposal, Negotiation, Closed]

    - Value: number (currency)

    - Last Contact: date

    - Next Action: text

    - Owner: person

    - Related Deals: relation → Deals

  automations:

    - when: stage_changed

      then: log_activity + notify_owner

    - when: no_contact_14_days

      then: slack_alert "Follow up needed"

Content Calendar

content_calendar:

  name: "Content"

  properties:

    - Title: title

    - Type: select [Blog, Video, Social, Newsletter]

    - Status: select [Idea, Draft, Review, Scheduled, Published]

    - Publish Date: date

    - Author: person

    - Platform: multi_select

    - SEO Keywords: multi_select

    - Engagement: number

  views:

    - Calendar: by Publish Date

    - Kanban: by Status

    - By Platform: grouped table

API Patterns

Query Database

// n8n Notion Query

{

  "database_id": "abc123",

  "filter": {

    "and": [

      {

        "property": "Status",

        "select": {

          "equals": "In Progress"

        }

      },

      {

        "property": "Due Date",

        "date": {

          "on_or_before": "{{$today}}"

        }

      }

    ]

  },

  "sorts": [

    {

      "property": "Priority",

      "direction": "ascending"

    }

  ]

}

Create Page

// n8n Notion Create Page

{

  "parent": { "database_id": "abc123" },

  "properties": {

    "Name": {

      "title": [{ "text": { "content": "{{$json.title}}" }}]

    },

    "Status": {

      "select": { "name": "New" }

    },

    "Tags": {

      "multi_select": [

        { "name": "{{$json.tag1}}" },

        { "name": "{{$json.tag2}}" }

      ]

    }

  },

  "children": [

    {

      "object": "block",

      "type": "heading_2",

      "heading_2": {

        "rich_text": [{ "text": { "content": "Overview" }}]

      }

    },

    {

      "object": "block",

      "type": "paragraph",

      "paragraph": {

        "rich_text": [{ "text": { "content": "{{$json.content}}" }}]

      }

    }

  ]

}

Integration Recipes

Notion + Slack + Calendar

meeting_workflow:

  trigger: notion_page_created

  database: "Meetings"

  actions:

    1. create_calendar_event:

        google_calendar:

          title: "{Title}"

          date: "{Date}"

    2. create_slack_channel:

        if: "{Type}" == "Project Kickoff"

        name: "proj-{project_name}"

    3. send_invites:

        to: "{Attendees}"

        include: [calendar_link, notion_link, slack_channel]

    4. create_meeting_doc:

        notion:

          template: "Meeting Notes Template"

          link_to: original_page

Notion + GitHub

github_sync:

  trigger: github_issue_created

  actions:

    - create_notion_page:

        database: "Engineering Tasks"

        properties:

          Title: "{issue.title}"

          GitHub: "{issue.url}"

          Labels: "{issue.labels}"

          Assignee: map_github_to_notion("{issue.assignee}")

  reverse_sync:

    trigger: notion_status_changed

    to: "Done"

    action: close_github_issue

Output Example

Request: "Set up Notion automation for a content team"

Output:

# Content Team Notion Setup

## Database: Content Calendar

### Properties

| Property | Type | Options |

|----------|------|---------|

| Title | Title | - |

| Status | Select | Idea, Writing, Editing, Ready, Published |

| Author | Person | - |

| Publish Date | Date | - |

| Platform | Multi-select | Blog, LinkedIn, Twitter, Newsletter |

| Type | Select | Article, Video, Infographic, Thread |

### Automations

**1. New Content Idea → Slack**

trigger: page_created, Status = "Idea"

action: post_to_slack("#content-ideas")

message: "💡 New content idea: {Title} by {Author}"


**2. Ready for Review → Assign Editor**

trigger: status_changed_to "Editing"

action:

- assign_editor (round_robin)

- set_due_date (+3 days)

- slack_dm_editor


**3. Published → Update Tracker**

trigger: status_changed_to "Published"

action:

- add_to_analytics_sheet

- post_celebration_slack

- schedule_engagement_check (+7 days)


### Views

- **Calendar** - See publishing schedule

- **Kanban** - Track status

- **By Author** - Individual workload

- **This Week** - Filtered view

### Templates

- Blog Post Template

- Social Thread Template

- Newsletter Template

---

Notion Automation Skill - Part of Claude Office Skills

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card