RECIPE 023
콘텐츠 캘린더 자동 리마인더
- ▸Notion API로 데이터베이스에 새 페이지를 자동 생성할 수 있다
- ▸Webhook 또는 폼 응답을 받아 Notion 페이지를 즉시 만들 수 있다
- ▸템플릿 구조(제목/날짜/담당자/태그)를 코드로 정의해 일관된 페이지를 찍어낼 수 있다
✅사전 준비
- □Notion Integration 생성 및 API Token 발급
- □n8n Notion 자격증명 등록
- □페이지를 생성할 Notion 데이터베이스 ID 확인 (URL의 ?v= 앞 32자리)
- □Integration을 해당 데이터베이스에 연결(Share → Invite)
Notion 데이터베이스 ID 확인 방법
Notion 데이터베이스 URL 예시:
https://www.notion.so/워크스페이스명/[DATABASE_ID]?v=xxx
→ ?v= 앞의 32자리 문자열이 Database ID
예: 8a9b2c3d4e5f6a7b8c9d0e1f2a3b4c5dNotion 노드 — 페이지 생성 필드 매핑
Resource: Database Page
Operation: Create
Database ID: YOUR_DATABASE_ID
속성 매핑:
이름(Title): {{ $json.title }}
상태(Select): 진행중
담당자(Text): {{ $json.assignee }}
마감일(Date): {{ $json.dueDate }}
태그(Multi-select): {{ $json.tags }}페이지 본문 블록 자동 추가 — HTTP Request
{
"children": [
{
"object": "block",
"type": "heading_2",
"heading_2": {
"rich_text": [{ "text": { "content": "📋 작업 개요" } }]
}
},
{
"object": "block",
"type": "paragraph",
"paragraph": {
"rich_text": [{ "text": { "content": "여기에 작업 내용을 작성하세요." } }]
}
}
]
}💡 TIPNotion 노드의 'Append Block Children' 기능으로 페이지 생성 후 본문 블록을 추가할 수 있어요. 페이지 생성 → 페이지 ID 추출 → 블록 추가 순서로 연결하세요.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"name": "recipe023_content_calendar_reminder",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 * * *"
}
]
}
},
"id": "schedule-023-01",
"name": "매일 오전 9시",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.1,
"position": [
200,
400
]
},
{
"parameters": {
"resource": "databasePage",
"operation": "getAll",
"databaseId": "={{ $env.NOTION_CONTENT_DB_ID }}",
"filterType": "manual",
"filters": {
"conditions": [
{
"key": "발행 예정일",
"condition": "equals",
"value": "={{ $now.plus({days:2}).format('YYYY-MM-DD') }}"
},
{
"key": "상태",
"condition": "equals",
"value": "작성 중"
}
]
},
"options": {}
},
"id": "notion-023-02",
"name": "발행일 D-2 콘텐츠 조회",
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
420,
400
]
},
{
"parameters": {
"conditions": {
"conditions": [
{
"leftValue": "={{ $input.all().length }}",
"rightValue": 0,
"operator": {
"type": "number",
"operation": "gt"
}
}
]
}
},
"id": "if-023-03",
"name": "리마인더 대상 있는지 확인",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
640,
400
]
},
{
"parameters": {
"resource": "message",
"operation": "post",
"channel": "#content-team",
"text": "=⏰ 콘텐츠 발행 D-2 리마인더!\n제목: {{ $json.properties.제목.title[0].plain_text }}\n담당자: {{ $json.properties.담당자.people[0].name }}\n발행 예정일: {{ $json.properties['발행 예정일'].date.start }}\n→ 준비 상황을 확인해주세요!"
},
"id": "slack-023-04",
"name": "담당자 Slack 리마인더",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [
860,
300
]
}
],
"connections": {
"매일 오전 9시": {
"main": [
[
{
"node": "발행일 D-2 콘텐츠 조회",
"type": "main",
"index": 0
}
]
]
},
"발행일 D-2 콘텐츠 조회": {
"main": [
[
{
"node": "리마인더 대상 있는지 확인",
"type": "main",
"index": 0
}
]
]
},
"리마인더 대상 있는지 확인": {
"main": [
[
{
"node": "담당자 Slack 리마인더",
"type": "main",
"index": 0
}
],
[]
]
}
},
"settings": {
"timezone": "Asia/Seoul"
},
"meta": {
"chapter": 2,
"recipe": "023",
"title": "콘텐츠 캘린더 자동 리마인더",
"difficulty": "⭐",
"estimatedTime": "20분",
"apps": [
"Notion",
"Slack"
]
}
}