안녕하세요 케이입니다.

지금까지는 뉴스봇에서 뉴스를 찾고, 걸러내고, 보기 좋게 정리하는 과정까지 해봤습니다.

검색어를 저장하고

중복 뉴스를 빼고

원하지 않는 언론사나 단어를 제외하고

뉴스 제목과 설명도 같이 보여주도록 만들었습니다.

여기까지 해놓으니까 예전보다 훨씬 보기 편해졌습니다.

그런데 결국 한 가지는 그대로였습니다.

뉴스 설명을 제가 직접 읽어야 했습니다.

아침에 여러 개의 뉴스를 받아보면 설명이 짧다고 해도 하나씩 읽다 보면 생각보다 시간이 꽤 걸렸습니다.

그래서 이번에는 한 단계 더 나가보기로 했습니다.

뉴스 내용을 AI에게 보내고

짧게 요약된 결과만 텔레그램으로 받아보는 기능

을 만들어봤습니다.

처음에는 꽤 거창하게 느껴졌는데, 막상 구조를 나눠보니까 지금까지 해온 방식과 크게 다르지는 않았습니다.

처음에는 ChatGPT 화면을 자동으로 쓰는 줄 알았습니다

제가 처음 생각했던 건 아주 단순했습니다.

뉴스 내용을 ChatGPT에 넣고

“요약해줘.”

라고 하면 되는 거 아닌가 싶었습니다.

그런데 자동화에서는 제가 직접 ChatGPT 화면을 열고 붙여넣는 방식이 아니라 프로그램끼리 데이터를 주고받아야 했습니다.

그래서 여기에서도 API를 사용하게 됐습니다.

앞에서 네이버 뉴스 검색 API를 사용해봤기 때문에 API라는 말 자체는 이제 조금 익숙했습니다.

다만 이번에는 뉴스 검색이 아니라

AI에게 문장을 보내고 답변을 받아오는 API

라는 점이 달랐습니다.

처음부터 기사 전체를 가져오지는 않았습니다

처음에는 뉴스 기사 본문 전체를 AI에게 보내야 제대로 요약할 수 있는 줄 알았습니다.

그런데 기사 본문 전체를 가져오려면 각 뉴스 사이트에 접속해서 내용을 읽어오는 과정이 추가로 필요합니다.

사이트마다 구조도 다르고 생각보다 복잡했습니다.

저는 이번에도 최대한 단순하게 시작했습니다.

앞에서 이미 사용하고 있던

title

과

description

을 이용했습니다.

즉

뉴스 제목

검색 결과에 들어 있는 간단한 설명

이 두 가지를 AI에게 보내고 요약을 부탁했습니다.

AI에게 보낼 문장을 먼저 만들어봤습니다

저는 처음에 아주 간단하게 만들었습니다.

예를 들어 이런 식입니다.

다음 뉴스 내용을 쉽게 요약해줘.

제목:
삼성전자 AI 서비스 공개

내용:
삼성전자가 새로운 인공지능 서비스를 공개했으며...

처음에는 조건도 거의 넣지 않았습니다.

일단 AI에게 뉴스 내용을 보내고 답변을 정상적으로 받을 수 있는지부터 확인하는 게 목표였습니다.

AI API를 호출하는 함수를 따로 만들었습니다

기존 뉴스 검색 코드 안에 AI 관련 내용을 전부 넣으면 너무 복잡해질 것 같았습니다.

그래서 저는 요약 기능을 별도 함수로 만들어봤습니다.

형태는 대략 이런 식으로 생각했습니다.

function summarizeNews(title, description) {
  var prompt =
    "다음 뉴스 내용을 쉽게 요약해줘.\n\n" +
    "제목: " + title + "\n" +
    "내용: " + description;

  // AI API에 prompt를 보내는 부분

  // 받은 답변을 반환
}

아직 AI API 호출 부분을 제외하면 구조 자체는 단순했습니다.

뉴스 제목과 설명을 함수에 넣으면

요약된 글을 돌려주는 방식입니다.

API 키라는 게 또 필요했습니다

AI API를 이용하려면 별도의 API 키가 필요했습니다.

처음 뉴스 검색 API를 사용할 때 Client ID와 Client Secret을 사용했던 것과 비슷하게

AI 서비스에서도 제 요청을 확인할 수 있는 인증 정보가 필요했습니다.

이 값은 다른 사람에게 공개하면 안 됩니다.

그래서 블로그에 코드를 올릴 때는 실제 키를 그대로 적으면 안 됩니다.

예를 들어 코드에서는

var apiKey = "내 API 키";

처럼 사용하더라도 블로그 글이나 화면 캡처에서는 반드시 가리는 쪽으로 했습니다.

API 키를 코드에 그대로 두는 것도 조금 신경 쓰였습니다

처음에는 API 키를 코드 맨 위에 바로 적었습니다.

그런데 생각해보니 혹시 코드를 공유하거나 캡처할 때 실수로 공개할 수도 있었습니다.

그래서 나중에는 Google Apps Script의 PropertiesService에 저장하는 방식도 생각해봤습니다.

예를 들어

var apiKey =
  PropertiesService
    .getScriptProperties()
    .getProperty("AI_API_KEY");

처럼 불러오는 방식입니다.

이렇게 하면 실제 코드 안에는 API 키가 직접 보이지 않습니다.

이 부분은 꼭 필요한 기능은 아니었지만 조금 더 안전하게 관리하고 싶다면 괜찮은 방법이었습니다.

처음 요청을 보냈을 때 답변이 왔습니다

AI API 연결을 하고 처음으로 뉴스 하나를 보내봤습니다.

정상적으로 답변이 돌아왔을 때는 꽤 신기했습니다.

기존에는 네이버 API에서 데이터를 그대로 받아서 텔레그램으로 보냈습니다.

이번에는 그 중간에 AI가 들어가서 뉴스 내용을 다시 짧은 문장으로 바꿔준 것입니다.

제가 만든 전체 흐름은 이제 이런 식이 됐습니다.

뉴스 검색

→ 제목과 설명 가져오기

→ 필터 적용

→ AI에게 뉴스 내용 전달

→ AI 요약 결과 받기

→ 텔레그램으로 보내기

중간 과정이 하나 추가됐을 뿐인데 결과는 상당히 달라졌습니다.

처음 요약 결과는 생각보다 길었습니다

제가 처음 AI에게 보낸 요청은

쉽게 요약해줘

정도였습니다.

그랬더니 어떤 뉴스는 짧게 나왔지만

어떤 뉴스는 생각보다 길었습니다.

원래 뉴스 설명보다 조금 짧은 정도인 경우도 있었습니다.

제가 원했던 건 아침에 몇 초 정도만 보고 넘어갈 수 있는 요약이었습니다.

그래서 요청 문장을 조금씩 바꿔봤습니다.

요청 문장을 구체적으로 바꿔봤습니다

처음에는

다음 뉴스 내용을 쉽게 요약해줘.

였다면

나중에는 이렇게 바꿔봤습니다.

다음 뉴스 내용을 초보자도 이해할 수 있게
핵심만 3줄 이내로 요약해줘.

같은 내용은 반복하지 말고
어려운 전문용어가 있다면 쉬운 표현으로 바꿔줘.

이렇게 하니까 결과가 훨씬 제가 원하던 형태에 가까워졌습니다.

여기서 느낀 게 하나 있었습니다.

AI 기능에서는 코드도 중요하지만

AI에게 어떤 식으로 요청하느냐도 결과에 상당히 큰 영향을 줬습니다.

뉴스에 없는 내용을 만들지 않도록 조건도 넣었습니다

뉴스 요약이다 보니 사실관계가 중요했습니다.

AI가 원문에 없는 내용을 자연스럽게 덧붙이면 문제가 될 수 있습니다.

그래서 요청문에 조건 하나를 더 넣었습니다.

제공된 제목과 내용에 없는 사실은 추가하지 말아줘.

그리고 의견이나 전망도 함부로 덧붙이지 않도록 했습니다.

제가 원한 건 뉴스에 대한 AI의 생각이 아니라

이미 있는 내용을 짧게 줄여주는 것

이었기 때문입니다.

텔레그램 메시지에 AI 요약을 붙였습니다

요약 결과가 정상적으로 나오면 기존 메시지에 추가했습니다.

예를 들어

📰 삼성전자 AI 서비스 공개

🤖 AI 요약
삼성전자가 새로운 AI 서비스를 공개했습니다.
기존보다 스마트폰에서 처리할 수 있는 기능이 늘어났습니다.
실제 적용 기기와 출시 일정이 관심 포인트입니다.

🔗 기사 보기

이런 형태입니다.

처음 사용했던 제목과 링크만 있는 메시지와 비교하면 꽤 달라졌습니다.

링크를 누르기 전에 내용을 대부분 파악할 수 있었습니다.

생각보다 링크를 누를 일이 많이 줄었습니다

이 기능을 붙이고 가장 크게 달라진 부분입니다.

예전에는 제목만 보고 궁금하면 링크를 눌렀습니다.

설명을 붙인 뒤에는 조금 줄었습니다.

AI 요약까지 붙이니까 정말 궁금한 기사만 링크를 열게 됐습니다.

예를 들어 뉴스 5개가 오면 세 줄 요약을 쭉 읽어본 뒤

그중 하나 정도만 원문을 확인하는 식입니다.

뉴스 확인 시간이 확실히 줄었습니다.

AI API는 무료라고 생각하면 안 됐습니다

이 기능을 만들면서 하나 신경 쓰인 부분이 있었습니다.

AI API는 일반적인 ChatGPT 화면 사용과 별도로 사용량에 따라 비용이 발생할 수 있습니다.

뉴스 한 개를 요약할 때마다 요청이 한 번씩 들어갑니다.

예를 들어

검색어 5개

검색어마다 뉴스 5개

라면 하루에 25개 뉴스를 AI에게 보낼 수도 있습니다.

자동으로 매일 실행하면 요청량이 계속 쌓일 수 있습니다.

그래서 무조건 모든 뉴스에 AI 요약을 붙이는 건 조금 아깝다는 생각이 들었습니다.

AI는 필터를 모두 통과한 뒤 사용했습니다

그래서 순서를 바꿨습니다.

처음에는

검색

→ AI 요약

→ 필터

처럼 생각했는데

이렇게 하면 어차피 버릴 기사까지 AI에 보내게 됩니다.

최종적으로는

뉴스 검색

→ 중복 제거

→ 언론사 필터

→ 제외 키워드 확인

→ 실제로 보낼 기사 선정

→ AI 요약

→ 텔레그램 전송

순서로 사용했습니다.

이렇게 하면 정말 필요한 뉴스만 AI에게 보내게 됩니다.

앞에서 만들어둔 필터 기능들이 여기에서 생각보다 큰 도움이 됐습니다.

검색 결과 설명이 너무 짧으면 요약도 애매했습니다

또 하나 한계도 있었습니다.

제가 AI에게 보내는 건 기사 본문 전체가 아니라 네이버 검색 결과에 들어 있는 설명이었습니다.

설명 자체가 너무 짧으면 AI도 그 안에서만 요약할 수 있습니다.

결국 정보가 부족하면 요약도 단순할 수밖에 없었습니다.

처음에는 AI가 알아서 기사 전체 내용을 찾아서 요약해주는 줄 알았는데 그런 방식은 아니었습니다.

제가 보내준 내용 안에서 정리하도록 만들어둔 것이었습니다.

그래서 저는 AI 요약을

기사 전체를 대신하는 기능

이라기보다

검색 결과 내용을 조금 더 읽기 쉽게 줄여주는 기능

정도로 사용했습니다.

모든 뉴스를 무조건 AI로 요약할 필요는 없었습니다

실제로 사용하다 보니까 제목과 설명만 봐도 충분한 기사도 있었습니다.

그래서 나중에는 중요하게 보는 키워드에만 AI 요약을 붙이는 방법도 생각해봤습니다.

예를 들어

인공지능

반도체

같이 제가 자세히 보는 주제는 AI 요약을 붙이고

가볍게 확인하는 키워드는 기존 설명만 사용하는 방식입니다.

이렇게 하면 API 사용량도 줄일 수 있습니다.

AI를 붙이고 나니 뉴스봇의 느낌이 많이 달라졌습니다

처음 만든 봇은 사실 검색 결과 전달기에 가까웠습니다.

검색된 제목과 링크를 텔레그램으로 그대로 보내는 기능이었습니다.

그런데 지금은

필요한 뉴스를 골라내고

중복을 제외하고

AI가 내용을 줄여서

제가 보기 쉬운 형태로 다시 보내줍니다.

조금씩 단순한 뉴스봇보다는 개인 뉴스 비서 같은 느낌이 들기 시작했습니다.

아직 한 가지 불편한 점이 있었습니다

AI 요약은 잘 됐지만 요약 길이가 매번 조금씩 달랐습니다.

어떤 뉴스는 정말 세 줄이었고

어떤 뉴스는 한 줄이 너무 길었습니다.

또 어떤 결과는 중요한 내용보다 배경 설명이 먼저 나오기도 했습니다.

그래서 다음에는 아예 형식을 더 강하게 정해보기로 했습니다.

뉴스 하나당 딱 세 줄 정도로, 각 줄이 어떤 내용을 담을지까지 정해주는 방식

으로 바꿔보려고 합니다.

다음 글에서는 AI에게 단순히

“짧게 요약해줘.”

라고 하는 대신

제가 실제로 빠르게 읽기 편했던 세 줄 뉴스 형식을 직접 만들어보겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

글쓴이

bluekei9@keinote.com

관련 게시물

여러 뉴스를 AI가 한 번에 정리해서 오늘의 뉴스로 만들게 해봤습니다

안녕하세요 케이입니다. 앞에서는 뉴스 하나하나를 AI에게 보내서 세 줄 정도로 요약하도록 만들어봤습니다. 확실히 보기 편해졌습니다. 제목 아래에 세 줄만 읽으면 대략 어떤...

모두 읽어보기

AI에게 긴 뉴스 대신 세 줄 요약만 만들게 해봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램 뉴스봇에 AI를 연결해서 뉴스 내용을 짧게 요약한 뒤 받아보는 기능을 만들어봤습니다. 처음에는 결과가 꽤 만족스러웠습니다. 뉴스 제목과 링크만...

모두 읽어보기

AI로 수집한 뉴스를 자동 요약해서 텔레그램으로 보내는 방법

안녕하세요 케이입니다. 지난 글에서는 RSS와 뉴스 API의 차이를 비교하고, 어떤 방식이 뉴스 자동수집에 더 적합한지 알아봤습니다. 이번에는 지금까지 자동으로 수집한 뉴스에 AI를...

모두 읽어보기