원클릭으로
ip-lookup
Check an IP address across multiple public geolocation and reputation sources and return a best-matched location summary.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Check an IP address across multiple public geolocation and reputation sources and return a best-matched location summary.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Upload and host files anonymously using decentralized storage with Originless and IPFS.
Automate web browsers for AI agents using agent-browser CLI with deterministic element selection.
Log all file changes (write, edit, delete) to a SQLite database for debugging and audit. Use when: (1) Tracking code changes, (2) Debugging issues, (3) Auditing file modifications, or (4) The user asks to track file changes.
Fetch current and historical crypto prices and compute ATH or ATL over common time windows.
Host static websites and assets via zip upload to Originless IPFS. Use when: (1) Deploying static sites, (2) Hosting HTML/CSS/JS projects, (3) Sharing web assets publicly, or (4) User asks to host static files.
Search for torrents by title or IMDB ID via a Torznab-compatible API. Use when: (1) User asks to find a torrent for a movie or show, (2) You need a magnet link for a given title, or (3) User provides an IMDB ID and wants download options.
| name | ip-lookup |
| description | Check an IP address across multiple public geolocation and reputation sources and return a best-matched location summary. |
Purpose
What it does
Notes
Bash example (uses curl + jq):
# Basic usage: IP passed as first arg
IP=${1:-8.8.8.8}
# Query 4 sources
A=$(curl -s "https://ipinfo.io/${IP}/json")
B=$(curl -s "http://ip-api.com/json/${IP}?fields=status,country,regionName,city,lat,lon,org,query")
C=$(curl -s "https://geolocation-db.com/json/${IP}&position=true")
D=$(curl -s "https://api.db-ip.com/v2/free/${IP}" )
# Output best-match heuristics should be implemented in script
echo "One-line summary:"
jq -n '{ip:env.IP,sourceA:A,sourceB:B,sourceC:C,sourceD:D}' --argjson A "$A" --argjson B "$B" --argjson C "$C" --argjson D "$D"
Node.js example (recommended):
// ip_lookup.js
async function fetchJson(url, timeout = 8000){
const controller = new AbortController();
const id = setTimeout(()=>controller.abort(), timeout);
try { const res = await fetch(url, {signal: controller.signal}); clearTimeout(id); if(!res.ok) throw new Error(res.statusText); return await res.json(); } catch(e){ clearTimeout(id); throw e; }
}
async function ipLookup(ip){
const sources = {
ipinfo: `https://ipinfo.io/${ip}/json`,
ipapi: `http://ip-api.com/json/${ip}?fields=status,country,regionName,city,lat,lon,org,query`,
geodb: `https://geolocation-db.com/json/${ip}&position=true`,
dbip: `https://api.db-ip.com/v2/free/${ip}`
};
const results = {};
for(const [k,u] of Object.entries(sources)){
try{ results[k] = await fetchJson(u); } catch(e){ results[k] = {error: e.message}; }
}
// Normalise and pick best match (simple majority on country+city)
const votes = {};
for(const r of Object.values(results)){
if(!r || r.error) continue;
const country = r.country || r.country_name || r.countryCode || null;
const city = r.city || r.city_name || null;
const key = `${country||'?'}/${city||'?'}`;
votes[key] = (votes[key]||0)+1;
}
const best = Object.entries(votes).sort((a,b)=>b[1]-a[1])[0];
return {best: best?best[0]:null,score: best?best[1]:0,results};
}
// Usage: node ip_lookup.js 8.8.8.8
"Use the ip-lookup skill to query at least four public IP information providers for {ip}. Return a short JSON summary: best_match (country/city), score, and per-source details (country, region, city, lat, lon, org). Respect rate limits and fall back to alternate endpoints on errors."
"When creating a new skill, follow SKILL_TEMPLATE.md format and include Node.js and Bash examples."