← Back to Skills Marketplace
imjohnathanblog-spec

Geospatial Osint

by imjohnathan · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
340
Downloads
0
Stars
1
Active Installs
1
Versions
Install in OpenClaw
/install geospatial-osint
Description
Open-source geospatial intelligence gathering and visualization dashboard. Use when building Worldview-style spy thriller dashboards, monitoring geopolitical...
README (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

Usage Guidance
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).
Capability Analysis
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.
Capability Assessment
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.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install geospatial-osint
  3. After installation, invoke the skill by name or use /geospatial-osint
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
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.
Metadata
Slug geospatial-osint
Version 1.0.0
License
All-time Installs 1
Active Installs 1
Total Versions 1
Frequently Asked Questions

What is Geospatial Osint?

Open-source geospatial intelligence gathering and visualization dashboard. Use when building Worldview-style spy thriller dashboards, monitoring geopolitical... It is an AI Agent Skill for Claude Code / OpenClaw, with 340 downloads so far.

How do I install Geospatial Osint?

Run "/install geospatial-osint" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Geospatial Osint free?

Yes, Geospatial Osint is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Geospatial Osint support?

Geospatial Osint is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Geospatial Osint?

It is built and maintained by imjohnathan (@imjohnathanblog-spec); the current version is v1.0.0.

💬 Comments