osint-person-search
Skill9 starsChanged 4 months agoMITView on GitHub
Find and verify person profiles across platforms via OSINT.
- Sends data out
In this repository8 other files it gives its agents.
- deep-web-researchSkill
- interactive-prompt-analyzerSkill
- job-search-automationSkill
- kimi-webbridgeSkill
- linkedin-automationSkill
- mcp-server-researchSkill
- memory-setupSkill
- research-automation-bundleSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 200
Use
evaluatefor form fills: instead of fill (more reliable) - Very specific: line 201
Use
fillfor Enter/submit: instead of clicking buttons
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
OSINT Person Search
A class-level skill for discovering and verifying person profiles, professional presence, and digital footprints across multiple platforms using open-source intelligence techniques.
When to Use
- User needs to find all public profiles for a person (name, email, handle, company)
- Background research on candidates, speakers, competitors, collaborators
- Due diligence, journalism, recruiting, sales prospecting
- Building comprehensive dossiers from fragmented online presence
Core Principles
- Start broad, then narrow — Begin with name + location/role combinations, iterate with discovered handles
- Cross-reference handles — Same username often reused across platforms (johndoe, john_doe, johndoe.com)
- Verify with multiple sources — LinkedIn claim "Senior Designer at Example Corp" confirmed by Behance case study + personal site + XING = high confidence
- Document negative results — "No Facebook profile found for @johndoe" is as valuable as positive findings
- Respect platform ToS — Use search engines, aggregators, public profiles; avoid scraping behind auth walls
Search Strategy Framework
Phase 1: Seed Queries (Name Variants)
"Full Name" → "John Doe"
"First Last" + role → "John Doe product designer"
"First Last" + location → "John Doe Berlin"
"First Last" + company → "John Doe Example Corp"
"First M. Last" → "J. Doe designer"
Handle variations → johndoe, john_doe, john-doePhase 2: Platform-Specific Tactics
| Platform | Best Entry Points | Verification Signals |
site:linkedin.com/in "Name", /pub/dir/First/Last | Connections, endorsements, company pages, license IDs | |
| X/Twitter | @handle, site:twitter.com "Name", site:x.com "Name" | Verified badge, follower/following ratio, tweet history |
@handle, site:instagram.com "Name" | Post consistency, tagged photos, bio links | |
site:facebook.com "Name", public profile directory | Friends list visibility, groups, pages managed | |
| GitHub | @handle, site:github.com "Name" | Repo ownership, contributions, org membership |
| Behance | behance.net/handle, site:behance.net "Name" | Project case studies, appreciations, Adobe certs |
| Dribbble | dribbble.com/handle, site:dribbble.com "Name" | Shots, likes, teams, hiring status |
| XING (DACH) | xing.com/profile/First_Last, site:xing.com "Name" | Skills tags, employment timeline, languages |
| Personal Site | firstname-lastname.com, handle.com, about.me/handle | Domain ownership, portfolio, blog, contact |
| Academic | scholar.google.com "Name", orcid.org, researchgate.net | Publications, citations, affiliations |
Phase 3: Aggregator & Search Engine Leverage
- DuckDuckGo
site:platform.com "Name"— no personalization, good for public profiles - Google
intext:"Name" inurl:linkedin— broader index, may hit auth walls - Bing — often surfaces different results than Google
- Namechk / KnowEm — username availability checker (reverse: find where taken)
- Social Analyzer — CLI/API for multi-platform username enumeration
Phase 4: Enrichment & Correlation
- Email permutation →
hunter.io,voilanorbert,findthat.email(from domain) - Phone/address → Whitepages, TruePeopleSearch (US), local equivalents
- Domain WHOIS →
whois johndoe.com→ registrant name/email - Image reverse search → Google Lens, Yandex, TinEye (profile photos across platforms)
- Certificate Transparency →
crt.shfor subdomains (portfolio.NAME.com)
Verification Checklist (Confidence Scoring)
| Signal | Weight |
| Same handle across 3+ platforms | High |
| Personal site links to LinkedIn/Behance/GitHub | High |
| Company page lists person in role | High |
| Mutual connections on LinkedIn | Medium |
| Consistent bio/headline/location | Medium |
| Cross-platform project references (ProjectX on LinkedIn + Behance + personal site) | High |
| Single platform only, no cross-links | Low |
| Common name, no disambiguators | Very Low |
Output Format (Standardized Dossier)
# Person Dossier: [Name]
## Summary
- **Primary Role**: [Title at Company]
- **Location**: [City, Country]
- **Confidence**: [High/Medium/Low] — [rationale]
## Verified Profiles
| Platform | URL | Handle | Status | Key Signals |
|----------|-----|--------|--------|-------------|
| LinkedIn | https://... | johndoe | ✅ Verified | 2K followers, Example Corp, 10+ certs |
| X/Twitter | https://... | @JohnDoe | ✅ Verified | 1.6K posts, Berlin|NYC, joined 2010 |
| Behance | https://... | johndoe | ✅ Verified | 10+ yrs exp, ProjectX/ProjectY case studies |
| Personal Site | https://johndoe.com | — | ✅ Verified | Portfolio, blog, resume, contact |
## Unverified / Partial
| Platform | URL | Notes |
|----------|-----|-------|
| Instagram | @john_doe | 0 posts, 60 followers — likely inactive/reserved |
| XING | John_Doe | Profile visible but gated behind login |
| F6S | johndoe | Bot detection blocked access |
## Not Found
- Facebook (no public profile matching name + role + location)
- YouTube (@johndoe → 404)
- GitHub (no public repos under handle)Kimi WebBridge Deep Research Workflow
For deep, multi-tab OSINT research using the user's real browser (with their login sessions):
Session-Based Tab Group Management
macOS / Linux:
# 1. Start daemon if needed
~/.kimi-webbridge/bin/kimi-webbridge start
# 2. Create session with group title (first tab)
curl -X POST http://127.0.0.1:10086/command \
-H "Content-Type: application/json" \
-d '{"action":"navigate","args":{"url":"https://www.google.com","newTab":true,"group_title":"Self Research - [Target Name]"},"session":"[target-name]-research"}'
# 3. Search and open results in new tabs (same session = same group)
curl -X POST ... -d '{"action":"navigate","args":{"url":"https://www.linkedin.com/in/[handle]/","newTab":true},"session":"[target-name]-research"}'
curl -X POST ... -d '{"action":"navigate","args":{"url":"https://www.instagram.com/[handle]/","newTab":true},"session":"[target-name]-research"}'
# ... repeat for 10+ tabs across platformsWindows (PowerShell):
# 1. Start daemon if needed
& "$env:USERPROFILE\.kimi-webbridge\bin\kimi-webbridge.exe" start
# 2. Create session with group title
$body = '{"action":"navigate","args":{"url":"https://www.google.com","newTab":true,"group_title":"Self Research - [Target Name]"},"session":"[target-name]-research"}'
$body | Set-Content -Path "$env:TEMP\kimi-nav.json" -Encoding UTF8
curl.exe -X POST http://127.0.0.1:10086/command -H "Content-Type: application/json" --data-binary @"$env:TEMP\kimi-nav.json"Cross-platform (any shell):
# 1. Start daemon if needed
${HOME:-$USERPROFILE}/.kimi-webbridge/bin/kimi-webbridge${EXE:-} start
# 2. Create session (same curl command works everywhere)
curl -X POST http://127.0.0.1:10086/command \
-H "Content-Type: application/json" \
-d '{"action":"navigate","args":{"url":"https://www.google.com","newTab":true,"group_title":"Self Research - [Target Name]"},"session":"[target-name]-research"}'Human-Like Interaction Pattern
# Fill search boxes via evaluate (avoids fill() issues)
curl ... -d '{"action":"evaluate","args":{"code":"document.querySelector(\"textarea[name='q']\").value = \"Target Name\""},"session":"..."}'
# Submit with fill (human-like)
curl ... -d '{"action":"fill","args":{"keys":"Enter"},"session":"..."}'
# Wait between actions (anti-detection)
sleep 3
# Switch tabs and extract content
curl ... -d '{"action":"find_tab","args":{"url":"https://..."},"session":"..."}'
curl ... -d '{"action":"snapshot","args":{},"session":"..."}'Multi-Platform Coverage Checklist (10+ tabs)
| Tab | Target | Purpose |
| 1 | Google Search | Seed query + result URLs |
| 2 | LinkedIn Profile | Professional identity, role, company |
| 3 | Personal/social presence | |
| 4 | Visual content, bio links, highlights | |
| 5 | YouTube Channel | Video content, subscriber count |
| 6 | Google "Name LinkedIn" | LinkedIn-specific results |
| 7 | Google "Name Instagram" | Instagram-specific results |
| 8 | Google "Name YouTube" | YouTube-specific results |
| 9 | Google "Name creator/influencer" | Content creator signals |
| 10 | Google "Name interview podcast" | Media appearances |
| 11+ | Direct content URLs (Shorts, Reels, Posts) | Deep content analysis |
Anti-Detection Best Practices (from user preference)
- Add random delays (2-5s) between tab navigation and extraction
- Use
evaluatefor form fills instead offill(more reliable) - Use
fillfor Enter/submit instead of clicking buttons - Reuse single session name across all tabs → single tab group in browser
- Group title in user's language (e.g., "Self Research - Target Name")
- Snapshot after each state change to verify content loaded
Pitfalls to Avoid
- ❌ Assuming same name = same person (disambiguate with role/location/company)
- ❌ Trusting single-source claims without cross-reference
- ❌ Scraping behind login walls (ToS violation, unreliable)
- ❌ Ignoring "no result" — document what you checked
- ❌ Using stale cached data — re-verify live profiles for time-sensitive work
- ❌ Conflating personal vs. brand accounts (e.g., @john___inc ≠ @johndoe)
Skill Evolution Notes
- 2025-07-27: Created from deep search sessions — validated multi-platform methodology across 12+ platforms, documented handle correlation patterns, and standardized dossier output format.
- 2025-07-27: Applied methodology to search for connections between individuals — demonstrated how to document negative results when no public linkage exists between individuals.
- 2025-07-27: Applied methodology to resolve dual identities (creator persona vs. academic/professional persona) — validated human-like browsing patterns with anti-detection techniques: random delays,
evaluatefor form fills,send_keysfor submit, single session across 11 tabs. Documented full extraction methodology and cross-platform correlation matrix.
Related Skills
social-media-data-extraction— for bulk data collection from platformscomputer-use— for GUI automation when browser tools hit auth walls
References
- Kimi WebBridge Deep Research Workflow
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

