一键导入
gov-overseas-trip-report
선관위·권익위·정보공개포털·주요 지방의회 등 검증된 공개 표면에서 공무국외출장/국외훈련 보고서·현황을 조회하고, 첨부 원문이 있으면 kordoc으로 사실·공개성·검토 신호만 구조화한다. 부정부패 판정 도구가 아니다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
선관위·권익위·정보공개포털·주요 지방의회 등 검증된 공개 표면에서 공무국외출장/국외훈련 보고서·현황을 조회하고, 첨부 원문이 있으면 kordoc으로 사실·공개성·검토 신호만 구조화한다. 부정부패 판정 도구가 아니다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
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.
Use when the user asks to search Korean theses, academic articles, research reports, journals, or university-library catalog metadata through KERIS RISS.
한국 지자체별 전기차 구매보조금 민간공고·접수·출고·출고잔여 대수와 공고 상태를 환경부 무공해차 통합누리집에서 조회한다. 사용자가 사는 지역의 전기승용·전기화물·전기승합 보조금 잔여 현황, 접수 가능 여부, 마감·소진·추경 예정, 특정 모델 기준 보조금 환산치를 물을 때 사용한다.
Search official Korean national heritage records, details, locations, and monthly heritage events from the Korea Heritage Service Open API.
Use when the user asks to look up a Korean building-register title record by address, PNU, legal-dong code, or parcel number.
Use when the user asks for Korean EV charging-station locations, charger types, or current charger status by region, station, or location text.
| name | gov-overseas-trip-report |
| description | 선관위·권익위·정보공개포털·주요 지방의회 등 검증된 공개 표면에서 공무국외출장/국외훈련 보고서·현황을 조회하고, 첨부 원문이 있으면 kordoc으로 사실·공개성·검토 신호만 구조화한다. 부정부패 판정 도구가 아니다. |
| license | MIT |
| metadata | {"category":"civic","locale":"ko-KR","phase":"v1"} |
검증된 공공 공개 표면에서 공무국외출장·국외훈련 관련 목록/상세/첨부 URL을 read-only로 조회한다. 1차 고해상도 표면은 중앙선거관리위원회 공무국외출장보고서 게시판이다. 여기에 국민권익위원회 국외출장 현황, 정보공개포털 메타검색, 대구·대전·경기·경북 의회 공개 보드, 인사혁신처·행안부 제도 안내를 같은 스킬 계약으로 묶는다. 로그인 벽 시스템(BTIS 등)은 제외한다.
첨부가 PDF/HWP/HWPX이면 기존 hwp 스킬의 kordoc 절차로 텍스트를 추출하고, 문서에서 확인되는 범위만 facts / arithmetic / disclosure / reviewSignals 로 분리한다. 세금낭비·부정·위법 여부를 단정하지 않는다.
지원 provider 9개(2026-07-14 live 검증):
| id | 기관 | 표면 | list | 첨부 원문 |
|---|---|---|---|---|
nec | 중앙선거관리위원회 | 공무국외출장보고서 보드 | yes | |
acrc | 국민권익위원회 | 국외출장 현황 사전정보공개 | yes | HWPX |
open_portal | 정보공개포털 | 다기관 문서 메타검색 | yes | rarely direct |
daegu_council | 대구광역시의회 | 공무국외출장 보드 | yes | |
daejeon_council | 대전광역시의회 | 계획·결과 보고서 보드 | yes | mixed |
gyeonggi_council | 경기도의회 | 국외훈련결과보고서 | yes | file uuid |
gyeongbuk_council | 경상북도의회 | 공지 중 출장계획 공개 | yes | hwp/pdf |
mpm | 인사혁신처 | 공무국외출장 제도 안내 | no | policy |
mois | 행정안전부 | 위법 출장 처리기준 예규 | no | policy file |
표에 없는 기관은 unsupported institution으로 보고하고, open_portal 키워드 검색 또는 정보공개청구 경로만 안내한다. 추측으로 새 도메인을 크롤하지 않는다.
우선 저장소 helper를 사용한다.
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py providers
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py list --provider nec --max-pages 5
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py list --provider acrc --max-pages 2
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py list --provider open_portal --keyword 국외출장
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py list --provider daegu_council
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py list --provider daejeon_council
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py list --provider gyeonggi_council
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py list --provider gyeongbuk_council --keyword 국외출장
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py detail --provider nec --id 303199
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py search --keyword 몰디브 --providers nec,acrc,open_portal,daejeon_council
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py discover --keyword 국외출장
python3 gov-overseas-trip-report/scripts/gov_overseas_trip_report.py discover --keyword 공무국외출장 --urls https://www.ptcouncil.go.kr/,https://council.chungnam.go.kr/
https://www.nec.go.kr/site/nec/ex/bbs/List.do?cbIdx=1107&pageIndex=<n>pageIndex 는 실패한다. curl -X POST ... --data 'pageIndex=2&bcIdx=&mode=' 는 오류가 발생했습니다. 페이지를 반환한다. 성공 경로로 쓰지 말 것.https://www.nec.go.kr/site/nec/ex/bbs/View.do?cbIdx=1107&bcIdx=<id>https://www.nec.go.kr/common/board/Download.do?bcIdx=<id>&cbIdx=1107&streFileNm=<file>& → &)를 풀어 절대 URL로 정규화한 뒤 다운로드한다.https://www.acrc.go.kr/board.es?mid=a10502060000&bid=1000&nPage=<n>act=view&list_no=<id>https://www.acrc.go.kr/boardDownload.es?bid=1000&list_no=<id>&seq=1https://www.open.go.kr/othicInfo/infoList/infoList.do?mustKeyword=<keyword>var result = {...} JSON(rtnList)을 파싱한다. 다수 교육청·지자체 문서 메타.https://council.daegu.go.kr/kr/bbs?bbs_id=overseas&page=<n> (단따옴표 href)https://council.daejeon.go.kr/svc/inf/TrainingReportList.do?pageNo=<n>https://www.ggc.go.kr/site/main/board/training_resrep/listhttps://council.gb.go.kr/kr/bbs?bbs_id=notice 제목에 출장 포함 글만에이전트는 대략 이런 제목/필드가 나온다고 기대하면 된다. (2026-07-14/15 live)
acrc 목록: 2026 유엔반부패협약 일본 2주기 점검 관련 국가방문회의 참석, 세계옴부즈만협회(IOI)..., OECD 글로벌반부패청렴포럼... 등. 상세에 HWPX 계획/결과 첨부.daegu_council 목록: 2025년도 교육위원회 공무국외출장 결과보고서, 기획행정위원회..., 일본 히로시마..., 몽골 울란바토르.... 상세 본문에 출장기간/국가, PDF 첨부.daejeon_council 목록: 2025년 ... 일본/베트남/시애틀·밴쿠버/몽골 결과보고서, 심사위 회의록. 상세 flSn 파일 다운로드.gyeonggi_council: 국외훈련결과보고서 보드(예: 지방의회 조직 구성 연구). 첨부 uuid 다운로드.gyeongbuk_council: 공지성 공무국외출장 계획서 공개 및 의견수렴 글 + 계획서 첨부.open_portal: 교육청/지자체 문서 메타 다수(제목·기관·일자). 원문 deep-link는 제한적일 수 있음.nec: 전체 62건 전수 보고서 + PDF.표에 없는 기관이라도 공개 표면이면 아래 순서로 능동 탐색한다. 로그인 벽이면 즉시 제외.
discover --keyword "<기관명|국외출장|공무국외출장>" 실행open_portal histogram의 PROC_INSTT_NM 으로 실제 보유 기관을 본다*.go.kr)에서 메뉴/검색어: 공무국외출장, 출장결과, 국외연수, 사전정보공표, 정보공개--urls 로 재probe → public_board_candidate 만 채택login_walled 로 보고하고 중단금지:
provider / 기관명: 위 표 id 또는 기관 한글명keyword, country, period: 선택 필터page / max_pages: 목록 페이지unsupported institution + open_portal 검색 제안.list/detail/search 를 먼저 실행한다.pageIndex 로만 순회한다. POST pageIndex 금지.hwp 스킬의 kordoc 절차를 사용한다. PDF 처리를 위해 pdfjs-dist를 함께 지정한다.npx --yes --package kordoc --package pdfjs-dist kordoc /tmp/report.pdf --format json
kordoc 결과에서 제목, 국가, 기간, 목적, 일정, 출장자, 요약을 문서 근거가 있는 범위에서만 구조화한다.arithmetic, disclosure, reviewSignals, recommendedDisclosureRequests, safeStatements를 생성한다. 원문에 있는 값만 사용하고 시장가 조회를 하지 않는다.직접 HTTP와 브라우저 표면을 구분한다. 다음 경우는 차단으로 단정하지 말고 http timeout or partial response로 보고한 뒤 k-skill-browser-runtime 또는 Aside Browser로 전환한다.
Aside Browser fallback 절차:
https://www.nec.go.kr/site/nec/ex/bbs/List.do?cbIdx=1107을 연다.a[href*="View.do"][href*="cbIdx=1107"]에서 bcIdx를 추출하고 절대 URL로 정규화한다.a[href*="Download.do"][href*="cbIdx=1107"]에서 bcIdx, streFileNm, 파일명을 추출하고 절대 URL로 정규화한다.span.date를 사용하고, 없으면 같은 행 또는 같은 목록 item의 날짜 텍스트만 사용한다.pageIndex 값을 1씩 증가시키거나 페이지네이션 링크를 클릭한다.bcIdx가 0개이거나, 이미 본 bcIdx만 나오거나, 페이지네이션 다음 링크가 없거나, 5페이지를 모두 확인한 경우다.facts.detailUrl과 facts.attachments[].url에 같은 공식 URL 형태로 기록한다.HTTP timeout과 partial response는 blocked or login page가 아니다. 로그인 폼, CAPTCHA, 대기/점검 문구, 빈 문서, 또는 공식 경로 밖 리다이렉트가 확인될 때만 차단/점검 실패로 보고한다.
우선 일회성 npx 명령을 시도한다. 깨끗한 npm 격리 환경에서 아래 명령이 PDF 파싱에 pdfjs-dist가 필요합니다로 실패하면, 새 파서를 만들지 말고 임시 로컬 프로젝트에 두 패키지를 같이 설치한 뒤 그 프로젝트의 bin을 사용한다.
mkdir -p /tmp/kordoc-run
cd /tmp/kordoc-run
npm init -y
npm install kordoc pdfjs-dist
npx kordoc /tmp/report.pdf --format json
이 fallback도 실패하면 kordoc unavailable 또는 parse failed로 보고하고, 원문 URL과 수동 확인 절차를 안내한다. 원본 보고서 파일과 임시 프로젝트는 작업 후 삭제 대상이며 레포에 저장하지 않는다.
이 스킬은 위험도 점수나 낭비 여부 등급 같은 종합 판정 필드를 만들지 않는다. 결과는 확실성이 높은 순서대로 facts, arithmetic, disclosure, reviewSignals 네 층으로 분리한다.
원문에서 직접 확인한 제목, 기관, 국가, 기간, 출장자, 목적, 일정, 게시일, 상세 URL, 첨부 URL만 기록한다. 원문에 없는 값은 추정하지 않는다.
원문에서 필요한 값이 모두 확인될 때만 산술 필드를 채운다.
tripDays: 출장 시작일과 종료일이 확인될 때 산출한다.officialScheduleDays: 주요일정 표에서 공식 방문·면담·참관·회의가 있는 날짜만 센다. 이동, 휴식, 만찬만 있는 날은 포함하지 않는다. 표 구조가 불명확하면 null로 둔다.perPersonCost: 총액과 출장자 수가 모두 원문에서 확인될 때만 총액 / 출장자 수로 산출한다.registrationDelayDays: 출장 종료일 다음날부터 선관위 공개 게시일까지의 일수다. 실제 BTIS 등록일이 아니므로 registrationDelayBasis에 이 한계를 적는다.registrationReferenceDays: 인사혁신처 기준의 귀국 후 30일 이내 보고서 제출과 제출 후 15일 이내 등록을 합친 참고 기준 45를 둔다.registrationDelayStatus: 기준 내, 기준 초과(공개 게시일 기준), 계산 불가 중 하나로 산술 결정한다.공개 충분성은 핵심 항목 중 확인 가능한 개수로만 정한다. disclosureLevel은 충분 공개, 일부 미공개, 대부분 미공개 중 하나다.
핵심 항목 10개:
목적기간출장국·방문기관출장자주요일정예산·집행액산출내역출장자별 역할결과 활용계획사전심사·사후심의 자료결정 규칙:
충분 공개일부 미공개대부분 미공개transparencyGapCount는 미기재 핵심 항목 개수다. 미기재 항목은 unstated에 넣고, 각 항목에는 field, checkedScope, basis를 적는다. 미기재 기반 신호는 matched로 세지 않는다.
reviewSignals는 원문 발췌가 있는 내용 기반 검토 신호만 담는다. 키워드만으로 매칭하지 않는다.
기본 내용 패턴:
high_cost_or_seat_upgrade: 비즈니스석, 1등석, 프리미엄 이코노미, 이코노미 컴포트, 고액 숙박·차량·통역 표현tourism_or_private_itinerary: 일정표 또는 결과 활동에 관광지, 자유일정, 쇼핑, 문화탐방, 박물관·성당·리조트 방문이 나오고 공무 관련성이 설명되지 않는 경우third_party_or_interest: 외부 기관·단체·개인 비용부담, 이해관계자 동행, 상호초청 정황cancellation_penalty_or_fee: 취소수수료, 위약금, 예약 취소 비용 등 비용 리스크. 여행사 위탁 자체는 매칭하지 않는다.plan_report_change_terms: 계획 변경, 일정 변경, 방문기관 변경 등 계획 대비 이행 확인이 필요한 표현unexplained_large_group: 출장자 10명 이상이고 개인별 역할이 원문에서 확인되지 않는 경우matched 항목은 반드시 quote, quoteLocation, basis, sourcePattern을 포함한다. 원문 발췌 없이 matched에 넣지 않는다. 확인한 기본 패턴 6개는 각각 matched, cleared, contextFlags, notAssessable 중 하나의 상태를 가져야 한다. cleared는 위 기본 패턴의 id에 대해서만 쓰며, checkedScope와 basis를 포함한다. contextFlags는 해변·바다·리조트처럼 단어는 보이지만 국가 개황, 선거운동 방식 설명, 배경자료 섹션에 있어 자동 매칭하면 위험한 경우에만 쓴다.
단건 공개 보고서에서 확인할 수 없는 항목은 notAssessable에 넣는다. 예: 항공료 위·변조, 허위청구, 경비 부풀리기는 보고서 자체가 보통 자인하지 않으므로 v1의 매칭 패턴이 아니다. 같은 목적·같은 지역 반복 출장은 전체 게시판 정규화 스캔이 별도 실행된 경우에만 다룬다.
disclosure.unstated에서 기계적으로 정보공개청구 추천 문서를 만든다. 단정적 표현을 쓰지 말고 "공개 보고서에서 확인되지 않음"을 이유로 둔다.
safeStatements는 자유 생성 문장이 아니라 템플릿으로 만든다.
공개 보고서만으로는 <field>를 확인하기 어렵다.<field> 확인을 위해 <document> 공개 여부 확인이 필요하다.<number>는 공개 게시일 기준 산술값이며 실제 BTIS 등록일과 다를 수 있다.{
"source": "중앙선거관리위원회 공무국외출장보고서 게시판",
"sourceUrl": "https://www.nec.go.kr/site/nec/ex/bbs/List.do?cbIdx=1107",
"facts": {
"title": "선거기관의 역할 및 대응사례 연구 등 국외출장보고서(오스트리아, 크로아티아)",
"publishedAt": "2026-03-13",
"detailUrl": "https://www.nec.go.kr/site/nec/ex/bbs/View.do?cbIdx=1107&bcIdx=303199",
"institution": "중앙선거관리위원회",
"country": "오스트리아, 크로아티아",
"period": "2025. 11. 22.(토) ~ 11. 30.(일) [7박 9일]",
"purpose": "유럽 각국 선거관리위원회의 역할, 권한, 위법행위 규제 및 대응사례를 비교 연구하고 정책 개선 참고자료로 활용하기 위한 출장",
"summary": "오스트리아와 크로아티아의 선거관리기관 및 시민단체 방문·면담 내용을 바탕으로 선거 공정성 확보, 정치자금 투명성, 허위정보 대응 관련 시사점을 정리한 보고서입니다.",
"attachments": [
{
"title": "선거기관의역할및대응사례_연구_등_국외출장보고서(오스트리아_크로아티아).pdf",
"url": "https://www.nec.go.kr/common/board/Download.do?bcIdx=303199&cbIdx=1107&streFileNm=a148c7c6-e1e8-4e8b-85ab-f3d27ec74b1d.pdf",
"type": "pdf"
}
]
},
"arithmetic": {
"tripDays": 9,
"officialScheduleDays": null,
"perPersonCost": null,
"registrationDelayDays": 103,
"registrationReferenceDays": 45,
"registrationDelayStatus": "기준 초과(공개 게시일 기준)",
"registrationDelayBasis": "출장 종료일 다음날부터 선관위 공개 게시일까지의 일수입니다. 실제 BTIS 등록일이 아니므로 참고값입니다."
},
"disclosure": {
"disclosureLevel": "일부 미공개",
"checkedFieldCount": 10,
"transparencyGapCount": 5,
"stated": [
"목적",
"기간",
"출장국·방문기관",
"출장자",
"주요일정"
],
"unstated": [
{
"field": "예산·집행액",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "예산, 실제 집행액, 출장비 총액을 확인하지 못했습니다."
},
{
"field": "산출내역",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "항공권, 숙박비, 일비 등 비용 산출내역을 확인하지 못했습니다."
},
{
"field": "출장자별 역할",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "출장자 명단은 있으나 개인별 역할 분장은 확인하지 못했습니다."
},
{
"field": "결과 활용계획",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "정책 반영 또는 제도 개선 활용계획은 별도 항목으로 확인하지 못했습니다."
},
{
"field": "사전심사·사후심의 자료",
"checkedScope": "게시글 상세와 첨부 보고서",
"basis": "사전심사자료와 사후심의 결과는 공개 문서에서 확인하지 못했습니다."
}
]
},
"reviewSignals": {
"reviewSignalCount": 0,
"checkedPatternCount": 6,
"matched": [],
"cleared": [
{
"id": "high_cost_or_seat_upgrade",
"label": "고비용 좌석 표현 미확인",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "비즈니스석, 1등석, 프리미엄 이코노미, 이코노미 컴포트 표현을 확인하지 못했습니다."
},
{
"id": "tourism_or_private_itinerary",
"label": "관광·사적 일정 표현 미확인",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "공무 관련성 설명 없이 관광지, 자유일정, 쇼핑, 문화탐방, 리조트 방문으로 표시된 일정을 확인하지 못했습니다."
},
{
"id": "third_party_or_interest",
"label": "외부부담·이해관계 표현 미확인",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "외부 기관·단체·개인 비용부담, 이해관계자 동행, 상호초청 표현을 확인하지 못했습니다."
},
{
"id": "cancellation_penalty_or_fee",
"label": "취소수수료·위약금 표현 미확인",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "취소수수료, 위약금, 예약 취소 비용 표현을 확인하지 못했습니다."
},
{
"id": "plan_report_change_terms",
"label": "계획 대비 변경 표현 미확인",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "계획 변경, 일정 변경, 방문기관 변경 표현을 확인하지 못했습니다."
},
{
"id": "unexplained_large_group",
"label": "설명 없는 대규모 인원 표현 미확인",
"checkedScope": "kordoc 추출 Markdown 전체",
"basis": "출장자 10명 이상 또는 개인별 역할 없이 대규모 인원이 표시된 정황을 확인하지 못했습니다."
}
],
"contextFlags": [],
"notAssessable": [
{
"id": "expense_forgery_or_inflation_terms",
"reason": "공개 결과보고서 자체에서 항공료 위·변조나 허위청구 여부를 확인하기 어렵습니다. 권익위 점검 결과 등 외부 감사자료 대조가 필요한 확장 항목입니다."
},
{
"id": "repeated_destination_or_same_purpose",
"reason": "단건 보고서 요약에서는 반복 출장을 판단하지 않습니다. 전체 게시판 제목·국가·목적 정규화 스캔이 별도 실행되어야 합니다."
}
],
"notAdjudication": "검토 신호는 원문 인용 기반 확인 항목입니다. 세금낭비, 위법, 부적정 집행 여부를 확정하지 않습니다."
},
"recommendedDisclosureRequests": [
{
"document": "출장계획서 및 사전심사자료",
"reason": "사전심사자료가 공개 문서에서 확인되지 않습니다.",
"targetOrg": "중앙선거관리위원회"
},
{
"document": "항공권·숙박비·일비 등 출장비 산출내역",
"reason": "예산, 집행액, 비용 산출내역이 공개 보고서에서 확인되지 않습니다.",
"targetOrg": "중앙선거관리위원회"
}
],
"safeStatements": [
"공개 보고서만으로는 예산·집행액과 산출내역을 확인하기 어렵다.",
"registrationDelayDays는 공개 게시일 기준 산술값이며 실제 BTIS 등록일과 다를 수 있다."
],
"notes": [
"이 결과는 공식 공개 문서를 기준으로 한 참고용 요약입니다.",
"문서에 없는 정보는 추정하지 않았습니다.",
"중요한 판단은 반드시 공식 원문을 직접 확인해야 합니다."
]
}
facts, arithmetic, disclosure, reviewSignals, recommendedDisclosureRequests, safeStatements는 핵심 필드다. 일정, 예산, 동행자 정보가 구조적으로 없을 수 있으므로 없다고 단정하지 말고 문서에서 확인 불가 또는 기재되어 있지 않음으로 표현한다.
사용 금지 표현:
사용 권장 표현:
unsupported institution: provider 표에 없는 기관 요청empty response: 목록/상세 페이지가 비어 있음http timeout or partial response: 직접 HTTP가 일부 응답 후 끝나지 않음. 차단으로 단정하지 말고 Aside Browser fallback을 시도blocked or login page: 차단, 점검, 로그인/대기 페이지로 보임unexpected HTML: 제목, 날짜, 상세 URL, 첨부 URL 선택자가 바뀜attachment type unsupported: PDF/HWP/HWPX가 아닌 첨부라 원문 URL과 수동 확인 절차만 반환kordoc unavailable: 로컬에서 kordoc 실행 불가. 새 파서를 만들지 말고 원문 URL과 수동 확인 절차를 안내parse failed: PDF/HWP/HWPX가 손상, 암호화, 스캔 이미지, 또는 kordoc 미지원 구조scanned or low text quality: PDF가 이미지 기반이거나 kordoc 품질 경고가 높아 자동 추출 신뢰도가 낮음hwp|hwpx|pdf|unknown 중 하나로 표시했다.hwp 스킬의 kordoc 절차를 시도하고 문서 근거가 있는 범위만 구조화하거나 실패 모드를 보고했다.