A scenario-based index of public-source intelligence tools for research, verification, and defensive intelligence workflows.
51 tools · 8 guided workflows · 11 investigation categories · English + 繁中
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, output: "export") |
| Styling | Tailwind CSS v4 |
| Search | Fuse.js (client-side fuzzy) |
| Data | Static JSON — apps/web/data/ |
| Deployment | Vercel (static export) |
# 1. Install dependencies
cd apps/web
npm install
# 2. Start the dev server
npm run dev
# → http://localhost:3000cd apps/web
# Type-check + lint
npm run lint
# Production build (outputs to apps/web/out/)
npm run buildThe out/ directory is a fully self-contained static site — no server required.
Serve it locally for a quick smoke test:
npx serve out-
Push the repository to GitHub.
-
Import the project in vercel.com.
-
Set Root Directory to
apps/web. -
Vercel auto-detects Next.js — no extra configuration needed.
-
(Optional) Add the environment variable:
Key Example value NEXT_PUBLIC_SITE_URLhttps://your-domain.vercel.appThis variable is used for sitemap and robots.txt generation. If omitted, it defaults to
https://osint-hub.vercel.app.
| File | Description |
|---|---|
apps/web/data/tools.json |
51 curated OSINT tools with bilingual descriptions |
apps/web/data/workflows.en.json |
8 guided investigation workflows (English) |
Append a record to tools.json following the existing schema:
{
"id": "unique-slug",
"name": "Tool Name",
"url": "https://tool.example.com",
"description_en": "One-paragraph English description.",
"description_zh_tw": "繁體中文說明。",
"use_cases": ["Use case 1", "Use case 2"],
"tags": ["tag1", "tag2"],
"pricing": "free",
"difficulty": "beginner",
"target_types": ["domain", "ip"],
"platforms": ["web"],
"ethical_flag": false,
"ethics_note": null,
"source_section": "Section Name",
"source_permalink": "https://source.url",
"review": { "status": "ai_candidate", "reviewed_by": null, "reviewed_at": null, "notes": null },
"is_dead_link": false,
"is_active": true
}Append a record to workflows.en.json — see existing entries for the full schema.
python scripts/quality_report.py
# Add --json flag for machine-readable output
python scripts/quality_report.py --json| Script | Purpose |
|---|---|
scripts/run_etl.py |
Harvest raw tool records from the source list |
scripts/enrich_tools.py |
Enrich records with LLM-generated descriptions |
scripts/quality_report.py |
Data quality metrics and coverage report |
| Route | Description |
|---|---|
/ |
Investigation Index — category drill-down |
/workflows |
All guided investigation workflows |
/workflows/[id] |
Workflow detail page |
/search?q=... |
Cross-entity search (tools, workflows, categories) |
/sitemap.xml |
Auto-generated sitemap |
/robots.txt |
Auto-generated robots file |
The UI supports English (default) and Traditional Chinese (繁體中文).
The language toggle is in the navigation bar and persists via localStorage.
- Tool descriptions prefer
description_enin English mode anddescription_zh_twin Chinese mode, with automatic fallback. - Workflow content is English-only for now; Chinese workflow content can be added
by creating
apps/web/data/workflows.zh-TW.jsonand extendinglib/workflows.ts.
OSINT Hub is built for lawful, authorized, public-source research only.
All tools marked with a ⚠ Caution badge require explicit legal mandate or authorization before use. Workflows follow a passive-first methodology with safety checkpoints at every sensitive step.
Do not use this index to facilitate unauthorized access, stalking, harassment, or any activity that violates local law or platform terms of service.