RECIPE 082
Notion → 블로그 자동 발행 (WordPress/티스토리)
- ▸Notion에서 작성 완료된 포스트를 자동으로 감지
- ▸Notion 콘텐츠를 WordPress/티스토리 형식으로 변환
- ▸발행 후 Notion 상태를 '발행 완료'로 자동 업데이트
✅사전 준비
- □Notion 통합 토큰 및 블로그 DB ID 확인
- □WordPress REST API 사용자 계정 및 애플리케이션 비밀번호 생성
- □Notion DB 속성 구성: 제목, 본문, 카테고리, 태그, 상태(초안/발행대기/발행완료)
- □대표 이미지 URL 필드 추가
Notion 발행대기 포스트 조회
Node: HTTP Request
Method: POST
URL: https://api.notion.com/v1/databases/YOUR_DB_ID/query
Headers:
Authorization: Bearer YOUR_NOTION_TOKEN
Notion-Version: 2022-06-28
Body:
{
"filter": {
"property": "상태",
"select": { "equals": "발행대기" }
}
}WordPress REST API 포스트 발행
Node: HTTP Request
Method: POST
URL: https://YOUR_WORDPRESS_SITE.com/wp-json/wp/v2/posts
Authentication: Basic Auth
Username: YOUR_WP_USERNAME
Password: YOUR_APPLICATION_PASSWORD
Body:
{
"title": "{{ $json.properties.제목.title[0].plain_text }}",
"content": "{{ $json.markdownContent }}",
"status": "publish",
"categories": [{{ $json.categoryId }}],
"tags": {{ $json.tagIds }},
"featured_media": {{ $json.featuredImageId }}
}Notion 상태 업데이트
Node: HTTP Request
Method: PATCH
URL: https://api.notion.com/v1/pages/{{ $json.notionPageId }}
Headers:
Authorization: Bearer YOUR_NOTION_TOKEN
Notion-Version: 2022-06-28
Body:
{
"properties": {
"상태": { "select": { "name": "발행완료" } },
"발행URL": { "url": "{{ $json.wordpressPostUrl }}" },
"발행일": { "date": { "start": "{{ $now.toISODate() }}" } }
}
}💡 TIPWordPress 애플리케이션 비밀번호는 WordPress 관리자 → 사용자 → 프로필 하단 '애플리케이션 비밀번호' 섹션에서 생성할 수 있습니다. 기존 로그인 비밀번호와 별도로 관리되어 더 안전합니다.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"recipeId": "recipe082",
"title": "채널톡 상담 → Slack 실시간 라우팅",
"chapter": 8,
"category": "국내 서비스 특화 레시피",
"difficulty": "⭐⭐",
"estimatedTime": "35분",
"usedApps": [
"채널톡(ChannelTalk) Webhook",
"Slack"
],
"description": "채널톡으로 새 고객 상담이 들어오면 n8n Webhook이 즉시 신호를 받아, 상담 내용·고객명·문의 유형을 파싱하고 담당 팀원 Slack으로 실시간 라우팅합니다. 채널톡을 항상 켜두지 않아도 즉시 알림을 받을 수 있습니다.",
"apiGuide": {
"platform": "채널톡",
"steps": [
"채널톡 설정 → 개발자 설정 → Webhook URL에 n8n Webhook 주소 등록",
"이벤트 타입: conversation_created (새 상담) 선택",
"채널톡 Open API 키 발급 (문의 유형 분류용)"
]
},
"nodes": [
{
"id": "node1",
"type": "n8n-nodes-base.webhook",
"name": "채널톡 Webhook 수신",
"parameters": {
"path": "channeltalk-new-chat",
"responseMode": "lastNode",
"httpMethod": "POST"
}
},
{
"id": "node2",
"type": "n8n-nodes-base.code",
"name": "상담 정보 파싱",
"parameters": {
"jsCode": "const body = items[0].json;\nreturn [{\n json: {\n customerName: body.entity?.customer?.name || '익명',\n message: body.entity?.plainText || '',\n channelId: body.entity?.channelId || '',\n createdAt: body.entity?.createdAt || new Date().toISOString()\n }\n}];"
}
},
{
"id": "node3",
"type": "n8n-nodes-base.openAi",
"name": "문의 유형 자동 분류",
"parameters": {
"resource": "chat",
"model": "gpt-4o-mini",
"messages": {
"values": [
{
"role": "user",
"content": "다음 고객 메시지의 문의 유형을 분류해주세요.\n유형: 배송문의, 결제문의, 제품문의, 환불요청, 불만접수, 기타\n한 단어만 답하세요.\n\n메시지: {{$json['message']}}"
}
]
}
}
},
{
"id": "node4",
"type": "n8n-nodes-base.if",
"name": "불만 접수 여부 확인",
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json['message']['content']}}",
"operation": "contains",
"value2": "불만"
}
]
}
}
},
{
"id": "node5",
"type": "n8n-nodes-base.slack",
"name": "CS 팀 Slack 알림",
"parameters": {
"channel": "={{$env.CS_SLACK_CHANNEL}}",
"text": "💬 새 채널톡 상담 도착!\n\n고객: {{$node['상담 정보 파싱'].json['customerName']}}\n유형: {{$node['문의 유형 자동 분류'].json['message']['content']}}\n내용: {{$node['상담 정보 파싱'].json['message']}}\n수신 시각: {{$now.format('HH:mm')}}"
}
}
],
"envVariables": {
"CS_SLACK_CHANNEL": "CS팀 Slack 채널 ID",
"MANAGER_SLACK_ID": "팀장 Slack DM ID (불만 접수 에스컬레이션용)"
},
"tips": [
"채널톡 Webhook은 이벤트 타입별로 별도 등록이 가능해요. 새 상담(conversation_created) 외에 상담 종료, 재오픈 이벤트도 활용할 수 있어요.",
"레시피 049(미답변 채팅 자동 배정)와 연결하면 들어온 상담이 일정 시간 내 응답이 없을 때 자동 배정까지 완성됩니다.",
"문의 유형이 '불만접수'로 분류될 경우 팀장 DM에도 동시 알림을 보내는 IF 분기를 추가하면 에스컬레이션이 자동화됩니다."
],
"qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe082"
}