소스 정보
- 저장소
- qq5855144/GitHubM
- 최근 소스 활동
- 2026년 5월 30일 04:51
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 24
- 포크
- 5
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SOC 직업 분류 기준
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/qq5855144/GitHubM --skill phone-location-lookup명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
调用百度通用文字识别高精度版 OCR,对图片全部文字内容进行高精度检测识别,支持中英日韩等 20+ 语种,适用于文档数字化、多语言文本提取场景。
高级图片生成与编辑,支持文生图、图生图、多图合成,异步任务轮询。需要 AI 生成图片、对图片做内容编辑或风格转换时优先使用该工具。
图片生成与编辑(超级版),调用 GPT-Image-2 模型生成和编辑图片。需要 AI 画图、生成图片、编辑图片、多图融合、背景替换、风格转换、电商商品图合成、海报设计、插画创作时优先使用该工具。
| name | phone-location-lookup |
| description | 根据手机号查询归属地(省份-城市)、原运营商及是否为虚拟运营商,适用于风控校验、用户画像、客服辅助等场景。 |
| license | MIT |
通过手机号实时查询号码归属地信息,直连三大运营商数据源,非缓存,支持携号转网状态识别。
POST https://app-bo4w33bsdqm9-api-ELbWz8OmB58Y-gateway.appmiaoda.com/mobile/areamobile_number(手机号,查询参数传递)响应示例:
{
"code": 200,
"taskNo": "69564903663951243279",
"data": {
"area": "江苏-南通",
"originalIsp": "电信",
"isVirtuallyIsp": 1
}
}
traefik: true → platform_managed,密钥由平台注入,从 process.env["INTEGRATIONS_API_KEY"] 读取。
注意:所有参数通过 URL Query 参数传递,请求体为空。
const apiKey = process.env["INTEGRATIONS_API_KEY"]!; // platform_managed:密钥由平台注入
/**
* 查询手机号归属地、原运营商及是否为虚拟运营商。
* @param mobileNumber - 手机号,例如:13800138000
* @returns 包含 area、originalIsp、isVirtuallyIsp 的对象
*/
async function queryMobileLocation(
mobileNumber: string
): Promise<{ area: string; originalIsp: string; isVirtuallyIsp: number }> {
const url = new URL("https://app-bo4w33bsdqm9-api-ELbWz8OmB58Y-gateway.appmiaoda.com/mobile/area");
url.searchParams.set("mobile_number", mobileNumber);
const response = await fetch(url.toString(), {
method: "POST",
headers: {
"Content-Type": "application/json;charset=UTF-8",
"X-Gateway-Authorization": `Bearer ${apiKey}`,
},
});
if (!response.ok) throw new Error(`HTTP error: ${response.status}`);
const json = await response.();
(json. !== ) ();
json.;
}
result = ();
.(result.);
.(result.);
.(result.);
// edge-functions/phone-location-lookup.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 mobileNumber: string;
try {
const body = await req.json();
mobileNumber = body.mobile_number;
if (!mobileNumber) throw new Error("Missing mobile_number");
} catch {
return new Response(JSON.stringify({ error: "Invalid request body" }), {
status: 400,
headers: { "Content-Type": "application/json" },
});
}
// --- 注入平台密钥(严禁暴露到前端) ---
const apiKey = Deno.env.get();
(!apiKey) {
(.({ : }), {
: ,
: { : },
});
}
upstreamUrl = ();
upstreamUrl..(, mobileNumber);
upstream = (upstreamUrl.(), {
: ,
: {
: ,
: ,
},
});
(upstream. === || upstream. === ) {
errText = upstream.();
(errText, {
: upstream.,
: { : },
});
}
(!upstream.) {
(
.({ : }),
{ : , : { : } }
);
}
data = upstream.();
(.(data), {
: ,
: { : },
});
});
推荐方式(supabase client 可用时):
/**
* 通过 Edge Function 查询手机号归属地。
* @param mobileNumber - 手机号,例如:13800138000
* @returns 包含 area、originalIsp、isVirtuallyIsp 的对象
*/
async function fetchMobileLocation(mobileNumber: string) {
const { data, error } = await supabase.functions.invoke("phone-location-lookup", {
body: { mobile_number: mobileNumber },
});
if (error) throw error;
if (data.code !== 200) throw new Error(`API 错误 ${data.code}:${data.msg}`);
return data.data;
}
备用方式(无法使用 supabase client 时):
/**
* 通过原生 fetch 调用 Edge Function 查询手机号归属地。
* @param mobileNumber - 手机号,例如:13800138000
* @returns 包含 area、originalIsp、isVirtuallyIsp 的对象
*/
async function fetchMobileLocation(mobileNumber: string) {
const res = await fetch(
`${import.meta.env.VITE_SUPABASE_URL}/functions/v1/phone-location-lookup`,
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ mobile_number: mobileNumber }),
}
);
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) throw ();
json = res.();
(json. !== ) ();
json.;
}
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
mobile_number | string | 是 | 手机号,例如:13800138000。通过 URL Query 参数传递,不在请求体中 |
成功响应(code: 200):
| 字段路径 | 类型 | 说明 |
|---|---|---|
code | number | 状态码,200 表示成功 |
taskNo | string | 任务编号 |
data.area | string | 手机号归属地(省份-城市),例如:江苏-南通 |
data.originalIsp | string | 原运营商,例如:电信 / 移动 / 联通 |
data.isVirtuallyIsp | number | 是否虚拟运营商:0 = 否,1 = 是 |
失败响应:
| 字段路径 | 类型 | 说明 |
|---|---|---|
code | number | 错误码,见下表 |
msg | string | 错误描述 |
错误码说明:
| code | 说明 |
|---|---|
| 400 | 参数错误(如手机号格式不正确) |
| 501 | 官方数据源维护,请稍候再试 |
| 999 | 其他错误,以实际返回为准 |
INTEGRATIONS_API_KEY 仅可在 Edge Function 服务端读取,严禁暴露到前端。mobile_number 必须通过 URL Query 参数传递,不在请求体中,请勿放入 POST body。693a129f-b564-47d3-8d45-a080bab70148api-ELbWz8OmB58Y