Files
news-summary-bot/docs/n8n-setup.md
sm4640 d4bd508618
All checks were successful
news-summary-bot-cicd / build_push_deploy (push) Successful in 4m40s
Fix: [2.0.3] yt-dlp 쿠키 인증 추가, 문서 업데이트, CI/CD .md 스킵
- yt-dlp에 쿠키 파일(/app/cookies.txt) 지원 추가 (YouTube 봇 감지 우회)
- CI/CD에 paths-ignore: **/*.md 추가하여 문서 수정 시 빌드 스킵
- 전체 문서 업데이트: 라우트 변경, 쿠키 인증 방식, n8n Expression 모드 안내
- .gitignore에 cookies.txt 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 15:45:12 +09:00

3.5 KiB

n8n 워크플로우 구성 가이드

워크플로우 개요

이 워크플로우는 2개의 YouTube 채널(머니머니코믹스, 슈카월드)의 새 영상을 RSS Feed Trigger로 감지하고, FastAPI /api/news/summarize 엔드포인트를 호출하여 요약 후 Discord로 전송하는 자동화 파이프라인입니다.

전체 흐름:

RSS Feed Trigger (채널A) ──┐
                           ├→ Merge → HTTP Request (FastAPI) → 완료
RSS Feed Trigger (채널B) ──┘                                ↘ Error Trigger → Discord 알림

노드 구성 상세

1. RSS Feed Trigger 노드 (2개)

RSS Feed Trigger는 중복 방지가 내장되어 있어 이전에 처리한 항목을 기억하고, 새 영상만 반환합니다. Poll Time으로 체크 주기를 설정합니다.

노드 A - 머니머니코믹스:

설정 항목
Feed URL https://www.youtube.com/feeds/videos.xml?channel_id=UCJo6G1u0e_-wS-JQn3T-zEw
Poll Time Every Day / Hour: 10, 14, 20 (하루 3회 권장)

노드 B - 슈카월드:

설정 항목
Feed URL https://www.youtube.com/feeds/videos.xml?channel_id=UCsJ6RuBiTVWRX156FVbeaGg
Poll Time Every Day / Hour: 10, 14, 20 (하루 3회 권장)

⚠️ 첫 실행 주의: RSS Feed Trigger를 처음 활성화하면 피드에 있는 모든 영상(최대 15개)을 새 영상으로 인식합니다. 워크플로우 활성화 전에 수동으로 한 번 테스트 실행하여 기존 항목을 처리 완료 상태로 만드세요.

2. Merge 노드

  • 타입: Merge
  • 모드: Append
  • 두 RSS Feed Trigger의 출력을 하나의 리스트로 합칩니다.
  • 합쳐진 리스트의 각 항목마다 다음 노드(HTTP Request)가 실행됩니다.

3. HTTP Request 노드

FastAPI 서버의 /api/news/summarize 엔드포인트를 호출합니다.

설정 항목
Method POST
URL https://nkeystudy.site/api/news/summarize
Body Content Type JSON
Body 아래 참조

Body 설정:

  • Specify Body: Using JSON (Expression 모드)
  • JSON:
{
  "video_url": "{{ $json.link }}",
  "title": "{{ $json.title }}"
}

주의: 영상 제목에 큰따옴표(")가 포함된 경우 JSON이 깨질 수 있습니다. 반드시 Expression 모드를 사용하세요 (Fixed 모드에서는 특수문자 이스케이프가 안 됩니다).

Headers:

헤더
Content-Type application/json
X-Api-Secret 설정한 시크릿 값 (.envAPI_SECRET과 동일)

에러 처리

Error Trigger 워크플로우

메인 워크플로우와 별도로 에러 처리 워크플로우를 생성합니다.

  1. Error Trigger 노드를 추가합니다.
  2. HTTP Request 노드로 Discord Webhook을 호출합니다:
설정 항목
Method POST
URL Discord Webhook URL
Body Content Type JSON

Body:

{
  "content": "뉴스 요약 봇 에러 발생!\n워크플로우: {{ $json.workflow.name }}\n에러: {{ $json.execution.error.message }}"
}
  1. 메인 워크플로우의 Settings → Error Workflow에서 이 에러 워크플로우를 지정합니다.

HTTP Request 노드 자체 에러 처리

HTTP Request 노드 설정에서:

  • Continue On Fail: true로 설정하면 하나의 영상 요약이 실패해도 나머지 영상은 계속 처리됩니다.
  • Retry On Fail: true, Max Retries: 2, Wait Between Retries (ms): 3000