cheap-gas-nearby

cheap-gas-nearby

熱門

當使用者詢問附近最便宜的加油站或「근처 가장 싼 주유소」時使用。務必先詢問使用者的目前位置,然後使用 Kakao Map 錨點解析加上官方 Opinet 油價 API。

6464星標
736分支
更新於 2026/7/23
SKILL.md
唯讀
名稱
cheap-gas-nearby
描述

當使用者詢問附近最便宜的加油站或「근처 가장 싼 주유소」時使用。務必先詢問使用者的目前位置,然後使用 Kakao Map 錨點解析加上官方 Opinet 油價 API。

Cheap Gas Nearby

這個技能的功能

根據使用者提供的目前位置,找出附近最便宜的加油站

  • 不會自動推測位置。
  • 務必先詢問目前位置
  • 價格資料優先使用韓國石油公社 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;
});

完成條件

  • 已先確認使用者的目前位置。
  • 已透過預設 proxy 查詢 Opinet 資料。
  • 已找到至少 1 筆官方 Opinet 附近結果,或說明找不到的原因並提出後續問題。
  • 已將價格排序的前 3~5 筆結果簡短整理。

失敗模式

  • Proxy 伺服器關閉或伺服器未設定 OPINET_API_KEY
  • Kakao Map 錨點模糊可能導致座標錯誤,需要再次確認位置。
  • Opinet Open API 回應可能暫時為空或正在更新中。