Naver Real Estate Search
by @twbeatles
Search, compare, and monitor 대한민국 property listings from 네이버 부동산 with natural-language queries. Use when the user wants 강남 아파트 전세 시세 찾기, 특정 지역 매매/전세/월세 비교, 조...
clawhub install naver-real-estate-search📖 About This Skill
name: naver-real-estate-search description: Search, compare, and monitor 대한민국 property listings from 네이버 부동산 with natural-language queries. Use when the user wants 강남 아파트 전세 시세 찾기, 특정 지역 매매/전세/월세 비교, 조건에 맞는 매물 리스트 정리, 단지 후보 찾기, 여러 단지 비교 리포트, 자연어 채팅형 부동산 브리핑, or 목표가/새 매물/가격하락 감시 초안. Supports Korean property tasks such as apartment/빌라 listing summaries, 지역명/단지명 기반 단지 후보 탐색, same-area comparison, candidate seed/candidate cache workflows, and stdout/JSON results that can be connected to Telegram or higher-level briefings. Prefer direct 단지 URL or complex ID first when rate-limited; otherwise use the natural-language wrapper and narrow to 1~3 candidate complexes before broad scans.
Naver Real Estate Search
네이버 부동산 기반의 대한민국 부동산 매물 검색 / 단지 후보 탐색 / 단지 비교 / 채팅형 브리핑 / 가격 감시 스킬이다.
핵심 원칙:
Source dependency
이 스킬은 로컬 upstream clone을 래핑한다.
tmp/naverland-scrapper재사용하는 주요 로직:
src.core.parser.NaverURLParsersrc.core.services.response_capture.normalize_article_payloadsrc.utils.helpers.PriceConvertersrc.utils.helpers.get_article_urlScripts
1) 핵심 검색 엔진
python skills/naver-real-estate-search/scripts/search_real_estate.py --self-test
역할:
1-1) candidate seed 자동 생성
python skills/naver-real-estate-search/scripts/build_candidate_seeds.py --print-summary
python skills/naver-real-estate-search/scripts/build_candidate_seeds.py --input skills/naver-real-estate-search/references/seoul-major-complexes.seed-input.json --output skills/naver-real-estate-search/references/candidate-seeds.generated.json --pause 0.1 --print-summary
역할:
candidate-seeds.json / candidate-cache.json / 네이버 검색 HTML 링크 추출을 조합해 candidate seed 초안 생성confidence / verification_status 부여blocked_reasons, candidate_pool, evidence에 흔적을 남겨 운영자가 후속 검증 가능하게 함1-2) generated seed preview / apply
python skills/naver-real-estate-search/scripts/apply_generated_seeds.py --json
python skills/naver-real-estate-search/scripts/apply_generated_seeds.py --only-names "리센츠,은마" --json
python skills/naver-real-estate-search/scripts/apply_generated_seeds.py --apply-target --apply-cache --json
역할:
candidate-seeds.generated.json의 results[]를 읽어 운영 승격 가능 항목과 수동 검수 큐를 분리--apply-target일 때만 references/candidate-seeds.json을 갱신--apply-cache를 함께 쓰면 accepted 항목만 data/candidate-cache.json에 warm-cacheverified/weak-verified + complex_id + confidence 기준으로 승격 후보를 고르고, 나머지는 manual_review_queue에 정리--only-names / --exclude-names로 일부 단지만 골라 검수 가능2) 채팅형 브리핑 래퍼
python skills/naver-real-estate-search/scripts/chat_real_estate.py --query "잠실 리센츠 전세 30평대"
역할:
3) 가격 감시 / 새 매물 감지
python skills/naver-real-estate-search/scripts/watch_real_estate.py add --name "리센츠 전세 30평대" --query "잠실 리센츠 전세 30평대" --target-max-price 950000000 --notify-on-new --notify-on-price-drop
python skills/naver-real-estate-search/scripts/watch_real_estate.py check --preview
python skills/naver-real-estate-search/scripts/watch_real_estate.py check --json
역할:
last_seen / events / dedupe 기반의 실사용형 감시 초안 제공저장 파일:
skills/naver-real-estate-search/data/watch-rules.jsonskills/naver-real-estate-search/data/candidate-cache.jsonskills/naver-real-estate-search/references/candidate-seeds.jsonQuick start
1) self-test
python skills/naver-real-estate-search/scripts/search_real_estate.py --self-test
2) 자연어 파싱만 확인
python skills/naver-real-estate-search/scripts/search_real_estate.py --query "잠실 리센츠랑 엘스 전세 비교 30평대" --parse-only
3) 후보 단지만 찾기
python skills/naver-real-estate-search/scripts/search_real_estate.py --query "서울 양천구 신월동 신월시영아파트 전세" --list-candidates --json
4) 채팅형 후보 리스트
python skills/naver-real-estate-search/scripts/chat_real_estate.py --query "대치 은마 전세" --list-candidates
4-1) candidate-cache seed / alias 학습
python skills/naver-real-estate-search/scripts/search_real_estate.py --seed-candidate-file
python skills/naver-real-estate-search/scripts/apply_generated_seeds.py --apply-target --apply-cache --json
python skills/naver-real-estate-search/scripts/search_real_estate.py --seed-candidate --complex-id 1147 --candidate-name "리센츠" --candidate-address "서울특별시 송파구 잠실동" --candidate-aliases "잠실 리센츠,잠실리센츠"
python skills/naver-real-estate-search/scripts/search_real_estate.py --show-cache --query "리센츠"
권장 순서:
1. build_candidate_seeds.py로 generated 초안을 만든다.
2. apply_generated_seeds.py로 preview해서 accepted / manual review를 확인한다.
3. 문제가 없을 때만 --apply-target --apply-cache를 실행한다.
4. direct URL/ID를 확보한 단지는 --seed-candidate로 수동 보강한다.
반복 조회가 필요한 실존 단지나 alias가 자주 흔들리는 단지(예: 신월시영아파트, 답십리두산위브)는 먼저 cache에 학습시켜 둔다. 아직 complex ID를 확보하지 못한 경우에도 manual_review_queue와 seed-input에 남겨 두면 후보 힌트 fallback에 활용된다.
5) 단일 단지 조회
python skills/naver-real-estate-search/scripts/search_real_estate.py --complex-id 1147 --trade-types 전세 --limit 10
6) direct URL로 조회
python skills/naver-real-estate-search/scripts/search_real_estate.py --url "https://new.land.naver.com/complexes/1147" --trade-types 매매,전세 --json
7) 자연어 한 줄 브리핑
python skills/naver-real-estate-search/scripts/chat_real_estate.py --query "잠실 리센츠 전세 30평대" --limit 8
8) 여러 단지 비교 브리핑
python skills/naver-real-estate-search/scripts/chat_real_estate.py --query "잠실 리센츠와 잠실 엘스 전세 비교 30평대" --compare --candidate-limit 2
Recommended workflow
1. 사용자가 특정 단지 URL/ID를 주면 그 값을 우선 사용한다.
2. URL/ID가 없으면 chat_real_estate.py --query ... 로 먼저 자연어 브리핑을 시도한다.
3. 질의가 넓거나 모호하면 --list-candidates 로 후보를 1~3개만 보여준다.
4. 후보가 좁혀지면 단일 단지 조회 또는 --compare 로 비교한다.
5. 구조화 데이터가 필요하면 같은 조건으로 search_real_estate.py --json 을 다시 호출한다.
6. 반복 확인이 필요하면 watch_real_estate.py add/check 흐름으로 가격 감시를 연결한다.
Candidate-search guidance
현재 후보 탐색은 다음 순서로 동작한다.
1. direct complex ID / URL 우선 추출
2. 자연어에서 비교 대상 / 위치 힌트 / 거래유형 / 평형대 분리
3. 로컬 candidate cache(alias → complex_id) exact/contains 매칭
4. 캐시에 없으면 네이버 검색 결과 HTML에서 후보 complex ID 수집
5. 가능하면 단지 상세 API로 이름/주소/세대수 보강 후 캐시에 적재
6. 그래도 후보가 비면 candidate-seeds.json의 manual_review_queue + seoul-major-complexes.seed-input.json를 fallback reference로 조회해 힌트 후보를 반환
7. 이름 정규화 / alias 일치 / 지역 힌트 / 질의 토큰 / 세대수 신뢰도 기준으로 점수화
8. 점수 상위 후보만 반환
신월시영아파트 ↔ 신월시영 같은 축약/별칭 차이를 줄이기 위해 공백 제거 + suffix 제거 + alias 확장을 같이 사용한다.
Output guidance
단일 단지
여러 단지 비교
가격 감시
alerts, snapshot, events, message_preview, summary 계층 활용watch_real_estate.py check --preview 결과를 바로 붙이고, 구조화 후처리가 필요하면 --json을 사용References
세부 설계/429 운영 지침/감시 schema/seed 예시는 다음 파일을 참고한다.
references/design.mdreferences/candidate-seeds.jsonreferences/seoul-major-complexes.seed-input.jsonreferences/candidate-seeds.generated.jsonreferences/candidate-seed-builder.md💡 Examples
1) self-test
python skills/naver-real-estate-search/scripts/search_real_estate.py --self-test
2) 자연어 파싱만 확인
python skills/naver-real-estate-search/scripts/search_real_estate.py --query "잠실 리센츠랑 엘스 전세 비교 30평대" --parse-only
3) 후보 단지만 찾기
python skills/naver-real-estate-search/scripts/search_real_estate.py --query "서울 양천구 신월동 신월시영아파트 전세" --list-candidates --json
4) 채팅형 후보 리스트
python skills/naver-real-estate-search/scripts/chat_real_estate.py --query "대치 은마 전세" --list-candidates
4-1) candidate-cache seed / alias 학습
python skills/naver-real-estate-search/scripts/search_real_estate.py --seed-candidate-file
python skills/naver-real-estate-search/scripts/apply_generated_seeds.py --apply-target --apply-cache --json
python skills/naver-real-estate-search/scripts/search_real_estate.py --seed-candidate --complex-id 1147 --candidate-name "리센츠" --candidate-address "서울특별시 송파구 잠실동" --candidate-aliases "잠실 리센츠,잠실리센츠"
python skills/naver-real-estate-search/scripts/search_real_estate.py --show-cache --query "리센츠"
권장 순서:
1. build_candidate_seeds.py로 generated 초안을 만든다.
2. apply_generated_seeds.py로 preview해서 accepted / manual review를 확인한다.
3. 문제가 없을 때만 --apply-target --apply-cache를 실행한다.
4. direct URL/ID를 확보한 단지는 --seed-candidate로 수동 보강한다.
반복 조회가 필요한 실존 단지나 alias가 자주 흔들리는 단지(예: 신월시영아파트, 답십리두산위브)는 먼저 cache에 학습시켜 둔다. 아직 complex ID를 확보하지 못한 경우에도 manual_review_queue와 seed-input에 남겨 두면 후보 힌트 fallback에 활용된다.
5) 단일 단지 조회
python skills/naver-real-estate-search/scripts/search_real_estate.py --complex-id 1147 --trade-types 전세 --limit 10
6) direct URL로 조회
python skills/naver-real-estate-search/scripts/search_real_estate.py --url "https://new.land.naver.com/complexes/1147" --trade-types 매매,전세 --json
7) 자연어 한 줄 브리핑
python skills/naver-real-estate-search/scripts/chat_real_estate.py --query "잠실 리센츠 전세 30평대" --limit 8
8) 여러 단지 비교 브리핑
python skills/naver-real-estate-search/scripts/chat_real_estate.py --query "잠실 리센츠와 잠실 엘스 전세 비교 30평대" --compare --candidate-limit 2