blue-ribbon-nearby
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBlue Ribbon Nearby
Blue Ribbon 附近餐厅查询
What this skill does
本Skill的功能
유저가 알려준 현재 위치를 기준으로 블루리본 서베이 공식 zone 을 찾고, k-skill-proxy 를 경유해 근처 블루리본 맛집을 보여준다.
- 위치는 자동으로 추정하지 않는다.
- 반드시 먼저 현재 위치를 질문한다.
- 위치 문자열은 공식 목록으로 매칭하고, 주변 JSON endpoint 로 좁혀서 찾는다.
zone - 좌표를 직접 받으면 더 정확한 nearby 검색을 할 수 있다.
- nearby 검색은 기본적으로 k-skill-proxy () 를 경유한다. 프록시에
/v1/blue-ribbon/nearby가 설정되어 있어야 한다.BLUE_RIBBON_SESSION_ID
根据用户提供的当前位置,查找Blue Ribbon Survey官方zone,再通过k-skill-proxy展示附近的Blue Ribbon餐厅。
- 不自动推测位置。
- 必须先询问用户当前位置。
- 将位置字符串与官方列表匹配,通过周边JSON端点缩小范围查找。
zone - 若直接获取坐标,可进行更精准的附近搜索。
- 附近搜索默认通过k-skill-proxy()进行。代理需已设置
/v1/blue-ribbon/nearby。BLUE_RIBBON_SESSION_ID
When to use
使用场景
- "근처 맛집 찾아줘"
- "여기 근처 블루리본 맛집 뭐 있어?"
- "광화문 근처 괜찮은 식당 추천해줘"
- "내 주변 블루리본 식당만 보여줘"
- "帮我找附近的餐厅"
- "这附近有什么Blue Ribbon餐厅吗?"
- "推荐光化门附近不错的餐厅"
- "只给我看我周边的Blue Ribbon餐厅"
Routing rule
路由规则
- 사용자가 맛집 / 근처 식당 / 근처 레스토랑 을 물으면 기본적으로 이 스킬부터 고려한다.
- 다만 사용자가 블루리본 외 다른 기준(예: 망고플레이트, 네이버 지도 리뷰, 특정 음식점 예약) 을 명시하면 그 표면을 우선한다.
- 当用户询问餐厅/附近餐厅/附近餐馆时,优先考虑使用本Skill。
- 但若用户明确指定Blue Ribbon以外的其他标准(如:MangoPlate、Naver地图评论、特定餐厅预订),则优先遵循该标准。
Prerequisites
前置条件
- 인터넷 연결
- 18+
node - 이 저장소의 package 또는 동일 로직
blue-ribbon-nearby
- 网络连接
- 18+
node - 本仓库的包或同等逻辑
blue-ribbon-nearby
Mandatory first question
必问初始问题
위치 정보 없이 바로 검색하지 말고 반드시 먼저 물어본다.
- 권장 질문:
현재 위치를 알려주세요. 동네/역명/랜드마크/위도·경도 중 편한 형식으로 보내주시면 근처 블루리본 맛집을 찾아볼게요. - 위치가 애매하면:
가까운 역명이나 동 이름으로 한 번만 더 알려주세요. - 좌표를 받으면 그대로 nearby 검색에 사용한다.
不得在未获取位置信息的情况下直接搜索,必须先询问。
- 推荐提问:
请告知您的当前位置。可发送小区/地铁站名/地标/经纬度中任意方便的格式,我会帮您查找附近的Blue Ribbon餐厅。 - 若位置模糊:
请再告知一次附近的地铁站名或小区名称。 - 若收到坐标,直接用于附近搜索。
Accepted location inputs
可接受的位置输入
- 동네/상권: ,
성수동,광화문판교 - 역명/랜드마크: ,
강남역,서울역코엑스 - 위도/경도:
37.573713, 126.978338
랜드마크는 내부 alias 로 가장 가까운 공식 Blue Ribbon zone 이름에 매칭한다. 예: →
코엑스삼성동/대치동- 小区/商圈:、
圣水洞、光化门板桥 - 地铁站名/地标:、
江南站、首尔站COEX - 经纬度:
37.573713, 126.978338
地标会通过内部别名匹配到最近的官方Blue Ribbon zone名称。例如: →
COEX三星洞/大峙洞Official Blue Ribbon surfaces
Blue Ribbon官方资源
- zone catalog:
https://www.bluer.co.kr/search/zone - nearby search JSON:
https://www.bluer.co.kr/restaurants/map - search page:
https://www.bluer.co.kr/search
핵심 nearby 파라미터:
zone1zone2zone2Latzone2LngisAround=trueribbon=trueribbonType=RIBBON_THREE,RIBBON_TWO,RIBBON_ONEdistance=500|1000|2000|5000
좌표 직접 검색 시에는 , , , bounding box 를 사용한다.
latitude1latitude2longitude1longitude2- zone目录:
https://www.bluer.co.kr/search/zone - 附近搜索JSON接口:
https://www.bluer.co.kr/restaurants/map - 搜索页面:
https://www.bluer.co.kr/search
核心附近搜索参数:
zone1zone2zone2Latzone2LngisAround=trueribbon=trueribbonType=RIBBON_THREE,RIBBON_TWO,RIBBON_ONEdistance=500|1000|2000|5000
直接通过坐标搜索时,使用, , , 边界框参数。
latitude1latitude2longitude1longitude2Workflow
工作流程
1. Ask the current location first
1. 先询问当前位置
위치를 안 물은 상태에서 검색을 시작하지 않는다.
不得在未询问位置的情况下启动搜索。
2. Resolve the location
2. 解析位置
- 동네/역명/랜드마크를 받으면 공식 목록과 먼저 매칭한다.
https://www.bluer.co.kr/search/zone - 코엑스처럼 공식 zone 이름이 아닌 대표 랜드마크는 가장 가까운 공식 zone alias 로 먼저 확장한다.
- 위도/경도를 받으면 좌표 기반 nearby 검색으로 바로 들어간다.
- 가장 유력한 zone 후보가 여러 개면 2~3개만 보여주고 다시 확인받는다.
- 收到小区/地铁站名/地标后,先与官方列表匹配。
https://www.bluer.co.kr/search/zone - 对于COEX这类非官方zone名称的代表性地标,先扩展为最近的官方zone别名。
- 收到经纬度后,直接进入基于坐标的附近搜索。
- 若有多个高可能性的zone候选,仅展示2~3个并再次确认。
3. Query the nearby Blue Ribbon endpoint
3. 查询Blue Ribbon附近餐厅接口
기본적으로 k-skill-proxy 를 경유해 nearby 결과를 가져온다.
js
const { searchNearbyByLocationQuery } = require("blue-ribbon-nearby");
const result = await searchNearbyByLocationQuery("광화문", {
distanceMeters: 1000,
limit: 5
});
console.log(result.anchor);
console.log(result.items);내부적으로는 zone 매칭 후 프록시의 에 좌표와 거리를 넘긴다. 프록시가 프리미엄 세션으로 Blue Ribbon upstream 을 호출한다.
/v1/blue-ribbon/nearby직접 호출이 필요하면 옵션을 쓸 수 있지만, 프리미엄 세션 없이는 에러가 난다.
useDirectApi: truepremium_required默认通过k-skill-proxy获取附近搜索结果。
js
const { searchNearbyByLocationQuery } = require("blue-ribbon-nearby");
const result = await searchNearbyByLocationQuery("광화문", {
distanceMeters: 1000,
limit: 5
});
console.log(result.anchor);
console.log(result.items);内部逻辑为:匹配zone后,将坐标和距离传递给代理的接口。代理通过高级会话调用Blue Ribbon上游服务。
/v1/blue-ribbon/nearby若需直接调用,可使用选项,但若无高级会话会返回错误。
useDirectApi: truepremium_required4. Respond with a short restaurant summary
4. 返回简短餐厅摘要
보통 3~5개만 짧게 정리한다.
- 식당명
- 리본 개수
- 대표 음식 카테고리
- 주소
- 거리
通常整理3~5个结果即可。
- 餐厅名称
- Ribbon数量
- 代表美食类别
- 地址
- 距离
Done when
完成标准
- 유저의 현재 위치를 먼저 확인했다.
- 공식 Blue Ribbon nearby 결과를 최소 1개 이상 찾았거나, 프록시 미설정 등의 이유로 결과를 가져올 수 없다는 이유와 다음 질문을 제시했다.
- 결과를 거리순으로 짧게 정리했다.
- 已先确认用户当前位置。
- 已找到至少1个官方Blue Ribbon附近餐厅结果,或已说明无法获取结果的原因(如代理未设置等)并提出后续问题。
- 结果已按距离排序并简短整理。
브라우저 fallback (봇 차단 우회)
浏览器 fallback(绕过机器人拦截)
bluer.co.kr이 자동화 접근을 차단(403)할 경우, 가 설치되어 있으면 실제 Chrome 브라우저를 통해 자동으로 fallback한다.
rebrowser-playwright当bluer.co.kr拦截自动化访问(返回403)时,若已安装,将自动通过真实Chrome浏览器进行 fallback。
rebrowser-playwright조건
条件
- 가 설치되어 있어야 한다:
rebrowser-playwrightnpm install rebrowser-playwright - Google Chrome이 시스템에 설치되어 있어야 한다
- headed 모드로 동작한다 (디스플레이 환경 필요)
- 需已安装:
rebrowser-playwrightnpm install rebrowser-playwright - 系统需已安装Google Chrome
- 以有头模式运行(需显示环境)
동작 방식
运行方式
- 기존 fetch 요청이 403을 반환하면 자동으로 브라우저 fallback 활성화
- stealth 패치 적용 (webdriver 제거, plugins/languages 스푸핑 등)
- 실제 Chrome으로 zone 카탈로그 또는 nearby API를 호출
- 결과를 기존 파이프라인에 그대로 전달
별도 설정 없이 만 설치하면 자동으로 작동한다. 설치되어 있지 않으면 기존처럼 403 에러를 그대로 던진다.
rebrowser-playwright- 当原有fetch请求返回403时,自动启用浏览器fallback
- 应用stealth补丁(移除webdriver、伪造插件/语言信息等)
- 通过真实Chrome调用zone目录或附近API
- 将结果直接传入原有流程
只需安装即可自动运行,无需额外配置。若未安装,则直接返回原有403错误。
rebrowser-playwrightFailure modes
失败场景
- 위치 문자열이 공식 zone 과 잘 매칭되지 않을 수 있다.
- 같은 키워드가 여러 상권에 걸치면 추가 확인이 필요하다.
- Blue Ribbon 사이트가 구조/파라미터를 바꾸면 zone 파싱 또는 nearby endpoint 가 깨질 수 있다.
- 프록시의 가 만료(30일)되면 갱신이 필요하다.
BLUE_RIBBON_SESSION_ID - 브라우저 fallback은 headed 모드 전용이므로 서버(CI) 환경에서는 동작하지 않는다.
- 位置字符串可能无法与官方zone良好匹配。
- 同一关键词可能覆盖多个商圈,需进一步确认。
- 若Blue Ribbon网站变更结构/参数,zone解析或附近接口可能失效。
- 代理的过期(有效期30天)后需更新。
BLUE_RIBBON_SESSION_ID - 浏览器fallback仅支持有头模式,因此在服务器(CI)环境中无法运行。
Notes
注意事项
- 이 스킬은 조회형 스킬이다.
- 유저 위치는 자동 추적하지 않고, 대화 중 받은 값만 사용한다.
- 맛집 문의는 기본적으로 이 스킬을 먼저 쓰되, 블루리본 외 다른 기준이 명시되면 그 기준을 우선한다.
- 本Skill为查询类Skill。
- 不自动追踪用户位置,仅使用对话中获取的位置信息。
- 餐厅咨询默认优先使用本Skill,但若用户明确指定Blue Ribbon以外的标准,则优先遵循该标准。