스킬.잇다
itda-work/naver-place 정식 v0.9.1

빠른 시작

네이버 플레이스에서 장소를 검색하고 리뷰를 수집하는 가장 간단한 방법입니다.

네이버 지도에서 '대전 칼국수' 검색해서 상위 10개만 뽑아줘
placeId 1288902633 리뷰 최근 3페이지 수집해줘
'총각손칼국수' 리뷰를 2025년 이후 것만 모아줘

이 한 줄이면 스킬이 네이버 플레이스를 검색해 JSON 결과로 돌려줍니다.

활용 시나리오

장소 검색 → 리뷰 수집 연계

가장 전형적인 워크플로입니다. 먼저 search_places.pyplaceId를 확보한 뒤 collect_reviews.py로 리뷰를 긁어옵니다.

'대전 칼국수' 중 상위 5곳의 리뷰를 모아서 JSON으로 저장해줘

특정 place의 리뷰만 직접 수집

이미 placeId를 알고 있다면 검색 단계를 건너뛰고 바로 리뷰를 모을 수 있습니다.

placeId 1288902633의 리뷰를 5페이지까지 모아줘

증분 수집 (날짜 기준 중단)

최근 수집 시점 이후의 신규 리뷰만 받아 모니터링에 활용합니다.

'총각손칼국수' 리뷰를 2025-01-01 이후 작성된 것만 수집해줘

출력 옵션

옵션설명사용 시점
stdout JSONmeta + places[] 또는 reviews[] 구조의 JSON을 표준출력으로파이프·리다이렉션으로 즉시 가공
--output <파일>동일한 JSON을 파일로 저장재실행·비교·아카이빙
places[] 필드placeId, 이름, 주소, 좌표, 카테고리장소 메타데이터가 필요할 때
reviews[] 필드작성일, 별점, 본문, 작성자 닉네임리뷰 본문 분석·감성 집계

  • --query + --max-pages 조합: 가장 기본. 검색어의 상위 몇 페이지까지 모을지만 지정하면 됩니다.
  • --place-id로 검색 단계 스킵: 이미 아는 장소라면 collect_reviews.py --place-id 1288902633로 바로 리뷰만 받습니다.
  • --stop-at-created로 증분 수집: 이전 수집 마지막 날짜를 기준으로 지정하면 그 이전 리뷰를 만나는 즉시 멈춰 호출 수를 크게 줄입니다.
  • instant_search.pyplaceId 먼저 확보: 검색어가 애매할 때 instant_search.py의 자동완성으로 정확한 placeId를 찾은 뒤 collect_reviews.py에 넘기는 게 안정적입니다.
  • --max-pages는 작게 시작: 첫 실행은 1~2페이지로 출력 구조만 확인하고, 이후 대량 수집으로 확장하면 시행착오를 줄일 수 있습니다.
  • JSON은 jq로 가공: python3 scripts/search_places.py --query ... | jq '.places[] | {name, placeId}'처럼 바로 정제할 수 있습니다.

⚠️ 주의사항

  • 네이버의 rate limit에 걸리지 않도록 --max-pages를 과하게 올리거나 병렬·연속 호출을 남용하지 마세요.
  • 결과 스키마는 네이버 플레이스 응답 구조를 따르므로, 필드명이 바뀌면 meta부터 확인해 조정해야 합니다.
  • 본 스킬은 개인 분석·모니터링 용도입니다. 상업적 재배포나 대규모 반복 수집은 네이버 약관 위반 소지가 있으니 삼가세요.
  • 로그인 필요 영역(저장한 장소, 내 리뷰), 이미지·사진 파일 다운로드, 모바일 앱(nmap://) 전용 페이지, 실시간 스트리밍/Push는 지원하지 않습니다.