[일주일프/08] 출퇴근 날씨 대응법 안내 슬랙 봇

나만의 문제를 해결하는 프로그램이 뚝딱 나올 때마다 이 2개가 정말 중요하다는 걸 느낍니다. 1) 풀고 싶은 문제가 있나? 2) 그 문제를 제대로 풀었는지 검증할 수 있나?
💡
'일주일프'나와 내 주변 사람을 위한 유용한 프로그램을 매주 1개씩 만들어서 소셜 미디어에 공유하는 프로젝트입니다. 2026년에 잡은 가장 중요한 목표이기도 합니다.

한줄 요약: 회사 슬랙 봇에 서울 출퇴근 시간 날씨를 기반으로 어떤 대비를 해야 할지 매일 아침 알려주는 기능을 추가했습니다.

첫 구현

출근길에 버스를 타고 나서야 마스크를 쓴 사람들을 보며 아차 싶었거나, 퇴근 시간에 비가 오는데 우산이 없어서 곤란했던 날이 은근히 자주 있습니다. 회사 분들과도 비슷한 얘기를 종종 했었는데요. 사람들의 휴가 일정을 알려주는 슬랙 봇에 날씨 알림을 추가해야겠다는 생각이 들었습니다.

출근길에 핸드폰으로 회사 슬랙 봇 저장소에서 Claude Code를 켜고 한마디 했습니다.

매일 아침 7시에, 이날 서울 일대의 날씨를 읽고 미세먼지, 황사, 비, 눈 등에 대비해 마스크 챙기라, 우산 챙기라, 양산 챙기라 등의 알림을 슬랙의 #random 채널에 해주고 싶습니다.

뭘 하나 관찰했더니 무료로 API Key 없이 쓸 수 있는 Open-Meteo라는 오픈소스 날씨 API로 구현하더군요. 기상 상황과 대기질을 모두 제공했기 때문에 편하다고. 좌표는 서울 시청으로 잡고요. 테스트를 위한 슬랙 봇 토큰을 제공했더니 순식간에 구현이 완료됐습니다.

1차 버전

데이터 정제

그런데 이 데이터가 정말 맞는지 확인해봤더니 수치가 이상했어요. 기온은 그렇다치고 미세먼지 수치의 차이가 너무 많이 났습니다. 알고 보니 Open-Meteo의 대기질 API는 실측값이 아닌 코페르니쿠스(CAMS) 모델 기반의 예측치였어요.

좀 실망스러웠고, 귀찮지만 한국 기상청 API를 써야 하나 생각했는데요. 작년에 공공데이터를 써본 경험으로는 (API Key야 한번 발급받으면 2년간 유지되니 괜찮다지만) 에이전트가 구현을 잘 못할 것 같아서 우려됐습니다. 기상 상황과 미세먼지에 필요한 API Key도 달랐고요. 그런데 재미있게도 클코의 추천 프롬프트로 대략 이런 게 떴어요.

open-meteo의 응답값을 개선할 방법은 없나요?

그래서 요청해보니 open-meteo에서 한국 기상청 데이터 기반인 kma_seamless 라는 모델을 선택할 수 있더군요. 이걸로 바꾸고, GPS도 회사 좌표로 선택하니 기온 데이터가 훨씬 정확해졌습니다. 하지만 강수확률은 이 모델에서 제공하지 않아서, 지난 3주간의 실제 데이터와 비교해보라고 했는데 강수 예측 정확도가 95%라고 하더라고요. 그래서 충분히 쓸만하다고 생각했습니다. 사실 자외선지수도 kma에는 없고 기본 모델에만 있었지만... 강수확률이 맞으면 자외선지수도 대충 맞겠거니 했어요.

그리고 대기질은 에어코리아 API로 교체해서, 전국 측정소의 실측값 기반으로 얘기해주게 했습니다. API Key는 공공데이터 포털에서 무료로 발급받을 수 있었고, 다행히 문제없이 코딩 에이전트가 한방에 잘 구현했습니다.

인터페이스 개선

데이터가 준비됐으니 이제 UI 차례였죠. 원래는 그냥 '그날 하루'의 정보를 알려주려고 했는데요. 제가 날씨를 앎으로써 하고 싶은 일(JTBD)는 결국 '출퇴근 시간에 야외에서 어떤 대비를 해야 하는가'였으니, 알림을 보내는 현재(매일 오전 8시) 어떤 상태인지 + 퇴근 예정 시각에는 대략 어떤 상태일지 알려주는 식으로 변경했습니다.

최종적인 알림은 이런 식입니다. 특별한 주의사항이 없으면 위 스샷처럼 나오고요.

이렇게 가벼운, 나만의 문제를 해결하는 프로그램이 뚝딱 나올 때마다 이 2개가 전보다도 훨씬 더 중요해졌음을 느낍니다. 이 조건 하에서는, 충분한 토큰을 소모하기만 하면 얼마든지 문제가 풀릴 것임을 잘 아니까요.

  • 풀고 싶은 문제가 있나?
  • 그 문제를 제대로 풀었는지 검증할 수 있나?

26-03-13 업데이트: 멘트 추천 및 차트 댓글

날씨가 안좋을 때만 대비하라고 하는 게 아니라, 날씨에 맞는 추천 멘트(산책, 환기 등)를 보내주게 룰을 업데이트했습니다. 그리고 댓글에 시간대별 기온/강수량 그래프를 그린 걸 보내주게 했어요.

사실 여기에는 LLM도 안 들어가있고 기술적으로 아주 특별할 건 없지만요. 슬랙을 인터페이스로 쓸 때 좀 더 사람에게 친화적이며 풍부한 정보를 만들게 할 수 있을까? 가 궁금해서 실험해봤는데 잘 되네요. svg를 프로그래머블하게 만들고, 비전 기능을 이용해서 스스로 이미지를 읽음으로써 문제점을 찾고 개선하게 해서 최종 레이아웃을 결정했습니다.

의외로 오래 걸린 부분은 '슬랙에서 프리뷰로 잘 보이게 하기' 였습니다. 처음엔 에이전트가 좀 헤맸지만 어차피 슬랙 토큰이 있으니 알아서 잘 검토하고 완료하더군요. 앞으로 꽤 자주 쓸 패턴이라, 조만간 스킬로 패키징할 수도 있겠습니다.