뉴스 요약 자동화 워크플로우 만들기

소개

이번 실습의 목표는 AI Times 뉴스 기사를 자동으로 수집 → 요약 → Google Drive에 저장하는 전체 과정을 자동화하는 것이었다.
지금까지는 뉴스 기사를 읽고, 필요한 내용을 추려서 정리하고, 다시 파일로 저장하는 과정을 모두 수작업으로 해야 했다.

하지만 이 과정을 자동화한다면

  • 필요한 정보만 선별할 수 있고

  • 반복 작업을 크게 줄일 수 있으며

  • 자료 수집 업무에서 훨씬 효율적으로 일할 수 있다.

이를 위해 Make(노코드 자동화 툴)
ChatGPT(OpenAI API) 를 활용하여
“뉴스 가져오기 → 필요한 정보만 추출 → 본문 요약 → 파일로 저장”의
전체 파이프라인을 구축하는 데 집중했다.


진행 방법

진행 과정은 총 6단계로 이루어져 있으며,
각 단계는 서로 연결되어 완전한 자동화 흐름을 구성한다.


STEP 1. HTTP로 AI Times 홈페이지 HTML 가져오기

이번 실습의 목표는 ‘뉴스 기사를 요약하여 구글 드라이브에 자동으로 저장하는 과정’을 구축하는 것이다. 이를 위해서는 가장 먼저 뉴스 기사가 담긴 웹페이지의 원본 정보를 가져와야 한다.

웹사이트에 게시된 뉴스 기사는 웹페이지를 구성하는 여러 요소 중 하나이며, 이러한 웹페이지의 구조와 내용은 HTML(웹페이지 설명서) 형태로 존재한다.

이 HTML을 가져오기 위해 사용하는 것이 HTTP다. HTTP는 인터넷 세상에서 웹페이지를 대신 가져다주는 일종의 ‘배달부’ 역할을 한다. Make에서는 이 배달부 역할을 수행하는 앱이 HTTP, 그리고 특정 요청을 실행하는 기능 단위를 Make a request 모듈이라고 부른다.

이번 실습에서는 AI 타임즈 웹사이트의 기사를 가져와 요약할 것이기 때문에, HTTP 모듈을 생성한 뒤 URL에 AI 타임즈 주소를 입력하고 가져오는 방식(Method)은 GET으로 설정했다.

또한 Parse response는 “프로그램이 받은 데이터를 이해하기 쉬운 구조로 자동 정리해주는 옵션”을 의미한다.

  • YES로 설정하면 HTML 안의 파일명·링크·내용 등이 각각의 블록으로 나뉘어 보기 쉬운 형태로 정리된다.

  • NO로 설정하면 모든 정보가 하나의 덩어리로 들어와 후처리 과정이 훨씬 불편해진다.

이 때문에 이번 실습에서는 YES를 선택하여 HTML을 구조화된 형태로 받아왔다.


STEP 2. Title & Link 쌍으로 뽑아내기

파란색 배경의 웹페이지 스크린샷

HTTP를 사용하여 HTML을 가져왔다면, HTML에서 필요한 정보만 추려내는 과정이 필요하다. 정보를 가져오고자 하는 웹사이트에서 개발자 도구(F12) 를 연 뒤, 왼쪽 상단의 요소 선택(화살표) 아이콘을 클릭한다.

그 상태에서 내가 스크래핑하고 싶은 정보가 포함된 영역을 클릭하면 해당 영역과 연결된 HTML 코드가 오른쪽 패널에서 강조된다. 이 HTML 코드에서 마우스 오른쪽 버튼을 눌러 Copy → Copy selector를 선택하면 그 영역을 가리키는 CSS Selector(선택자) 가 복사된다.

여기서는 그 영역이 id=skin-9이며, 복사된 Selector는 Make에서 HTML 내부에서 “어떤 영역을 뽑아올 것인지” 지정하는 데 사용된다.

웹페이지와 txt 파일을 보여주는 웹페이지 스크린샷

추려낼 부분을 정했다면, 실질적으로 원하는 부분(제목과 링크)만 추출하는 작업은 GPT를 활용하면 된다.

시나리오에서 추가로 CHAT GPT - Generate a completion을 만들고 select method는 그대로 냅두고, model은 원하는 model을 고른다.

message를 추가하여 message 1 에는 개발자 역할을 부여한 후 json 형태로 답을 제시하라고 일하는 법을 제공한다.

message 2에는 user 역할을 부여한 후 내가 얻어야 하는 답에 맞춰 할 질문을 text content에 쓴다.

마지막으로 step 1과 마찬가지로 Parse JSON Response 부분을 yes로 체크한다.

결과적인 부분만 다시 요약하자면 message 1에서는 답변을 제목(title)과 링크(link)를 가져오라는 역할을 줬고, message 2에서는 http가 가져온 html 정보에서 skin-9에 해당하는 내용을 가져오라 한 것이다. 이때, 이미 제목과 링크를 가져오라는 역할을 줬기 때문에, skin-9의 내용을 가져오라 했더라도 전체 내용을 가져오는 게 아니라 "title": "string", "link": "string” 과 같이 이미 주어진 역할에 맞춰, 제목과 링크를 정리 해준다.

하지만, 이렇게 make에서 chat gpt 어플을 만들어 이런 세팅을 했다고 하더라도 make에겐 chat gpt에 접근할 권한이 없기 때문에 권한을 먼저 줘야 한다.

Make에서 chat gpt 접근 권한을 얻기 위해서는 chat gpt의 API(CHAT GPT의 문을 열 수 있는 열쇠같은 존재)가 필요하다.

CHAT GPT API를 얻기 위해서는 OpenAI PlatForm에 접속 후 '로그인 - 우측 상단의 설정 아이콘 클릭 - 왼쪽 카테고리 창에서 API Keys 클릭 - 우측 상단의 Create new secret key 클릭' 하여 얻을 수 있다. 이때 생성된 secret key는 복사하여 노션이나 메모장 등 언제든 확인할 수 있도록 한다. 왜냐하면 OpenAI Platform에서는 생성 후 암호화되어 표시 되기 때문이다.

CHAT GPT API를 얻어 MAKE에게 CHAT GPT API를 준다고 바로 접근이 가능한 게 아니다. MAKE가 CHAT GPT에 접근하기 위해서는 API라는 열쇠는 물론 통행료도 지불해야한다. 그렇기 떄문에 다시 우측 상단의 설정 아이콘 클릭 - 왼쪽 카테고리 창에서 Billing을 클릭 후에 Payment methods를 클릭하여 카드를 등록 후 5$를 충전한다. 금액은 상관 없지만 5$가 최소 금액이다.

이렇게 접근 권한과 통행료까지 충전했다면 make의 chat gpt 어플에 나의 chat gpt 계정에 연결하면 된다.

참고로 사실상 순서는 chat gpt api 발급 - 통행료 충전 - Make에서 chat gpt 세팅 이라 볼 수 있다.


3. Iterator

중국사이트 스크린샷

2단계에서 GPT가 titlelink로 이루어진 JSON 배열을 반환했다.

이 JSON 배열은 여러 개의 기사 정보를 하나의 덩어리로 묶어 놓은 형태이다.

하지만 우리는 MOST POPULAR에 있는 각 기사를 하나씩 따로 불러와서 요약해야 한다.

따라서 “여러 개의 기사 정보 덩어리”를 한 개씩 분리하는 과정이 필요하다.

이때 사용하는 것이 바로 Iterator이다.

Iterator는 이름 그대로

하나의 묶음(배열)을 ‘반복하며 하나씩 꺼내는 역할’을 한다.

Iterator 어플을 생성하고,

GPT가 만들어준 JSON 결과물 중 pairs 항목을 Iterator에 연결하면,

Iterator는 pairs[0], pairs[1], pairs[2] … 와 같이

각 기사를 하나씩 분리하여 다음 단계로 넘겨준다.

이렇게 분리된 각 기사 정보는

  • ② 단계에서 추출한 title

  • ② 단계에서 추출한 link

를 개별 단위로 가지고 있으므로,

다음 단계에서 각각의 해당 링크의 본문을 HTTP로 가져오고 → GPT로 요약하는 흐름이 가능해진다.


4. 본문 내용 가지고 오기

파란색과 보라색 배경의 웹페이지 스크린샷

처음 HTTP가 가져온 HTML 중, 우리가 사용하는 skin-9 영역에는

실제 기사 본문이 아니라 **기사로 이동하는 제목과 링크 정보만 들어 있다.

또한 2단계에서 GPT가 이 제목–링크 목록을 만들고,

3단계에서 Iterator가 이 링크들을 하나씩 분리해주었기 때문에,

4단계에서는 Iterator에서 나온 각 링크를 새로운 HTTP 요청의 URL로 넣어

각 기사의 실제 상세 페이지에 직접 접속해야 한다.

이 과정을 통해서만 기사 한 개의 전체 본문 HTML을 가져올 수 있다.

이렇게 본문 HTML이 준비되면, 다음 단계에서 GPT가 내용을 추출하고 요약할 수 있다.

HTTP를 세팅할 땐, 이때에도 내용을 가져오는 것이기 때문에 Method에서는 get을 선택하고, Parse respinse에서 yes를 선택한다.


5. 내용 요약 및 정리

4단계에서 HTTP를 통해 링크 속 기사 상세 페이지의 HTML(본문이 포함된 원본 문서)을 가져왔다면, 이제 5단계에서는 3단계에서 추출된 기사 제목과 링크, 그리고 4단계에서 가져온 HTML을 기반으로 ChatGPT에게 내가 필요로 하는 레이아웃으로 정리해달라고 요청해야 한다.

Input에는 이미 각 기사 제목(3단계)과 기사 본문이 포함된 HTML 전체(4단계)가 들어 있기 때문에, Message 1을 user 역할로 설정하고 text content에 원하는 출력 형식과 요약 규칙을 적어주면 GPT가 그 지시에 맞춰 Output을 생성한다.


6. GD에 파일로 저장하기

5단계에서 CHAT GPT가 각각의 기사 내용을 정리하는 데 까지 마쳤다면 마지막으로 구글 드라이브에 정리한 내용을 저장해야한다.

CHAT GPT와 마찬가지로 MAKE가 구글 드라이브에 접근하려면 구글에 접근 가능한 API(키)가 있어야 한다.

구글 api를 얻고 make가 구글에 접근할 수 있도록 하는 과정은 아래와 같다.

먼저 구글 클라우드 컴퓨팅 서비스에 접속하여 로그인 후 오른쪽 상단의 ‘콘솔’을 누른다.

한국어로 된 Google 검색 페이지의 스크린샷

왼쪽 상단에 프로젝트가 잘 설정 되어있는지 확인하고, 만약 없다면 새 프로젝트를 만든다. 그 후 google drive api를 검색하여 들어간 후 ‘관리 - OAuth 개요’ 순으로 클릭한다.

구글 클라우드

좌측 카테고리에서 브랜딩을 선택한 후 api를 사용하게 될 도메인을 승인된 도메인에 기입한다. 이번 실습에서는 make에서 google apI를 사용할 것이기 때문에 make의 도메인과 과거 make의 도메인을 기입했다.

다음으론 ‘데이터 엑세스 - 범위 추가 또는 삭제’에 들어가 google drive를 검색한 후 나의 구글 api가 접근 가능한 곳을 선택해줬다.

다음으론 클라이언트에서 OAuth 클라이언트 ID를 만든 후 승인된 리디렉션 URI에 https://www.integromat.com/oauth/cb/google-restricted 를 적는다.

그 후 만들기를 누르면 클라이언트 ID와 비밀번호가 뜨는데, 이것도 마찬가지로 나중에 확인할 수 있도록 나의 메모장에 따로 기록해둔다.

MAKE로 돌아와 google drive - Create a file from text를 생성한 후 계정을 연결한다. 이때 Advanced setting을 활성화 하여 클라이언트 ID와 비밀번호를 기입해야 한다.

마지막으로 요약된 기사 내용을 저장할 위치와 file name, file content를 설정하고 저장하면 된다. file content로는 5단계에서 chat gpt가 가공한 결과물을 저장할 것 이기 때문에 해당 카테고리를 선택하면 된다.

추가로, yyyy-mm-dd 와 YYYY-MM-DD는 컴퓨터가 이해하기에는 서로 다른 단어이므로 대문자와 소문자에 주의해야한다.

(6단계의 작동 원리는 이해가 안 간 상태이며, 위의 내용은 실습 때 따라한 내용이다.)


7. 결과

결과와 배운 점

  • 완벽히 이해하진 못했지만, 자동화 시스템이 작동하게 만들었다는 점에서 큰 의미가 있었다고 생각한다.

  • IN PUT과 OUT PUT, API, HTTP 등 자동화 시스템과 관련된 다양한 용어를 알게 되었다.

2
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요