geoip

📁 robberphex/skills 📅 12 days ago
2
总安装量
2
周安装量
#70284
全站排名
安装命令
npx skills add https://github.com/robberphex/skills --skill geoip

Agent 安装分布

amp 2
gemini-cli 2
github-copilot 2
codex 2
kimi-cli 2
opencode 2

Skill 文档

GeoIP

用本 skill 处理“给我一个 IP,查它的地理位置/运营商/ASN”等需求。优先用 Cloudflare(稳定、结构化),没有 token 时用 MaxMind demo 作为退路。

输入约束

  • 只接受 IP 字符串(IPv4/IPv6)。
  • 如果用户给的是域名/URL:先让用户提供 IP(本 skill 不包含 DNS 解析脚本)。
  • 如果是内网/保留地址(如 10.0.0.0/8, 192.168.0.0/16, 127.0.0.1, ::1):直接说明这是非公网地址,GeoIP 通常无意义;除非用户明确要继续。

数据源选择

  • Cloudflare(推荐):需要 CLOUDFLARE_API_TOKEN,走 api.cloudflare.com。
  • MaxMind demo(兜底):无需 token,但依赖网页/CSRF/token 流程,可能随时变更、限流或返回非预期页面。

选择规则(默认):

  1. 如果环境变量 CLOUDFLARE_API_TOKEN 已设置,用 Cloudflare。
  2. 否则使用 MaxMind demo;若失败,提示用户改用 Cloudflare token。

代理

两个脚本都支持读取 https_proxy 环境变量(例如 http://127.0.0.1:7890)。

运行脚本

从仓库根目录运行(确保能找到依赖的 node_modules/):

# Cloudflare(推荐)
node skills/geoip/scripts/cloudflare-geoip.mjs <ip>

# MaxMind demo(兜底)
node skills/geoip/scripts/maxmind-geoip.mjs <ip>

Cloudflare 需要:

export CLOUDFLARE_API_TOKEN="..."

输出与交付格式

脚本会把上游响应 原样 JSON pretty-print 输出到 stdout。

对用户的最终回答按两层输出:

  1. 归一化摘要(优先给这些字段,拿不到就跳过):ip, country, region, city, latitude, longitude, timezone, postal, asn, org/isp,以及数据源(Cloudflare/MaxMind)。
  2. 原始 JSON:如果用户要“完整输出/调试”,直接附上脚本输出(或说明已保存到某文件,如有)。

如果用户给了多个 IP:

  • 逐个调用脚本;最后给一个简短表格(IP -> 国家/城市/ASN)并在需要时附单个 IP 的详细 JSON。

常见问题排查

  • Cloudflare 报错 please set env CLOUDFLARE_API_TOKEN:让用户设置 CLOUDFLARE_API_TOKEN,然后重试。
  • MaxMind demo 返回解析失败/非 JSON:优先判定为上游页面变更或风控;改用 Cloudflare(或要求用户提供别的数据源/API key)。
  • 网络不通:确认是否需要 https_proxy,以及代理是否支持 HTTPS CONNECT。