notion-automation
claude-office-skills/skills
Automate Notion databases with cross-platform sync, templates, and intelligent workflows.
What is notion-automation?
Automate Notion database operations including page creation, queries, and content management. Use this skill to build workflows that sync data between Notion and other platforms (Slack, Google Calendar, forms), manage templates, and trigger actions based on database changes.
- Create and update Notion pages and databases programmatically
- Query Notion databases with filters and sorting
- Sync data bidirectionally between Notion and external platforms (Slack, Google Calendar, forms)
- Generate automated email digests from Notion data
- Capture tasks from Slack messages and create Notion entries
- Manage content publishing pipelines with status-based automations
How to install notion-automation
npx skills add https://github.com/claude-office-skills/skills --skill notion-automation- Notion workspace with API access enabled
- n8n instance or workflow automation platform
- Integration credentials for connected platforms (Slack, Google Calendar, forms)
How to use notion-automation
- 1.Set up your Notion database with required properties (Status, dates, assignees, etc.)
- 2.Configure the MCP server connection to your Notion workspace
- 3.Define your workflow trigger (form submission, Slack reaction, schedule, etc.)
- 4.Map data fields from source to Notion properties using the provided templates
- 5.Test the workflow with sample data
- 6.Deploy and monitor automation execution
Use cases
- Convert form submissions (Typeform, Google Forms) into Notion database entries with data enrichment
- Send weekly task digests to team members based on Notion database queries
- Capture Slack messages as Notion tasks using emoji reactions
- Sync Google Calendar events with a Notion meetings database
- Automate content publishing workflows with status tracking and platform distribution
- Operations teams managing databases and workflows
- Content teams coordinating publishing pipelines
- Sales and CRM teams tracking leads and deals
- Project managers coordinating tasks and timelines
- Teams using Slack and Notion for collaboration
notion-automation FAQ
This skill supports Slack, Google Calendar, Typeform, Google Forms, and email. It uses n8n as the underlying automation engine, so any n8n-supported platform can be integrated.
Yes. The skill includes data enrichment capabilities like Clearbit lookups for company information based on email addresses.
Set up separate workflows for each direction (Notion→Platform and Platform→Notion) with appropriate triggers and filters to avoid infinite loops.
Yes. Workflows support scheduled triggers (e.g., 'Monday 9am') for recurring tasks like generating weekly digests.
The skill includes error handling in workflows. Configure notifications to alert you of failures, and use filters to validate data before creating pages.
Full instructions (SKILL.md)
Source of truth, from claude-office-skills/skills.
name: notion-automation description: "Notion database automation - sync, templates, workflows, and cross-platform integrations" version: "1.0.0" author: claude-office-skills license: MIT
category: productivity tags:
- notion
- automation
- database
- workflow
- n8n department: Operations
models: recommended: - claude-sonnet-4
mcp: server: notion-mcp tools: - notion_create_page - notion_update_database - notion_query
capabilities:
- database_automation
- template_creation
- cross_platform_sync
- workflow_triggers
- content_management
languages:
- en
- zh
related_skills:
- sheets-automation
- slack-workflows
- crm-automation
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**
```yaml
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*
Related skills
More from claude-office-skills/skills and the wider catalog.

Obsidian Automation
Automate Obsidian note creation, linking, and knowledge base workflows with smart templates and graph insights.

Offer Letter Generator
Generate professional employment offer letters with compensation and terms in minutes.

office-mcp
39 MCP tools for Word, Excel, PowerPoint, PDF, and OCR document automation

office-to-md
Convert Office documents to Markdown using Microsoft's markitdown tool

PDF Compress
Reduce PDF file size while maintaining acceptable quality through intelligent compression strategies.

PDF Converter
Convert PDFs to Word, Excel, Images and other formats while preserving formatting.