발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
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
예: 8a9b2c3d4e5f6a7b8c9d0e1f2a3b4c5d

Notion 노드 — 페이지 생성 필드 매핑

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 클릭
{
  "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"
    ]
  }
}
← 이전 레시피☰ 목차다음 레시피 →