안녕하세요 케이입니다.

지난 글에서는 여러 개의 뉴스 키워드를 한 번에 자동으로 검색하고, 결과를 텔레그램으로 정리해서 보내는 방법을 알아봤습니다.

이번에는 뉴스 자동수집 시스템을 실제로 사용하다 보면 거의 반드시 만나게 되는 문제인 중복 뉴스에 대해 정리해보겠습니다.

여러 키워드를 사용하면 같은 기사가 두 개 이상의 검색 결과에 동시에 포함될 수 있습니다.

또 뉴스 자동수집을 하루에 여러 번 실행하면 이전에 이미 받았던 기사가 다시 검색될 수도 있습니다.

이 상태로 계속 사용하면 텔레그램에 같은 뉴스가 반복해서 쌓이게 됩니다.

뉴스 자동수집의 목적은 정보를 편하게 확인하는 것인데, 중복 뉴스가 많아지면 오히려 확인이 불편해집니다.

그래서 실제로 사용할 뉴스 수집 봇이라면 중복 제거 기능을 추가하는 것이 좋습니다.

중복 뉴스는 왜 발생할까

중복 뉴스가 생기는 가장 대표적인 이유는 여러 키워드가 서로 겹치기 때문입니다.

예를 들어 다음과 같은 키워드를 등록했다고 가정해보겠습니다.

ChatGPT

생성형 AI

AI 자동화

어떤 기사 제목에 ChatGPT와 생성형 AI라는 단어가 모두 포함되어 있다면 이 기사는 두 검색 결과에 모두 나타날 수 있습니다.

프로그램이 각각의 검색 결과를 그대로 텔레그램으로 보내면 같은 기사를 두 번 받게 됩니다.

또 다른 원인은 반복 실행입니다.

예를 들어 뉴스 자동수집 봇이 오전 8시와 오후 6시에 실행된다고 생각해보겠습니다.

오전에 검색된 기사가 오후 검색 결과에도 남아 있다면 같은 뉴스가 다시 전송될 수 있습니다.

따라서 중복 제거는 한 번의 검색 결과 안에서도 필요하고, 이전 실행 결과와 비교할 때도 필요할 수 있습니다.

가장 간단한 중복 제거 기준은 기사 정보다

중복 뉴스를 제거하려면 먼저 무엇을 기준으로 같은 기사인지 판단할지 정해야 합니다.

가장 단순한 방법은 기사마다 구분할 수 있는 정보를 비교하는 것입니다.

대표적으로 사용할 수 있는 기준은 다음과 같습니다.

기사 제목

기사 주소

제목과 날짜 조합

제목과 설명 조합

가능하다면 기사 주소처럼 비교적 고유한 정보를 기준으로 사용하는 것이 편리합니다.

제목은 언론사마다 조금씩 다를 수 있고, 같은 기사의 제목이 수정되는 경우도 있기 때문입니다.

다만 실제로 어떤 정보를 사용할 수 있는지는 뉴스 검색 결과에서 제공되는 데이터에 따라 달라질 수 있습니다.

기사 제목만으로 중복을 제거하는 방법

가장 쉽게 적용할 수 있는 방법은 기사 제목을 비교하는 것입니다.

예를 들어 첫 번째 검색어에서 다음 기사가 나왔다고 생각해보겠습니다.

생성형 AI 시장 확대, 기업 도입 증가

그다음 두 번째 검색어에서도 같은 제목의 기사가 나타났다면 이미 추가된 기사인지 확인하고 두 번째 결과는 제외할 수 있습니다.

기본 흐름은 다음과 같습니다.

첫 번째 뉴스 제목을 저장합니다.

다음 뉴스 제목을 확인합니다.

이미 저장된 제목인지 비교합니다.

같은 제목이 있다면 제외합니다.

처음 등장한 제목이라면 목록에 추가합니다.

이 과정을 모든 검색 결과에 반복합니다.

구조가 단순하기 때문에 처음 중복 제거 기능을 만들 때 사용하기 좋습니다.

기사 주소를 기준으로 비교하면 더 정확할 수 있다

제목만 비교하는 방식은 간단하지만 한계도 있습니다.

같은 내용의 기사가 제목만 조금 다르게 표시될 수 있기 때문입니다.

또 반대로 같은 제목을 사용하지만 서로 다른 기사인 경우도 있을 수 있습니다.

그래서 가능한 경우 기사 주소를 함께 확인하는 것이 좋습니다.

이미 처리한 기사 주소를 저장해두고 새로운 검색 결과가 들어왔을 때 같은 주소가 있는지 확인하는 방식입니다.

주소가 동일하다면 같은 기사일 가능성이 매우 높기 때문에 중복 결과에서 제외할 수 있습니다.

뉴스 자동수집 시스템에서는 제목과 기사 정보를 함께 비교하는 방식도 사용할 수 있습니다.

여러 키워드 사이의 중복을 먼저 제거한다

다중 키워드 뉴스 수집에서 가장 먼저 해결할 수 있는 것은 같은 실행 안에서 발생하는 중복입니다.

예를 들어 키워드가 다음 세 개라고 가정해보겠습니다.

ChatGPT

AI 에이전트

생성형 AI

프로그램이 첫 번째 검색 결과를 가져옵니다.

뉴스 목록에 기사를 추가합니다.

두 번째 키워드를 검색합니다.

결과를 추가하기 전에 이미 목록에 있는 기사인지 확인합니다.

중복이라면 추가하지 않습니다.

세 번째 키워드에서도 같은 과정을 반복합니다.

이렇게 하면 여러 검색어에서 같은 기사가 나타나도 최종 텔레그램 메시지에는 한 번만 포함되도록 만들 수 있습니다.

이전에 보낸 뉴스까지 기억해야 할까

한 번 실행할 때 생기는 중복만 제거해도 메시지는 훨씬 깔끔해집니다.

하지만 하루에 여러 번 뉴스 수집을 실행하거나 매일 자동으로 실행한다면 이전에 보낸 뉴스까지 기억하는 기능이 필요할 수 있습니다.

예를 들어 오늘 오전에 보낸 기사가 오후에도 다시 검색되었다면 프로그램은 이미 전송한 기사인지 확인해야 합니다.

이를 위해서는 이전에 보낸 뉴스 정보를 어딘가에 저장해야 합니다.

Google Apps Script에서는 간단한 데이터를 저장해두고 다음 실행에서 다시 확인하는 방식을 사용할 수 있습니다.

핵심 원리는 어렵지 않습니다.

뉴스를 보내기 전에 이전 전송 기록을 확인합니다.

이미 전송한 기사라면 제외합니다.

새로운 기사라면 전송합니다.

전송한 뒤 해당 기사 정보를 저장합니다.

다음 실행에서는 다시 저장된 정보와 비교합니다.

중복 기록을 너무 오래 보관할 필요는 없다

뉴스 기록을 계속 저장하면 데이터가 점점 많아질 수 있습니다.

개인용 뉴스 자동수집에서는 몇 년 전 기사까지 계속 비교할 필요는 없습니다.

예를 들어 최근 며칠 또는 일정 개수의 기사만 기록해도 충분할 수 있습니다.

뉴스의 특성상 최신 정보를 확인하는 것이 목적이라면 오래된 중복 기록은 삭제해도 문제가 크지 않습니다.

얼마나 오래 보관할지는 자동수집 주기와 뉴스 종류에 따라 정하면 됩니다.

하루 한 번 실행한다면 최근 며칠의 기록을 유지하는 방식도 생각할 수 있습니다.

하루에 여러 번 실행한다면 조금 더 많은 최근 기록을 비교하는 것이 도움이 될 수 있습니다.

제목을 비교할 때 불필요한 문자를 정리하면 좋다

뉴스 제목을 기준으로 중복을 비교할 때는 제목에 포함된 불필요한 문자를 정리하는 것도 도움이 됩니다.

API 검색 결과에서는 특정 단어를 강조하기 위한 태그나 특수문자가 포함될 수 있습니다.

이 상태에서 비교하면 실제로 같은 제목인데도 다른 문자열로 판단될 수 있습니다.

따라서 중복 비교 전에 제목을 일정한 형태로 정리하는 것이 좋습니다.

예를 들어 다음과 같은 작업을 할 수 있습니다.

HTML 태그 제거

앞뒤 공백 제거

불필요한 특수문자 정리

연속된 공백 정리

이렇게 제목을 정리한 뒤 비교하면 중복 판별이 더 안정적으로 작동할 수 있습니다.

비슷한 기사와 완전히 같은 기사는 다르다

중복 뉴스를 제거할 때 한 가지 구분해야 할 부분이 있습니다.

완전히 같은 기사와 비슷한 내용을 다루는 기사는 다릅니다.

예를 들어 여러 언론사가 같은 신제품 발표를 기사로 작성했다면 내용은 비슷하지만 각각 별도의 기사입니다.

제목도 비슷하게 보일 수 있습니다.

이런 기사까지 모두 하나의 뉴스로 판단해서 제거하면 중요한 정보를 놓칠 수 있습니다.

처음에는 정확히 같은 기사 주소나 동일한 제목만 제거하는 방식으로 시작하는 것이 안전합니다.

비슷한 기사까지 하나로 묶는 기능은 나중에 AI 요약이나 유사도 분석 기능을 추가했을 때 고려할 수 있습니다.

키워드 우선순위를 이용할 수도 있다

같은 기사가 여러 키워드에서 검색된다면 어느 카테고리에 표시할지도 정할 수 있습니다.

예를 들어 같은 기사가 ChatGPT와 생성형 AI 검색 결과에 동시에 포함되었다고 가정해보겠습니다.

중요도가 높은 키워드를 먼저 검색하도록 설정하면 처음 검색된 카테고리에만 기사를 남길 수 있습니다.

예를 들어 우선순위를 다음과 같이 정할 수 있습니다.

1순위 ChatGPT

2순위 AI 자동화

3순위 AI 에이전트

4순위 생성형 AI

같은 기사가 여러 검색 결과에 있어도 가장 먼저 검색된 카테고리에만 포함시키는 방식입니다.

이렇게 하면 키워드별 뉴스 구분도 더 명확하게 유지할 수 있습니다.

중복 뉴스 제거 후 메시지는 어떻게 달라질까

중복 제거 기능이 없다면 텔레그램 메시지가 다음처럼 보일 수 있습니다.

ChatGPT

  1. AI 시장 확대 관련 뉴스
  2. 새로운 ChatGPT 기능 발표

생성형 AI

  1. AI 시장 확대 관련 뉴스
  2. 생성형 AI 기업 투자 증가

여기에서 첫 번째 뉴스가 중복입니다.

중복 제거 기능을 사용하면 다음처럼 정리할 수 있습니다.

ChatGPT

  1. AI 시장 확대 관련 뉴스
  2. 새로운 ChatGPT 기능 발표

생성형 AI

  1. 생성형 AI 기업 투자 증가

뉴스 수는 줄어들지만 실제로 확인해야 할 정보는 그대로 유지됩니다.

오히려 메시지가 간결해지기 때문에 읽기가 편해집니다.

새로운 뉴스가 없으면 메시지를 보내지 않을 수도 있다

중복 제거 기능을 추가하면 또 하나의 장점을 얻을 수 있습니다.

새로운 뉴스가 없는 경우 불필요한 메시지를 보내지 않을 수 있습니다.

예를 들어 검색 결과가 10개 나왔지만 모두 이전에 보낸 기사라고 가정해보겠습니다.

이 경우 텔레그램으로 같은 뉴스 10개를 다시 보낼 필요가 없습니다.

새로운 뉴스 목록이 비어 있다면 이번 실행에서는 메시지를 보내지 않도록 만들 수 있습니다.

또는 다음처럼 간단한 메시지만 보낼 수도 있습니다.

새로운 뉴스가 없습니다.

개인적으로는 새로운 뉴스가 없는 경우 메시지 자체를 보내지 않는 방식이 더 깔끔할 수 있습니다.

중복 제거 기능은 단계적으로 추가하는 것이 좋다

처음부터 복잡한 중복 판별 시스템을 만들 필요는 없습니다.

다음과 같은 순서로 발전시키면 됩니다.

1단계는 한 번의 실행 안에서 동일한 제목을 제거합니다.

2단계는 기사 정보를 함께 비교합니다.

3단계는 이전에 전송한 뉴스 기록을 저장합니다.

4단계는 새 검색 결과와 이전 기록을 비교합니다.

5단계는 오래된 기록을 주기적으로 정리합니다.

이 정도만 구성해도 개인용 뉴스 수집 봇의 중복 문제를 상당히 줄일 수 있습니다.

중복 제거가 뉴스 자동수집에서 중요한 이유

뉴스 자동수집 시스템을 만들 때 처음에는 뉴스가 정상적으로 들어오는 것 자체가 중요합니다.

하지만 실제로 매일 사용하기 시작하면 정보의 양보다 품질이 더 중요해집니다.

같은 뉴스가 반복해서 들어오면 중요한 새 기사가 묻힐 수 있습니다.

또 알림이 너무 많아지면 결국 텔레그램 메시지를 확인하지 않게 될 수도 있습니다.

중복 제거는 단순히 메시지 개수를 줄이는 기능이 아닙니다.

새로운 정보만 빠르게 확인할 수 있도록 뉴스 자동수집 시스템의 품질을 높이는 기능입니다.

여러 키워드와 중복 제거를 함께 사용하면 효과가 크다

지난 글에서 여러 검색 키워드를 자동으로 수집하는 방법을 알아봤습니다.

다중 키워드 기능과 중복 제거 기능을 함께 사용하면 훨씬 실용적인 뉴스 수집 시스템을 만들 수 있습니다.

여러 분야를 동시에 검색하면서도 같은 기사는 한 번만 보여주기 때문입니다.

예를 들어 다섯 개의 키워드에서 총 20개의 검색 결과가 나왔다고 해도 중복을 제거하면 실제로는 12개의 새로운 기사만 남을 수 있습니다.

사용자는 20개의 결과를 모두 확인하는 대신 새로운 기사 12개만 확인하면 됩니다.

이런 작은 차이가 매일 반복되면 뉴스 확인에 사용하는 시간을 상당히 줄일 수 있습니다.

중복 뉴스 제거 흐름 정리

전체 과정을 다시 한번 정리해보겠습니다.

뉴스 키워드를 검색합니다.

검색 결과를 가져옵니다.

뉴스 제목이나 기사 정보를 정리합니다.

이미 현재 목록에 있는 기사인지 확인합니다.

이전 전송 기록에도 있는지 확인합니다.

중복이라면 제외합니다.

처음 보는 뉴스만 목록에 추가합니다.

새로운 뉴스만 텔레그램으로 보냅니다.

전송한 뉴스 정보를 다시 저장합니다.

다음 실행에서는 저장된 기록과 다시 비교합니다.

이 구조가 중복 뉴스 제거의 기본 원리입니다.

정리

뉴스 자동수집 시스템에서 중복 뉴스는 여러 키워드를 사용하거나 검색을 반복 실행할 때 자연스럽게 발생할 수 있습니다.

가장 간단한 중복 제거 방법은 뉴스 제목이나 기사 정보를 기준으로 이미 처리한 기사인지 확인하는 것입니다.

먼저 같은 실행 안에서 여러 키워드 사이의 중복을 제거하고, 이후에는 이전에 전송한 뉴스 기록까지 저장해서 새로운 기사만 보내도록 확장할 수 있습니다.

처음부터 비슷한 내용의 기사까지 모두 판단하려고 할 필요는 없습니다.

동일한 제목이나 동일한 기사 정보를 가진 결과부터 제거하는 방식으로 시작하는 것이 좋습니다.

중복 제거 기능을 적용하면 텔레그램 메시지가 짧아지고 새로운 뉴스가 더 잘 보이게 됩니다.

결국 개인용 뉴스 자동수집의 목적은 많은 정보를 모으는 것이 아니라 필요한 새로운 정보를 빠르게 확인하는 것입니다.

다음 글에서는 이렇게 정리된 뉴스 결과를 텔레그램에서 더 읽기 편하도록 뉴스 제목과 필요한 정보만 깔끔하게 구성해서 보내는 방법을 알아보겠습니다.

답글 남기기

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

글쓴이

bluekei9@keinote.com

관련 게시물

코딩 하나도 모르던 제가 결국 개인 뉴스 자동화 시스템을 만든 전체 과정

안녕하세요 케이입니다. 처음 이걸 시작할 때만 해도 텔레그램 봇이 정확히 어떻게 움직이는지 잘 몰랐습니다. API라는 말은 많이 들어봤지만 정확히 어떤 역할을 하는지도...

모두 읽어보기

텔레그램 봇 코드를 수정했는데 반영이 안 돼서 직접 원인을 찾아봤습니다

안녕하세요 케이입니다. 텔레그램 봇을 만들면서 꽤 답답했던 문제가 하나 있었습니다. 분명 Google Apps Script에서 코드를 수정했습니다. 저장도 했습니다. 그런데 텔레그램에서 테스트해보면 예전...

모두 읽어보기

텔레그램 뉴스봇이 갑자기 멈췄을 때 초보자인 제가 확인한 순서

안녕하세요 케이입니다. 앞에서는 Google Apps Script의 트리거를 이용해서 정해진 시간에 뉴스가 자동으로 오도록 만들어봤습니다. 자동으로 뉴스가 도착하니까 상당히 편했습니다. 그런데 며칠 사용하다...

모두 읽어보기

매번 검색하기 귀찮아서 자주 보는 뉴스 키워드를 저장해봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램으로 오는 뉴스 메시지를 조금 더 보기 좋게 꾸며봤습니다. 제목은 굵게 만들고, 설명은 짧게 붙이고, 긴 링크도 기사 보기처럼...

모두 읽어보기

텔레그램 뉴스 메시지가 너무 지저분해서 보기 좋게 꾸며봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램 뉴스봇에 뉴스 제목뿐만 아니라 간단한 설명까지 같이 표시해봤습니다. 기능 자체는 만족스러웠습니다. 제목만 볼 때보다 내용을 훨씬 빨리 파악할...

모두 읽어보기

뉴스 제목만 오던 텔레그램 봇에 간단한 내용까지 표시해봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램 뉴스봇에서 관심 없는 단어가 들어간 뉴스는 자동으로 제외하도록 만들어봤습니다. 뉴스 개수도 줄이고, 같은 기사도 어느 정도 걸러내고, 원하는...

모두 읽어보기