OSINT Skill

March 10, 2026 · View on GitHub

Early Beta License: MIT Apify Actors

Early Beta — functional but APIs change, Apify actors rotate, and edge cases are still being discovered.

Версия на русском / Russian version

Systematic intelligence gathering on individuals. From a name or handle to a scored dossier with psychoprofile, career map, and entry points.

Compatible Agents

Works with any AI coding agent that supports the SKILL.md format:

AgentInstall
Claude Codecp -r osint/ ~/.claude/skills/osint/
OpenClawCopy to workspace skills/ directory
CodexPoint to osint/SKILL.md in your agent config
OpenCodeCopy to project skills/ directory
Any SKILL.md agentPlace osint/ folder where your agent reads skills

The skill uses standard tools (bash, curl, node, python3) and writes instructions in Markdown — no vendor lock-in.

Features

  • Phased pipeline (0 → 1 → 1.5 → 2 → 3 → 4 → 5 → 6): from quick search to deep research
  • Swarm Mode: coordinates 3-5 parallel sub-agents on Sonnet for speed
  • 55+ Apify actors embedded: Instagram (12), Facebook (14), TikTok (14), YouTube (5), Google Maps (4), LinkedIn, and more
  • Psychoprofile: MBTI / Big Five based on content analysis (YouTube transcripts, Telegram messages, blogs)
  • Confidence Scoring: every fact gets graded A/B/C/D by number of independent confirmations
  • Internal Intelligence: checks Telegram history, email, vault contacts BEFORE going external
  • Research Escalation: 4 levels from free to $0.50, from seconds to minutes
  • Budget tracking: spends ≤$0.50 without asking, asks permission above that

Quick Start

# Clone the repo
git clone https://github.com/smixs/osint-skill.git
cd osint-skill

# Copy to your agent's skills directory (example for Claude Code)
cp -r osint/ ~/.claude/skills/osint/

# Run self-diagnostics to check what's available
bash osint/scripts/diagnose.sh

Requirements

Required

ToolPurposeInstall
curlHTTP requests to APIsPre-installed on macOS/Linux
python3JSON parsing, MCP clientPre-installed on macOS/Linux
jqJSON processingbrew install jq / apt install jq

For Apify actors (55+ platforms)

ToolPurposeInstall
Node.js 18+Runs run_actor.js (embedded Apify runner)nodejs.org

Optional

ToolPurposeInstall
mcpcDynamic actor discovery in Apify Storenpm install -g @apify/mcpc

API Keys & Services

The skill uses graceful degradation — the more API keys you provide, the deeper it can dig. You need at least one search API to get started.

Free Tier

ServiceEnv VariableWhat It DoesGet It
Brave Search(built into Claude Code)2,000 queries/month, basic web searchBuilt-in, nothing needed
Jina AIJINA_API_KEYURL → markdown reader, search, deepsearchjina.ai/api-key
ApifyAPIFY_API_TOKENInstagram, TikTok, YouTube, LinkedIn scraping. Free tier ~$5/monthconsole.apify.com
Parallel AIPARALLEL_API_KEYAI-powered search with reasoning and citationsplatform.parallel.ai
ServiceEnv VariableWhat It DoesCostGet It
Perplexity APIPERPLEXITY_API_KEYSonar (fast AI answers), Deep Research~$5/monthperplexity.ai/settings/api
Exa AIEXA_API_KEYSemantic search, people/company research~$5/monthdashboard.exa.ai
TavilyTAVILY_API_KEYAgent-optimized search, $0.005/request basic~$5/monthapp.tavily.com

Advanced

ServiceEnv VariableWhat It DoesCostGet It
Bright DataBRIGHTDATA_MCP_URLCAPTCHA bypass, authwall bypass, Facebook scraping, Yandex search~$10/month+brightdata.com/mcp

Setting Up Keys

Option 1 — Environment variables (recommended):

export PERPLEXITY_API_KEY="pplx-..."
export EXA_API_KEY="exa-..."
export APIFY_API_TOKEN="apify_api_..."
export JINA_API_KEY="jina_..."
export TAVILY_API_KEY="tvly-..."
export PARALLEL_API_KEY="..."
export BRIGHTDATA_MCP_URL="https://mcp.brightdata.com/..."

Option 2 — File fallback (supported by some scripts):

<workspace>/scripts/apify-api-token.txt
<workspace>/scripts/jina-api-key.txt
<workspace>/scripts/parallel-api-key.txt
<workspace>/scripts/brightdata-mcp-url.txt

How It Works

Research Phases

Phase 0: Tooling Self-Check      → diagnose.sh, check available tools
Phase 1: Seed Collection         → parallel search across all engines
Phase 1.5: Internal Intelligence → Telegram, email, vault (BEFORE external sources)
Phase 2: Platform Extraction     → LinkedIn, Instagram, Facebook, TikTok, YouTube...
Phase 3: Cross-Reference         → facts verified, graded A/B/C/D
Phase 4: Psychoprofile           → MBTI, Big Five, communication style
Phase 5: Completeness Check      → 9 mandatory checks + Depth Score 1-10
Phase 6: Dossier Output          → formatted dossier from template

Research Escalation (cheap → expensive)

Level 1: Quick Answers      → Perplexity Sonar, Brave, Tavily, Exa    (~\$0.00)
Level 2: Source Verification → Jina read, Parallel extract             (~\$0.01)
Level 3: Social Media        → Apify scrapers, Bright Data             (~\$0.01-0.10)
Level 4: Deep Research       → Perplexity Deep, Exa Deep, Jina Deep   (~\$0.05-0.50)

Embedded Scripts

ScriptPurpose
diagnose.shSelf-diagnostics for all tools and APIs
perplexity.shsearch / sonar / deep research
tavily.shsearch / deep / extract
exa.shsearch / company / people / crawl / deep
first-volley.shParallel search across all engines at once
merge-volley.shDeduplicate and group search results
apify.shLinkedIn / Instagram / any actor / store search
run-actor.shUniversal Apify runner (55+ actors, polling, CSV/JSON export)
run_actor.jsNode.js engine powering run-actor.sh
jina.shread URL / search / deepsearch
parallel.shsearch / extract
brightdata.shscrape / search / search-geo / search-yandex
mcp-client.pyLightweight MCP client for Bright Data (stdlib only)

Project Structure

osint/
├── SKILL.md                          # Main skill file (452 lines)
├── references/
│   ├── tools.md                      # Full catalog of 55+ Apify actors + all tools
│   ├── platforms.md                  # Platform-specific extraction guide
│   ├── content-extraction.md         # YouTube/podcast/blog extraction
│   └── psychoprofile.md              # MBTI/Big Five methodology
├── assets/
│   └── dossier-template.md           # Output dossier template
└── scripts/
    ├── diagnose.sh                   # Self-check
    ├── run-actor.sh                  # Universal Apify runner (bash wrapper)
    ├── run_actor.js                  # Apify runner engine (Node.js, embedded)
    ├── package.json                  # ESM support for run_actor.js
    ├── apify.sh                      # Apify shortcuts
    ├── perplexity.sh                 # Perplexity API
    ├── tavily.sh                     # Tavily API
    ├── exa.sh                        # Exa AI API
    ├── jina.sh                       # Jina AI API
    ├── parallel.sh                   # Parallel AI API
    ├── brightdata.sh                 # Bright Data MCP
    ├── mcp-client.py                 # MCP client (Python, stdlib only)
    ├── first-volley.sh               # Parallel first search
    └── merge-volley.sh               # Result merging

Known Issues (Beta)

  • Shell injection: user input is interpolated into JSON without jq escaping. Do not run with untrusted input.
  • macOS: first-volley.sh uses tail --pid (Linux-only). Parallel searches work on macOS, but timeout logic may not trigger.
  • Apify actors: actor IDs can change or get removed without notice. Use apify.sh store-search to find alternatives.
  • Inconsistent key loading: Perplexity, Tavily, and Exa only load from env vars (no file fallback, unlike Apify/Jina/Parallel).

Credits

License

MIT