Help us improve
Share bugs, ideas, or general feedback.
From k-skill
Queries Korean official statistics (population, households, prices, employment) via KOSIS Open API. Searches tables, retrieves metadata, and fetches cell-level or bulk data.
npx claudepluginhub nomadamas/k-skill --plugin k-skillHow this skill is triggered — by the user, by Claude, or both
Slash command
/k-skill:kosis-statsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
국가데이터처(구 통계청)가 운영하는 KOSIS(국가통계포털) Open API `https://kosis.kr/openapi/` 로 한국 공식 통계 자료를 조회 자동화한다.
Queries public statistical data from Data Commons (census, health, economic, environmental) via Python API v2. Supports time-series observations, knowledge graph exploration, and entity resolution.
Queries official Stats NZ data including CPI, GDP, population estimates/projections, migration, and CSV catalogue via CLI without API keys or authentication.
Finds the authoritative official source for any statistical indicator, including where to get the latest figures and what to watch for.
Share bugs, ideas, or general feedback.
국가데이터처(구 통계청)가 운영하는 KOSIS(국가통계포털) Open API https://kosis.kr/openapi/ 로 한국 공식 통계 자료를 조회 자동화한다.
이 스킬은 조회 전용이다. 통계 작성, 데이터 변경, 대시보드 등록, 사용자별 통계 자료 등록은 범위에 포함하지 않는다.
지원 endpoint:
statisticsSearch.do — 키워드로 통계표 검색statisticsData.do?method=getMeta — 통계표 메타데이터 (분류·항목·단위)statisticsParameterData.do — 통계표 데이터 셀 조회 (기간/분류 필터)statisticsBigData.do — 대용량 자료 (사전 등록한 userStatsId 필요)userStatsId)를 새로 등록해야 하는 경우 (KOSIS 웹에서 직접 등록)search/meta/data: k-skill-proxy의 KOSIS route가 있는 hosted/self-host 프록시에 접근 가능할 것bigdata 또는 --direct: KOSIS Open API 인증키 (무료, https://kosis.kr/openapi/ 에서 회원가입 후 활용신청)python3 kosis-stats/scripts/run_kosis_stats.py --help
search/meta/data: 없음. 기본 hosted https://k-skill-proxy.nomadamas.org 를 사용한다.KSKILL_PROXY_BASE_URL — self-host·별도 프록시를 쓸 때만 설정. 비우면 기본 hosted proxy를 사용한다.KSKILL_KOSIS_API_KEY — bigdata 또는 --direct로 KOSIS를 직접 호출할 때만 필요하다.발급 절차와 호출 한도, 에러 코드 등 자세한 내용은 references/kosis-openapi-guide.md 참고.
bigdata 또는 --direct 전용)~/.config/k-skill/secrets.env (기본 fallback) — plain dotenv 파일, 퍼미션 0600.기본 경로에 저장하는 것은 fallback일 뿐, 강제가 아니다.
일반 조회 helper는 proxy URL만 읽고, KOSIS 인증키는 proxy 서버에서만 주입한다. bigdata/--direct 호출만 KSKILL_KOSIS_API_KEY 환경변수와 위 secrets 파일을 읽는다.
서브커맨드: search, meta, data, bigdata.
공통 옵션:
--text: 사람용 요약--json: 구조화 결과 (기본값)--dry-run: 인증키 없이 요청 URL/파라미터만 출력--timeout N: HTTP 타임아웃 초 단위 (기본 30)--proxy-base-url URL: 기본 hosted proxy 대신 self-host/alternate proxy 사용--direct: proxy를 우회하고 KSKILL_KOSIS_API_KEY 로 KOSIS 직접 호출서브커맨드별 입력:
search
--query "키워드"--result-count N (1-5000, 기본 20)--start-count N (페이징 시작, 기본 1)meta
--org-id 101 (기본 101=통계청)--table-id DT_1IN0001--meta-type TBL|ITM|OBJ (기본 TBL)data
--org-id 101--table-id DT_1IN0001--prd-se M|Q|S|Y|F|IR (수록 주기)--start YYYY[MM|QQ|HH], --end YYYY[MM|QQ|HH]--itm-id ALL (항목 ID, 기본 ALL)--obj-l 1=ALL --obj-l 2=00 (분류 필터, 반복 가능)bigdata
--user-stats-id <KOSIS 등록 ID>--format json|sdmx|csv (xls는 바이너리라 helper 미지원 — 필요 시 KOSIS 웹에서 직접 다운로드)--prd-se, --new-est-prd-cnt (선택)일반 search/meta/data 는 기본 hosted k-skill-proxy를 사용하므로 사용자 KOSIS 키가 필요 없다. self-host를 쓰면 KSKILL_PROXY_BASE_URL을 설정한다.
bigdata 또는 --direct가 필요할 때만 KSKILL_KOSIS_API_KEY 를 credential resolution order에 따라 확보한다. 시크릿이 없다는 이유로 다른 통계 사이트나 비공식 경로를 찾지 않는다.
질문을 먼저 한국어 키워드로 좁히고 search 로 후보 통계표를 본다.
python3 kosis-stats/scripts/run_kosis_stats.py search --query "1인 가구" --text
출력에서 [ORG_ID/TBL_ID]를 골라 다음 단계에 사용한다.
데이터를 받기 전에 분류/단위/주기를 확인한다.
python3 kosis-stats/scripts/run_kosis_stats.py meta --table-id DT_1JC1501 --text
--prd-se, --start, --end, --obj-l 으로 범위를 좁혀 작은 슬라이스를 먼저 조회한다.
python3 kosis-stats/scripts/run_kosis_stats.py data \
--table-id DT_1JC1501 --prd-se Y --start 2020 --end 2022 \
--obj-l 1=ALL --json
표마다 필수 분류 차원 수가 다르다. default --obj-l 1=ALL 만으로는 부족한 표가 많다. KOSIS가 코드 20 (필수요청변수값 누락 objL)을 돌려주면, meta --table-id <ID> --meta-type ITM --json 으로 ITM 안에 들어 있는 OBJ_ID(분류 차원)와 코드를 확인한 뒤 --obj-l 1=<코드> --obj-l 2=<코드> 형태로 필요한 차원을 모두 지정한다. (많은 표가 OBJ 메타는 비어 있고 분류가 ITM 안에 들어 있음.)
40,000셀을 초과하면 KOSIS는 에러 코드 31 또는 41 을 반환한다. 기간을 좁히거나(예: 5년→1년) 분류 필터의 ALL 을 특정 코드로 바꿔(예: --obj-l 1=11 서울만) 호출을 분할한다. 그래도 부족하면 사용자별 통계자료(userStatsId)를 등록해 bigdata 서브커맨드를 사용한다.
행정구역 코드 관례: C1 코드는 보통 시도가 2자리(11 서울, 26 부산 등), 시군구가 5자리다. data --json 응답의 C1 필드를 확인해 원하는 단위만 후속 처리에서 필터한다.
bigdata 는 KOSIS 웹에서 미리 등록한 userStatsId 가 필요하다. 미등록 상태면 사용자에게 등록 안내만 하고 멈춘다.
python3 kosis-stats/scripts/run_kosis_stats.py bigdata \
--user-stats-id "openapisample/101/DT_1IN1502/2/1/20191106094026_1" \
--format json --new-est-prd-cnt 5
응답을 요약할 때는 org_id, tbl_id, 기간, 단위(UNIT_NM), 그리고 endpoint URL을 함께 적는다.
org_id/tbl_id)가 명확하다.bigdata 안내로 처리했다.KSKILL_KOSIS_API_KEY 누락: bigdata 또는 --direct 호출에서만 발급 안내 메시지와 함께 종료(exit 1)10/11: 인증키 누락/만료 → 키 점검. bigdata 에서 11 이 나오면 userStatsId 가 본인 KOSIS 계정에 등록된 것이 아닐 가능성이 크다.20: 필수 분류 누락 → meta --meta-type OBJ (또는 비어 있으면 ITM) 으로 필요한 차원 수와 코드를 확인하고 --obj-l 1=... --obj-l 2=... 모두 지정 후 재시도21: 잘못된 요청 변수 → org_id/tbl_id/기간 형식 재확인. tblId 의심 시 search 로 정확한 ID 다시 찾기30: 결과 없음 → 키워드를 더 짧게 또는 다른 표현으로 바꾸거나 기간/분류 완화. meta 호출에서 30 이 나오면 표가 해당 메타 타입을 지원하지 않는 경우이므로 다른 --meta-type 시도31/41: 한도 초과 → 기간 좁히기, 분류 ALL 을 특정 코드로 바꾸기, 또는 bigdata 사용40: 분당 1,000건 호출 한도 → 잠시 대기50: KOSIS 서버 오류 → 1~2초 후 재시도UNIT_NM 누락: 일부 표는 KOSIS 응답에 단위가 비어 있다. helper text 출력의 [summary] 라인에 unit=(KOSIS 응답에 UNIT_NM 미포함) 으로 명시되며, 단위는 meta 응답이나 KOSIS 웹 화면에서 별도 확인한다.https://. HTTP 요청은 차단된다.data --table-id DT_1J22001 --prd-se M --start 202401 --end 202401 → 코드 20 → meta --table-id DT_1J22001 --meta-type ITM --json 으로 차원 확인 → data ... --obj-l 1=T10 --obj-l 2=0 재호출 → 성공data --table-id DT_1B26001 --prd-se Y --start 2020 --end 2024 --obj-l 1=ALL --obj-l 2=ALL --obj-l 3=ALL → 코드 31 → ... --start 2024 --end 2024 --obj-l 1=11 --obj-l 2=ALL --obj-l 3=ALL (서울만) 재호출 → 성공메인테이너가 이 스킬을 검토하기 위해 KOSIS 인증키를 새로 발급받을 필요는 없다.
일반 조회는 k-skill-proxy가 KOSIS 인증키를 서버 쪽에서 주입한다. bigdata 와 --direct만 개인 KOSIS 키가 필요하다.
키 없이 가능한 검증:
./scripts/validate-skills.shpython3 -m py_compile kosis-stats/scripts/run_kosis_stats.py kosis-stats/tests/test_run_kosis_stats.pypython3 kosis-stats/scripts/run_kosis_stats.py --helppython3 kosis-stats/scripts/run_kosis_stats.py search --query 인구 --dry-run (URL/파라미터 출력만)PYTHONPATH=kosis-stats/scripts python3 -m unittest discover -s kosis-stats/tests -p 'test_*.py' -vnpm run ci실제 direct live smoke는 기여자 또는 이미 KOSIS 키가 있는 사용자가 선택적으로 수행한다. Proxy live smoke는 배포 proxy에 KOSIS_API_KEY가 설정된 뒤 수행한다. PR에는 호출 endpoint, 파라미터, 응답 행 수 같은 비민감 요약만 남기고 인증키와 개인 조회 세부 내역은 공유하지 않는다.
userStatsId) 등록, 데이터 수정, KOSIS 웹 자동화는 하지 않는다.~/.config/k-skill/secrets.env 로만 다룬다.--dry-run 시에도 키를 <DRY-RUN> 으로 대체한다.