How to install sh-notice-search
npx skills add https://github.com/nomadamas/k-skill --skill sh-notice-searchFull instructions (SKILL.md)
Source of truth, from nomadamas/k-skill.
name: sh-notice-search description: 서울주택도시개발공사(SH) 공개 공고/공지 게시판에서 청약·주택 공고 목록, 상세 본문, 첨부 미리보기 메타데이터를 직접 조회한다. license: MIT metadata: category: housing locale: ko-KR phase: v1
SH Notice Search
What this skill does
서울주택도시개발공사(SH, www.i-sh.co.kr)의 공고 및 공지 공개 HTML 게시판을 직접 읽어 청약·주택 공고 목록과 상세 본문, 첨부파일 메타데이터를 JSON으로 정리한다.
- 키워드로 SH 공고/공지 목록을 검색한다.
- 공식 게시판 분류(주택임대, 주택분양, 주택매입/주거복지, 토지, 상가/공장 등)를 선택한다.
- 상세 페이지에서 본문, 담당부서, 등록일, 조회수, 실제 첨부파일명을 추출한다.
- 첨부는 아이콘 템플릿이 아니라
existFile('N')onclick이 달린 실제 첨부 앵커와downList메타데이터를 기준으로 추출한다.
청약 신청, 서류 제출, 로그인 필요한 마이페이지 조회, 결제, 알림 발송은 하지 않는다.
When to use
- "SH 행복주택 공고 찾아줘"
- "서울주택도시개발공사 매입임대 공고 보여줘"
- "SH 공고 seq 304371 상세와 첨부파일 알려줘"
- "SH 분양 공고 최신 목록 조회"
Prerequisites
- 인터넷 연결
- Node.js 18+
- 이 저장소의
sh-notice-searchnpm package 또는 동일 로직
Public access path discovered
Primary source: official SH public HTML board
- default rent list:
https://www.i-sh.co.kr/app/lay2/program/S1T294C297/www/brd/m_247/list.do?multi_itm_seq=2 - default rent detail:
https://www.i-sh.co.kr/app/lay2/program/S1T294C297/www/brd/m_247/view.do?multi_itm_seq=2&seq=<seq> - title keyword search: add
srchWord=<keyword>&srchTp=0 - content keyword search: add
srchWord=<keyword>&srchTp=1 - fixed board page size: 10 rows per page; use
pagefor pagination.
Discovery result: direct unauthenticated fetches from www.i-sh.co.kr return list/detail HTML. A live smoke on 2026-05-15 showed srchWord=행복주택 without srchTp returned the full rent board count, while srchTp=0 narrowed the result set. Therefore the client always sends srchTp when a keyword is present.
No k-skill-proxy route is used because this upstream is public and does not require an API key.
Supported category aliases
| Input aliases | Official tab |
|---|---|
rent, 임대, 주택임대 | 주택임대 (multi_itm_seq=2) |
sale, 분양, 주택분양 | 주택분양 (multi_itm_seq=1) |
purchase, 매입, 매입임대, welfare, 주거복지 | 주택매입 (multi_itm_seq=512) |
land, 토지 | 토지 |
commercial, 상가, 공장 | 상가/공장 |
compensation, 보상, 이주 | 보상/이주 |
design, 현상설계 | 현상설계 |
etc, 기타 | 기타 |
all, 전체 | 전체 |
주거복지는 SH 공고 및 공지의 공개 탭명이 아니라 사용자 친화 alias이며, 현재는 SH의 공개 주택매입 탭으로 매핑한다. 답변할 때는 이 매핑을 밝힌다.
Workflow
1. Search notices
const { searchNotices } = require("sh-notice-search")
const result = await searchNotices({
keyword: "행복주택",
category: "임대",
page: 1,
limit: 5
})
console.log(result.items)
CLI:
node packages/sh-notice-search/src/cli.js 행복주택 --category 임대 --limit 5
node packages/sh-notice-search/src/cli.js 매입임대 --category 주거복지 --status 진행
Returned list fields include:
seqtitledepartmentregistered_dateviewsis_newcategory,category_namestatus,status_basisdetail_url
2. Fetch detail
const { getNoticeDetail } = require("sh-notice-search")
const detail = await getNoticeDetail({ seq: "304371", category: "임대" })
console.log(detail.notice.content_text)
console.log(detail.notice.attachments)
CLI:
node packages/sh-notice-search/src/cli.js --seq 304371 --category 임대
Attachment fields:
filenamefile_seqfile_sizefile_typepreview_url(official SH preview/converter URL)
Direct download URLs are intentionally not returned. Hand off detail_url or preview_url to the user's browser.
3. Interpret status conservatively
The SH public board list does not expose a first-class status field like 접수중/마감. The package can filter by status, but it is a title-text classifier:
open/진행: titles with 모집공고, 입주자 모집, 신청, 접수, 공고closed/마감: titles with 마감, 계약결과, 결과, 완료, 종료announced/당첨자: titles with 당첨, 발표
When answering, disclose that status is inferred from the title unless the detailed 공고문 body states exact dates.
Done when
- Official SH list/detail URLs were queried directly from the user machine.
- Keyword searches include
srchTpsosrchWordis not ignored. - Pagination uses
pageand recognizes the fixed 10-row board page size. - Attachments are extracted from actual
existFile()anchors/downList metadata, not extension icon templates. - Public source URLs are shown, and login/application automation is avoided.
Failure modes
- SH can change board paths, table markup, JavaScript functions, or
downListstructure; parsing may become partial or fail. - IP-rate-limit, NetFunnel throttling, maintenance pages, or temporary 4xx/5xx responses can block live fetches. Do not bypass CAPTCHA/login/queue protections.
srchWordwithoutsrchTpis known to be ignored by the SH board; always sendsrchTp=0for title orsrchTp=1for content.pageSizelarger than 10 does not make SH return more rows. Usepagefor additional results.- Attachment preview URLs may require browser handoff and can be governed by SH's current direct-link/download policy.
- Status is inferred from title text because the public list lacks an explicit status column.
Notes
- Read-only lookup only.
- No proxy, no API key, no secrets.
- Do not automate 청약 신청, 로그인, 서류 제출, payment, or 마이페이지 flows.
Related skills
More from nomadamas/k-skill and the wider catalog.
ktx-booking
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.
k-skill-setup
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.
hwp
Use kordoc for agent-native HWP/HWPX document parsing, JSON extraction, diffing, form-field extraction, and Markdown→HWPX reverse conversion (read/convert only — for binary editing use rhwp-edit).
kakaotalk-mac
Search local KakaoTalk archives on Apple Silicon macOS through the katok CLI.
srt-booking
Search, reserve, inspect, and cancel SRT tickets in Korea with the SRTrain library. Use when the user asks for SRT seat availability, booking, canceling, or sold-out retry plans.
zipcode-search
Look up a Korean postcode and official English address from a known address with the official ePost integrated search page.