매일 아침 10시, AI 뉴스를 자동으로 받아보는 법
LLM으로 필터링해서 Mac 알림까지 보내는 AI Watch 구축기
Responsible AI, Trustworthy AI, Machine Unlearning 관련 뉴스를 여러 매체에서 자동으로 수집하고, LLM이 관련 기사만 골라 요약한 뒤 Mac 알림으로 보내주는 개인 뉴스 트래킹 파이프라인을 만들었다.
- 왜 이 툴을 만들었는가
- 어떤 매체를 수집하는가
- 전체 파이프라인 구조
- 1차 필터: 키워드 기반 분류
- 2차 필터: LLM 관련성 판단
- 실행 시간과 API 사용량
- 결과물 예시
- 설치 및 설정 방법
- Mac에서 매일 10시에 자동 실행하기
- 트러블슈팅
- 마무리
한눈에 보는 핵심
- 여러 뉴스 매체를 직접 확인하지 않아도, 관심 주제 기사만 자동으로 받아볼 수 있다.
- 키워드 필터 + LLM 분류를 함께 사용해서 관련 없는 기사 비율을 줄였다.
- 별도 서버 없이 Mac Mini + launchd만으로 자동화할 수 있다.
- 코드는 GitHub에서 내려받아 바로 사용할 수 있다.
1. 왜 만들었나
연구를 하다 보면 뉴스 트래킹이 생각보다 중요하다. 논문보다 먼저 이슈가 터지는 경우도 많고, 규제나 정책 동향은 특히 빠르게 바뀐다.
문제는 매일 아침 여러 매체를 직접 들어가서 확인하는 일이 꽤 번거롭다는 점이다. 그래서 관심 분야와 관련된 기사만 자동으로 수집하고, LLM이 다시 한 번 걸러서 요약해주는 파이프라인을 만들었다.
내가 주로 보는 분야는 Trustworthy AI / Responsible AI / Machine Unlearning인데, 이와 직접 관련 없는 AI 홍보성 기사나 벤더 PR은 최대한 제외하고 싶었다. 그래서 단순 RSS 수집이 아니라, 필터링 단계를 두 번 거치도록 설계했다.
https://github.com/ychxnn/ai-watch
2. 수집 대상 매체
현재는 아래 5개 소스를 대상으로 뉴스를 수집한다.
| 구분 | 매체 | 수집 방식 | 용도 |
|---|---|---|---|
| 오픈 소스 | The Markup | RSS + 본문 수집 | AI 감시, 데이터 기반 조사 저널리즘 |
| 오픈 소스 | TechCrunch | RSS + 본문 수집 | AI 정책, 기업, 제품 뉴스 |
| 오픈 소스 | 보안뉴스 | RSS 수집 | 국내 AI 보안·프라이버시 이슈 |
| 페이월 | WSJ | 제목·티저 중심 | 주요 글로벌 이슈 트래킹 |
| 페이월 | Bloomberg | 제목·티저 중심 | 기업·정책 동향 트래킹 |
예를 들어
cs.LG, cs.AI와 연구 주제 키워드를 조합하면 언론 기사보다 먼저 연구 흐름을 파악할 수 있다.3. 전체 구조
이 파이프라인은 크게 네 단계로 동작한다.
-
1RSS에서 기사 후보를 수집한다 각 매체의 RSS를 기준으로 새 글 후보를 가져온다.
-
2키워드 기반으로 1차 필터링한다 관련 가능성이 있는 기사만 남겨 LLM 호출량을 줄인다.
-
3LLM이 실제 관련성을 다시 판단한다 단순 키워드 포함 여부가 아니라, 실제로 연구자가 읽을 가치가 있는지를 본다.
-
4요약 파일을 만들고 Mac 알림으로 보낸다 최종적으로 관련 기사만 마크다운 digest로 저장하고 실행 완료 알림을 보낸다.
키워드만 사용하면 특정 단어가 들어간 거의 모든 AI 기사가 잡히고, 반대로 LLM만 사용하면 비용과 호출량이 불필요하게 늘어난다. 그래서 1차 필터는 넓고 저렴하게, 2차 필터는 좁고 정확하게 작동하도록 구성했다.
4. 1차 필터: 키워드 기반 분류
영어 기사와 한국어 기사에 대해 각각 키워드를 두고, 내 연구 주제에 맞는 기사만 1차로 걸러낸다.
내 경우에는 아래와 같이 설정했다.
# 영어 키워드
KEYWORDS_EN = [
"machine unlearning",
"right to be forgotten",
"AI privacy",
"trustworthy AI",
"responsible AI",
]
# 한국어 키워드
KEYWORDS_KO = [
"신뢰할 수 있는 AI",
"머신 언러닝",
"잊혀질 권리",
"AI 프라이버시",
]
이 단계의 목적은 완벽한 분류가 아니다. 관련 가능성이 있는 기사를 넉넉하게 걸러낸 뒤, LLM에게 넘길 후보군을 줄이는 데 의미가 있다.
5. 2차 필터: LLM 관련성 판단
1차 필터를 통과한 기사에 대해서는 LLM을 호출해 실제 관련성을 다시 판단한다.
LLM은 주로 아래 항목을 기준으로 분류한다.
- 실제로 내 연구 주제와 관련 있는가
- 관련 분야는 무엇인가
- 연구자가 읽을 가치가 있는가
- 단순 제품 홍보성 기사인가
이렇게 하면 키워드에는 걸렸지만 실제로는 별 의미 없는 기사들을 줄일 수 있다.
gemini-2.0-flash에서 limit: 0 에러가 나는 경우가 있다. 이 경우 gemini-2.5-flash 또는 gemini-2.5-flash-lite로 바꿔 테스트하면 된다.모델 테스트는 아래처럼 해보면 된다. SUCCESS가 뜨면 정상이다.
python3 -c "from google import genai; import os; from dotenv import load_dotenv; load_dotenv(); c = genai.Client(api_key=os.environ['GEMINI_API_KEY']); r = c.models.generate_content(model='gemini-2.5-flash', contents='say hi'); print('SUCCESS:', r.text)"
6. 실행 시간과 API 사용량
무료 티어 기준으로 분당 요청 제한을 피하기 위해 요청 간격을 조절했다.
| 분당 요청 수 | 약 10회 이하 |
|---|---|
| 요청 간격 | 약 6.5초 |
| 하루 실행 횟수 | 1회 |
| 하루 예상 호출량 | 약 40회 내외 |
| 전체 실행 시간 | 약 4~5분 |
하루 한 번 백그라운드에서 돌아가는 작업이므로, 실행 시간이 몇 분 걸리는 것은 크게 문제되지 않는다.
7. 결과물 예시
매일 아침 10시에 아래와 같은 마크다운 파일이 생성된다. Mac 알림은 실행 완료를 알려주는 용도로만 사용하고, 실제 내용은 생성된 digest 파일에서 확인한다.
# AI Watch — 2026-05-07 10:00 KST
Window: 2026-05-06 10:00 → 2026-05-07 10:00 KST
Articles: 7
## Machine Unlearning
### [The Markup] 연구자들, GDPR '잊혀질 권리' 요청에 머신러닝 모델이 실제로 반응하는지 검증 어렵다고 지적
UC Berkeley 연구팀은 현행 머신 언러닝 기법이 데이터 삭제 요청에 대한 법적 컴플라이언스를 입증하기 어렵다는 연구 결과를 발표했다. 특히 산업 장비 고장 진단 등 특수 도메인에서 검증 방법론 부재가 심각하다고 강조했다.
## AI Privacy
### [TechCrunch] EU AI Act 고위험 AI 시스템 분류 가이드라인 초안 공개
유럽위원회가 산업 자동화·의료 분야 AI 시스템의 고위험 분류 기준 초안을 공개했다. 제조업 예측 유지보수 시스템이 고위험으로 분류될 가능성이 제기되며 산업계 반응이 엇갈리고 있다.
## Paywalled Headlines
### [WSJ] Big Tech Faces Pressure Over AI Data Retention Policies
8. 설치 및 설정
8.1 환경
8.2 프로젝트 압축 해제 및 가상환경 설정
unzip ~/Downloads/ai-watch.zip
cd ai-watch
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install lxml_html_clean
lxml_html_clean은 일부 환경에서 trafilatura 의존성 문제를 해결하기 위해 필요하다.
8.3 API Key 설정
Gemini API Key는 Google AI Studio에서 발급할 수 있다. 비용을 줄이기 위해 무료 API를 사용했다.
cp .env.example .env
nano .env
GEMINI_API_KEY=발급받은_키
이메일 전송 기능을 사용하지 않는다면 config.yaml에서 아래처럼 비활성화하면 된다.
email:
enabled: false
9. Mac에서 매일 10시에 자동 실행하기
macOS에서는 cron보다 launchd를 사용하는 편이 낫다.
- cron: Mac이 잠들어 있으면 작업이 스킵될 수 있음
- launchd: Mac이 깨어나는 시점에 작업 실행 가능
또한 launchd는 macOS 기본 daemon이기 때문에, 별도로 설치할 필요 없이 바로 사용할 수 있다.
9.1 plist 파일 생성
nano ~/Library/LaunchAgents/com.trustai.aiwatch.plist
아래와 같이 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.trustai.aiwatch</string>
<key>ProgramArguments</key>
<array>
<string>/Users/trustai/ai-watch/.venv/bin/python</string>
<string>/Users/trustai/ai-watch/main.py</string>
</array>
<key>WorkingDirectory</key>
<string>/Users/trustai/ai-watch</string>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key><integer>10</integer>
<key>Minute</key><integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/Users/trustai/ai-watch/launchd.log</string>
<key>StandardErrorPath</key>
<string>/Users/trustai/ai-watch/launchd.error.log</string>
<key>RunAtLoad</key>
<false/>
</dict>
</plist>
/Users/trustai/ 부분은 반드시 자신의 Mac 사용자 이름에 맞게 바꿔야 한다.9.2 launchd 등록 및 테스트
# 먼저 수동 실행으로 정상 동작 확인
python3 main.py
# launchd에 등록
launchctl load ~/Library/LaunchAgents/com.trustai.aiwatch.plist
# 등록 확인
launchctl list | grep aiwatch
# 지금 당장 테스트 실행
launchctl start com.trustai.aiwatch
9.3 결과물 확인
# 마크다운 파일 확인
cat ~/ai-watch/digests/2026-05-07.md
# TextEdit로 열기
open ~/ai-watch/digests/2026-05-07.md
# 터미널 alias 설정
echo 'alias news="open ~/ai-watch/digests/$(date +%Y-%m-%d).md"' >> ~/.zshrc
source ~/.zshrc
이후부터는 터미널에서 news만 입력하면 바로 오늘 digest를 열 수 있다.
10. 트러블슈팅
10.1 launchd status 78
대부분 plist에 적은 경로가 실제 경로와 다를 때 발생한다.
ls -la /Users/[사용자이름]/ai-watch/.venv/bin/python
find ~ -name "main.py" -path "*ai-watch*"
10.2 Gemini limit: 0 에러
특정 무료 티어 환경에서 발생할 수 있다. 이 경우 gemini-2.5-flash 또는 gemini-2.5-flash-lite로 모델을 바꿔 테스트한다.
10.3 ImportError: lxml.html.clean
trafilatura 의존성 문제다. 아래 한 줄이면 해결된다.
pip install lxml_html_clean
10.4 nano .env를 열었는데 빈 화면이 나오는 경우
.env 파일이 아직 없는 것이다. 먼저 파일을 생성해야 한다.
cp .env.example .env
nano .env
10.5 429 Too Many Requests
테스트를 여러 번 반복하면 일일 쿼터를 초과할 수 있다. 정상 운용처럼 하루 1회만 실행하면 거의 발생하지 않는다.
11. 마무리
이 툴을 만들어두니 매일 아침 직접 여러 매체를 돌아다니지 않아도, 관심 주제와 관련된 기사만 빠르게 확인할 수 있게 됐다.
특히 Trustworthy AI, Responsible AI, Machine Unlearning처럼 규제·정책·연구 흐름이 함께 중요한 주제를 보는 사람에게는 꽤 유용하다.
별도 서버 없이 Mac Mini에서 자동화할 수 있고, 키워드 필터와 LLM 분류를 함께 사용해 노이즈를 줄였다는 점이 가장 만족스러웠다.
마지막 요약
- 여러 뉴스 소스를 자동 수집한다.
- 키워드 필터로 1차 선별한다.
- LLM이 2차로 관련성을 판단한다.
- 최종 요약 파일을 만들고 Mac 알림으로 전달한다.
- 별도 서버 없이 개인 연구용 뉴스 트래킹 툴로 쓰기 좋다.
AI Watch · RSS → keyword filter → LLM classify → summarize → Mac notification
'étude > AI' 카테고리의 다른 글
| KD : 역시 선생은 대단해 (2) | 2025.07.31 |
|---|---|
| Machine Unlearning (0) | 2025.07.17 |
| [ML] gradient descent, gradient ascent (0) | 2025.02.28 |
| [머신러닝 이론 및 python 실습] : k-mean clustering 알고리즘 및 python 실습 (2) | 2024.02.12 |
| [머신러닝 이론 및 python 실습] : 머신러닝 이론 (knn, decision tree, ID3, linear regression) (3) | 2024.02.09 |