n8n 프로젝트 실전 — 콘텐츠 자동 배포 파이프라인

n8n 프로젝트 실전 — 콘텐츠 자동 배포 파이프라인

29편 분량의 기술을 하나의 프로젝트에 총동원한다. 콘텐츠 수집부터 AI 가공, 블로그 발행, SNS 배포까지 전 과정을 자동화하는 파이프라인을 만들자.

프로젝트 개요

완성될 시스템

[RSS 수집] → [AI 요약+번역] → [블로그 포스트 생성] → [SNS 배포] → [성과 추적]

사용 기술 (시리즈 참조)

구성 요소 사용 노드/기술 참조 편
스케줄링 Schedule Trigger, Cron 12편
RSS 수집 RSS Feed Read 20편
중복 제거 Code, PostgreSQL 8, 17편
AI 요약 Basic LLM Chain, GPT-4o-mini 21편
AI 태그 추출 Basic LLM Chain 21편
이미지 생성 HTTP Request (DALL-E API) 7편
블로그 발행 HTTP Request (CMS API) 7편
SNS 배포 Slack, Telegram 14, 16편
에러 핸들링 Error Workflow, 재시도 11편
승인 Wait + Slack 버튼 26편
모듈화 Sub-Workflow 25편

아키텍처 설계

5개의 모듈(Sub-Workflow)로 분리한다:

📦 [모듈] RSS 수집기
📦 [모듈] AI 콘텐츠 가공기
📦 [모듈] CMS 발행기
📦 [모듈] SNS 배포기
📦 [모듈] 알림 모듈
🔄 [메인] 콘텐츠 파이프라인
🚨 [에러] 글로벌 에러 핸들러

모듈 1: RSS 수집기

워크플로우

[Execute Workflow Trigger]
  → [RSS Feed Read: 소스 1 (Hacker News)]
  → [RSS Feed Read: 소스 2 (TechCrunch)]
  → [RSS Feed Read: 소스 3 (GeekNews)]
  → [Merge: Append (모든 피드 합치기)]
  → [Filter: 24시간 이내]
  → [PostgreSQL: 중복 체크 (URL 기준)]
  → [Filter: 새 글만]
  → [결과 반환]

중복 체크 SQL

SELECT url FROM articles
WHERE url = ANY($1)

Code 노드에서 새 글만 필터:

const existingUrls = $('PostgreSQL').all().map(i => i.json.url);
const items = $input.all();
return items.filter(item => !existingUrls.includes(item.json.link));

모듈 2: AI 콘텐츠 가공기

워크플로우

[Execute Workflow Trigger]
  → [Basic LLM Chain: 한국어 요약 (GPT-4o-mini)]
  → [Basic LLM Chain: 태그 추출 (GPT-4o-mini)]
  → [Basic LLM Chain: 제목 생성 (GPT-4o-mini)]
  → [결과 합치기]

요약 프롬프트

System: 당신은 기술 블로그 에디터입니다.

User: 다음 기사를 한국어로 요약하고 아래 JSON 형식으로만 응답하세요:
{
  "summary": "3~5문장 요약",
  "keyPoints": ["핵심 포인트 1", "핵심 포인트 2", "핵심 포인트 3"],
  "category": "AI|Backend|Frontend|DevOps|Security|Other",
  "tags": ["태그1", "태그2", "태그3"],
  "title_ko": "매력적인 한국어 제목"
}

기사 제목: {{ $json.title }}
기사 내용: {{ $json.contentSnippet }}

모듈 3: CMS 발행기

워크플로우

블로그 CMS API를 호출하여 포스트를 생성한다. (WordPress, Ghost, 커스텀 CMS 등)

[Execute Workflow Trigger]
  → [HTTP Request: 이미지 생성 (DALL-E)]
  → [HTTP Request: 이미지 업로드 (CMS)]
  → [Code: Markdown 본문 구성]
  → [HTTP Request: 포스트 생성 (CMS API)]
  → [결과 반환 (포스트 URL)]

Markdown 본문 구성

const data = $input.item.json;

const markdown = `
# ${data.title_ko}

> 원문: [${data.originalTitle}](${data.originalUrl})

## 요약

${data.summary}

## 핵심 포인트

${data.keyPoints.map(p => `- ${p}`).join('\n')}

---

*이 글은 AI가 자동 요약한 콘텐츠입니다. 정확한 내용은 원문을 참조하세요.*
`;

return { json: { ...data, markdown, publishedAt: new Date().toISOString() } };

모듈 4: SNS 배포기

워크플로우

[Execute Workflow Trigger]
  → [Edit Fields: 채널별 메시지 구성]
  → [Slack: #tech-news 채널]
  → [Telegram: 구독자 채널]

Slack 메시지 포맷

📰 *{{ $json.title_ko }}*

{{ $json.summary.substring(0, 200) }}...

🏷️ {{ $json.tags.join(' · ') }}
🔗 <{{ $json.postUrl }}|블로그에서 읽기> | <{{ $json.originalUrl }}|원문>

메인 워크플로우: 오케스트레이터

[Schedule: 매일 오전 8시]
  → [Execute Workflow: RSS 수집기]
  → [Split In Batches: 5개씩]
  → [Execute Workflow: AI 가공기]
  → [Wait: 1초 (API Rate Limit)]
  → [Slack: 관리자 승인 요청 (초안 + 승인/거부)]
  → [Wait: Webhook 대기 (24시간 타임아웃)]
  → [IF: 승인?]
     true → [Execute Workflow: CMS 발행기]
            → [Execute Workflow: SNS 배포기]
            → [PostgreSQL: 발행 기록 저장]
     false → [PostgreSQL: 거부 기록]
  → [Loop: 다음 배치]
  → [Execute Workflow: 알림 모듈 ("오늘의 콘텐츠 파이프라인 완료")]

에러 핸들러

[Error Trigger]
  → [Edit Fields: 에러 정보 구성]
  → [Slack: #pipeline-errors 채널]
  → [PostgreSQL: 에러 로그 저장]

성과 추적 (보너스)

발행된 콘텐츠의 성과를 추적:

[Schedule: 매일 오후 6시]
  → [PostgreSQL: 오늘 발행된 글 목록]
  → [HTTP Request: 블로그 조회수 API]
  → [Code: 성과 집계]
  → [Google Sheets: 일일 성과 기록]
  → [Slack: 일일 콘텐츠 성과 리포트]

리포트 예시

📊 오늘의 콘텐츠 성과 리포트

수집: 42건 → 발행: 5건 → 조회: 1,247

Top 3:
1. "GPT-5 출시 임박? OpenAI 로드맵" — 523 조회
2. "Docker Desktop 대안 5가지" — 412 조회
3. "한국 스타트업 AI 도입 현황" — 312 조회

AI 비용: $0.42

확장 아이디어

이 파이프라인을 기반으로 더 발전시킬 수 있다:

확장 추가 노드
뉴스레터 자동 발송 Gmail (주간 다이제스트)
YouTube 영상 요약 YouTube Transcript API + AI
팟캐스트 스크립트 생성 AI + TTS API
SEO 최적화 메타데이터 AI 메타 디스크립션 생성
A/B 테스트 제목 AI가 2개 제목 생성 → 성과 비교

📝 정리

  • [x] 모듈화 설계: RSS 수집, AI 가공, CMS 발행, SNS 배포를 별도 Sub-Workflow로 분리
  • [x] AI 파이프라인: 요약 → 태그 추출 → 제목 생성을 체인으로 연결
  • [x] Human-in-the-Loop: AI 초안 → 관리자 Slack 승인 → 발행
  • [x] 에러 핸들링: Error Workflow + 에러 로그 DB 저장
  • [x] 성과 추적: 일일 리포트로 파이프라인 효과 측정

다음 편 예고 (시리즈 최종편)

30편: 다음 단계 — n8n 마스터 로드맵

시리즈를 마무리하며, n8n 학습의 다음 단계를 안내한다. 커뮤니티 참여, 커스텀 노드 개발, 엔터프라이즈 설정까지.