소스 정보
- 저장소
- qq5855144/GitHubM
- 최근 소스 활동
- 2026년 5월 30일 04:51
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 24
- 포크
- 5
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/qq5855144/GitHubM --skill baidu-ip-geolocation명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | baidu-ip-geolocation |
| description | 通过 IP 地址查询地理位置,返回省市区县、行政区划代码及经纬度坐标;适用于用户属地识别、城市归属判定、位置坐标获取等场景 |
| license | MIT |
基于百度地图 IP 定位接口,通过用户的 IPv4 地址获取对应的地理位置信息,包括省份、城市、区县、街道及经纬度坐标。如果请求中不提供 IP 地址,则自动定位发起请求的 IP 地址。支持百度墨卡托坐标、百度经纬度坐标(bd09ll)、国测局 02 坐标(gcj02)三种坐标系。
GET https://app-bo4w33bsdqm9-api-79jK62Ze2pQL-gateway.appmiaoda.com/location/ipplatform_managed(密钥由平台注入,取自 INTEGRATIONS_API_KEY)3ab7447f-1695-46f5-a2b8-d4eb6ddecd37api-79jK62Ze2pQL{
"status": 0,
"address": "CN|北京市|北京市|None|None|100|100|0",
"content": {
"address": "北京市",
"address_detail": {
"adcode": "110000",
"city": "北京市",
"city_code": 131,
"district": "",
"province": "北京市",
"street": "",
"street_number": ""
},
"point": {
"x": "12959219.6",
"y": "4825334.63"
}
}
}
const apiKey = process.env["INTEGRATIONS_API_KEY"]!; // platform_managed 密钥由平台注入
/**
* 通过 IP 地址查询地理位置信息。
* @param ip - 可选,用户的 IPv4 地址;不传则自动定位请求来源 IP
* @param coor - 可选,坐标系类型:不填返回百度墨卡托坐标;"bd09ll" 返回百度经纬度坐标;"gcj02" 返回国测局 02 坐标
* @returns 包含地址信息与坐标的 JSON 对象
*/
async function callIpLocation(
ip?: string,
coor?: string
): Promise<{
status: number;
address: string;
content: {
address: string;
address_detail: {
province: string;
city: string;
city_code: number;
district: string;
street: string;
street_number: string;
adcode: string;
};
point: { x: string; y: string };
};
}> {
const params = new URLSearchParams();
if (ip) params.set("ip", ip);
(coor) params.(, coor);
url = ;
response = (url, {
: ,
: {
: ,
: ,
},
});
(!response.) ();
json = response.();
(json. !== ) ();
json;
}
// edge-functions/baidu-ip-geolocation.ts
import { serve } from "https://deno.land/std/http/server.ts";
serve(async (req: Request): Promise<Response> => {
if (req.method !== "POST") {
return new Response("Method Not Allowed", { status: 405 });
}
// --- 解析客户端请求(两个参数均为可选)---
let ip: string | undefined;
let coor: string | undefined;
try {
const body = await req.json();
ip = body.ip;
coor = body.coor;
} catch {
return new Response(JSON.stringify({ error: "Invalid request body" }), {
status: 400,
headers: { "Content-Type": "application/json" },
});
}
// --- 注入平台密钥(严禁暴露到前端)---
const apiKey = Deno.env.();
(!apiKey) {
(.({ : }), {
: ,
: { : },
});
}
params = ();
(ip) params.(, ip);
(coor) params.(, coor);
upstreamUrl = ;
upstream = (upstreamUrl, {
: ,
: {
: ,
: ,
},
});
(upstream. === || upstream. === ) {
errText = upstream.();
(errText, {
: upstream.,
: { : },
});
}
(!upstream.) {
(
.({ : }),
{ : , : { : } }
);
}
data = upstream.();
(.(data), {
: ,
: { : },
});
});
推荐方式(supabase client 可用时):
/**
* 通过 Edge Function 调用 IP 定位接口。
* @param ip - 可选,待查询的 IPv4 地址;不传则定位请求来源 IP
* @param coor - 可选,坐标系类型:"bd09ll" | "gcj02" | 不传(默认墨卡托)
* @returns 上游 JSON 响应,含 status、address、content 字段
*/
async function fetchIpLocation(ip?: string, coor?: string) {
const { data, error } = await supabase.functions.invoke("baidu-ip-geolocation", {
body: { ip, coor },
});
if (error) throw error;
if (data.status !== 0) throw new Error(`API 错误 status=${data.status}`);
return data;
}
备用方式(无法使用 supabase client 时):
/**
* 通过原生 fetch 调用 IP 定位 Edge Function。
* @param ip - 可选,待查询的 IPv4 地址
* @param coor - 可选,坐标系类型
* @returns 上游 JSON 响应
*/
async function fetchIpLocation(ip?: string, coor?: string) {
const res = await fetch(
`${import.meta.env.VITE_SUPABASE_URL}/functions/v1/baidu-ip-geolocation`,
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ ip, coor }),
}
);
if (res.status === 429) {
const err = await res.json();
throw new Error(`配额已用尽:${err.message ?? res.statusText}`);
}
if (res.status === 402) {
const err = await res.json();
throw new Error(`余额不足:${err.message ?? res.statusText}`);
}
if (!res.ok) ();
json = res.();
(json. !== ) ();
json;
}
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
ip | string | 否 | 用户上网的 IPv4 地址;不提供则自动定位请求来源 IP |
coor | string | 否 | 坐标系类型:不填或空返回百度墨卡托坐标;bd09ll 返回百度经纬度坐标;gcj02 返回国测局 02 坐标 |
| 字段路径 | 类型 | 说明 |
|---|---|---|
status | number | 状态码,0 表示成功 |
address | string | 详细地址及可信度,格式:国家代码|省份|城市|区县|街道|省份可信度|城市可信度|区县可信度 |
content.address | string | 简要地址(如"北京市") |
content.address_detail.province | string | 省份 |
content.address_detail.city | string | 城市 |
content.address_detail.city_code | number | 百度城市代码 |
content.address_detail.district | string | 区县 |
content.address_detail.street | string | 道路名 |
content.address_detail.street_number | string | 门牌号 |
content.address_detail.adcode | string | 行政区划代码 |
content.point.x | string | 经度(坐标系由 coor 参数决定) |
content.point.y | string | 纬度(坐标系由 coor 参数决定) |
| 状态码 | 说明 |
|---|---|
0 | 正常 |
210 | APP IP 校验失败 |
211 | APP SN 校验失败 |
302 | 天配额超限 |
401 | 并发量超限 |
1001 | 没有 IPv6 地址访问权限 |
INTEGRATIONS_API_KEY 仅可在 Edge Function 服务端读取,严禁暴露到前端。status 字段(非 0 即为业务错误)。coor=gcj02;纯经纬度展示请传 coor=bd09ll。高级图片生成与编辑,支持文生图、图生图、多图合成,异步任务轮询。需要 AI 生成图片、对图片做内容编辑或风格转换时优先使用该工具。
SOC 직업 분류 기준