KMA Weather Forecast Skill
Korea Meteorological Administration short-term forecast API + AirKorea air quality integration.
Overview
| Key | Value |
|---|
| Provider | KMA (Korea Meteorological Administration) |
| Service ID |
15084084 |
| Auth |
~/.config/data-go-kr/api_key |
| Endpoint |
https://apis.data.go.kr/1360000/VilageFcstInfoService_2.0 |
| Playbook |
playbook.md |
Scripts
CODEBLOCK0
Workflow
Step 1: Identify location & time
- - "서울 날씨" → Seoul Jongno-gu (nx=60, ny=127)
- "내일 날씨" → short-term forecast (short)
- "지금 비 와?" → ultra-short-term observation (ncst)
- Refer to
playbook.md for default location
Step 2: Fetch weather data
- - Current: INLINECODE4
- 6-hour: INLINECODE5
- 3-day: INLINECODE6
Step 3: Air quality integration (~~air)
- - Fetch PM data via AirKorea skill
- INLINECODE7
Step 4: Structured response using output template
Output Template
CODEBLOCK1
API Types
| API | Command | Description | Update Cycle |
|---|
| Ultra-short obs | INLINECODE8 | Current observation | Hourly |
| Ultra-short fcst |
fcst | 6hr forecast | Every 30min |
| Short-term fcst |
short | 3-day hourly | 8x/day |
Key Grid Coordinates
| Location | nx | ny |
|---|
| Seoul Jongno | 60 | 127 |
| Seoul Gangnam |
61 | 126 |
| Busan | 98 | 76 |
| Daegu | 89 | 90 |
| Incheon | 55 | 124 |
| Daejeon | 67 | 100 |
| Jeju | 52 | 38 |
Codes
Sky (SKY)
1: Clear ☀️ |
3: Mostly cloudy ⛅ |
4: Overcast ☁️
Precipitation (PTY)
0: None |
1: Rain 🌧️ |
2: Rain/Snow 🌧️❄️ |
3: Snow ❄️ |
4: Shower 🌦️
base_time Rules
| API | Release time | Queryable |
|---|
| Ultra-short obs | Every hour | +10min |
| Ultra-short fcst |
Every 30min | +10min |
| Short-term fcst | 02,05,08,11,14,17,20,23h | +10min |
Connectors
| Placeholder | Purpose | Current Tool |
|---|
| INLINECODE19 | Weather API | KMA Short-term Forecast |
| INLINECODE20 |
Air quality | AirKorea |
|
~~notify | Notification | Telegram |
Intent Router
| Intent | Trigger Examples | Strategy |
|---|
| Quick Check | "오늘 날씨 어때?", "지금 비 와?", "기온 몇 도?" | INLINECODE22 (현재 관측) + fcst (3시간 예보) → 간단 요약 |
| Daily Forecast |
"내일 비 와?", "주말 날씨", "모레 눈 올까?" |
short (단기예보 3일) → 시간대별 상세 |
| Morning Briefing | "아침 날씨 브리핑" |
morning_briefing.sh → 날씨+대기질 통합 |
Routing logic: 현재/지금 → Quick Check, 내일/모레/주말 → Daily Forecast, 브리핑 → Morning Briefing
Cross-Skill Integration
| Trigger | Target Skill | Integration |
|---|
| 날씨 응답 시 항상 | INLINECODE26 | PM2.5 수치를 날씨 응답에 포함 (Output Template 참조) |
| 미세먼지 나쁨 이상 |
airkorea-air-quality | "마스크 챙기세요" 팁 추가 |
| 비/눈 예보 시 | — | "우산 챙기세요" 자동 팁 |
Notes
- 1. Uses grid coordinate system (not lat/lon) → use INLINECODE28
- Query after release time + 10 minutes
- Short-term forecast returns large data → set sufficient INLINECODE29
Cowork architecture v2.2 — 🦞 chumjibot (2026-02-19)
🔧 Setup (공공데이터 포털 API)
- 1. data.go.kr 회원가입
- 로그인 → 마이페이지 → 일반 인증키(Decoding) 복사
- API 키 저장:
mkdir -p ~/.config/data-go-kr
echo "YOUR_API_KEY" > ~/.config/data-go-kr/api_key
- 4. 아래 서비스 활용신청 후 사용 (자동승인)
-
기상청 단기예보 (15084084)
KMA 날씨 예보 스킬
기상청 초단기예보 API + 에어코리아 대기질 통합.
개요
15084084 |
| 인증 | ~/.config/data-go-kr/api_key |
| 엔드포인트 | https://apis.data.go.kr/1360000/VilageFcstInfoService_2.0 |
| 플레이북 | playbook.md |
스크립트
scripts/
├── weather.sh → 날씨 조회 (ncst/fcst/short)
├── morning_briefing.sh → 아침 브리핑 (날씨 + 대기질)
└── grid_convert.py → 위도/경도 → 격자 좌표 변환
워크플로우
1단계: 위치 및 시간 식별
- - 서울 날씨 → 서울 종로구 (nx=60, ny=127)
- 내일 날씨 → 단기예보 (short)
- 지금 비 와? → 초단기 관측 (ncst)
- 기본 위치는 playbook.md 참조
2단계: 날씨 데이터 가져오기
- - 현재: weather.sh ncst [nx] [ny]
- 6시간: weather.sh fcst [nx] [ny]
- 3일: weather.sh short [nx] [ny]
3단계: 대기질 통합 (~~air)
- - AirKorea 스킬을 통해 미세먼지 데이터 가져오기
- skills/airkorea-air-quality/scripts/air_quality.sh [측정소]
4단계: 출력 템플릿을 사용한 구조화된 응답
출력 템플릿
markdown
🌤️ [위치] 날씨
현재
🌡️ 기온: X°C (체감 X°C)
💧 습도: X% | 🌬️ 바람: Xm/s
🌧️ 강수: [없음/비/눈]
오늘 예보
☀️ 최고 X°C / 최저 X°C
🌧️ 강수확률: X%
🌫️ 초미세먼지: [좋음/보통/나쁨/매우나쁨] (X㎍/㎥)
💡 한마디
[우산 챙기세요 / 마스크 착용 / 외출하기 좋은 날]
API 유형
| API | 명령어 | 설명 | 갱신 주기 |
|---|
| 초단기 관측 | ncst | 현재 관측값 | 매시간 |
| 초단기 예보 |
fcst | 6시간 예보 | 30분마다 |
| 단기 예보 | short | 3일 시간별 | 하루 8회 |
주요 격자 좌표
61 | 126 |
| 부산 | 98 | 76 |
| 대구 | 89 | 90 |
| 인천 | 55 | 124 |
| 대전 | 67 | 100 |
| 제주 | 52 | 38 |
코드
하늘 상태 (SKY)
1: 맑음 ☀️ | 3: 구름많음 ⛅ | 4: 흐림 ☁️
강수 형태 (PTY)
0: 없음 | 1: 비 🌧️ | 2: 비/눈 🌧️❄️ | 3: 눈 ❄️ | 4: 소나기 🌦️
base_time 규칙
| API | 발표 시간 | 조회 가능 시간 |
|---|
| 초단기 관측 | 매시간 정시 | +10분 |
| 초단기 예보 |
30분 간격 | +10분 |
| 단기 예보 | 02,05,08,11,14,17,20,23시 | +10분 |
커넥터
| 플레이스홀더 | 용도 | 현재 도구 |
|---|
| ~~weather | 날씨 API | 기상청 단기예보 |
| ~~air |
대기질 | AirKorea |
| ~~notify | 알림 | 텔레그램 |
의도 라우터
| 의도 | 트리거 예시 | 전략 |
|---|
| 빠른 확인 | 오늘 날씨 어때?, 지금 비 와?, 기온 몇 도? | ncst (현재 관측) + fcst (3시간 예보) → 간단 요약 |
| 일일 예보 |
내일 비 와?, 주말 날씨, 모레 눈 올까? | short (단기예보 3일) → 시간대별 상세 |
| 아침 브리핑 | 아침 날씨 브리핑 | morning_briefing.sh → 날씨+대기질 통합 |
라우팅 로직: 현재/지금 → 빠른 확인, 내일/모레/주말 → 일일 예보, 브리핑 → 아침 브리핑
스킬 간 통합
| 트리거 | 대상 스킬 | 통합 방식 |
|---|
| 날씨 응답 시 항상 | airkorea-air-quality | PM2.5 수치를 날씨 응답에 포함 (출력 템플릿 참조) |
| 미세먼지 나쁨 이상 |
airkorea-air-quality | 마스크 챙기세요 팁 추가 |
| 비/눈 예보 시 | — | 우산 챙기세요 자동 팁 |
참고사항
- 1. 격자 좌표계 사용 (위도/경도 아님) → grid_convert.py 사용
- 발표 시간 + 10분 후 조회
- 단기예보는 대량 데이터 반환 → 충분한 numOfRows 설정
Cowork 아키텍처 v2.2 — 🦞 춤지봇 (2026-02-19)
🔧 설정 (공공데이터 포털 API)
- 1. data.go.kr 회원가입
- 로그인 → 마이페이지 → 일반 인증키(Decoding) 복사
- API 키 저장:
bash
mkdir -p ~/.config/data-go-kr
echo YOUR
APIKEY > ~/.config/data-go-kr/api_key
- 4. 아래 서비스 활용신청 후 사용 (자동승인)
-
기상청 단기예보 (15084084)