Skill: ahsan3274/osint-api (version 1.0.9)

--- name: osint-api description: > AI-powered OSINT intelligence reports via API. Multiple RSS feeds across 15 categories with enriched analysis, domain recon, and automated feed health monitoring. homepage: https://github.com/ahsan-tariq-ai/osint-api metadata: clawdbot: emoji: "🔍" requires: env: ["OSINT_API_KEY"] primaryEnv: "OSINT_API_KEY" files: ["scripts/osint_api.py"] externalEndpoints: - https://osint.ahsan-tariq-ai.xyz/api/v1 trust: > This skill calls a single hosted API at osint.ahsan-tariq-ai.xyz. The helper script (scripts/osint_api.py) makes HTTPS requests to that domain only — no other network access, no local files read/written, no shell commands executed. The OSINT_API_KEY environment variable is required for authenticated endpoints. --- # OSINT API — Intelligence Reports AI-powered OSINT intelligence reports via API. Multiple RSS feeds across 15 categories with enriched analysis, domain recon, and automated feed health monitoring. ## External Endpoints All requests go to a single hosted API: | Endpoint | Method | Purpose | Auth Required | |----------|--------|---------|---------------| | `https://osint.ahsan-tariq-ai.xyz/api/v1/reports/enriched` | GET | Intelligence briefings | Yes | | `https://osint.ahsan-tariq-ai.xyz/api/v1/reports/categories` | GET | List categories | Yes | | `https://osint.ahsan-tariq-ai.xyz/api/v1/recon/{domain}` | GET | Domain recon (DNS/WHOIS/IP) | Yes | | `https://osint.ahsan-tariq-ai.xyz/api/v1/social/{username}` | GET | Social media profiles | Yes | | `https://osint.ahsan-tariq-ai.xyz/api/v1/breach/{email}` | GET | Breach database check | Yes | ## Security & Privacy - **API key required** — all endpoints require `OSINT_API_KEY` environment variable - **Single external host** — all requests go to `osint.ahsan-tariq-ai.xyz` only - **No local file access** — the helper script reads no local files - **No data persistence** — responses are returned and not saved locally - **HTTPS only** — all traffic encrypted via TLS - **Helper script** — `scripts/osint_api.py` is a thin Python wrapper that calls the API. It uses `urllib.request` (stdlib only), makes no shell calls, and performs no local I/O. ## Required Environment ```bash export OSINT_API_KEY="your_api_key_here" ``` Sign up for an API key at https://osint.ahsan-tariq-ai.xyz ## Tools ### get_reports Get enriched intelligence briefings across 15 categories. **Endpoint:** `GET /reports/enriched` **Parameters:** | Param | Type | Required | Default | Description | |-------|------|----------|---------|-------------| | category | string | No | all | Filter by category name | **Usage:** ```bash python3 scripts/osint_api.py reports python3 scripts/osint_api.py reports --category geopolitics ``` Or via curl (with API key): ```bash curl -H "Authorization: Bearer $OSINT_API_KEY" \ "https://osint.ahsan-tariq-ai.xyz/api/v1/reports/enriched" ``` **Response:** ```json { "status": "success", "date": "2026-04-06", "reports": [ { "category": "geopolitics", "enriched": true, "confidence": 0.82, "article_count": 47, "briefing": "Escalating tensions in Eastern Europe..." } ], "total_categories": 15 } ``` ### get_categories List all available report categories with metadata. **Endpoint:** `GET /reports/categories` **Usage:** ```bash python3 scripts/osint_api.py categories ``` ### domain_recon Get DNS, WHOIS, and IP intelligence for any domain. **Endpoint:** `GET /recon/{domain}` **Parameters:** | Param | Type | Required | Description | |-------|------|----------|-------------| | domain | string | Yes | Domain to investigate | **Usage:** ```bash python3 scripts/osint_api.py recon --domain google.com ``` ### social_lookup Find social media profiles for a username. **Endpoint:** `GET /social/{username}` **Usage:** ```bash python3 scripts/osint_api.py social --username username ``` ### breach_check Check if an email appears in known breach databases. **Endpoint:** `GET /breach/{email}` **Usage:** ```bash python3 scripts/osint_api.py breach --email [REDACTED_SECRET] ``` ## Categories The engine collects from multiple RSS feeds across 15 categories: | Category | Focus | |----------|-------| | cybersecurity | Threats, CVEs, vendor advisories | | tech_ai | AI/ML news, product launches, research | | geopolitics | World news, conflict, diplomacy | | finance | Markets, crypto, economics | | healthcare | Pharma, biotech, medical research | | legal_regtech | Law, compliance, regulatory focus | | marketing_adtech | Marketing industry, ad tech | | supply_chain | Logistics, freight, supply chain | | climate_sustainability | Climate change, ESG, green tech | | real_estate_proptech | Property, PropTech | | education_edtech | Education technology | | energy_utilities | Power, energy, utilities | | agriculture_foodtech | Agriculture, food tech | | entertainment_media | Gaming, streaming, media | | labor_workforce | Labor market, workplace intelligence | ## Helper Script `scripts/osint_api.py` is a thin Python wrapper (stdlib only, no dependencies) that calls the OSINT API. It: - Makes HTTPS requests to `osint.ahsan-tariq-ai.xyz` only - Requires `OSINT_API_KEY` environment variable - Reads no local files, writes no local files - Executes no shell commands - Sanitizes all input via `urllib.parse.quote` ## Pricing | Tier | Price | Requests/Day | Features | |------|-------|-------------|----------| | Free | $0/mo | 50 | Market Intelligence (15 categories), Domain Recon | | Pro | 10 USDC/mo | 1,000 | Everything in Free + Social Lookup (10+ platforms), Breach Check | | Enterprise | 50 USDC/mo | 10,000 | Everything in Pro + Dedicated Gateway, Enriched Briefings (LLM) | ## Notes - Reports are refreshed daily via cron — API responses are cached - Confidence scores: 0.0-1.0 based on article count, source diversity, signal strength

path: README.md
content: # OSINT API — ClawHub Skill

[![ClawHub](https://img.shields.io/badge/ClawHub-skill-blue)](https://clawhub.ai/skills/osint-api)
[![Version](https://img.shields.io/badge/version-0.6.0-green)](https://github.com/ahsan-tariq-ai/osint-api)

Professional OSINT intelligence reports via API. Multiple RSS feeds across 15 categories with enriched analysis, domain recon, and automated feed health monitoring.

## Install

```bash
openclaw skills install osint-api
```

Or set the required API key:

```bash
export OSINT_API_KEY="your_key_here"
```

Get a key at https://osint.ahsan-tariq-ai.xyz

## Usage

```bash
# Get today's intelligence reports
python3 scripts/osint_api.py reports

# Filter by category
python3 scripts/osint_api.py reports --category geopolitics

# List categories
python3 scripts/osint_api.py categories

# Domain recon
python3 scripts/osint_api.py recon --domain google.com

# Social media lookup
python3 scripts/osint_api.py social --username username

# Breach check
python3 scripts/osint_api.py breach --email [REDACTED_SECRET]
```

## API

All endpoints documented in `SKILL.md`. Base URL: `https://osint.ahsan-tariq-ai.xyz/api/v1`

## Source

- GitHub: https://github.com/ahsan-tariq-ai/osint-api
- Dashboard: https://osint.ahsan-tariq-ai.xyz/osint-dashboard


path: package.json
content: {
  "name": "osint-api",
  "version": "0.6.0",
  "description": "Professional OSINT intelligence reports via API — multiple feeds, enriched analysis, domain recon",
  "author": "ahsan-tariq",
  "license": "MIT",
  "keywords": ["osint", "intelligence", "feeds", "recon", "domain", "api", "reports"],
  "files": ["SKILL.md"],
  "homepage": "https://osint.ahsan-tariq-ai.xyz",
  "api": {
    "base_url": "https://osint.ahsan-tariq-ai.xyz/api/v1",
    "endpoints": {
      "reports": "/reports/enriched",
      "categories": "/reports/categories",
      "recon": "/recon/{domain}",
      "social": "/social/{username}",
      "breach": "/breach/{email}",
      "signup": "/signup",
      "install": "/install"
    }
  },
  "scripts": {
    "test": "curl -s https://osint.ahsan-tariq-ai.xyz/api/v1/reports/enriched | head -20",
    "dashboard": "open https://osint.ahsan-tariq-ai.xyz/osint-dashboard"
  }
}


path: scripts/osint_api.py
content: #!/usr/bin/env python3
"""
OSINT API — Skill Helper Script
Security Manifest:
  - Environment: OSINT_API_KEY (optional, for authenticated endpoints)
  - External: https://osint.ahsan-tariq-ai.xyz/api/v1/*
  - Local: No files read or written
  - Data: No data collection or persistence

Usage:
    python3 osint_api.py reports [--category CATEGORY]
    python3 osint_api.py categories
    python3 osint_api.py recon --domain DOMAIN
    python3 osint_api.py social --username USERNAME
    python3 osint_api.py breach --email EMAIL
"""

import argparse
import json
import os
import sys
from urllib.request import Request, urlopen
from urllib.parse import quote
from urllib.error import HTTPError, URLError

BASE_URL = "https://osint.ahsan-tariq-ai.xyz/api/v1"
[REDACTED_SECRET]"OSINT_API_KEY", "")

if not [REDACTED_SECRET]"Error: OSINT_API_KEY environment variable is required.", file=sys.stderr)
    print("Get a key: curl -X POST https://osint.ahsan-tariq-ai.xyz/api/v1/signup -d 'email=[REDACTED_SECRET]'", file=sys.stderr)
    sys.exit(1)

def make_request(method, path, data=None):
    """Make an authenticated HTTPS request to the OSINT API."""
    url = f"{BASE_URL}{path}"
    body = None
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {API_KEY}",
    }

    if data:
        body = json.dumps(data).encode("utf-8")

    req = Request(url, data=body, headers=headers, method=method)

    try:
        with urlopen(req, timeout=30) as resp:
            return json.loads(resp.read().decode("utf-8"))
    except HTTPError as e:
        print(f"Error: HTTP {e.code} — {e.read().decode()}", file=sys.stderr)
        sys.exit(1)
    except URLError as e:
        print(f"Error: Connection failed — {e.reason}", file=sys.stderr)
        sys.exit(1)


def main():
    parser = argparse.ArgumentParser(description="OSINT API Helper")
    sub = parser.add_subparsers(dest="command", required=True)

    # reports
    p_reports = sub.add_parser("reports", help="Get intelligence reports")
    p_reports.add_argument("--category", help="Filter by category")

    # categories
    sub.add_parser("categories", help="List available categories")

    # recon
    p_recon = sub.add_parser("recon", help="Domain reconnaissance")
    p_recon.add_argument("--domain", required=True, help="Domain to investigate")

    # social
    p_social = sub.add_parser("social", help="Social media lookup")
    p_social.add_argument("--username", required=True, help="Username to search")

    # breach
    p_breach = sub.add_parser("breach", help="Breach database check")
    p_breach.add_argument("--email", required=True, help="Email to check")

    args = parser.parse_args()

    if args.command == "reports":
        path = "/reports/enriched"
        if args.category:
            path += f"?category={quote(args.category)}"
        result = make_request("GET", path)

    elif args.command == "categories":
        result = make_request("GET", "/reports/categories")

    elif args.command == "recon":
        result = make_request("GET", f"/recon/{quote(args.domain)}")

    elif args.command == "social":
        result = make_request("GET", f"/social/{quote(args.username)}")

    elif args.command == "breach":
        result = make_request("GET", f"/breach/{quote(args.email)}")

    else:
        parser.print_help()
        sys.exit(1)

    print(json.dumps(result, indent=2))


if __name__ == "__main__":
    main()


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)