cheap-gas-nearby

cheap-gas-nearby

热门

当用户询问附近最便宜的加油站或“근처 가장 싼 주유소”时使用。务必先询问用户的当前位置,然后使用 Kakao Map 锚点解析和官方 Opinet 油价 API。

6464Star
736Fork
更新于 2026/7/23
SKILL.md
readonly只读
name
cheap-gas-nearby
description

当用户询问附近最便宜的加油站或“근처 가장 싼 주유소”时使用。务必先询问用户的当前位置,然后使用 Kakao Map 锚点解析和官方 Opinet 油价 API。

附近最便宜的加油站

技能功能

根据用户提供的当前位置,查找附近最便宜的加油站

  • 不自动推测位置。
  • 必须首先询问当前位置
  • 优先使用韩国石油公社 Opinet 官方 API 获取价格数据。
  • 输入小区/站名/地标时,先通过 Kakao Map 锚点搜索获取坐标,再连接 Opinet 附近搜索。
  • 默认油品为汽油(B027),若用户明确指定柴油,则切换为柴油(D047)

使用场景

  • “帮我找附近最便宜的加油站”
  • “首尔站附近哪里汽油最便宜?”
  • “江南附近给我看几个柴油便宜的加油站”
  • “现在这里附近的自助加油站按便宜顺序告诉我”

必须首先提问

不要在没有位置信息的情况下直接搜索,必须首先询问。

  • 推荐提问:현재 위치를 알려주세요. 동네/역명/랜드마크/위도·경도 중 편한 형식으로 보내주시면 근처에서 가장 싼 주유소를 찾아볼게요.
  • 若油品不明确:휘발유 기준으로 볼까요, 경유 기준으로 볼까요? 따로 말씀 없으면 휘발유로 찾을게요.
  • 若位置模糊:가까운 역명이나 동 이름으로 한 번만 더 알려주세요.

默认路径

默认通过 https://k-skill-proxy.nomadamas.org/v1/opinet/around/v1/opinet/detail 进行查询。用户无需单独准备 OPINET_API_KEY

官方 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:半径(米,最大 5000)
  • prodcdB027(汽油)、D047(柴油)、B034(高级汽油)、C004(煤油)、K015(LPG)
  • sort=1:按价格排序

位置解析接口

  • 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

工作流程

  1. 必须向用户询问当前位置。
  2. 收到位置字符串后,通过 Kakao Map 锚点搜索查找坐标。
    • 若直接收到经纬度,则跳过锚点搜索。
  3. 将坐标转换为 KATEC。
  4. sort=1 价格顺序查询 Opinet aroundAll.do
  5. 对排名靠前的候选调用 detailById.do,补充道路名地址、电话号码、是否自助、洗车场、简易维修、质量认证等信息。
  6. 通常只简要整理 3~5 个结果。

回复格式

结果通常包含以下字段,简要整理:

  • 加油站名称
  • 价格(所请求的汽油/柴油)
  • 距离
  • 地址
  • 是否自助
  • 洗车场/简易维修/质量认证(如有)

Node.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;
});

完成条件

  • 已确认用户的当前位置。
  • 通过默认代理查询了 Opinet 数据。
  • 至少找到 1 个官方 Opinet 附近结果,或说明未找到的原因并提出后续问题。
  • 按价格排序整理了前 3~5 个结果。

失败模式

  • 代理服务器宕机或服务器上未设置 OPINET_API_KEY
  • Kakao Map 锚点模糊可能导致坐标错误,需要进一步确认位置。
  • Opinet 开放 API 响应可能暂时为空或正在更新。