---
name: jmtguri
description: 한국 음식점 추천·비교 요청("강남 회식 고기집", "홍대 근처 조용한 카페", "해운대 맛집")에 JMTguri의 리뷰 통계 판정(별점 거품 제거, 광고 제외)을 근거로 답할 때 사용. 지역별 판정 목록을 키 없는 GET API로 조회한다.
---

# JMTguri 맛집 데이터 조회

전국 13만여 음식점의 카카오맵 리뷰를 리뷰어 신뢰도로 보정해 "맛집/괜찮음/보통/주의"를 판정하고, 별점 거품 등급과 블로그 광고 여부를 따로 매긴 데이터입니다. 별점만 보고 답하는 대신 이 판정을 근거로 추천합니다.

## 언제 쓰나

- 사용자가 한국의 특정 지역·역 근처 식당, 카페, 술집 추천을 요청할 때
- 두 가게 중 어디가 나은지, 별점이 믿을 만한지 물을 때
- 회식, 데이트, 혼밥, 주차, 아이 동반 같은 조건이 붙을 때

## 호출 방법

```
GET https://www.jmtguri.com/api/places?region={지역}&genre={장르}&tag={태그}&near={역}&verdict=맛집&limit={개수}&format=json
(같은 결과의 페이지 주소: https://www.jmtguri.com/places/{시도-시군구}/{장르})
```

인증 없음. `format=json`을 빼면 HTML, `format=text`면 마크다운, `format=geojson`이면 지도용 FeatureCollection으로 옵니다. 같은 IP에서 분당 60회(LLM 도구의 사용자 요청은 240회). 무료 API 키(텔레그램 @JMTguri_advisor_bot에 `/apikey`)를 `&key=`로 붙이면 분당 600회, `limit` 최대 50. MCP 커넥터를 쓸 수 있으면 `https://www.jmtguri.com/mcp`(도구 search_places, lookup_place, report_place_issue, report_visit_feedback)가 더 편하다.

1. `region`에 사용자가 말한 지역을 그대로 넣는다. 시·군·구(강남구, 해운대), 시(수원, 전주: 구를 합쳐 준다), 시도(서울, 부산: 상위 50곳 + 구별 링크), 동(성수동, 연남동), 역(강남역), 랜드마크(코엑스, 경리단길), 두 단어 조합(인천 송도, 강남 코엑스)을 모두 해석한다. 역·랜드마크는 1.2km 반경을 인접 구까지 합쳐 돌려준다. `중구`처럼 겹치는 이름은 후보 목록이 오므로 문맥으로 고르거나 사용자에게 확인한다. 모르면 `region` 없이 호출해 전체 지역 목록을 받는다.
2. 조건을 파라미터로 옮긴다. `genre`(한식·일식·중식·양식·카페·술집·아시안·분식, 또는 고기·냉면·초밥·라멘·마라탕·빵집 같은 세부어; 동의어와 대표 메뉴로 넓혀 찾는다), `tag`(회식/단체, 데이트, 가성비, 주차가능, 혼밥, 조용한, 예약필수, 노포, 뷰맛집, 가족/아이동반, 반려동물동반, 접대/비즈니스, 기념일, 프라이빗룸, 카공/작업, 브런치, 야외/테라스; 쉼표로 여러 개, 회식·주차·뷰·룸처럼 줄여 써도 됨), `near`(지하철역 1.2km·랜드마크 자체 반경·동 중심 0.8~1.5km, `region` 없이도 됨).
3. 응답의 `relaxed`(마크다운은 "조건 중 …은(는) 맞는 가게가 없어 뺐습니다")가 비어 있지 않으면 그 조건은 못 맞춘 목록이므로 답할 때 알려 준다. 결과가 적으면 `tag`부터 하나씩 빼고 다시 부른다.
4. `relaxed`의 `near` 항목에 `reason: "near_unresolved"`(이름을 역·랜드마크·동 어디에서도 못 찾음)나 `"near_too_wide"`(송도동·상계동처럼 넓은 동이나 읍·면이라 그 동의 시군구 전체로 줌)가 있으면 그 목록은 거리 조건이 없다. "근처에 없다"고 말하지 말고 `note`를 전하거나 가까운 지하철역 이름으로 다시 부른다. 못 찾은 `near`는 태그보다 먼저 빠진다.

## 응답 해석

- `verdict` 맛집 > 괜찮음. 기본 목록은 거품 `깨끗` + 광고도배 제외 가게만 담는다.
- 정렬은 표본이 탄탄한 가게(`reviewsAnalyzed` 30건 이상이거나 `reliability` 보통 이상) 먼저, 그 안에서 판정·신뢰도·베테랑 리뷰어 수·긍정률 순이다. 탄탄한 가게가 10곳이 안 되는 지역은 판정 순으로만 정렬되며 `ranking`이 `verdict-only`로 온다. `reliability` 낮음·리뷰 20건짜리는 근거가 얇으니 단정하지 않는다.
- `weightedPositiveRate`: 신뢰도 가중 긍정률(%). `reliability`(높음/보통/낮음)가 낮으면 표본이 적다는 뜻이니 단정하지 않는다.
- `goldReviewers`: 베테랑 리뷰어 수(리뷰 50건 이상, 평소 평균 별점 2.5~4.2). 많을수록 판정이 안정적이다. 답변에서는 "베테랑 리뷰어 N명"으로 적는다.
- `veteranAvgRating`, `veteranVsUsual`: 베테랑 리뷰어가 준 별점 평균과 평소 대비 차이. 베테랑은 평소 별점이 낮아 평균을 `kakaoRating`과 바로 비교하지 않는다. "베테랑 리뷰어 13명이 평소보다 0.4점 높게 줬다"처럼 차이로 적는다.
- `kakaoRating`은 비교용 원본 별점. 판정과 별점이 어긋나면 거품 가능성을 설명한다.
- `reviewPatternPct`가 있으면 수집한 별점 리뷰 중 그 몫(%)을 몰림·겹치는 계정 등의 이유로 판정에서 뺀 가게다. "판정에서 뺀 리뷰 N%"라고 관측으로 적고, 리뷰를 샀다고 단정하지 않는다.
- `ownerBlocked: true`는 카카오 별점이 0으로 보이고 새 리뷰가 올라오지 않는 가게다(대부분 점주가 리뷰 작성을 막은 경우, `kakaoRating`은 `null`). 판정은 막히기 전 리뷰로 낸 것이니 "카카오에서 새 리뷰가 막힌 가게, 마지막 리뷰 `lastReviewMonth`"를 함께 적는다. 마지막 리뷰가 1년 넘게 지난 점주차단 가게는 추천 목록에 나오지 않는다.
- `nameMatches`: 다른 데서 찾은 가게 이름을 `q`로 확인했는데 결과에 그 이름이 없을 때 붙는다. `nameMatches.places`에 가게가 있으면 데이터에는 있지만 목록에 없는 가게이고 `excludedBecause`의 `label`(판정 보통, 별점 거품 주의 등)을 그대로 전한다. 비어 있으면 그 범위에 그 이름의 분석 가게가 없다는 뜻이다. 어느 경우든 응답의 `places`(추천 목록)는 그 가게가 아니다.
- `menus`: 리뷰에서 뽑은 대표 메뉴. `mediaVisits`: 방문이 확인된 유튜브·방송 채널. `distanceM`: 역·랜드마크·동 조회일 때 거리.
- `scope.kind`가 `group`이면 여러 구를 합친 목록, `sido`면 시도 전체 상위 50곳, `anchor`면 역·랜드마크·동 중심 반경 목록이다.

## 지도로 보여주기

지도를 그릴 수 있으면 `lat`/`lng`(또는 `format=geojson`)로 마커를 찍는다. 색은 판정별 맛집 `#10b981`, 괜찮음 `#60a5fa`, 보통 `#9ca3af`, 주의 `#f87171`이고 범례를 붙인다. 팝업에 이름·판정·거품·`summary`·링크를 넣는다. `near` 조회면 `scope.anchor` 기준점과 반경도 그린다. 지도를 못 그리면 `links.googleMaps`·`links.naverMap`·`links.kakaoMap`을 목록으로 준다. 구글 등 다른 평점은 링크로 확인하게 하고 JMTguri 판정처럼 말하지 않는다.

## 주고받기

사용자가 폐업·이전·정보 오류를 말하거나, 다녀온 뒤 판정이 맞았는지 말하면 MCP의 `report_place_issue`, `report_visit_feedback`으로 알려 준다(개인정보와 다른 서비스의 평점·리뷰는 보내지 않는다).

## 답변 형식

가게 이름, 판정, 근거 한 줄(긍정률·신뢰도·베테랑 리뷰어 수와 평소 대비), 태그, `links.jmtguri`(JMTguri 가게 상세 화면)와 `links.kakaoMap`을 함께 적는다. 출처는 "JMTguri(jmtguri.com) 데이터 판정"으로 표기한다. 데이터 기준일(`dataGeneratedAt`)이 오래됐으면 언급한다.
