RECIPE 046
부정 리뷰 감지 → 즉시 CS팀 알림
- ▸키워드 또는 주제를 입력받아 OpenAI로 블로그 콘텐츠를 자동 생성할 수 있다
- ▸생성된 콘텐츠를 WordPress 또는 Notion에 자동 발행할 수 있다
- ▸SNS용 짧은 버전을 함께 생성해 멀티채널 발행 준비를 자동화할 수 있다
✅사전 준비
- □OpenAI API 자격증명 연결 완료
- □발행 플랫폼 자격증명 연결 완료 (WordPress REST API 또는 Notion)
- □콘텐츠 주제 입력 방식 결정 (Webhook / Sheets / 수동 트리거)
- □브랜드 톤앤매너 정의 문서 준비 (System 프롬프트에 활용)
블로그 본문 생성 — OpenAI 프롬프트
Model: gpt-4o
System:
너는 IT/자동화 분야 전문 블로그 작가야.
한국어로, 친근하지만 전문적인 톤으로 작성해.
User:
주제: {{ $json.topic }}
키워드: {{ $json.keywords }}
타겟 독자: {{ $json.audience ?? 'IT 업무 담당자' }}
아래 구조로 블로그 글을 작성해줘:
1. 훅이 있는 도입부 (3줄)
2. 본론 3~4개 섹션 (각 H2 제목 포함)
3. 결론 및 CTASNS 요약본 생성 — OpenAI 프롬프트
Model: gpt-4o-mini
Prompt:
다음 블로그 글을 LinkedIn용 포스팅으로 변환해줘.
- 150자 이내
- 핵심 인사이트 1가지
- 이모지 적절히 활용
- 해시태그 3개 포함
블로그 글:
{{ $json.blogContent }}WordPress 발행 — HTTP Request
URL: https://your-site.com/wp-json/wp/v2/posts
Method: POST
Authentication: Basic Auth (WordPress 앱 비밀번호)
Body (JSON):
title: {{ $json.title }}
content: {{ $json.blogContent }}
status: draft (검토 후 publish로 변경)💡 TIP콘텐츠를 바로 publish 하지 말고 항상 draft로 저장 후 사람이 검토하는 단계를 거치세요. AI 생성 콘텐츠는 사실 오류가 있을 수 있습니다.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"recipeId": "recipe044",
"title": "SLA 초과 임박 티켓 자동 경고",
"chapter": 4,
"category": "고객 응대 자동화",
"difficulty": "⭐⭐",
"estimatedTime": "30분",
"usedApps": [
"Zendesk",
"Slack"
],
"description": "30분마다 Zendesk에서 미해결 티켓을 조회하여 SLA 마감까지 1시간 미만으로 남은 티켓을 담당자 Slack에 자동 경고합니다.",
"nodes": [
{
"id": "trigger_schedule",
"type": "trigger",
"service": "Schedule",
"name": "30분마다 실행",
"config": {
"interval": "every 30 minutes"
}
},
{
"id": "get_tickets",
"type": "action",
"service": "Zendesk",
"name": "SLA 임박 티켓 조회",
"config": {
"operation": "searchTickets",
"query": "status:open sla_breach_at:<1h",
"fields": [
"id",
"subject",
"assignee_id",
"sla_policy",
"sla_breach_at",
"created_at"
]
}
},
{
"id": "check_exists",
"type": "condition",
"service": "IF",
"name": "임박 티켓 존재 여부",
"config": {
"condition": "{{$json['count'] > 0}}"
}
},
{
"id": "loop_tickets",
"type": "action",
"service": "SplitInBatches",
"name": "티켓별 반복 처리",
"config": {
"batchSize": 1
}
},
{
"id": "notify_assignee",
"type": "action",
"service": "Slack",
"name": "담당자 경고 알림",
"config": {
"operation": "sendDM",
"userId": "{{$json['assignee_slack_id']}}",
"message": "🚨 SLA 초과 임박!\n\n🎫 티켓 #{{$json['id']}}: {{$json['subject']}}\n⏰ SLA 마감까지: {{$json['sla_remaining_minutes']}}분 남음\n\n👉 지금 바로 확인해주세요!\nhttps://{{$env.ZENDESK_DOMAIN}}.zendesk.com/agent/tickets/{{$json['id']}}"
}
},
{
"id": "no_action",
"type": "noOp",
"name": "임박 티켓 없음 — 스킵",
"config": {}
}
],
"edges": [
{
"from": "trigger_schedule",
"to": "get_tickets"
},
{
"from": "get_tickets",
"to": "check_exists"
},
{
"from": "check_exists",
"to": "loop_tickets",
"branch": "true"
},
{
"from": "check_exists",
"to": "no_action",
"branch": "false"
},
{
"from": "loop_tickets",
"to": "notify_assignee"
}
],
"tips": [
"SLA 기준 시간은 Zendesk 설정에서 정책별로 다르게 설정되어 있어요. n8n에서는 'sla_breach_at' 필드와 현재 시간을 비교해 남은 시간을 계산하세요.",
"담당자 Slack ID는 Zendesk 사용자 커스텀 필드에 미리 저장해두면 자동 매핑이 가능해요.",
"1시간 전 경고 외에 30분 전 재경고를 추가하면 더 촘촘한 SLA 관리가 가능해요."
],
"qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe044"
}