kosis-stats
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseKOSIS Stats
KOSIS Stats
What this skill does
本Skill的功能
국가데이터처(구 통계청)가 운영하는 KOSIS(국가통계포털) Open API 로 한국 공식 통계 자료를 조회 자동화한다.
https://kosis.kr/openapi/이 스킬은 조회 전용이다. 통계 작성, 데이터 변경, 대시보드 등록, 사용자별 통계 자료 등록은 범위에 포함하지 않는다.
지원 endpoint:
- — 키워드로 통계표 검색
statisticsSearch.do - — 통계표 메타데이터 (분류·항목·단위)
statisticsData.do?method=getMeta - — 통계표 데이터 셀 조회 (기간/분류 필터)
statisticsParameterData.do - — 대용량 자료 (사전 등록한
statisticsBigData.do필요)userStatsId
通过国家数据厅(原统计厅)运营的KOSIS(国家统计门户)Open API 实现韩国官方统计资料的查询自动化。
https://kosis.kr/openapi/本Skill为查询专用,不包含统计表格制作、数据修改、仪表盘注册、用户专属统计资料注册等功能。
支持的endpoint:
- — 通过关键词搜索统计表格
statisticsSearch.do - — 查询统计表格元数据(分类、项目、单位)
statisticsData.do?method=getMeta - — 查询统计表格数据单元格(支持时间/分类筛选)
statisticsParameterData.do - — 获取大容量资料(需预先注册的
statisticsBigData.do)userStatsId
When to use
使用场景
- "1인 가구 비율 통계 찾아줘"
- "KOSIS에서 고령인구 비율 시도별 데이터 가져와"
- "DT_1IN0001 표 메타데이터 보여줘"
- "최근 5년치 소비자물가지수 KOSIS에서 뽑아줘"
- "帮我查找单人家庭比例统计"
- "从KOSIS获取各道市的高龄人口比例数据"
- "展示DT_1IN0001表格的元数据"
- "从KOSIS提取最近5年的消费者物价指数"
When not to use
非适用场景
- 실시간 시세나 거래소 데이터를 원하는 경우 (KOSIS는 공식 통계용)
- 데이터 시각화·분석·보고서 작성이 주 목적인 경우 (이 스킬은 raw 데이터 조회만)
- 통계 작성·등록·수정이 필요한 경우
- 대용량 자료를 받기 위해 사용자별 자료()를 새로 등록해야 하는 경우 (KOSIS 웹에서 직접 등록)
userStatsId
- 需要实时行情或交易所数据的情况(KOSIS仅用于官方统计)
- 以数据可视化、分析、报告撰写为主要目的的情况(本Skill仅支持原始数据查询)
- 需要制作、注册、修改统计表格的情况
- 需新注册用户专属资料()才能获取大容量资料的情况(需直接在KOSIS网页完成注册)
userStatsId
Prerequisites
前置条件
- Python 3.9+ (stdlib only, 외부 패키지 없음)
- 일반 /
search/meta:data의 KOSIS route가 있는 hosted/self-host 프록시에 접근 가능할 것k-skill-proxy - 또는
bigdata: KOSIS Open API 인증키 (무료, https://kosis.kr/openapi/ 에서 회원가입 후 활용신청)--direct
bash
python3 kosis-stats/scripts/run_kosis_stats.py --help- Python 3.9+(仅使用标准库,无需外部包)
- 常规/
search/meta操作:可访问带有KOSIS路由的data托管/自托管代理k-skill-proxy - 或
bigdata操作:需KOSIS Open API认证密钥(免费,可在https://kosis.kr/openapi/ 注册会员后申请)--direct
bash
python3 kosis-stats/scripts/run_kosis_stats.py --helpRequired environment variables
必要环境变量
- 일반 /
search/meta: 없음. 기본 hosteddata를 사용한다.https://k-skill-proxy.nomadamas.org - — self-host·별도 프록시를 쓸 때만 설정. 비우면 기본 hosted proxy를 사용한다.
KSKILL_PROXY_BASE_URL - —
KSKILL_KOSIS_API_KEY또는bigdata로 KOSIS를 직접 호출할 때만 필요하다.--direct
발급 절차와 호출 한도, 에러 코드 등 자세한 내용은 참고.
references/kosis-openapi-guide.md- 常规/
search/meta操作:无,默认使用托管代理datahttps://k-skill-proxy.nomadamas.org - — 仅在使用自托管/其他代理时设置,留空则使用默认托管代理
KSKILL_PROXY_BASE_URL - — 仅在通过
KSKILL_KOSIS_API_KEY或bigdata直接调用KOSIS时需要--direct
关于密钥申请流程、调用限制、错误代码等详细信息,请参考
references/kosis-openapi-guide.mdCredential resolution order (bigdata
또는 --direct
전용)
bigdata--direct凭证获取优先级(仅适用于bigdata
或--direct
操作)
bigdata--direct- 이미 환경변수에 있으면 그대로 사용한다.
- 에이전트가 자체 secret vault(1Password CLI, Bitwarden CLI, macOS Keychain 등)를 사용 중이면 거기서 꺼내 환경변수로 주입해도 된다.
- (기본 fallback) — plain dotenv 파일, 퍼미션
~/.config/k-skill/secrets.env.0600 - 아무것도 없으면 유저에게 물어서 2 또는 3에 저장한다.
기본 경로에 저장하는 것은 fallback일 뿐, 강제가 아니다.
일반 조회 helper는 proxy URL만 읽고, KOSIS 인증키는 proxy 서버에서만 주입한다. / 호출만 환경변수와 위 secrets 파일을 읽는다.
bigdata--directKSKILL_KOSIS_API_KEY- 已存在于环境变量中:直接使用
- Agent正在使用自有密钥库(1Password CLI、Bitwarden CLI、macOS钥匙串等):可从中提取并注入环境变量
- (默认备用方案):纯文本dotenv文件,权限需设为
~/.config/k-skill/secrets.env0600 - 无任何凭证时:询问用户并保存至上述第2或第3种方式
默认路径仅作为备用方案,并非强制要求。常规查询工具仅读取代理URL,KOSIS认证密钥仅在代理服务器注入。仅/调用会读取环境变量及上述密钥文件。
bigdata--directKSKILL_KOSIS_API_KEYInputs
输入参数
서브커맨드: , , , .
searchmetadatabigdata공통 옵션:
- : 사람용 요약
--text - : 구조화 결과 (기본값)
--json - : 인증키 없이 요청 URL/파라미터만 출력
--dry-run - : HTTP 타임아웃 초 단위 (기본 30)
--timeout N - : 기본 hosted proxy 대신 self-host/alternate proxy 사용
--proxy-base-url URL - : proxy를 우회하고
--direct로 KOSIS 직접 호출KSKILL_KOSIS_API_KEY
서브커맨드별 입력:
search--query "키워드"- (1-5000, 기본 20)
--result-count N - (페이징 시작, 기본 1)
--start-count N
meta- (기본 101=통계청)
--org-id 101 --table-id DT_1IN0001- (기본 TBL)
--meta-type TBL|ITM|OBJ
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] - (항목 ID, 기본 ALL)
--itm-id ALL - (분류 필터, 반복 가능)
--obj-l 1=ALL --obj-l 2=00
bigdata--user-stats-id <KOSIS 등록 ID>- (xls는 바이너리라 helper 미지원 — 필요 시 KOSIS 웹에서 직접 다운로드)
--format json|sdmx|csv - ,
--prd-se(선택)--new-est-prd-cnt
子命令:, , ,
searchmetadatabigdata通用选项:
- : 生成面向人类的摘要
--text - : 返回结构化结果(默认值)
--json - : 不实际发起请求,仅输出请求URL/参数(无需认证密钥)
--dry-run - : HTTP超时时间(单位:秒,默认30)
--timeout N - : 使用自托管/其他代理替代默认托管代理
--proxy-base-url URL - : 绕过代理,使用
--direct直接调用KOSISKSKILL_KOSIS_API_KEY
子命令专属输入:
search--query "关键词"- (范围1-5000,默认20)
--result-count N - (分页起始位置,默认1)
--start-count N
meta- (默认101=统计厅)
--org-id 101 --table-id DT_1IN0001- (默认TBL)
--meta-type TBL|ITM|OBJ
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] - (项目ID,默认ALL)
--itm-id ALL - (分类筛选,可重复设置)
--obj-l 1=ALL --obj-l 2=00
bigdata--user-stats-id <KOSIS注册ID>- (不支持xls格式,因其为二进制文件,如需获取请直接从KOSIS网页下载)
--format json|sdmx|csv - ,
--prd-se(可选参数)--new-est-prd-cnt
Workflow
工作流程
1. Ensure proxy access is available
1. 确保代理访问可用
일반 // 는 기본 hosted 를 사용하므로 사용자 KOSIS 키가 필요 없다. self-host를 쓰면 을 설정한다.
searchmetadatak-skill-proxyKSKILL_PROXY_BASE_URLbigdata--directKSKILL_KOSIS_API_KEY常规//操作默认使用托管,无需用户提供KOSIS密钥。使用自托管代理时需设置。
searchmetadatak-skill-proxyKSKILL_PROXY_BASE_URL仅当需要或操作时,才按照凭证获取优先级获取。不会因无密钥而转向其他统计网站或非官方渠道。
bigdata--directKSKILL_KOSIS_API_KEY2. Search for candidate tables
2. 搜索候选表格
질문을 먼저 한국어 키워드로 좁히고 로 후보 통계표를 본다.
searchbash
python3 kosis-stats/scripts/run_kosis_stats.py search --query "1인 가구" --text출력에서 를 골라 다음 단계에 사용한다.
[ORG_ID/TBL_ID]先将用户问题提炼为韩语关键词,通过命令查看候选统计表格。
searchbash
python3 kosis-stats/scripts/run_kosis_stats.py search --query "1인 가구" --text从输出中选择用于后续步骤。
[ORG_ID/TBL_ID]3. Inspect the table meta before fetching data
3. 获取数据前先查看表格元数据
데이터를 받기 전에 분류/단위/주기를 확인한다.
bash
python3 kosis-stats/scripts/run_kosis_stats.py meta --table-id DT_1JC1501 --text在获取数据前,先确认分类、单位、统计周期等信息。
bash
python3 kosis-stats/scripts/run_kosis_stats.py meta --table-id DT_1JC1501 --text4. Fetch a small bounded slice first
4. 先获取小范围数据切片
--prd-se--start--end--obj-lbash
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 만으로는 부족한 표가 많다. KOSIS가 코드 (필수요청변수값 누락 objL)을 돌려주면, 으로 ITM 안에 들어 있는 (분류 차원)와 코드를 확인한 뒤 형태로 필요한 차원을 모두 지정한다. (많은 표가 OBJ 메타는 비어 있고 분류가 ITM 안에 들어 있음.)
--obj-l 1=ALL20meta --table-id <ID> --meta-type ITM --jsonOBJ_ID--obj-l 1=<코드> --obj-l 2=<코드>40,000셀을 초과하면 KOSIS는 에러 코드 또는 을 반환한다. 기간을 좁히거나(예: 5년→1년) 분류 필터의 ALL 을 특정 코드로 바꿔(예: 서울만) 호출을 분할한다. 그래도 부족하면 사용자별 통계자료()를 등록해 서브커맨드를 사용한다.
3141--obj-l 1=11userStatsIdbigdata행정구역 코드 관례: 코드는 보통 시도가 2자리( 서울, 부산 등), 시군구가 5자리다. 응답의 필드를 확인해 원하는 단위만 후속 처리에서 필터한다.
C11126data --jsonC1通过, , , 缩小范围,先查询小数据切片。
--prd-se--start--end--obj-lbash
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不同表格所需的必填分类维度数量不同。仅使用默认的可能无法满足多数表格需求。若KOSIS返回错误码(必填请求参数objL缺失),需通过查看ITM中的(分类维度)及对应代码,然后以的形式设置所有必要维度。(多数表格的OBJ元数据为空,分类信息包含在ITM中)
--obj-l 1=ALL20meta --table-id <ID> --meta-type ITM --jsonOBJ_ID--obj-l 1=<代码> --obj-l 2=<代码>当数据量超过40,000单元格时,KOSIS会返回错误码或。此时需缩小时间范围(如从5年改为1年)或将分类筛选的ALL替换为特定代码(如仅查询首尔)拆分请求。若仍无法解决,需注册用户专属统计资料()并使用子命令。
3141--obj-l 1=11userStatsIdbigdata行政区划代码惯例:代码中,道市通常为2位(=首尔,=釜山等),市郡区为5位。可通过响应中的字段筛选所需行政区划单位。
C11126data --jsonC15. (Optional) Use bigdata for large datasets
5.(可选)使用bigdata获取大容量数据集
bigdatauserStatsIdbash
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使用需预先在KOSIS网页注册。若未注册,仅向用户提供注册指引后终止操作。
bigdatauserStatsIdbash
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 56. Cite the source
6. 标注数据源
응답을 요약할 때는 , , 기간, 단위(), 그리고 endpoint URL을 함께 적는다.
org_idtbl_idUNIT_NM在整理响应结果时,需同时标注、、时间范围、单位()及endpoint URL。
org_idtbl_idUNIT_NMDone when
完成标准
- 사용자 질문에 대응하는 통계표 ID(/
org_id)가 명확하다.tbl_id - 메타데이터를 1회 이상 조회해 분류·단위·주기를 확인했다.
- 작은 슬라이스부터 단계적으로 데이터를 받았다.
- 결과에 출처(table id, 기간, 단위, endpoint)를 명시했다.
- 한도 초과 시 분할 또는 안내로 처리했다.
bigdata
- 已明确对应用户问题的统计表格ID(/
org_id)tbl_id - 已至少查询一次元数据,确认分类、单位、统计周期
- 已逐步从数据切片开始获取数据
- 结果中已明确标注数据源(表格ID、时间范围、单位、endpoint)
- 已处理数据量超限情况(拆分请求或引导使用)
bigdata
Failure modes
故障模式
- 누락:
KSKILL_KOSIS_API_KEY또는bigdata호출에서만 발급 안내 메시지와 함께 종료(exit 1)--direct - KOSIS 에러 코드 /
10: 인증키 누락/만료 → 키 점검.11에서bigdata이 나오면11가 본인 KOSIS 계정에 등록된 것이 아닐 가능성이 크다.userStatsId - 코드 : 필수 분류 누락 →
20(또는 비어 있으면meta --meta-type OBJ) 으로 필요한 차원 수와 코드를 확인하고ITM모두 지정 후 재시도--obj-l 1=... --obj-l 2=... - 코드 : 잘못된 요청 변수 →
21/org_id/기간 형식 재확인. tblId 의심 시tbl_id로 정확한 ID 다시 찾기search - 코드 : 결과 없음 → 키워드를 더 짧게 또는 다른 표현으로 바꾸거나 기간/분류 완화. meta 호출에서 30 이 나오면 표가 해당 메타 타입을 지원하지 않는 경우이므로 다른
30시도--meta-type - 코드 /
31: 한도 초과 → 기간 좁히기, 분류 ALL 을 특정 코드로 바꾸기, 또는41사용bigdata - 코드 : 분당 1,000건 호출 한도 → 잠시 대기
40 - 코드 : KOSIS 서버 오류 → 1~2초 후 재시도
50 - 비표준 JSON: KOSIS는 따옴표 없는 키를 가끔 반환한다. helper는 자동 보정한다.
- 응답에 누락: 일부 표는 KOSIS 응답에 단위가 비어 있다. helper text 출력의
UNIT_NM라인에[summary]으로 명시되며, 단위는unit=(KOSIS 응답에 UNIT_NM 미포함)응답이나 KOSIS 웹 화면에서 별도 확인한다.meta - HTTPS 전용 (2026-03-05 이후): URL은 항상 . HTTP 요청은 차단된다.
https://
- 缺失:仅在
KSKILL_KOSIS_API_KEY或bigdata调用时,提示密钥申请指引并终止(exit 1)--direct - KOSIS错误码/
10:认证密钥缺失/过期 → 检查密钥。若11返回bigdata,大概率是11未注册到当前用户的KOSIS账户userStatsId - 错误码:必填分类缺失 → 通过
20(若为空则用meta --meta-type OBJ)确认所需维度数量及代码,设置所有ITM参数后重试--obj-l 1=... --obj-l 2=... - 错误码:请求参数错误 → 重新确认
21/org_id/时间格式。若怀疑表格ID错误,通过tbl_id重新查找准确IDsearch - 错误码:无结果 → 简化关键词或更换表述,放宽时间/分类筛选条件。若meta调用返回30,说明该表格不支持当前元数据类型,需尝试其他
30--meta-type - 错误码/
31:数据量超限 → 缩小时间范围、将分类ALL替换为特定代码,或使用41bigdata - 错误码:每分钟调用次数超过1000次限制 → 等待片刻后重试
40 - 错误码:KOSIS服务器错误 → 1~2秒后重试
50 - 非标准JSON:KOSIS偶尔会返回无引号的键,工具会自动修正
- 响应中缺失:部分表格的KOSIS响应中无单位信息,工具文本输出的
UNIT_NM行会标注[summary],需从meta响应或KOSIS网页另行确认单位unit=(KOSIS响应中未包含UNIT_NM) - 仅支持HTTPS(2026-03-05起):URL必须为,HTTP请求会被拦截
https://
회복 시나리오 예시
恢复场景示例
- 코드 20 회복: → 코드 20 →
data --table-id DT_1J22001 --prd-se M --start 202401 --end 202401으로 차원 확인 →meta --table-id DT_1J22001 --meta-type ITM --json재호출 → 성공data ... --obj-l 1=T10 --obj-l 2=0 - 코드 31 회복: → 코드 31 →
data --table-id DT_1B26001 --prd-se Y --start 2020 --end 2024 --obj-l 1=ALL --obj-l 2=ALL --obj-l 3=ALL(서울만) 재호출 → 성공... --start 2024 --end 2024 --obj-l 1=11 --obj-l 2=ALL --obj-l 3=ALL
- 错误码20恢复:→ 返回错误码20 → 通过
data --table-id DT_1J22001 --prd-se M --start 202401 --end 202401确认维度 → 执行meta --table-id DT_1J22001 --meta-type ITM --json重试 → 成功data ... --obj-l 1=T10 --obj-l 2=0 - 错误码31恢复:→ 返回错误码31 → 执行
data --table-id DT_1B26001 --prd-se Y --start 2020 --end 2024 --obj-l 1=ALL --obj-l 2=ALL --obj-l 3=ALL(仅查询首尔)重试 → 成功... --start 2024 --end 2024 --obj-l 1=11 --obj-l 2=ALL --obj-l 3=ALL
Maintainer review notes
维护者审核说明
메인테이너가 이 스킬을 검토하기 위해 KOSIS 인증키를 새로 발급받을 필요는 없다.
일반 조회는 가 KOSIS 인증키를 서버 쪽에서 주입한다. 와 만 개인 KOSIS 키가 필요하다.
k-skill-proxybigdata--direct키 없이 가능한 검증:
./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 --help- (URL/파라미터 출력만)
python3 kosis-stats/scripts/run_kosis_stats.py search --query 인구 --dry-run 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에 가 설정된 뒤 수행한다. PR에는 호출 endpoint, 파라미터, 응답 행 수 같은 비민감 요약만 남기고 인증키와 개인 조회 세부 내역은 공유하지 않는다.
KOSIS_API_KEY维护者无需重新申请KOSIS认证密钥即可审核本Skill。常规查询由在服务器端注入KOSIS认证密钥,仅和操作需要个人KOSIS密钥。
k-skill-proxybigdata--direct无需密钥即可完成的验证:
./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 --help- (仅输出URL/参数)
python3 kosis-stats/scripts/run_kosis_stats.py search --query 인구 --dry-run PYTHONPATH=kosis-stats/scripts python3 -m unittest discover -s kosis-stats/tests -p 'test_*.py' -vnpm run ci
实际直接调用测试由贡献者或已有KOSIS密钥的用户选择性执行。代理调用测试需在部署代理设置后执行。PR中仅保留调用endpoint、参数、响应行数等非敏感摘要,不得共享认证密钥及个人查询详情。
KOSIS_API_KEYSafety notes
安全注意事项
- 조회 전용 스킬이다.
- 사용자별 통계자료() 등록, 데이터 수정, KOSIS 웹 자동화는 하지 않는다.
userStatsId - 일반 조회 인증키는 proxy 서버에서만 다룬다. direct/bigdata 인증키는 환경변수 또는 로만 다룬다.
~/.config/k-skill/secrets.env - 응답 JSON에 인증키가 echo 되지 않도록 helper는 시에도 키를
--dry-run으로 대체한다.<DRY-RUN>
- 本Skill为查询专用
- 不执行用户专属统计资料()注册、数据修改、KOSIS网页自动化等操作
userStatsId - 常规查询的认证密钥仅在代理服务器处理。direct/bigdata认证密钥仅通过环境变量或处理
~/.config/k-skill/secrets.env - 为避免认证密钥在响应JSON中泄露,工具在模式下会将密钥替换为
--dry-run<DRY-RUN>