싱가포르 대기질 PSI 230 기록. Claude Code로 만든 실시간 연무 지도
Singapore's air hit PSI 230 this week. I built a live haze map with Claude Code that shows where that air came from, and what tomorrow brings
핵심 요약
Claude Code를 활용해 싱가포르 연무의 원인과 이동 경로를 시각화한 실시간 지도 프로젝트입니다.
- 프로젝트 목적 — 싱가포르 연무의 원인과 이동 경로를 한눈에 파악하기 위해 개발함
- Claude Code 활용 — 파이썬 데이터 파이프라인부터 지도 시각화까지 전 과정을 Claude Code로 구현함
- 데이터 정제 — 가스 플레어, 공장, 화산 등 5만여 개의 허위 화재 탐지 데이터를 필터링함
- 자동화 시스템 — GitHub Actions와 Cloudflare를 통해 실시간 데이터 업데이트 및 운영 자동화함
8월부터 수마트라랑 칼리만탄에서 난 산불 연기가 싱가포르 쪽으로 계속 넘어오고 있는데, 10월 18일에는 24시간 PSI가 230까지 찍더라. 산불이랑 연기, 바람 상황을 한눈에 볼 수 있는 곳이 필요해서 Claude Code로 직접 만들었다: https://sea-haze.teyou.dev/ (무료고 로그인 필요 없고 폰에서도 잘 돌아감).
뭐가 나오냐면
-
8월 1일부터 지금까지 위성으로 감지된 모든 산불 기록을 날짜별로 재생 (10월 8일 하루에만 인도네시아에서 13,012건 발생)
-
Copernicus CAMS 모델로 본 연기 이동 경로 (앞으로 이틀 치 포함)
-
NOAA GFS 바람 데이터를 기반으로 한 소형 입자 모델을 써서, 지난 5일 동안 싱가포르 공기가 어디서 왔는지 추적
-
내일 전망: NOAA GEFS 예측치 31개를 부채꼴 모양으로 그리고, 예상 PSI 범위도 표시 (둘 다 예측치라고 명시함)
-
영어, 중국어, 말레이어, 인도네시아어로 제공되는 10개 장면의 스토리 모드
Claude는 어떻게 썼냐면
-
Claude Code가 코드를 다 짰음: 파이썬 데이터 파이프라인, 지도(프레임워크 안 쓰고 MapLibre 사용), 입자 모델, CI까지. 나는 뭘 만들지, 지도가 어디까지 정보를 보여줄지 결정하는 역할만 함.
-
작은 팀처럼 운영했음: Claude Code 세션 여러 개를 각각 다른 git worktree에서 동시에 돌림. 모든 변경 사항은 GitHub 이슈로 시작해서 전후 스크린샷이 포함된 풀 리퀘스트로 마무리했고, 메인 세션 하나가 검토하고 머지하는 식으로 진행함.
-
제일 골 때렸던 건 데이터 정제였음. 위성 산불 데이터 원본에는 가스 플레어, 공장, 화산, 햇빛 반사, 물 위 반사 같은 게 다 섞여 있거든. 하나하나 규칙 만들어서 가짜 데이터 51,922개를 다 걸러내고 나서야 제대로 된 지도가 완성됨.
-
지금은 알아서 잘 돌아감: GitHub Actions가 하루에 두 번씩 데이터를 새로 고치고, Cloudflare로 사이트 서빙하고, 데이터 업데이트가 끊기면 Cloudflare Worker가 나한테 알림 보내줌.
워크플로우나 데이터 관련해서 궁금한 거 있으면 물어봐. 더 유용하게 쓰려면 뭐가 필요할까?
데이터 출처: NASA FIRMS, NEA (data.gov.sg), NOAA GFS 및 GEFS. Copernicus Atmosphere Monitoring Service 정보를 수정하여 포함함.
