← 返回 Skills 市场
Geospatial Osint
作者
imjohnathan
· GitHub ↗
· v1.0.0
340
总下载
0
收藏
1
当前安装
1
版本数
在 OpenClaw 中安装
/install geospatial-osint
功能描述
Open-source geospatial intelligence gathering and visualization dashboard. Use when building Worldview-style spy thriller dashboards, monitoring geopolitical...
使用说明 (SKILL.md)
Geospatial OSINT / Worldview Dashboard
This skill covers building real-time geospatial intelligence dashboards inspired by Bilawal Sidhu's Worldview project.
Quick Start
Core Data Sources (Free)
| Source | API/URL | Use Case |
|---|---|---|
| ADS-B Exchange | API, free key | Commercial flights |
| ADS-B Exchange Military | API | Military aircraft |
| OpenSky Network | Free API | Flight data |
| MarineTraffic | Free tier | Ship positions |
| CelesTrak | TLE files | Satellite orbits |
| n2yo.com | Free API | Satellite passes |
| GPSJam | Static | GPS jamming heatmaps |
| Earthquakes | GeoJSON | Seismic data |
| Insecam | Public cams | CCTV cameras |
| OpenStreetMap | Overpass API | Road networks |
Paid Options (Optional)
- Planet Labs (daily imagery)
- Maxar (high-res)
- Capella Space (SAR)
- MarineTraffic Pro
Architecture
Stack
Frontend: Cesium.js (3D globe) + Three.js (effects)
Data Layer: Polling APIs → WebSocket → Entity updates
Visual: Post-processing (bloom, CRT, NVG, thermal)
Development: Multi-agent CLI (OpenClaw, Claude, etc.)
Visual Modes
Worldview supports multiple rendering modes:
// Effect pipeline examples
const effects = {
// Night Vision Goggles (green tint + scanlines)
nvg: {
colorMatrix: [0,1,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1],
scanlines: true,
vignette: 0.3
},
// Thermal (heat map coloring)
thermal: {
colorMap: 'inferno',
threshold: true
},
// CRT (scanlines + curvature + glow)
crt: {
scanlines: 0.5,
curvature: 0.02,
bloom: 0.5
},
// Fluor (high contrast military green)
fluor: {
colorMatrix: [0,0.5,0,0, 0,1,0,0, 0,0.5,0,0, 0,0,0,1],
contrast: 1.5
}
};
Data Layers
| Layer | Source | Update Freq |
|---|---|---|
| Satellites | CelesTrak TLE | Periodic refresh |
| Commercial flights | ADS-B / OpenSky | ~5 sec |
| Military flights | ADS-B Exchange military | ~5 sec |
| Ships | MarineTraffic | ~1 min |
| CCTV | Insecam | ~1 min |
| Road traffic | OSM + simulation | Static + particles |
| Earthquakes | USGS | Real-time |
| GPS jamming | GPSJam | Static/daily |
Dashboard Template
Basic Cesium Setup
import * as Cesium from 'cesium';
const viewer = new Cesium.Viewer('container', {
terrainProvider: Cesium.createWorldTerrain(),
baseLayerPicker: false,
timeline: true,
animation: true,
sceneMode: Cesium.SceneMode.SCENE3D
});
// Enable 3D buildings
viewer.scene.primitives.add(Cesium.createOsmBuildings());
// Clock settings for replay
viewer.clock.shouldAnimate = true;
viewer.clock.multiplier = 60; // 60x speed
Loading Flight Data
async function loadFlights(bounds) {
const response = await fetch(
`https://opensky-network.org/api/states/all?lamin=${bounds.minLat}&lomin=${bounds.minLon}&lamax=${bounds.maxLat}&lomax=${bounds.maxLon}`
);
const data = await response.json();
data.states.forEach(flight => {
const [icao, callsign, .., lat, lon, alt, .., velocity, heading] = flight;
// Add entity to viewer
viewer.entities.add({
id: icao,
position: Cesium.Cartesian3.fromDegrees(lon, lat, alt),
point: { pixelSize: 5, color: getFlightColor(callsign) },
label: { text: callsign, font: '10px monospace' }
});
});
}
Satellite Tracking
// Load TLE and calculate positions
const satellites = await fetch('https://celestrak.org/NORAD/elements/gp.php?GROUP=visual&FORMAT=tle')
.then(r => r.text());
// Use satellite.js to propagate
import { propagate, eciToEcf } from 'satellite.js';
function updateSatellite(satrec, time) {
const position = propagate(satrec, time);
const gmst = satellite.gstime(time);
const positionEcf = eciToEcf(position.position, gmst);
return {
x: positionEcf.x * 1000,
y: positionEcf.y * 1000,
z: positionEcf.z * 1000
};
}
CCTV Camera Overlay
// Insecam - public cameras
async function loadCameras(bounds) {
const response = await fetch(
`https://www.insecam.org/en/by-country/XX/?page=1` // Filter by country
);
// Parse camera list, add as entities with video texture
}
// Project camera onto 3D geometry
cameraEntities.forEach(cam => {
viewer.entities.add({
position: cam.location,
billboard: {
image: cam.snapshot,
width: 320,
height: 240,
pixelOffset: new Cesium.Cartesian2(0, -120)
}
});
});
Post-Processing Effects
// Using Cesium's PostProcessStage
const bloom = viewer.scene.postProcessStages.bloom;
bloom.enabled = true;
bloom.threshold = 0.5;
bloom.strength = 0.5;
// Custom shader for CRT effect
const crtEffect = new Cesium.PostProcessStage({
name: 'crt',
fragmentShader: `
uniform sampler2D colorTexture;
varying vec2 v_textureCoord;
void main() {
vec4 color = texture2D(colorTexture, v_textureCoord);
// Scanlines
float scanline = sin(v_textureCoord.y * 800.0) * 0.04;
// Vignette
float vignette = 1.0 - length(v_textureCoord - 0.5) * 0.5;
gl_FragColor = vec4(color.rgb * (1.0 - scanline) * vignette, 1.0);
}
`
});
Workflow: Building with AI Agents
Multi-Agent Setup
Run multiple terminals in parallel:
Terminal 1: Core 3D globe + Cesium setup
Terminal 2: Data integration (flights, satellites)
Terminal 3: Visual effects (shaders, post-processing)
Terminal 4: UI controls + camera systems
Prompt Template
Build a [feature] for my Cesium.js geospatial dashboard.
Requirements:
- [specific behavior]
- Integration with existing data layer
- Performance: handle [N] entities without lag
- Visual style: [CRT/NVG/thermal/none]
Performance Tips
// Sequential loading for large datasets
async function loadSequential(data, chunkSize = 1000) {
for (let i = 0; i \x3C data.length; i += chunkSize) {
const chunk = data.slice(i, i + chunkSize);
chunk.forEach(addEntity);
await new Promise(r => setTimeout(r, 100)); // Yield to UI
}
}
// Use PointPrimitiveCollection for 10k+ points
const points = viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection());
points.add({ position: ..., color: ... });
Region Monitoring
Automated Polling
import requests
import schedule
from datetime import datetime
REGIONS = {
'iran': {'lat': 32.0, 'lon': 52.0, 'radius': 500},
'gulf': {'lat': 26.0, 'lon': 52.0, 'radius': 300},
}
def monitor():
for name, bounds in REGIONS.items():
flights = get_flights(bounds)
military = get_military(bounds)
if detect_anomaly(flights, military):
alert(f"Anomaly in {name}: {details}")
schedule.every(5).minutes.do(monitor)
Alert Conditions
- Sudden flight rerouting
- New no-fly zones
- Unusual military activity
- Satellite coverage of area of interest
References
安全使用建议
This skill is an instruction-only blueprint for building a powerful surveillance-style dashboard; that in itself is not illegal, but it has real privacy, legal, and operational implications. Before installing or using it: (1) verify the publisher and provenance (no homepage, unknown source raises risk); (2) expect to supply multiple API keys/tokens for ADS‑B Exchange, MarineTraffic, Cesium Ion, n2yo, or commercial imagery — do not paste secrets into untrusted UIs; (3) consider removing or disabling the Insecam/CCTV scraping and any military-tracking features if you need to avoid privacy/legal exposure; (4) check terms-of-service and local laws for each data provider (and for bulk scraping of public camera sites); (5) run experiments in an isolated environment (separate account or sandbox) and audit any code generated by agents before pushing to production. If you want, I can list the exact API credentials the code samples reference and show how to scope and store them safely (eg. per-service env vars, least-privilege tokens).
功能分析
Type: OpenClaw Skill
Name: geospatial-osint
Version: 1.0.0
The geospatial-osint skill bundle provides comprehensive documentation and code snippets for building a 3D geospatial intelligence dashboard using Cesium.js and various public data sources like ADS-B Exchange, OpenSky, and CelesTrak. The included JavaScript and Python examples for flight tracking, satellite propagation, and visual post-processing effects (CRT/NVG) are standard for OSINT visualization and lack any indicators of malicious intent, data exfiltration, or unauthorized execution.
能力评估
Purpose & Capability
The name/description align with the instructions: the SKILL.md provides code and references for building a Cesium-based geospatial dashboard that aggregates satellites, flights, ships, CCTV, seismic data, and rendering effects. That capability set is coherent with the stated purpose.
Instruction Scope
The runtime instructions direct fetching and embedding of many external data sources (ADS‑B Exchange including a military endpoint, OpenSky, MarineTraffic, Insecam CCTV snapshots, CelesTrak TLEs, n2yo, USGS, GPSJam). They also suggest using paid imagery providers and a Cesium Ion token. The doc instructs collecting and displaying potentially privacy-sensitive live camera feeds and military aircraft data; it does not limit or contextualize legal/ethical constraints. The instructions do not ask to read local files or hidden system state, but they give broad discretion to poll many external endpoints and embed camera snapshots, which materially expands the skill's data access surface.
Install Mechanism
Instruction-only skill with no install spec or code files to execute on disk. This minimizes install-time risk; nothing is downloaded or installed by the registry metadata itself.
Credentials
The skill declares no required env vars or primary credential, but the documentation and example code explicitly reference multiple API keys/tokens (ADS‑B Exchange API key, MarineTraffic, Cesium.Ion token, Planet/Maxar/Capella credentials, n2yo API, Space‑Track login). That mismatch is an inconsistency: the skill will need secrets to use some sources, yet none are declared in metadata. Requiring credentials from multiple commercial providers would be reasonable for full functionality, but the skill should declare them and justify their need. Additionally, the skill suggests scraping public CCTV (Insecam) which involves aggregating content that may be privacy-sensitive even without credentials.
Persistence & Privilege
always is false and there is no install script or code that persists state or modifies other skills. The skill does not request elevated registry-level privileges in the metadata.
如何使用
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install geospatial-osint - 安装完成后,直接呼叫该 Skill 的名称或使用
/geospatial-osint触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
- Initial release of geospatial-osint skill.
- Provides a comprehensive template and guidance for building real-time geospatial intelligence dashboards.
- Details free and paid data sources covering aviation, maritime, satellite, seismic, and CCTV data.
- Includes example integrations for Cesium.js, multi-mode visualization effects (CRT, NVG, thermal), and multi-agent development workflows.
- Offers performance tips, region monitoring scripts, and automated alerting examples for live OSINT analysis.
元数据
常见问题
Geospatial Osint 是什么?
Open-source geospatial intelligence gathering and visualization dashboard. Use when building Worldview-style spy thriller dashboards, monitoring geopolitical... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 340 次。
如何安装 Geospatial Osint?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install geospatial-osint」即可一键安装,无需额外配置。
Geospatial Osint 是免费的吗?
是的,Geospatial Osint 完全免费(开源免费),可自由下载、安装和使用。
Geospatial Osint 支持哪些平台?
Geospatial Osint 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Geospatial Osint?
由 imjohnathan(@imjohnathanblog-spec)开发并维护,当前版本 v1.0.0。
推荐 Skills