도로시J
도로시J
🐶 AI 찐친
⚔️ 베테랑 파트너

n8n로 threads 글 자동크롤링 후 메일로 쓔~웅!!

소개

threads에서 유명한 chol.openai님의 새로운 소식을 매일매일 메일로 받아보는 자동화

사용 툴

  • n8n : 자동화

  • chatgpt, claude : 출력 data에서 원하는 형식의 json 코드 요청

진행 방법

핫하다는 n8n을 통해 가장 빨리 ai의 소식을 받아볼 수 있는 chol님의 글을 크롤링하여 메일로 일정한 시간에 전송해 주는 자동화를 구현해 보았습니다.
원하는 출력 data 추출을 위해 json 코드가 필요하여 chatgpt에게 요청.

choi라는 단어가있는 한국 앱의 스크린 샷


전체 워크플로우는 다음과 같습니다.

소셜 미디어 캠페인의 다른 단계를 보여주는 다이어그램

정기님의 쉬운 설명이었지만, 도전할 때는 생각보다 쉽지 않더군요.

  1. ✔️ 스케쥴 트리거로 시간 조정

    😊 트리거 인터벌을 테스트 후에는 꼭 정상적인 시간으로 세팅하셔야 합니다.

    일정 트리거의 스크린 샷

  2. ✔️ rss.app에서 스레드의 url주소를 입력하여 출력값으로 feed값 얻기.

    txt 파일을 선택할 수있는 버튼의 스크린 샷

  3. ✔️ Rss read에서 나온 JSON 파일에서 Edit Fields를 통해 필요한 내용 추출하기

    한국 텍스트 편집기의 스크린 샷

  4. ✔️ limit를 통해 출력 메일 수 줄이기

    처음에는 25개씩 크롤링 되다보니, 한번에 메일이 25개씩 전송되는 문제 발생했어요ㅠㅠ
    메일 폭탄을 맞느라, 정작 봐야할 멜들을 놓쳤다는.
    code 노드에서 어떻게든 줄여보려고 했지만(헛질을 여러번 하다가 자꾸 에러가 발생),
    정기님이 limit를 추천해주셔서 깔끔하게 정리함.
    분명 스터디에서 들었는데, 왜 처음 듣는 듯한 느낌이~~ 드는지.

    Limit1 설정 화면의 스크린 샷
  5. ✔️ 코드를 통해 output 텍스트 문장 정리하기
    chatgpt를 통해 data 파싱에 대한 도움을 받음( 한 문장만 추출하는 코드 요청)

    return items.map(item => {

const title = item.json["제목"] || "";

// 첫 문장만 추출하는 정규표현식

const match = title.match(/.*?[.?!]/);

const firstSentence = match ? match[0] : title;

return {

json: {

...item.json,

제목: firstSentence.trim()

}

};

});

  1. ✔️ 지메일로 발송

    제목과 context만 추출하여 메일로 발송하도록 함.

    Gmail의 이메일 설정의 스크린 샷

  1. ❤️ 드뎌 이메일로 받을 때는 하나의 메일 안에 3개의 최신 뉴스가 올라와 있습니다.

    한국 및 중국어 텍스트가있는 페이지의 스크린 샷

결과와 배운 점

  • 과정 중에 어떤 시행착오를 겪었나요?


    처음에 테스트한다고, 10분 간격으로 했다가, 메일이 자폭하는 줄 알았다는
    메일을 따로 확인하지 않았다가 얼마가 지나서야 문제점 파악.
    트리거 시간을 넉넉히 두거나, 또는 비활성화 시키는 것도 괜찮아요.

    한국 뉴스 웹 사이트의 스크린 샷

  • 앞으로의 계획이 있다면 들려주세요.

이번엔 전체적인 개념이 없어서 워크플로우 구성을 과제로 요청한 그대로 시도하였지만, 좀 더 다양한 노드를 구성할 수 있도록 업그레이드 된 워크플로우를 구성하고 싶습니다.

크롤링 받은 데이터를 입맛에 맞게, 학습자의 눈높이로 재작성하고, 또한 API를 등록하여 openai를 사용하는 과정까지 진행해 보고 싶네요.

도움 받은 글 (옵션)

문과생도 n8n 첫 스터디 OT 영상 참조

6
8개의 답글

👉 이 게시글도 읽어보세요