[완결] Series: 고객사 뉴스 리포트 만들다가
고객사별 뉴스 검색·크롤링·중복제거·LLM 요약 파이프라인을 만들면서 겪은 기록. 컨테이너 경로, 모델 단종, 검색 노이즈, 마크다운 링크, LLM 판단 근거, O(n²) 중복제거 알고리즘, 캐싱까지 — 몇 시간씩 걸리던 리포트를 9분대로 줄이기까지의 과정.
-
고객사 뉴스 리포트 만들다가 — 출력 경로가 있는 줄 알았는데, 사실 컨테이너 안에만 있었다
Hermes 프롬프트 가이드에 적혀 있던 저장 경로를 그대로 옮겨서 파이썬으로 돌렸더니 권한 오류가 났다. 알고 보니 그 경로는 Docker 컨테이너 안에서만 존재하는 경로였다.
-
고객사 뉴스 리포트 만들다가 2편 — 돌연 요약이 다 실패로 나왔다, 모델이 사라진 걸 아무도 안 알려줬다
비용을 따로 추적하려고 전용 API 키를 새로 발급받아 붙였다. 리포트는 한 시간 넘게 잘 돌아갔는데, 다 끝나고 열어보니 gemini-2.5-flash 모델 접근이 막혀서 요약이 전부 실패로 나와 있었다.
-
고객사 뉴스 리포트 만들다가 3편 — 회사명만 검색해도 관련 없는 기사가 계속 나왔다
회사별 키워드 검색 결과에 그 회사와 전혀 상관없는 기사가 섞여 나왔다. 검색어를 줄여도, 후보를 늘려도 안 끝나서 원인을 하나씩 파봐야 했다.
-
고객사 뉴스 리포트 만들다가 4편 — 링크가 왜 깨지나 했더니, 제목에 대괄호가 있었다
메일로 받은 리포트에서 링크 하나가 이상하게 잘려 보였다. 대괄호 하나만 이스케이프하면 될 줄 알았는데, 전체를 다시 뒤져보니 스물네 개가 더 있었다.
-
고객사 뉴스 리포트 만들다가 5편 — 도메인 키워드로도 안 되길래, 결국 LLM한테 물어봤다
회사 이름이 흔한 단어와 겹치는 고객사 하나가 계속 오탐을 냈다. 도메인 키워드를 붙여봐도 절반은 여전히 틀렸다. 결국 규칙을 더 정교하게 짜는 대신, LLM한테 관련 있는지부터 물어보기로 했다.
-
고객사 뉴스 리포트 만들다가 6편 — 각주 버그를 고쳤는데, 알고 보니 처음부터 없던 버그였다
리포트에 [1] 각주가 붙어 나오길래 프롬프트를 고치고 캐시 버그까지 잡았다. 그런데 실제로 눈으로 확인하려고 리포트를 열어봤더니, 고친 뒤에도 여전히 각주가 보였다. vi와 glow를 나란히 열어보고 나서야, 각주는 한 번도 리포트 파일에 있었던 적이 없다는 걸 알았다.
-
고객사 뉴스 리포트 만들다가 7편 — 다섯 시간 넘게 멈춰 있었는데, 원인은 알고리즘이었다
1년치 리포트를 다시 돌렸는데 다섯 시간이 넘도록 끝나지 않았다. CPU는 계속 돌고 있는데 결과물은 하나도 없었다. 원인은 코드 안에 있었다.
-
고객사 뉴스 리포트 만들다가 8편 — 매번 처음부터 다시 비교하는 게 아까웠다
날짜 버킷으로 중복 제거를 고친 뒤로 리포트는 끝나긴 했다. 그런데 이 리포트를 매번 다시 돌릴 때마다, 이미 판정 끝난 기사까지 처음부터 다시 비교하고 있다는 게 눈에 걸렸다. 그리고 크롤링도 절반 가까이 실패하고 있었다.
-
고객사 뉴스 리포트 만들다가 9편 — 빨라진 진짜 이유는 따로 있었다
캐싱을 붙이고 크롤러를 손본 다음, 진짜 얼마나 빨라졌는지 다시 돌려서 확인했다. 그런데 빨라진 이유를 성급하게 짚었다가, 계산을 다시 해보고서야 진짜 이유를 찾았다. 그 과정에서 자기가 만든 기능 때문에 생긴 크래시도 하나 잡았다.