발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
RECIPE 085

다국어 콘텐츠 자동 번역 → 발행

  • ▸한국어 콘텐츠를 영어/일본어/중국어로 자동 번역
  • ▸번역 품질 자동 검수 후 Notion에 초안 저장
  • ▸승인된 번역본을 해당 언어 채널에 자동 발행

✅사전 준비

  • □DeepL API 키 발급 (https://www.deepl.com/pro-api) 또는 OpenAI API 키
  • □번역 대상 언어 코드 목록: EN, JA, ZH
  • □Notion 다국어 콘텐츠 DB 구성 (원문 + 언어별 번역 필드)
  • □번역 검수 담당자 이메일 목록

DeepL 번역 API 호출

Node: HTTP Request
Method: POST
URL: https://api-free.deepl.com/v2/translate
Headers:
  Authorization: DeepL-Auth-Key YOUR_DEEPL_API_KEY

Body (Form Data):
  text: {{ $json.source_text }}
  source_lang: KO
  target_lang: {{ $json.target_lang }}
  formality: prefer_more

// 지원 언어 코드: EN-US, JA, ZH, DE, FR, ES

번역 품질 검수 (OpenAI)

System: 번역 품질 검수 전문가입니다.

User: 다음 원문과 번역문을 비교하여 품질을 평가하세요.

원문(한국어): {{ $json.source_text }}
번역문({{ $json.target_lang }}): {{ $json.translated_text }}

JSON 형식으로 반환:
{
  "score": 0-100,
  "issues": ["문제점 목록"],
  "approved": true/false
}

90점 이상인 경우만 approved: true로 설정하세요.

언어별 발행 라우팅 (Switch)

Node: Switch
Value: {{ $json.target_lang }}

Case 'EN-US': WordPress 영문 블로그 발행
Case 'JA': Zenn 또는 Note.jp 발행
Case 'ZH': WeChat 공식 계정 초안 저장
Default: Notion 검토 대기 상태로 저장
💡 TIPDeepL 무료 API는 월 500,000자까지 번역이 가능합니다. 블로그 포스트 1편이 평균 2,000자라면 월 250편까지 무료로 번역할 수 있습니다.
⚡

워크플로우 JSON

아래 JSON을 복사해 n8n에 바로 임포트하세요

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe085",
  "title": "네이버 스마트스토어 주문 자동 집계",
  "chapter": 8,
  "category": "국내 서비스 특화 레시피",
  "difficulty": "⭐⭐⭐",
  "estimatedTime": "50분",
  "usedApps": [
    "네이버 커머스 API",
    "Google Sheets",
    "Slack"
  ],
  "description": "매일 오전 8시 네이버 커머스 API에서 전일 신규 주문·취소·반품 건수를 자동 수집해 Google Sheets에 날짜별로 기록하고, 일별 매출 요약을 Slack으로 발송합니다.",
  "apiGuide": {
    "platform": "네이버 스마트스토어",
    "issueUrl": "sell.smartstore.naver.com",
    "steps": [
      "스마트스토어 센터 로그인",
      "연동 관리 → Open API 사용 신청",
      "Client ID / Client Secret 발급",
      "n8n에서 OAuth2 방식으로 연결"
    ]
  },
  "nodes": [
    {
      "id": "node1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "name": "매일 오전 8시 실행",
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 8 * * *"
            }
          ]
        }
      }
    },
    {
      "id": "node2",
      "type": "n8n-nodes-base.httpRequest",
      "name": "네이버 커머스 API 전일 주문 조회",
      "parameters": {
        "method": "GET",
        "url": "https://api.commerce.naver.com/external/v1/pay-order/seller/product-orders",
        "authentication": "oAuth2",
        "queryParameters": {
          "lastChangedFrom": "={{$now.minus({days: 1}).startOf('day').toISO()}}",
          "lastChangedTo": "={{$now.minus({days: 1}).endOf('day').toISO()}}",
          "limit": "100"
        }
      }
    },
    {
      "id": "node3",
      "type": "n8n-nodes-base.code",
      "name": "주문 현황 집계",
      "parameters": {
        "jsCode": "const orders = items[0].json.data || [];\nconst newOrders = orders.filter(o => o.productOrderStatus === 'PAYED').length;\nconst cancelled = orders.filter(o => o.productOrderStatus === 'CANCELLED').length;\nconst returned = orders.filter(o => o.productOrderStatus === 'RETURNED').length;\nconst totalRevenue = orders.filter(o => o.productOrderStatus === 'PAYED').reduce((sum, o) => sum + o.paymentAmount, 0);\nreturn [{ json: { newOrders, cancelled, returned, totalRevenue } }];"
      }
    },
    {
      "id": "node4",
      "type": "n8n-nodes-base.googleSheets",
      "name": "주문 현황 시트 기록",
      "parameters": {
        "operation": "appendOrUpdate",
        "spreadsheetId": "={{$env.SMARTSTORE_SHEET_ID}}",
        "sheetName": "일별주문현황",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "날짜": "={{$now.minus({days: 1}).format('YYYY-MM-DD')}}",
            "신규주문": "={{$json['newOrders']}}",
            "취소반품": "={{$json['cancelled'] + $json['returned']}}",
            "일매출": "={{$json['totalRevenue']}}"
          }
        }
      }
    },
    {
      "id": "node5",
      "type": "n8n-nodes-base.slack",
      "name": "일별 매출 요약 발송",
      "parameters": {
        "channel": "={{$env.STORE_SLACK_CHANNEL}}",
        "text": "📦 어제 스마트스토어 현황 ({{$now.minus({days: 1}).format('MM/DD')}})\n\n신규 주문: {{$node['주문 현황 집계'].json['newOrders']}}건 / ₩{{$node['주문 현황 집계'].json['totalRevenue'].toLocaleString()}}\n취소·반품: {{$node['주문 현황 집계'].json['cancelled'] + $node['주문 현황 집계'].json['returned']}}건"
      }
    }
  ],
  "envVariables": {
    "SMARTSTORE_SHEET_ID": "Google Sheets 스마트스토어 주문 현황 시트 ID",
    "STORE_SLACK_CHANNEL": "운영 Slack 채널 ID"
  },
  "tips": [
    "네이버 커머스 API의 OAuth2 토큰은 만료 시간이 있어요. n8n의 OAuth2 자격증명에서 자동 갱신을 활성화해두세요.",
    "레시피 088(토스페이먼츠 결제 처리)과 함께 운영하면 결제 수단별 매출 비교 분석이 가능해요.",
    "누적 월매출을 함께 표시하려면 Google Sheets에서 해당 월 데이터를 SUM 집계해 Slack 메시지에 추가하세요."
  ],
  "qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe085"
}
← 이전 레시피☰ 목차다음 레시피 →