☀️ 기상청 날씨 달력 자동화 제작 가이드

☀️ KMA Weather Calendar — Setup Guide

이 저장소:This repo: github.com/redchupa/weather-calendar

📘 The full English setup walkthrough is in the README.en.md. Below is the original Korean guide with the auto-calculator (Step 3) and screenshots — useful even if you don't read Korean.

모바일 캘린더 적용 예시 (날짜 셀) 모바일 캘린더 적용 예시 (월 뷰)

📱 실제 폰에서 적용된 모습 — 매일 날짜 칸에 날씨 이모지 + 최저/최고 기온 📱 Actual phone view — weather emoji + min/max temp in each date cell

💚 처음이라 어렵지 않을까 걱정되시나요?

코딩 안 해도 됩니다. 마우스 클릭과 복사·붙여넣기만 할 줄 알면 누구나 할 수 있어요. 아래 6단계를 차근차근 따라가면 끝나요.

💡 가장 어려운 부분은 시크릿 9개 등록과 모바일에서 안 보일 때 동기화 설정이에요. 둘 다 이 가이드에 그림과 함께 자세히 적혀 있으니 안심하세요!

💚 Worried it's too technical?

No coding required. If you can click a mouse and copy/paste, you can do this. Just follow the 6 steps below at your own pace.

💡 The trickiest parts are registering 9 secrets correctly and the mobile sync setup. Both are covered in detail with screenshots — you'll be fine!

1 프로젝트 포크 (Fork)Fork the project

상단 이 저장소 링크 접속 후 오른쪽 상단의 [Fork] 버튼을 눌러 내 계정으로 가져옵니다.

Click the [Fork] button in the top-right of this repo to make a copy under your account.


🔄 기존 포크 사용자 업데이트 방법 🔄 Already forked? How to sync

이미 포크하신 분들은 본인 저장소 메인에서 [Sync fork][Update branch]를 누르세요. 최신 코드가 반영되어 Secrets 설정만으로 관리할 수 있게 됩니다.

If you already forked, click [Sync fork][Update branch] on your fork's main page. The latest code merges in and from then on you only need to manage Secrets.

2 API 인증키 발급 (두 곳)Get API auth keys (two providers)

📌 두 곳의 API를 사용합니다 (둘 다 무료, 별도 발급)This project uses two API providers (both free, separate keys)

🚨 흔한 함정Common gotcha: 활용신청 버튼 눌렀는데 "신청 완료" 안내가 안 뜨면, 페이지 새로고침(F5) 후 다시 [활용신청] 클릭. 양쪽 사이트 모두 해당. If no "신청 완료" confirmation appears after clicking [활용신청], refresh (F5) and click again. Happens on both sites.

🅰 KMA_API_KEY 발급issuance

1. 기상청 API 허브 가입 (이메일 + 휴대폰 본인인증만 있으면 됨, 공동인증서 불필요)sign up (email + phone verification only, no certificate needed)

2. 좌측 메뉴에서 아래 7개 서비스에 각각 활용 신청 클릭:In the left menu, apply for these 7 services:

3. 상단 [마이페이지] → [인증키 현황] 에서 API Key 값을 복사Top right [마이페이지] → [인증키 현황] — copy the API key

🅱 DATA_GO_KR_KEY 발급issuance

1. 공공데이터포털 가입sign up

2. 검색창에 아래 키워드를 입력해서 나오는 3개 API에 각각 [활용신청] 클릭:Search for these 3 APIs and click [활용신청] on each:

검색 키워드Search keyword API 이름API name 용도Purpose
에어코리아 대기오염정보 한국환경공단_에어코리아_대기오염정보 🌫️ PM10·PM2.5·O3
생활기상지수 기상청_생활기상지수 조회서비스 ☀️ 자외선UV
꽃가루 기상청_꽃가루농도위험지수 조회서비스 🌸 참나무·소나무·잡초oak/pine/weeds

3. 1~2일 내 승인되면 마이페이지 인증키 발급현황에서 일반 인증키(Encoding) 복사After 1~2 days, copy the encoded general auth key from My Page → Auth keys

💡 하나의 인증키로 위 3개 API 모두 호출 가능합니다. 꽃가루 API는 보건기상지수가 아니라 꽃가루 로 검색해야 정확히 찾을 수 있어요.One auth key works for all 3 APIs. The pollen API is found by searching 꽃가루 (not 보건기상지수).

3 내 동네 설정값 찾기Find your neighborhood's settings (auto-calculator)

① 가까운 예보 지점을 선택하세요:① Pick the nearest forecast station:

② 상세 주소(도로명)를 입력하세요:② Enter your road-name address (Korean):

다음 단계(Secrets)에서 입력할 값입니다:Use these values in the next step (Secrets):

4 GitHub Secrets 설정Configure GitHub Secrets

내 저장소 Settings → Secrets and variables → Actions → [New repository secret] 버튼을 눌러, 아래 9개 시크릿을 하나씩 모두 등록합니다.

In your forked repo, open Settings → Secrets and variables → Actions → [New repository secret] and register all 9 secrets below, one at a time.

📸 시크릿 등록 화면 (예시: DATA_GO_KR_REGION = 서울)Secret registration screen (example: DATA_GO_KR_REGION = 서울)

GitHub Secrets registration example

Name 칸에 시크릿 이름(예: DATA_GO_KR_REGION)을, Secret 칸에 값(예: 서울)을 입력한 뒤 [Add secret] 클릭.
이 과정을 9번 반복하면 끝.

Enter the secret name (e.g., DATA_GO_KR_REGION) in the Name field and the value (e.g., 서울) in Secret, then click [Add secret].
Repeat 9 times — done.

이름Name 값 / 어디서 얻나Value / Where to get
KMA_API_KEY Step 2에서 복사한 기상청 인증키KMA API key copied in Step 2
KMA_NX · KMA_NY Step 3에서 계산된 격자 좌표Grid coordinates computed in Step 3
REG_ID_LAND · REG_ID_TEMP Step 3에서 계산된 구역 코드Region codes computed in Step 3
LOCATION_NAME 달력에 표시될 동네 이름 (예: 우리집, 은계)Label shown on events (e.g., My Home)
DATA_GO_KR_KEY 공공데이터포털 일반 인증키 (Step 2B에서 발급)data.go.kr general auth key (issued in Step 2B)
DATA_GO_KR_REGION 에어코리아 예보 지역명 (Step 3에서 자동 계산됨)AirKorea region name (auto-computed in Step 3)
LIVING_AREA_NO 행정표준코드 10자리 (☀️ 자외선·🌸 꽃가루용) — 법정동코드 검색 에서 본인 시군구 입력 → 끝이 000000 으로 끝나는 시군구 단위 코드. 예: 시흥 413900000010-digit Korean administrative code (for UV/pollen) — at 법정동코드 lookup search your city → pick code ending in 000000. E.g., Siheung 4139000000
📋 자주 쓰는 시군구 행정표준코드 표 (펼치기)Common Korean district codes (click to expand)

광역시·도Metros & Provinces

서울1100000000
부산2600000000
대구2700000000
인천2800000000
광주2900000000
대전3000000000
울산3100000000
세종3600000000
강원4200000000
충북4300000000
충남4400000000
전북5200000000
전남4600000000
경북4700000000
경남4800000000
제주5000000000

경기 주요 시Major Gyeonggi cities

수원4111000000
성남4113000000
의정부4115000000
안양4117000000
평택4122000000
안산4127000000
고양4128000000
시흥4139000000
화성4159000000

서울 주요 구Major Seoul districts

종로구1111000000
강남구1168000000
송파구1171000000
마포구1144000000

위에 없으면 법정동코드 검색 에서 직접 찾으세요.For other regions, search at 법정동코드 lookup.

📍 DATA_GO_KR_REGION 가능 값valid values

아래 19개 중 본인 거주지에 해당하는 값을 정확히 입력 (오타·띄어쓰기 주의):

Enter exactly one of the 19 values below for your region (case/spacing matters):

서울 · 부산 · 대구 · 인천 · 광주 · 대전 · 울산 · 세종 · 경기북부 · 경기남부 · 강원영서 · 강원영동 · 충북 · 충남 · 전북 · 전남 · 경북 · 경남 · 제주

⚠️ 시크릿 이름은 대소문자/철자 정확히. 한 글자라도 다르면 빈 값으로 처리되어 기능이 비활성화됩니다.

⚠️ Secret names are case-sensitive. One typo and the workflow gets an empty value, disabling the feature.

💡 기상특보(🚨)는 Step 2의 "특보현황 조회" 활용신청만 마치면 추가 시크릿 없이 자동으로 표시됩니다.

💡 Weather warnings (🚨) auto-appear once you've applied for "특보현황 조회" in Step 2 — no extra secret needed.

5 자동 업데이트 활성화Enable auto-update

⚠️ 중요: GitHub Actions 활성화 (최초 1회)⚠️ Important: Enable GitHub Actions (one-time)
GitHub 정책상 Fork된 저장소는 자동 실행 기능이 꺼져 있습니다.
상단 [Actions] 탭 클릭 후 나타나는 초록색 버튼 "I understand my workflows, go ahead and enable them"을 반드시 눌러주세요!
GitHub disables Actions on forked repos by default.
Click the [Actions] tab, then the green "I understand my workflows, go ahead and enable them" button that appears.
⏳ 첫 실행 확인하기⏳ Verify the first run
활성화 후 왼쪽 목록에서 Update Weather ICS를 선택하고, Run workflow를 눌러 수동으로 한 번 실행해 보세요. After enabling, pick Update Weather ICS from the left list, then click Run workflow to test it manually.

6 캘린더 구독하기Subscribe in your calendar

워크플로우 실행이 끝났다면, 본인 레포의 weather.ics 파일에 들어가 우측 상단 [Raw] 버튼을 누른 뒤 주소창 URL을 복사하세요.

After the workflow completes, open weather.ics in your repo, click [Raw] in the top-right, and copy the URL from the address bar.

📋 Raw URL 형식

⚠️ <본인_GitHub_ID> 부분은 본인의 GitHub 사용자명으로 바꿔주세요.

⚠️ Replace <본인_GitHub_ID> with your actual GitHub username.

📌 실제 예시 보기 (이 레포 기준)📌 View real example (this repo) https://raw.githubusercontent.com/redchupa/weather-calendar/main/weather.ics

이 페이지 운영자(redchupa)의 실제 URL입니다. 본인은 fork한 후 본인 ID로 바꿔서 사용하세요.

This is the page maintainer's (redchupa) actual URL. After forking, swap in your own GitHub username.

📲 캘린더 앱별 등록 방법📲 How to subscribe in each calendar app
📱 모바일 앱에서 안 보이면?📱 Not showing on mobile?
Google 계정에 추가했는데 폰 앱에 안 보이는 경우가 흔합니다. calendar.google.com/calendar/syncselect 에 접속해 캘린더 체크 ON → 저장 → 폰 앱에서 "동기화" 토글 ON → 캘린더 목록 체크박스 ON 까지 해야 합니다. It's common for a calendar added on PC to not appear on the mobile app. Go to calendar.google.com/calendar/syncselect → check the calendar → Save → then on your phone toggle "Sync" ON → tap the checkbox in the calendar list.
⏰ 업데이트 주기 안내⏰ Update frequency

주의: 스마트폰 달력 앱(아이폰, 갤럭시 등) 자체의 동기화 주기에 따라 실제 반영은 약간 늦어질 수 있습니다.

Note: Your phone's calendar app has its own sync interval, so reflection on-device may lag a bit.

후원Sponsor

이 프로젝트가 도움이 되셨다면 커피 한 잔으로 응원해주세요! 🙏

If this project helps you, buy me a coffee! 🙏

×