n8n 특정 뉴스 채널 자동 요약하기

소개

네이버 뉴스에 입점하지 않은 특정 뉴스 채널 요약 및 전송

진행 방법

  • Schedule Trigger : 2회/1 크론 표현식 사용

  • HTTP Request : RSS 피드 가져오기, Response Format: Text (XML로 받기 위함)

  • XML :RSS(XML) → JSON 변환

  • Code : slice(0, 12) → 기사 최대 12개 제한 / (RSS에서 디폴트값이 20개로 추정됨)

  • Aggregate : LLM이 만든 요약 12개를 하나로 합치기

  • Send a text message : {{ $json.text.join("\n\n----------------\n\n") }} -> Chatgpt에 문의하여 1개의 텔레그램 메시지에 12기사 전송 /Parse Mode: None (안전하게 전송, Markdown 오류 방지)

    메시지를 보내는 과정을 보여주는 다이어그램

  • 아래 내용은 기사 요약정리를 위한 프롬프트

목표: 한국어로 200자 이내 / 3단락, 각 1~2문장, 키워드 중심 / 문장 끝은 명사형 “~ㅁ”

/ 숫자·반복·단순 정보 지양 / 마지막 단락에만 시사점/업무 연결 / 회사 현재상황 참조(문맥 반영용)

입력 기사:

- 분류: {{ $json.category }}

- 제목: {{ $json.title }}

- 설명: {{ $json.description }}

- 링크: {{ $json.link }}

작성 규칙:

1) 헤드라인: 업로드 내용 전체를 대체 가능한 한 문장 생성하고 이렇게 만들어줘 *

2) 둘째 단락: 기사 내용 전체를 통찰해서 요약

3) 셋째 단락(시사점 전용): 향후 업무 추진·타부서 주지·전사 환기 등 실제 실행 연결. 우리 회사 맥락 연결.

4) 모든 문장 끝은 “~ㅁ”와 같이 명사형, 200자 초과 금지

5) 출력 끝에 “<Source> {{ $json.link }}” 추가

이제 위 규칙대로만 출력하라.

결과와 배운 점 (ChatGpt와 코멘트 ^^)

🔑 Lessons You Learned

1. Data structure awareness is everything

  • 처음에는 channel[0].item처럼 배열로 잘못 접근해서 undefined 오류가 났었죠.

  • JSON 구조(rss → channel → item[])를 정확히 파악하고 나서야 코드를 수정할 수 있었습니다.
    👉 Lesson: n8n에서는 “내가 다루는 데이터가 배열인지, 객체인지”를 먼저 확인해야 한다.


2. Code node vs. Aggregate node 역할 분리

  • Code 노드에서는 기사별 프롬프트를 만들고,

  • Aggregate 노드에서는 요약된 결과를 한 덩어리로 합쳤습니다.
    👉 Lesson: “가공은 Code”, “합치기는 Aggregate” → 각 노드의 역할을 분리하면 오류 줄일 수 있음.


3. Telegram Parse Mode & 특수문자 처리

  • 처음엔 Bad Request: can't parse entities 같은 오류가 계속 났죠.

  • 그 원인은 MarkdownV2에서 ., _, - 같은 문자가 예약문자라 escape(\)가 필요했기 때문.

  • 결국 Parse Mode를 None이나 HTML로 바꾸면서 해결했어요.
    👉 Lesson: 텔레그램 전송 시, 출력 형식에 따라 escape 처리가 꼭 필요하다.


4. Array → String 변환(join) 필요성

  • Aggregate 출력이 배열이라 그대로 Telegram에 넘기면 [Array: …] 오류 발생.

  • join("\n\n")으로 문자열로 합쳐야만 정상적으로 메시지를 보낼 수 있었죠.
    👉 Lesson: 배열은 바로 전송 불가 → 문자열로 변환 필요.


5. 에러 메시지를 단서로 삼는 법

  • Cannot read properties of undefined (reading 'item') → 데이터 구조 문제

  • Bad Request: message text is empty → Text 필드에 값이 없음

  • Bad Request: can't parse entities → 특수문자 처리 문제
    👉 Lesson: 에러 메시지 자체가 "어디를 확인해야 할지" 정확한 힌트를 준다.

도움 받은 글 (옵션)

Chatgpt 대화창 하나로 Workflow와 개별 Node 설정과 오류 메시지 피드백 하며 설정함

2
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요