cheap-gas-nearby

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Cheap Gas Nearby

附近低价加油站查询

What this skill does

技能功能

유저가 알려준 현재 위치를 기준으로 근처에서 가장 싼 주유소를 찾아준다.
  • 위치는 자동으로 추정하지 않는다.
  • 반드시 먼저 현재 위치를 질문한다.
  • 가격 데이터는 한국석유공사 Opinet 공식 API를 우선 사용한다.
  • 동네/역명/랜드마크 입력은 Kakao Map anchor 검색으로 좌표를 잡은 뒤 Opinet nearby 검색으로 연결한다.
  • 기본 제품은 휘발유(B027) 이고, 유저가 경유라고 명시하면 경유(D047) 로 바꾼다.
根据用户提供的当前位置,查找附近最便宜的加油站
  • 不会自动估算用户位置。
  • 必须首先询问用户当前位置
  • 油价数据优先使用韩国石油公社Opinet官方API获取。
  • 若用户输入小区/地铁站名/地标,先通过Kakao Map锚点搜索获取坐标,再关联Opinet周边查询接口。
  • 默认查询油品为汽油(B027),若用户明确要求柴油,则切换为柴油(D047)

When to use

使用场景

  • "근처 가장 싼 주유소 찾아줘"
  • "서울역 근처 휘발유 제일 싼 데 어디야?"
  • "강남에서 경유 싼 주유소 몇 군데만 보여줘"
  • "지금 여기 근처 셀프주유소 중 싼 순으로 알려줘"
  • 「帮我找附近最便宜的加油站」
  • 「首尔站附近汽油最便宜的地方是哪里?」
  • 「给我看几个江南附近柴油便宜的加油站」
  • 「按价格从低到高给我看看现在我附近的自助加油站」

Mandatory first question

强制首问规则

위치 정보 없이 바로 검색하지 말고 반드시 먼저 물어본다.
  • 권장 질문:
    현재 위치를 알려주세요. 동네/역명/랜드마크/위도·경도 중 편한 형식으로 보내주시면 근처에서 가장 싼 주유소를 찾아볼게요.
  • 제품이 불명확하면:
    휘발유 기준으로 볼까요, 경유 기준으로 볼까요? 따로 말씀 없으면 휘발유로 찾을게요.
  • 위치가 애매하면:
    가까운 역명이나 동 이름으로 한 번만 더 알려주세요.
没有位置信息不要直接搜索,务必首先询问用户。
  • 推荐询问话术:
    请告知您的当前位置。您可以以小区/地铁站名/地标/经纬度任意方便的形式发送,我会为您查找附近最便宜的加油站。
  • 油品不明确时询问:
    您是要看汽油价格还是柴油价格?如果没有特殊说明,我将按汽油查找。
  • 位置模糊时询问:
    请您再告知一下附近的地铁站名或者小区名称哦。

Default path

默认调用路径

기본적으로
https://k-skill-proxy.nomadamas.org/v1/opinet/around
/v1/opinet/detail
을 경유해 조회한다. 사용자 쪽에서 별도
OPINET_API_KEY
를 준비할 필요가 없다.
默认通过
https://k-skill-proxy.nomadamas.org/v1/opinet/around
/v1/opinet/detail
接口查询。用户无需单独准备
OPINET_API_KEY

Official Opinet surfaces

Opinet官方接口

  • 오픈 API 안내:
    https://www.opinet.co.kr/user/custapi/openApiInfo.do
  • 반경 내 주유소:
    https://www.opinet.co.kr/api/aroundAll.do
  • 주유소 상세정보(ID):
    https://www.opinet.co.kr/api/detailById.do
  • 지역코드:
    https://www.opinet.co.kr/api/areaCode.do
반경 검색 핵심 파라미터:
  • x
    ,
    y
    : 기준 위치 KATEC 좌표
  • radius
    : 반경(m, 최대 5000)
  • prodcd
    :
    B027
    (휘발유),
    D047
    (경유),
    B034
    (고급휘발유),
    C004
    (등유),
    K015
    (LPG)
  • sort=1
    : 가격순
  • 开放API指南:
    https://www.opinet.co.kr/user/custapi/openApiInfo.do
  • 半径内加油站查询:
    https://www.opinet.co.kr/api/aroundAll.do
  • 加油站详情(ID查询):
    https://www.opinet.co.kr/api/detailById.do
  • 地区代码查询:
    https://www.opinet.co.kr/api/areaCode.do
半径搜索核心参数:
  • x
    ,
    y
    : 基准位置 KATEC 坐标
  • radius
    : 搜索半径(米,最大5000)
  • prodcd
    :
    B027
    (汽油)、
    D047
    (柴油)、
    B034
    (高级汽油)、
    C004
    (煤油)、
    K015
    (LPG)
  • sort=1
    : 按价格排序

Location resolution surface

位置解析接口

  • Kakao Map 모바일 검색:
    https://m.map.kakao.com/actions/searchView?q=<query>
  • Kakao Map 장소 패널 JSON:
    https://place-api.map.kakao.com/places/panel3/<confirmId>
위치 문자열은 Kakao Map으로 anchor 좌표(WGS84) 를 구한 뒤, 내부적으로 WGS84 → KATEC 변환을 적용해 Opinet
aroundAll.do
에 넘긴다.
  • Kakao Map移动端搜索:
    https://m.map.kakao.com/actions/searchView?q=<query>
  • Kakao Map地点面板JSON:
    https://place-api.map.kakao.com/places/panel3/<confirmId>
位置字符串通过Kakao Map获取锚点坐标(WGS84)后,内部会执行WGS84 → KATEC 坐标转换,再传给Opinet的
aroundAll.do
接口。

Workflow

工作流程

  1. 유저에게 반드시 현재 위치를 묻는다.
  2. 위치 문자열을 받으면 Kakao Map anchor 검색으로 좌표를 찾는다.
    • 위도/경도를 직접 받으면 anchor 검색을 생략한다.
  3. 좌표를 KATEC으로 변환한다.
  4. Opinet
    aroundAll.do
    sort=1
    가격순으로 조회한다.
  5. 상위 후보에 대해
    detailById.do
    를 호출해 도로명주소, 전화번호, 셀프 여부, 세차장, 경정비, 품질인증 여부를 보강한다.
  6. 보통 3~5개만 짧게 정리한다.
  1. 必须首先询问用户当前位置。
  2. 收到位置字符串后,通过Kakao Map锚点搜索获取坐标。
    • 如果用户直接提供经纬度,则跳过锚点搜索。
  3. 将坐标转换为KATEC格式。
  4. sort=1
    价格排序调用Opinet
    aroundAll.do
    接口查询。
  5. 对排名靠前的候选结果调用
    detailById.do
    接口,补充道路地址、联系电话、是否自助、是否有洗车场、是否提供轻维修、是否通过质量认证等信息。
  6. 通常仅整理3-5个结果返回。

Responding

返回结果规范

결과는 보통 아래 필드를 포함해 짧게 정리한다.
  • 주유소명
  • 가격(휘발유/경유 중 요청한 제품)
  • 거리
  • 주소
  • 셀프 여부
  • 세차장/경정비/품질인증 여부(있으면)
结果通常简要包含以下字段:
  • 加油站名称
  • 价格(用户请求的汽油/柴油价格)
  • 距离
  • 地址
  • 是否自助
  • 洗车场/轻维修/质量认证标识(如有)

Node.js example

Node.js示例代码

js
const { searchCheapGasStationsByLocationQuery } = require("cheap-gas-nearby");

async function main() {
  const result = await searchCheapGasStationsByLocationQuery("서울역", {
    productCode: "B027",
    radius: 1000,
    limit: 3
  });

  console.log(result.anchor);
  console.log(result.items);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});
js
const { searchCheapGasStationsByLocationQuery } = require("cheap-gas-nearby");

async function main() {
  const result = await searchCheapGasStationsByLocationQuery("서울역", {
    productCode: "B027",
    radius: 1000,
    limit: 3
  });

  console.log(result.anchor);
  console.log(result.items);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

Done when

完成条件

  • 유저의 현재 위치를 먼저 확인했다.
  • 기본 proxy 경유로 Opinet 데이터를 조회했다.
  • 공식 Opinet nearby 결과를 최소 1개 이상 찾았거나, 못 찾은 이유와 다음 질문을 제시했다.
  • 가격순 상위 결과를 3~5개 이내로 정리했다.
  • 已先确认用户当前位置。
  • 通过默认代理查询了Opinet数据。
  • 至少找到1条Opinet官方的附近查询结果,或告知用户未找到的原因并给出后续询问引导。
  • 整理出价格排序靠前的3~5个结果。

Failure modes

异常场景

  • 프록시 서버가 내려가 있거나
    OPINET_API_KEY
    가 서버에 설정되지 않은 경우.
  • Kakao Map anchor가 애매하면 좌표가 잘못 잡힐 수 있어 추가 위치 확인이 필요하다.
  • Opinet Open API 응답이 일시적으로 비거나 갱신 중일 수 있다.
  • 代理服务器宕机或服务器未配置
    OPINET_API_KEY
  • Kakao Map锚点解析模糊可能导致坐标错误,需要再次确认用户位置。
  • Opinet开放API响应可能暂时为空或处于数据更新中。