🌐 언어: 한국어 · English
🌟 5분만에 세팅하고, 내 폰 캘린더에 매일 한국 날씨를 자동으로 표시하기
기상청 API를 이용해 오늘부터 10일치 한국 날씨 예보를 iCalendar(.ics) 파일로 자동 생성하고, GitHub Actions로 주기적으로 갱신해 Google / Apple / Samsung 캘린더에 URL 구독 으로 띄우는 프로젝트입니다. 위젯 설치도 추가 앱 설치도 필요 없어요. 그냥 평소 쓰던 캘린더 앱에 한 줄 추가만 하면 끝.
📱 실제 갤럭시/Google 캘린더 앱 적용 모습 — 매일 날짜 칸에 날씨 이모지 + 최저/최고 기온
코딩 안 해도 돼요. 마우스 클릭하고 복사·붙여넣기만 할 줄 알면 누구나 할 수 있어요.
| 항목 | 내용 |
|---|---|
| ⏱ 예상 소요 시간 | 처음이면 15~30분 (API 활용신청 대기 1~2일 별도) |
| 💰 비용 | 완전 무료 — API·GitHub 모두 무료 플랜으로 평생 사용 |
| 🛠 준비물 | GitHub 계정, 이메일 계정 1개, 휴대폰(본인인증용) |
| 🆘 막히면? | 각 단계마다 흔한 함정과 해결책 적혀 있어요. 정말 안 되면 Issues에 질문 남겨주세요 |
| 💡 가장 어려운 부분 | 시크릿 9개 등록과 모바일 동기화. 둘 다 자세한 안내가 있으니 안심 |
💡 더 친절한 시각 가이드(좌표 자동 계산기 포함)는 📖 GitHub Pages 가이드 를 참고하세요.
- 이 페이지 우측 상단 [Fork] 버튼 클릭
- "Create fork" 누르면 본인 계정에 복사본이 생김
- 이후 단계는 모두 본인 계정의 Fork된 레포에서 진행 (원본이 아님)
📌 이 프로젝트는 두 곳의 API를 사용합니다. 둘 다 무료지만 인증키는 별도로 발급받아야 해요.
- A. 기상청 API 허브 → 날씨/특보/지진/태풍 (
KMA_API_KEY)- B. 공공데이터포털 → 미세먼지/자외선/꽃가루 (
DATA_GO_KR_KEY)🚨 흔한 함정: 활용신청 버튼을 눌렀는데 "신청 완료" 안내가 안 뜨면 페이지 새로고침(F5) 후 다시 [활용신청] 클릭 하세요. 가끔 첫 요청이 무반응으로 끝나는 일이 있어요. 양쪽 사이트 모두 해당.
- 기상청 API 허브 가입 (이메일 + 휴대폰 본인인증만 있으면 됨, 공동인증서 불필요)
- 좌측 메뉴에서 아래 7개 서비스에 각각 "활용 신청" 클릭:
- 예특보 > 단기예보 ›
4.2 초단기예보조회(정확도 향상용) - 예특보 > 단기예보 ›
4.3 단기예보조회 - 예특보 > 중기예보 ›
2.2 중기기온조회 - 예특보 > 중기예보 ›
2.3 중기육상예보조회 - 예특보 > 기상특보 ›
2. 특보현황 조회(특보 이벤트용,wrn_now_data_new.php) - 지진/화산 > 국내·외 지진정보 ›
2. 지진목록(임의기간의 지진정보) 조회(eqk_list.php) - 태풍 > 태풍정보 ›
1.3 태풍정보+예측(시점기준)(typ_now.php)
- 예특보 > 단기예보 ›
- 상단 [마이페이지] → [인증키 현황] 에서 API Key 값을 복사 (한 줄 긴 문자열)
ℹ️ 활용 신청은 보통 즉시 승인되지만, 가끔 몇 분 걸릴 수 있어요.
-
공공데이터포털 가입
-
검색창에 아래 키워드를 입력해서 나오는 3개 API에 각각 [활용신청] 클릭:
검색 키워드 API 이름 용도 에어코리아 대기오염정보한국환경공단_에어코리아_대기오염정보 🌫️ PM10·PM2.5·O3 실측 + 예보 생활기상지수기상청_생활기상지수 조회서비스 ☀️ 자외선·식중독·천식 등 꽃가루기상청_보건기상지수 조회서비스 (꽃가루농도위험지수) 🌸 참나무·소나무·잡초 꽃가루 -
1~2일 내 승인되면 공공데이터포털 마이페이지 인증키 발급현황에서 일반 인증키(Encoding) 복사
💡 하나의 일반 인증키로 위 3개 API 모두 호출 가능합니다. API별로 신청은 따로 하지만 키는 공통.
💡 꽃가루 API는
보건기상지수가 아니라꽃가루로 검색해야 정확히 찾을 수 있어요.
기상청은 동네 좌표를 격자(NX, NY)로, 중기예보 구역을 별도 코드(11B10101 식)로 관리해요.
가장 쉬운 방법은 📖 GitHub Pages 가이드 의 3단계 자동 계산기:
- 가까운 예보 지점을 드롭다운에서 고르고
- 도로명 주소를 입력하면
- NX, NY, REG_ID_TEMP, REG_ID_LAND, DATA_GO_KR_REGION 다섯 값이 한 번에 계산돼요
이 값들을 메모해두세요.
📌 API 인증키는 두 곳에서 따로 발급받아야 합니다:
- 기상청 API 허브 →
KMA_API_KEY(Step 2에서 발급)- 공공데이터포털 →
DATA_GO_KR_KEY(마이페이지에서 일반 인증키 발급/조회)두 키는 별개이며 서로 호환되지 않아요. 둘 다 무료입니다.
본인 Fork 레포에서:
- Settings 탭 클릭
- 왼쪽 메뉴 Secrets and variables → Actions 클릭
- 초록색 [New repository secret] 버튼 클릭
- 아래 9개를 하나씩 등록 (Name과 Secret 값 모두 입력 후 "Add secret")
필수 시크릿 (9개)
| Name | 값 (Secret) | 어디서 얻나 |
|---|---|---|
KMA_API_KEY |
기상청 인증키 | 2단계에서 복사한 값 |
KMA_NX |
단기예보 격자 X (예: 60) |
3단계 결과 |
KMA_NY |
단기예보 격자 Y (예: 127) |
3단계 결과 |
REG_ID_TEMP |
중기기온 구역 코드 (예: 11B10101) |
3단계 결과 |
REG_ID_LAND |
중기육상 구역 코드 (예: 11B00000) |
3단계 결과 |
LOCATION_NAME |
캘린더 일정에 표시될 동네 이름 (예: 우리집) |
직접 정함 |
DATA_GO_KR_KEY |
공공데이터포털 일반 인증키 (🌫️ 미세먼지 / ☀️ 자외선 / 🌸 꽃가루용) | 공공데이터포털 가입 후 아래 3개 API에 모두 활용신청 |
DATA_GO_KR_REGION |
미세먼지 예보 지역명 | 아래 19개 중 하나 |
LIVING_AREA_NO |
행정표준코드 10자리 (☀️ 자외선·🌸 꽃가루용. 시군구 단위) | 행정표준코드 검색 — 예: 시흥 4139000000, 강남구 1168000000 |
⚠️ 시크릿 이름은 대소문자/오타 주의. 한 글자라도 다르면 워크플로우가 빈 값을 받아 실패해요.💡
DATA_GO_KR_REGION가능 값 (에어코리아 표기 그대로):서울,부산,대구,인천,광주,대전,울산,세종,경기북부,경기남부,강원영서,강원영동,충북,충남,전북,전남,경북,경남,제주💡
LIVING_AREA_NO빠르게 찾는 법:
- GitHub Pages 가이드의 Step 3 자동 계산기에서 추정값 확인
- 정확한 값은 code.go.kr 법정동코드 검색 → 본인 시군구 입력 → 끝이
000000으로 끝나는 시군구 단위 코드 사용- 또는 아래 자주 쓰는 코드 표에서 골라 쓰기
📋 자주 쓰는 시군구 행정표준코드 (펼치기)
광역시·도 (광역 단위):
| 지역 | 코드 |
|---|---|
| 서울특별시 | 1100000000 |
| 부산광역시 | 2600000000 |
| 대구광역시 | 2700000000 |
| 인천광역시 | 2800000000 |
| 광주광역시 | 2900000000 |
| 대전광역시 | 3000000000 |
| 울산광역시 | 3100000000 |
| 세종특별자치시 | 3600000000 |
| 강원특별자치도 | 4200000000 |
| 충청북도 | 4300000000 |
| 충청남도 | 4400000000 |
| 전북특별자치도 | 5200000000 |
| 전라남도 | 4600000000 |
| 경상북도 | 4700000000 |
| 경상남도 | 4800000000 |
| 제주특별자치도 | 5000000000 |
경기도 주요 시:
| 지역 | 코드 |
|---|---|
| 수원시 | 4111000000 |
| 성남시 | 4113000000 |
| 의정부시 | 4115000000 |
| 안양시 | 4117000000 |
| 평택시 | 4122000000 |
| 안산시 | 4127000000 |
| 고양시 | 4128000000 |
| 시흥시 | 4139000000 |
| 화성시 | 4159000000 |
서울 주요 구:
| 지역 | 코드 |
|---|---|
| 종로구 | 1111000000 |
| 강남구 | 1168000000 |
| 송파구 | 1171000000 |
| 마포구 | 1144000000 |
| 영등포구 | 1156000000 |
| 강서구 | 1150000000 |
본인 지역이 위에 없으면 code.go.kr 법정동코드 검색 에서 검색하세요.
- [Actions] 탭 클릭
- (Fork 직후라면) 큰 안내 박스의 "I understand my workflows, go ahead and enable them" 버튼 클릭 (최초 1회만)
- 왼쪽 워크플로우 목록에서
Update Weather ICS선택 - 우측의 [Run workflow] 드롭다운 → 초록색 [Run workflow] 버튼 클릭
- 30초~1분 정도 기다리면 ✅ 초록 체크 마크가 표시되면서 완료
- 레포 루트의
weather.ics파일이 새 데이터로 업데이트되어 있을 거예요
❌ 만약 ❌ 빨간 X가 뜬다면 → 거의 100% 시크릿 등록 누락/오타. 4단계로 돌아가서 9개 모두 정확히 등록됐는지 확인하세요. (FAQ 참고)
(a) ICS의 Raw URL 복사
- 본인 레포의
weather.ics파일 클릭 - 우측 상단 [Raw] 버튼 클릭
- 주소창 URL 복사
- 형식:
https://raw.githubusercontent.com/<본인아이디>/weather-calendar/main/weather.ics
- 형식:
(b) Google 캘린더 (PC 웹 기준 — 가장 추천)
- calendar.google.com 접속
- 왼쪽 "다른 캘린더" 옆
+버튼 클릭 - "URL로 만들기" 선택
- 위 Raw URL 붙여넣기 → [캘린더 추가]
📱 안드로이드(삼성 갤럭시 포함): Samsung 캘린더가 ICS URL 구독을 직접 지원하지 않으니, PC에서 Google 캘린더에 위 방식으로 추가 → 폰의 Google 캘린더 앱과 자동 동기화하는 게 가장 깔끔합니다.
(c) iPhone / Mac (Apple 캘린더)
- iPhone: 설정 → 캘린더 → 계정 → 계정 추가 → 기타 → 구독 캘린더 추가
- 서버 칸에 Raw URL 붙여넣기 → 다음 → 저장
PC 웹 Google 캘린더에선 잘 보이는데 폰 앱에선 안 보이는 경우가 매우 흔합니다. Google이 URL로 추가한 캘린더를 기본적으로 모바일 동기화 목록에 넣지 않기 때문이에요.
❗ 중요: 아래 A → B → C 세 단계를 순서대로 마쳐야 폰에 보입니다. A만 해두고 기다리면 자동 반영 안 돼요.
- 브라우저로 접속: https://calendar.google.com/calendar/syncselect
- 본인 Google 계정 로그인 상태에서, 추가한 캘린더(예:
기상청 날씨) 체크박스 ON - [Save] 클릭
이 페이지는 모바일 동기화의 마스터 스위치입니다. 여기서 체크돼 있지 않으면 아래 B/C 단계도 의미가 없어요.
A를 마쳤다고 자동으로 폰에 뜨지 않습니다. 앱에 들어가서 수동으로 동기화를 켜줘야 캘린더 목록에 나타나요.
- 폰에서 Google 캘린더 앱 열기
- 좌측 상단 ☰ 메뉴 → 설정
- 본인 Google 계정 아래에서
기상청 날씨캘린더 항목 탭 - "동기화" 토글 ON
- 뒤로 돌아오기
캘린더 이름이 설정 목록에 아예 안 보이면 → A를 안 했거나 저장이 안 된 거예요. 1단계로 돌아가세요.
동기화를 켜도 캘린더 목록에 회색 체크박스로 있을 수 있어요. 체크해야 실제 화면에 표시됩니다.
- 좌측 ☰ 메뉴 다시 열기
- 캘린더 목록에서
기상청 날씨좌측 체크박스를 탭해 색이 채워진 상태로 만들기 - 메뉴 닫고 월/주 뷰에서 날씨가 보이는지 확인
여기까지 하면 폰에 날씨 캘린더가 정상 표시됩니다. 🎉
| 환경 | 방법 |
|---|---|
| 삼성 갤럭시 — Samsung 캘린더 앱 | |
| iPhone — 권장(가장 안정적) | 구글 거치지 말고 Apple 캘린더에 직접 구독: 설정 → 캘린더 → 계정 → 계정 추가 → 기타 → 구독 캘린더 추가 → 서버에 Raw URL |
| iPhone — Google 경유 | iOS용 Google 캘린더 앱 설치 후 위 A→B→C 진행. iPhone 기본 캘린더 앱에는 안 보입니다 (CalDAV가 구독 캘린더 미동기화) |
| 순서 | 확인할 것 |
|---|---|
| 1 | PC 웹 Google 캘린더에서 보이는가? → 안 보이면 구독 자체 문제 |
| 2 | https://calendar.google.com/calendar/syncselect 에서 체크 ON 되어 있나? (A) |
| 3 | 모바일 앱 설정 → 해당 캘린더 → "동기화" 토글 ON? (B) |
| 4 | 좌측 메뉴 캘린더 목록 체크박스가 채워져 있나? (C) |
| 5 | 모바일 앱 완전 종료 후 재실행 |
| 6 | 최대 24시간 기다림. 그래도 안 되면 캘린더 삭제 → 재구독 |
Q. 첫 실행이 빨간 X(실패)로 끝났어요
99% 시크릿 등록 문제입니다. 다음을 확인하세요:
- 시크릿 9개 모두 등록됐는지 (
Settings → Secrets and variables → Actions) - 이름 철자/대소문자가 정확한지 (예:
KMA_API_KEY≠kma_api_key) KMA_API_KEY/DATA_GO_KR_KEY값에 공백/줄바꿈이 안 섞였는지
수정 후 Actions 탭에서 다시 Run workflow 를 누르면 됩니다.
Q. 캘린더에 등록했는데 날씨가 안 보여요
체크리스트:
- 워크플로우가 실제로 성공했는지 — Actions 탭에서 초록 체크 확인
- 본인 레포의
weather.ics파일에 데이터가 들어있는지 확인 - PC 웹에선 보이는데 폰에선 안 보이는 경우 → 7️⃣ 모바일 앱에서 보이지 않을 때 섹션 참고 (Google Sync Select 누락이 가장 흔한 원인)
- 캘린더 앱 동기화 주기 — Google 캘린더는 URL 구독을 8~24시간 간격으로 갱신합니다
Q. 새 기능을 추가했는데 캘린더에 빨리 반영되지 않아요
Google 자체 캐시 서버가 ICS를 캐시해서, 구독 취소 후 다시 추가해도 옛 데이터를 받게 됩니다.
해결책 — URL 끝에 캐시버스터 파라미터 붙여서 재구독:
https://raw.githubusercontent.com/<본인아이디>/weather-calendar/main/weather.ics?v=2
- 다음에 또 갱신 안 되면
?v=3,?v=4식으로 숫자 올려가며 재구독 - 이렇게 하면 Google이 "다른 URL"로 인식해서 새로 fetch함
그래도 안 되면:
- 직접 import (일회성): raw URL의 ics 파일 다운로드 → Google 캘린더 → 설정 → 가져오기
- Apple 캘린더로 직접 구독 (자체 캐시 서버 없음, 새로고침 빈도 직접 설정 가능)
- 그냥 8~24시간 기다리기 (자연 만료)
Q. 자외선/꽃가루가 로그에 HTTP 403 으로 떠요
DATA_GO_KR_KEY 일반 인증키는 하나지만 API별로 따로 활용신청해야 합니다. 공공데이터포털 마이페이지 → 활용신청 현황에서 아래 3개가 모두 승인 상태인지 확인:
- 한국환경공단_에어코리아_대기오염정보
- 기상청_생활기상지수 조회서비스(3.0)
- 기상청_꽃가루농도위험지수 조회서비스(3.0)
세 개 다 검색해야 정확히 찾을 수 있어요 (특히 꽃가루는 보건기상지수 가 아니라 꽃가루 키워드로 검색).
Q. "Node.js 20 is deprecated" 경고가 떠요
무시해도 됩니다. 워크플로우 안에 FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true 설정이 있어서 GitHub이 "이 액션들은 Node 20용인데 Node 24로 강제 실행했다"고 알려주는 단순 경고입니다. 결과는 정상 성공이에요.
Q. 캘린더 추가할 때 "캘린더 공개하기" 옵션이 뭐예요?
이건 Google 캘린더 안의 내 사본을 외부에 공개할지를 묻는 옵션이지, GitHub의 ICS 소스 공개 여부와는 별개입니다. 개인이 본인 폰에서 날씨를 보려는 용도라면 끄세요(기본값). 가족/팀과 공유하거나 블로그에 임베드할 때만 켜면 됩니다.
Q. 데이터는 얼마나 자주 갱신되나요?
- 기상청 원본: 단기는 매 3시간, 중기는 하루 2회 (06시/18시)
- 이 레포의 weather.ics: 기본적으로 KST 매 3시간(02·05·08·11·14·17·20·23시) 자동 실행. Actions 첫 활성화만 마치면 추가 작업 필요 없음
- 캘린더 앱 반영: Google/Apple 모두 8~24시간 캐시 사용 (이 부분만은 사용자가 제어 불가)
기본적으로 .github/workflows/update.yml 의 schedule: 이 활성화되어 있어 워크플로우는 다음 시점에 자동으로 실행됩니다 (KST 기준):
| 시각 | 02:15 | 05:15 | 08:15 | 11:15 | 14:15 | 17:15 | 20:15 | 23:15 |
|---|
기상청 단기예보 발표 시각(매 3시간) 직후를 노린 스케줄입니다.
on:
schedule:
- cron: '15 17,20,23,2,5,8,11,14 * * *' # KST 기준 매 3시간💡 자동 실행을 끄고 싶으면 위 두 줄을
#으로 주석 처리하면 됩니다.
⚠️ 단, 구독한 캘린더 앱은 ICS URL을 자체 캐시 주기(보통 8~24시간) 에 따라 갱신합니다. 소스가 매 3시간 업데이트돼도, 클라이언트 반영은 그보다 느릴 수 있어요.
- 🌤️ 단기 D+0~3 시간별 상세 / 중기 D+4~10 일별 요약, 총 11일치 예보
- ⚡ 초단기예보(0~6시간) 자동 병합 — 가까운 시간 정확도 향상
- 🚨 기상특보 자동 연동 — 폭염·호우·한파 등 10종 경보를 별도 일정으로 표시
- 🌫️ 미세먼지 PM10·PM2.5·오존 실측 + 일별 예보 (에어코리아)
- ☀️ 자외선 지수 (오늘 최대) + 5단계 등급
- 🌸 꽃가루 위험지수 참나무·소나무·잡초 3종 통합
- 🌅 일출·일몰 + 시민·천문박명 (외출/촬영 계획용)
- 🌘 달 위상·조도 + 월출·월몰 (8단계 한글 위상)
- 🌌 은하수 중심 고도 + 관측 가능 시간대 (별 보기 좋아하는 분용)
- 🌋 지진 (규모 ≥ 3.0) — 국내·외 구분, 발생 시 자동 캘린더 이벤트
- 🌀 활성 태풍 — 한반도 영향 시 강조, 진로 예측 6개 시점 포함
- 체감 메시지 ("😊 쾌적해요" / "🥵 더워요" 등 7단계)
- 보퍼트 풍속 등급 ("잎이 흔들림" / "큰 가지 흔들림" 등 12단계)
- 16방위 풍향 ("북동에서") + 우산 추천
- 다음 비 예측, 어제와 비교
- 📱 Google·Apple·Samsung·Naver 등 표준 ICS 구독을 지원하는 모든 캘린더 앱 호환
- 🏠 한국 어느 동네든 격자좌표(NX/NY) + 구역코드만 알면 OK (가이드 페이지에 자동 계산기 내장)
- 🆓 모든 API 무료 + GitHub Free 플랜으로 완전 무료 운영
오늘 이벤트 (캘린더 일정 클릭 시 펼쳐서 보이는 정보):
SUMMARY: ☁️ 16°C/23°C 🟡🟡 ← 날짜 칸에 보이는 짧은 요약
DESCRIPTION:
📍 은계 날씨 (위경도 37.443, 126.813)
⛅ 지금 날씨: 구름많음
기온: 21°C (😊 쾌적해요)
최고 온도: 23°C / 최저 온도: 16°C
습도: 65%
바람: 2 m/s (남실바람 — 잎이 바스락거림) (북서쪽에서)
오전 날씨: ⛅ 구름많음 / 오후 날씨: ☀️ 맑음
오늘은 🌂 우산 챙기는 게 안전해요 (비올 확률 30%)
다음 비🌧 : 예보 기간 내 강수 없음
어제와 비교: 최고기온이 어제보다 1°높아요
😊 오늘 공기는 깨끗해요
미세먼지 (PM10): 25.9 ㎍/㎥ (🟢 좋음)
초미세먼지 (PM2.5): 12.7 ㎍/㎥ (🟢 좋음)
오존(O₃): 0.0 ppm (🟢 좋음)
자외선 (오늘 최대): 5.0 (🟡 보통)
꽃가루 (참나무): 🟡 보통
⛅ 내일은?
최고 24°C (☀️ 따뜻해요) / 최저 14°C (🧥 선선해요)
오전: ☁️ 흐림 / 오후: ☀️ 맑음
☀️ 오늘 해는?
🌅 일출: 오늘 05:27
🌇 일몰: 오늘 19:31
🌆 시민박명: 오늘 04:57 ~ 오늘 20:01
🌃 천문박명: 오늘 03:44 ~ 오늘 21:14
🌗 달은?
위상: 하현달 (조도 27%)
🌒 월출: 내일 02:54
🌘 월몰: 오늘 14:22
🌌 은하수 추적
🔭 지금 상황: 관측불가 — 지평선 아래 (고도 -76.2°)
달 고도: 2.1°
⏰ 오늘 밤 관측 가능 시간대: 오늘 21:14 ~ 내일 03:44
⏱ 시간별 상세
[15시] ☀️ 맑음 23°C (💧60% 🚩2m/s)
[16시] ☁️ 흐림 22°C (💧60% 🚩2m/s)
...
📊 최종 업데이트: 2026-05-12 14:07:58 (KST)
다른 이벤트들:
- D+1 ~ D+3 (단기): 시간별 상세 (기온/하늘/강수확률/습도/풍속) + 미세먼지 등급
- D+4 ~ D+10 (중기): 오전/오후 또는 종일 요약 + 강수확률 + 최저/최고 기온
- 기상특보 (있을 때만):
🚨 폭염경보 (서울)형태 별도 일정 - 지진 (규모 3.0+, 7일 이내):
🌋 국내지진 M3.2 (경주)형태 별도 일정 - 태풍 (활성 시):
🌀 태풍 KHANUN 28m/s (한반도 영향)+ 예측 진로 6개 시점
[기상청 API + 공공데이터포털] ──fetch──> [GitHub Actions: update_calendar.py]
│
▼
[weather.ics 생성]
│
──── commit/push ───→ GitHub 저장소
│
Raw URL │
▼
[내 스마트폰 캘린더 앱이 URL 구독]
처음 한 번만 세팅해 두면, 그 다음부터는 워크플로우가 ICS를 갱신 → 캘린더 앱이 알아서 동기화 하는 구조라서 손이 안 가요.
Python 3.12 + 라이브러리:
requests,pytz,icalendar— KMA/data.go.kr REST 호출 + ICS 생성astral— 일출/일몰/시민·천문박명/달 위상 계산ephem— 은하수 중심 고도, 정밀 월출/월몰
API 통합 (7종):
- 기상청 API 허브 (apihub.kma.go.kr)
- 단기예보 / 초단기예보 (
VilageFcstInfoService_2.0) - 중기예보 (
MidFcstInfoService) - 기상특보 (
wrn_now_data_new.php) - 지진 목록 (
eqk_list.php) - 태풍 정보+예측 (
typ_now.php)
- 단기예보 / 초단기예보 (
- 공공데이터포털 (apis.data.go.kr)
- 에어코리아 대기오염정보 (실측 + 일별 예보)
- 생활기상지수 V5 —
getUVIdxV5(자외선) - 꽃가루농도위험지수 V3 — 참나무·소나무·잡초 3종
인프라:
- GitHub Actions — cron(매 3시간 KST) /
repository_dispatch/workflow_dispatch - GitHub Pages — 설정 가이드 (자동 좌표·구역코드 계산기 포함)
.
├── update_calendar.py # KMA + data.go.kr → 풍부한 ICS 생성 (단일 스크립트)
├── requirements.txt # Python 의존성 명세
├── weather.ics # 생성된 캘린더 파일 (Raw URL 구독 대상)
├── .github/workflows/
│ └── update.yml # 워크플로우 정의 (매 3시간 자동 실행)
├── .gitignore
├── LICENSE # MIT
└── docs/ # GitHub Pages 설정 가이드
├── index.html # 단계별 가이드 + 자동 계산기
├── region_codes.json # 중기예보 지점 목록
├── calendar.png # 모바일 캘린더 적용 예시
├── preview-mobile.png # README 히어로 이미지
└── secret-example.png # GitHub Secrets 등록 화면 예시
이 프로젝트가 도움이 되셨다면 커피 한 잔으로 응원해주세요! 🙏
토스
|
PayPal
|
MIT License © 2026 redchupa
🙏 출처(Original Author) 이 프로젝트는 @Murianwind 님의 Murianwind/weather-calendar 를 참고하여 제작되었습니다. 원작자께 감사드립니다.

