Skip to content
게으른 엔지니어의 기술 블로그
Go back

뉴스 요약 자동화, '확인 불가' 없애다가 진짜 버그를 하나 찾았다

이 블로그엔 한동안 매일 아침 자동으로 올라오는 News Summary가 있었다. extract_news.py가 메일함에서 기사를 긁어와 Gemini로 요약하고 표로 정리해서 올려주는 파이프라인이다. 그런데 이 표를 계속 보다 보니, “확인 불가”라는 문구가 너무 자주 눈에 띄었다.

”확인 불가”가 자꾸 뜨면 안 좋을까

기사 본문을 못 가져왔거나 LLM 요약이 실패하면, 그 행은 카테고리·날짜·키워드·요약·출처 전부 “확인 불가”로 채워진 채 표에 그대로 올라갔다. 읽는 사람 입장에서 이걸 보면 “이거 자동화가 덜 다듬어졌구나”라는 인상을 받을 것 같았다.

내용 자체가 잘못된 건 아니다. 다만 실패 흔적이 표 안에 그대로 남아있으면, 정작 멀쩡하게 요약된 다른 기사들까지 덩달아 허술해 보이는 게 문제였다.

숨기지 말고, 따로 모으자

가장 쉬운 해법은 실패한 행을 그냥 빼버리는 거였다. 근데 그러면 정보 자체가 통째로 사라진다 — 요약은 실패했어도 기사 자체는 여전히 읽을 가치가 있을 수 있는데, 그걸 독자가 볼 기회조차 없어지는 거다.

그래서 나온 절충안이, 실패한 기사를 표 밖으로 빼서 제목과 링크만 따로 모아두는 것이었다. 요약은 없어도 원문을 클릭해서 직접 볼 수는 있게. 이 섹션 이름을 뭐라고 할지도 고민했는데, “확인불가”나 “요약 실패” 같은 단어를 넣으면 결국 같은 인상을 주니까, 그냥 **“이 외 주요 기사”**라는 중립적인 이름으로 정했다. 실패를 알리는 게 아니라 그냥 추가로 소개하는 기사처럼 읽히게.

오늘(7/9) 기사로 시뮬레이션해보니 21개 중 6개(약 30%)가 여기 해당됐다. 적지 않은 비율이라 놀랐는데, 일단 형태부터 잡고 원인은 나중에 보기로 했다.

반쯤 실패한 것들도 있었다

전체가 “확인 불가”인 것 말고, 제목·요약·출처는 멀쩡한데 날짜만 “확인 불가”인 행도 여럿 있었다. 이건 크롤링이 실패한 게 아니라 그냥 기사에 날짜가 명시돼 있지 않은 경우다. 이런 것까지 “이 외 주요 기사”로 빼버리면 멀쩡한 요약을 버리는 셈이라, 날짜 칸에만 “확인 불가” 대신 **”-“**를 넣기로 했다. 문구 하나를 반복해서 보여주는 것보다 훨씬 덜 거슬린다.

정렬을 만졌더니, 진짜 버그가 나왔다

”-“가 컬럼 왼쪽에 붙어있는 게 허전해 보여서, 번호랑 날짜 컬럼을 가운데 정렬로 바꿔봤다. 마크다운 표 정렬은 헤더 구분선에 :---:만 넣으면 되는 간단한 문법이다.

| 번호 | 기사 날짜 | ... |
|:---:|:---:| ... |

그런데 실제 페이지에서 확인해보니 안 먹혔다. 분명 문법은 맞게 썼는데 여전히 왼쪽 정렬로 나왔다.

원인을 찾아보니 진짜 사이트 버그였다. 마크다운의 정렬 문법은 align="center"라는 옛날 방식 HTML 속성으로 변환되는데, 이 블로그가 쓰는 Tailwind Typography 플러그인의 표 스타일이 이 속성보다 우선순위가 높아서 무시하고 있었다. align 속성은 CSS 명세상 거의 최하위 우선순위라, 스타일시트에 있는 어떤 규칙한테든 밀린다 — 콘텐츠는 멀쩡했는데, 순전히 사이트 CSS 쪽 결함이었던 거다.

th[align="center"],
td[align="center"] {
  text-align: center;
}

이 규칙 하나를 typography.css에 추가해서 고쳤다. ”-” 하나 가운데 정렬하려다가, 이 블로그의 모든 마크다운 표 정렬 기능 자체가 처음부터 작동 안 하고 있었다는 걸 알게 된 셈이다.

이 블로그는 AstroPaper라는 오픈소스 테마를 기반으로 만들어졌는데, 원본 저장소를 확인해보니 이 문제는 이 블로그만의 버그가 아니라 테마 자체에 있는 버그였다. AstroPaper를 쓰는 사람이라면 누구나 마크다운 표에서 가운데·오른쪽 정렬을 시도하면 똑같이 겪을 문제였다. 그래서 이번엔 직접 고치고 끝내지 않고, 처음으로 다른 사람의 오픈소스 프로젝트에 PR을 올려봤다.

컬럼도 정리했다

버그를 고치고 나니 표 자체를 더 손보고 싶어졌다. 카테고리랑 키워드 컬럼을 다시 보니 둘 다 애매했다.

둘 다 빼고 “번호 | 제목 | 기사 날짜 | 요약 | 출처” 5개 컬럼으로 줄였다. 그리고 “제목”을 “기사 날짜”보다 앞으로 옮겼다 — 어차피 ”-“가 많은 컬럼이라, 번호 바로 다음에 빈 값이 나오는 것보다는 내용이 있는 제목을 먼저 보여주고 그다음에 날짜가 나오는 게 덜 허전해 보인다.

정리

이 정리는 7월 1일 기사부터 적용했다. 앞으로 공개할 예정인 3월~6월 기사들은 이 포맷 변경 전에 쓰인 거라, 나올 때는 예전 표 형식(카테고리·키워드 포함, “확인 불가” 그대로) 그대로일 수 있다.

콘텐츠를 다듬으려고 시작한 일이었는데, 끝에 가서는 사이트 자체의 버그를 하나 잡는 걸로 마무리됐다. 뭔가를 정리하다 보면 예상 못 한 곳에서 진짜 문제가 튀어나올 때가 있다.

추가 (2026-08-03)

PR #668이 이날 승인받고 merge됐다. 발행일(7/9)로부터 거의 한 달 만이다.


Share this post:

Previous Part
Hermes cron이 꺼지면 스킵되는 이유 — in-process 스케줄러의 함정
Next Part
뉴스 요약에 날짜가 안 뜨던 이유 — AI 에이전트가 리팩터링하며 조용히 빠뜨린 기능