원클릭으로
foresttrip-vacancy
Look up available Korean national forest recreation lodging or camping slots on foresttrip.go.kr. Use when the user asks for 숲나들e or 자연휴양림 빈 객실/빈자리 조회, not for booking.
메뉴
Look up available Korean national forest recreation lodging or camping slots on foresttrip.go.kr. Use when the user asks for 숲나들e or 자연휴양림 빈 객실/빈자리 조회, not for booking.
Use when the user asks for nearby restaurants or 근처 맛집 and wants 블루리본 picks. Always ask the user's current location first, then search official Blue Ribbon nearby restaurants via k-skill-proxy.
네이버 지도(NAVER Cloud Platform Maps) 기반 출발지→목적지 자동차 길찾기·지오코딩·역지오코딩을 k-skill-proxy 경유로 조회한다. 수동 입력 MVP, mock 기본, live opt-in.
Search, reserve, inspect, and cancel KTX or Korail tickets in Korea with the korail2 + pycryptodome Python packages. Use when the user asks for KTX seats, Korail bookings, train changes, reservation status, remaining seat numbers, car-by-car seats, or power-outlet/good-seat tips.
Kakao Local (장소 검색·주소-좌표 변환) + Kakao Mobility (자동차 길찾기) 를 k-skill-proxy 경유로 조회한다. 사용자 키 불필요.
Convert incoming Korean text into a deterministic Korean Middle Korean-style rewrite with archaic particles, endings, Hanja hints, and tone-mark flavor.
After installing the full k-skill bundle, configure and verify the shared cross-platform setup, then optionally wire update checks and GitHub starring with explicit user consent.
| name | foresttrip-vacancy |
| description | Look up available Korean national forest recreation lodging or camping slots on foresttrip.go.kr. Use when the user asks for 숲나들e or 자연휴양림 빈 객실/빈자리 조회, not for booking. |
| license | MIT |
| metadata | {"category":"travel","locale":"ko-KR","phase":"v1.5"} |
숲나들e 공식 사이트(https://foresttrip.go.kr/index.jsp)에서 자연휴양림 예약 가능 객실을 날짜 기준으로 조회 자동화한다.
이 스킬은 조회 전용 자동화이다. 예약 신청, 결제, 캡차 처리, 대기열 우회, 반복 스나이핑은 범위에 포함하지 않는다.
python3 -m pip install playwright
python3 -m playwright install chromium
python3 scripts/run_foresttrip_vacancy.py --check-deps
KSKILL_FORESTTRIP_IDKSKILL_FORESTTRIP_PASSWORDOptional:
~/.config/k-skill/secrets.env (기본 fallback) — plain dotenv 파일, 퍼미션 0600.기본 경로에 저장하는 것은 fallback일 뿐, 강제가 아니다.
Helper 자체는 KSKILL_FORESTTRIP_ID, KSKILL_FORESTTRIP_PASSWORD 환경변수만 읽는다. vault나 secrets.env 를 사용하는 경우에도 실행 전에 해당 값을 환경변수로 주입한다.
YYYYMMDD, 여러 날짜면 comma-separated YYYYMMDD,YYYYMMDD--all: 전체 자연휴양림 조회--forest-id: 특정 insttId 조회--forest-name: 공식 휴양림명 부분 일치 조회--text: 사람용 요약--json: 구조화 결과--categories 01: 숙박--categories 02: 야영/캠핑--categories 01,02: 숙박 + 야영/캠핑--week-range N: --dates 를 생략했을 때만 오늘부터 N주 범위를 조회--concurrency N: 병렬 조회 worker 수, 1-5 범위--session-cache PATH: 로그인 세션 캐시 경로 overrideKSKILL_FORESTTRIP_ID, KSKILL_FORESTTRIP_PASSWORD 가 설정되어 있는지 확인한다. 없으면 credential resolution order에 따라 확보한다.
시크릿이 없다는 이유로 대체 사이트, 캡차 우회, 비공식 예약 경로를 찾지 않는다.
python3 -m pip install playwright
python3 -m playwright install chromium
이 스킬의 helper를 통해 조회한다. Helper는 Playwright로 숲나들e에 로그인해 CSRF/cookie와 공식 휴양림 ID 목록을 얻은 뒤, 월별예약조회 JSON endpoint만 호출한다.
2026-04-29 확인 기준, 로그인 없이 월별예약조회 화면에 접근하면 401 Unauthorized가 반환되고, 조회 endpoint는 JSON 대신 안내 HTML을 반환한다. 따라서 현재 helper는 로그인 세션/CSRF 확보를 필수 전제로 둔다.
API는 srchDate 단일 일자만 요청해도 응답에 5일 윈도우를 포함할 수 있다. helper는 요청 범위(today–last_day) 밖 useDt 행을 자동 제거하므로 사용자에게는 요청한 날짜의 빈자리만 노출된다.
전체 자연휴양림에서 특정 날짜 조회:
python3 scripts/run_foresttrip_vacancy.py --all --text --dates 20260504
JSON 출력:
python3 scripts/run_foresttrip_vacancy.py --all --json --dates 20260504
캠핑/야영만 조회:
python3 scripts/run_foresttrip_vacancy.py --all --text --dates 20260504 --categories 02
특정 휴양림명으로 조회:
python3 scripts/run_foresttrip_vacancy.py --forest-name 유명산 --text --dates 20260504
응답은 아래 항목 중심으로 짧게 정리한다.
결과가 없으면 "조회 시점 기준 예약 가능 객실 없음"이라고 말한다. 실제 예약 가능 여부는 숲나들e 화면에서 재확인될 수 있음을 덧붙인다.
goodsNm에 "예비"가 포함된 객실은 운영자가 보유하는 내부용 자리로, 사용자 예약 화면에는 노출되지 않는다. helper는 이 객실들을 결과에서 자동 제외한다. 같은 (휴양림, 날짜, 객실명) 조합의 중복 행도 dedup된다.
KSKILL_FORESTTRIP_ID, KSKILL_FORESTTRIP_PASSWORD 확인python3 -m playwright install chromium--refresh-session 으로 1회 재조회useDt가 제거됐을 가능성이 높다. raw API 응답을 확인하려면 helper 로직을 우회해서 직접 호출 필요.메인테이너가 이 스킬을 검토하기 위해 숲나들e 계정을 새로 만들 필요는 없다.
계정 없이 가능한 검증:
./scripts/validate-skills.shpython3 -m py_compile foresttrip-vacancy/scripts/run_foresttrip_vacancy.pypython3 foresttrip-vacancy/scripts/run_foresttrip_vacancy.py --helppython3 foresttrip-vacancy/scripts/run_foresttrip_vacancy.py --check-depsnpm run ci실제 live smoke는 기여자 또는 이미 숲나들e 계정을 가진 사용자가 선택적으로 수행한다. PR에는 forests_scanned, fetch_failures, filter_hits 같은 비민감 요약만 남기고 계정 정보, 세션 쿠키, 개인 조회 세부 내역은 공유하지 않는다.
~/.config/k-skill/secrets.env 로만 다룬다.