bmad-plus 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +75 -0
- package/README.md +482 -0
- package/osint-agent-package/README.md +88 -0
- package/osint-agent-package/SETUP_KEYS.md +108 -0
- package/osint-agent-package/agents/osint-investigator.md +80 -0
- package/osint-agent-package/install.ps1 +87 -0
- package/osint-agent-package/install.sh +76 -0
- package/osint-agent-package/skills/bmad-osint-investigate/SKILL.md +147 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +452 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +116 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/enrichment-databases-fr.md +148 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/_http.py +101 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/apify.py +260 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/brightdata.py +101 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/diagnose.py +141 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/exa.py +79 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/jina.py +71 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/parallel.py +85 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/perplexity.py +102 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/tavily.py +72 -0
- package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/volley.py +208 -0
- package/osint-agent-package/skills/bmad-osint-investigator/SKILL.md +15 -0
- package/package.json +51 -0
- package/readme-international/README.de.md +392 -0
- package/readme-international/README.es.md +484 -0
- package/readme-international/README.fr.md +482 -0
- package/src/bmad-plus/agents/agent-architect-dev/SKILL.md +96 -0
- package/src/bmad-plus/agents/agent-architect-dev/bmad-skill-manifest.yaml +13 -0
- package/src/bmad-plus/agents/agent-maker/SKILL.md +201 -0
- package/src/bmad-plus/agents/agent-maker/bmad-skill-manifest.yaml +13 -0
- package/src/bmad-plus/agents/agent-orchestrator/SKILL.md +137 -0
- package/src/bmad-plus/agents/agent-orchestrator/bmad-skill-manifest.yaml +13 -0
- package/src/bmad-plus/agents/agent-quality/SKILL.md +83 -0
- package/src/bmad-plus/agents/agent-quality/bmad-skill-manifest.yaml +13 -0
- package/src/bmad-plus/agents/agent-shadow/SKILL.md +71 -0
- package/src/bmad-plus/agents/agent-shadow/bmad-skill-manifest.yaml +13 -0
- package/src/bmad-plus/agents/agent-strategist/SKILL.md +80 -0
- package/src/bmad-plus/agents/agent-strategist/bmad-skill-manifest.yaml +13 -0
- package/src/bmad-plus/data/role-triggers.yaml +209 -0
- package/src/bmad-plus/module-help.csv +10 -0
- package/src/bmad-plus/module.yaml +174 -0
- package/src/bmad-plus/skills/bmad-plus-autopilot/SKILL.md +99 -0
- package/src/bmad-plus/skills/bmad-plus-parallel/SKILL.md +93 -0
- package/src/bmad-plus/skills/bmad-plus-sync/SKILL.md +69 -0
- package/tools/bmad-plus-npx.js +33 -0
- package/tools/cli/bmad-plus-cli.js +50 -0
- package/tools/cli/commands/install.js +437 -0
- package/tools/cli/commands/uninstall.js +70 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Bases de données et outils d'enrichissement OSINT — France
|
|
2
|
+
|
|
3
|
+
## 🇫🇷 Registres d'entreprises (données publiques, gratuites)
|
|
4
|
+
|
|
5
|
+
### Pappers.fr ⭐ Priorité 1
|
|
6
|
+
- **URL** : https://www.pappers.fr
|
|
7
|
+
- **Données** : SIREN/SIRET, dirigeants (noms + adresses perso dans les statuts), bilans, statuts (PDF), actes, annonces BODACC
|
|
8
|
+
- **Gratuit** : Oui (accès complet aux fiches, PDFs des statuts et actes)
|
|
9
|
+
- **Astuce OSINT** : Les statuts de société contiennent souvent l'adresse personnelle du fondateur
|
|
10
|
+
- **Google dork** : `"Nom Prénom" site:pappers.fr` ou `"Nom" filetype:pdf site:pappers.fr`
|
|
11
|
+
|
|
12
|
+
### Societe.com
|
|
13
|
+
- **URL** : https://www.societe.com
|
|
14
|
+
- **Données** : Fiches entreprises, dirigeants, établissements, chiffre d'affaires
|
|
15
|
+
- **Gratuit** : Données de base gratuites, détails payants
|
|
16
|
+
- **Google dork** : `"Nom Prénom" site:societe.com dirigeant`
|
|
17
|
+
|
|
18
|
+
### Infogreffe.fr
|
|
19
|
+
- **URL** : https://www.infogreffe.fr
|
|
20
|
+
- **Données** : Kbis, comptes annuels, actes officiels
|
|
21
|
+
- **Gratuit** : Recherche gratuite, documents payants
|
|
22
|
+
|
|
23
|
+
### Verif.com
|
|
24
|
+
- **URL** : https://www.verif.com
|
|
25
|
+
- **Données** : Fiches entreprises, dirigeants, données financières
|
|
26
|
+
- **Gratuit** : Oui pour les infos de base
|
|
27
|
+
|
|
28
|
+
### BODACC (Bulletin Officiel des Annonces Civiles et Commerciales)
|
|
29
|
+
- **URL** : https://www.bodacc.fr
|
|
30
|
+
- **Données** : Créations, modifications, radiations, ventes de fonds de commerce
|
|
31
|
+
- **Gratuit** : Oui, source officielle
|
|
32
|
+
|
|
33
|
+
### INPI (Institut National de la Propriété Industrielle)
|
|
34
|
+
- **URL** : https://data.inpi.fr
|
|
35
|
+
- **Données** : Marques déposées, brevets (contient le nom du déposant)
|
|
36
|
+
- **Gratuit** : Oui
|
|
37
|
+
|
|
38
|
+
### Datalegal.fr
|
|
39
|
+
- **URL** : https://www.datalegal.fr
|
|
40
|
+
- **Données** : Mandats sociaux d'un dirigeant (toutes ses sociétés)
|
|
41
|
+
- **Gratuit** : Oui
|
|
42
|
+
- **Astuce** : Tapez un nom pour voir TOUTES les sociétés où la personne est dirigeante
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 📞 Outils d'enrichissement de contacts
|
|
47
|
+
|
|
48
|
+
### RocketReach ⭐ Priorité 1
|
|
49
|
+
- **URL** : https://rocketreach.co
|
|
50
|
+
- **Gratuit** : 5 lookups/mois
|
|
51
|
+
- **Données** : Emails professionnels/perso, numéros de téléphone (portables !), profils sociaux
|
|
52
|
+
- **Méthode** : Chercher le nom → voir les données partielles → utiliser un crédit gratuit pour révéler
|
|
53
|
+
|
|
54
|
+
### ContactOut
|
|
55
|
+
- **URL** : https://contactout.com
|
|
56
|
+
- **Gratuit** : Extension Chrome, quelques crédits gratuits
|
|
57
|
+
- **Données** : Emails et téléphones depuis les profils LinkedIn
|
|
58
|
+
- **Méthode** : Installer l'extension → aller sur le profil LinkedIn → ContactOut affiche les données
|
|
59
|
+
|
|
60
|
+
### Kaspr ⭐ Pour les portables FR
|
|
61
|
+
- **URL** : https://www.kaspr.io
|
|
62
|
+
- **Gratuit** : Extension Chrome + crédits gratuits à l'inscription
|
|
63
|
+
- **Données** : Numéros de portable français directs, emails
|
|
64
|
+
- **Méthode** : Extension Chrome sur LinkedIn → révèle le portable
|
|
65
|
+
- **Avantage** : Spécialisé sur les données françaises
|
|
66
|
+
|
|
67
|
+
### Lusha
|
|
68
|
+
- **URL** : https://www.lusha.com
|
|
69
|
+
- **Gratuit** : 5 crédits/mois
|
|
70
|
+
- **Données** : Téléphones directs, emails
|
|
71
|
+
|
|
72
|
+
### Apollo.io
|
|
73
|
+
- **URL** : https://www.apollo.io
|
|
74
|
+
- **Gratuit** : 50 crédits/mois
|
|
75
|
+
- **Données** : Emails, téléphones, firmographics
|
|
76
|
+
- **Avantage** : Filtrage avancé par industrie, taille d'entreprise, fonction
|
|
77
|
+
|
|
78
|
+
### Hunter.io
|
|
79
|
+
- **URL** : https://hunter.io
|
|
80
|
+
- **Gratuit** : 25 recherches/mois
|
|
81
|
+
- **Données** : Emails professionnels (pattern d'email de l'entreprise)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 🔍 Google Dorks pour l'OSINT
|
|
86
|
+
|
|
87
|
+
### Recherche de documents
|
|
88
|
+
```
|
|
89
|
+
"Nom Prénom" filetype:pdf # CV, rapports, statuts, bilans
|
|
90
|
+
"Nom Prénom" filetype:pptx OR filetype:ppt # Présentations
|
|
91
|
+
"Nom Prénom" filetype:doc OR filetype:docx # Documents Word
|
|
92
|
+
"Nom Prénom" filetype:xls OR filetype:xlsx # Tableurs
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Recherche de numéros de téléphone
|
|
96
|
+
```
|
|
97
|
+
"Nom Prénom" ("06" OR "07" OR "+33 6" OR "+33 7") # Portables FR
|
|
98
|
+
"Nom Prénom" (telephone OR mobile OR portable) # Mentions de tel
|
|
99
|
+
"Nom Prénom" (CV OR resume OR curriculum) # CV avec coordonnées
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Recherche sur des sites spécifiques
|
|
103
|
+
```
|
|
104
|
+
"Nom" site:pappers.fr # Registre entreprises
|
|
105
|
+
"Nom" site:societe.com # Registre entreprises
|
|
106
|
+
"Nom" site:linkedin.com/in/ # Profil LinkedIn
|
|
107
|
+
"Nom" site:rocketreach.co # Enrichissement
|
|
108
|
+
"Nom" site:contactout.com # Enrichissement
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Recherche de données perso dans des statuts/actes
|
|
112
|
+
```
|
|
113
|
+
"Nom Prénom" "demeurant" site:pappers.fr # Adresse perso dans statuts
|
|
114
|
+
"Nom Prénom" inurl:statuts filetype:pdf # Statuts de société
|
|
115
|
+
"Nom Prénom" "né(e) le" # Date de naissance
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 📱 Réseaux sociaux et profils publics
|
|
121
|
+
|
|
122
|
+
### LinkedIn
|
|
123
|
+
- Profils professionnels, parcours, connexions
|
|
124
|
+
- Avec Kaspr/ContactOut/Lusha → révèle les portables
|
|
125
|
+
|
|
126
|
+
### Instagram
|
|
127
|
+
- DM pour contact direct (surtout influenceurs)
|
|
128
|
+
- Le bouton "Contact" affiche souvent l'email pro
|
|
129
|
+
|
|
130
|
+
### Pages Jaunes / 118712
|
|
131
|
+
- **URL** : https://www.pagesjaunes.fr / https://www.118712.fr
|
|
132
|
+
- Pour les numéros de téléphone fixes et professionnels
|
|
133
|
+
|
|
134
|
+
### YouTube
|
|
135
|
+
- Les descriptions de vidéos contiennent parfois des emails de contact
|
|
136
|
+
- Les chaînes business ont un onglet "À propos" avec contact
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Escalation recommandée (coût croissant)
|
|
141
|
+
|
|
142
|
+
| Niveau | Sources | Coût |
|
|
143
|
+
|--------|---------|------|
|
|
144
|
+
| 1. Gratuit | Google dorks, Pappers, Societe.com, BODACC, INPI | 0€ |
|
|
145
|
+
| 2. Freemium | RocketReach (5/mois), Kaspr (gratuit), Apollo (50/mois) | 0€ |
|
|
146
|
+
| 3. Cheap | Jina search, Tavily search | ~$0.01 |
|
|
147
|
+
| 4. Medium | Apify scrapers, ContactOut | ~$0.10 |
|
|
148
|
+
| 5. Premium | Perplexity Deep, Exa Deep | ~$0.50 |
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Platform-Specific Extraction Guide
|
|
2
|
+
|
|
3
|
+
## LinkedIn
|
|
4
|
+
|
|
5
|
+
**Extract:** headline, positions (title, company, duration, description), education, summary, skills, location, pronouns, follower/connection count.
|
|
6
|
+
|
|
7
|
+
**Finding profiles - URL patterns to try:**
|
|
8
|
+
- /in/firstnamelastname
|
|
9
|
+
- /in/firstname-lastname
|
|
10
|
+
- /in/flastname
|
|
11
|
+
- /in/lastname (if unique enough)
|
|
12
|
+
|
|
13
|
+
**Search patterns:**
|
|
14
|
+
- Brave: `site:linkedin.com "First Last" company`
|
|
15
|
+
- Parallel: `"First Last" LinkedIn profile company city`
|
|
16
|
+
|
|
17
|
+
**Key signals:**
|
|
18
|
+
- Gaps between positions = career breaks
|
|
19
|
+
- "Co-founder" vs "Founder" vs "Partner" = different ownership levels
|
|
20
|
+
- Location changes between roles = relocation history
|
|
21
|
+
- Short tenures (<1yr) = fired, bad fit, or stepping stone
|
|
22
|
+
|
|
23
|
+
## Instagram
|
|
24
|
+
|
|
25
|
+
**Extract:** bio, follower/following ratio, post count/frequency, captions, hashtags, engagement, highlights count.
|
|
26
|
+
|
|
27
|
+
**Engagement rate:** (avg likes + comments) / followers * 100
|
|
28
|
+
- >6% = close friends/niche, 3-6% = good, 1-3% = average, <1% = bots
|
|
29
|
+
|
|
30
|
+
**Style signals:**
|
|
31
|
+
- Minimal captions = private personality
|
|
32
|
+
- Film photography hashtags = aesthetic sensibility
|
|
33
|
+
- No selfies = introverted
|
|
34
|
+
- High highlights count + low posts = active stories user
|
|
35
|
+
|
|
36
|
+
## Facebook
|
|
37
|
+
|
|
38
|
+
**Extract (via Bright Data only):** name, bio/intro, follower count, location, workplace, education, linked Instagram, website, recent public posts.
|
|
39
|
+
|
|
40
|
+
**URL patterns:**
|
|
41
|
+
- facebook.com/{username}
|
|
42
|
+
- facebook.com/share/{id} (mobile share links - resolve to profile)
|
|
43
|
+
- facebook.com/profile.php?id={numeric_id}
|
|
44
|
+
|
|
45
|
+
## Telegram
|
|
46
|
+
|
|
47
|
+
**Extract:** profile bio/title (t.me/{user}), channel posts (t.me/s/{channel}).
|
|
48
|
+
|
|
49
|
+
**Writing analysis goldmine:**
|
|
50
|
+
- Posts usually unedited = authentic voice
|
|
51
|
+
- Posting times = timezone/work patterns
|
|
52
|
+
- Emoji patterns = personality markers
|
|
53
|
+
- Topic clusters = real vs performative interests
|
|
54
|
+
- Forwarded from = what they read/follow
|
|
55
|
+
|
|
56
|
+
## YouTube
|
|
57
|
+
|
|
58
|
+
**Extract:** channel name, handle, subscriber count, video count, upload frequency, about/description, top videos by views, playlist structure.
|
|
59
|
+
|
|
60
|
+
**Finding channels:**
|
|
61
|
+
- Brave: `site:youtube.com "<Name>" channel`
|
|
62
|
+
- Exa: `exa.sh search "<Name> youtube"`
|
|
63
|
+
- Check LinkedIn/Instagram bios for YouTube links
|
|
64
|
+
|
|
65
|
+
**Key signals:**
|
|
66
|
+
- Upload frequency = discipline, commitment to topic
|
|
67
|
+
- Subscriber/view ratio = audience quality
|
|
68
|
+
- Comment engagement = community building skills
|
|
69
|
+
- Video titles style = marketing/clickbait vs informative
|
|
70
|
+
- Playlist structure = how they organize knowledge
|
|
71
|
+
- Collaborations = social graph in their niche
|
|
72
|
+
|
|
73
|
+
**Transcript extraction = HIGHEST PRIORITY.**
|
|
74
|
+
See `references/content-extraction.md`. 3-5 transcripts minimum when channel found.
|
|
75
|
+
|
|
76
|
+
## Podcasts / Audio
|
|
77
|
+
|
|
78
|
+
**Finding appearances:**
|
|
79
|
+
- Brave: `"<Name>" podcast interview guest`
|
|
80
|
+
- Exa: `exa.sh search "<Name> podcast episode"`
|
|
81
|
+
|
|
82
|
+
**Key signals:**
|
|
83
|
+
- Personal questions from host → origin story, failures, mentors
|
|
84
|
+
- Cross-reference claims in podcast vs LinkedIn (people exaggerate on podcasts too, but differently)
|
|
85
|
+
- Guest on niche podcasts = real expertise; guest on general podcasts = self-promotion
|
|
86
|
+
|
|
87
|
+
## TikTok
|
|
88
|
+
|
|
89
|
+
**Extract:** username, bio, follower/following count, total likes, video count, top videos by views, hashtags used, engagement rate.
|
|
90
|
+
|
|
91
|
+
**Finding accounts:**
|
|
92
|
+
- Brave: `site:tiktok.com "@username" OR "Name"`
|
|
93
|
+
- Apify: `clockworks/tiktok-user-search-scraper` with keywords
|
|
94
|
+
- Check Instagram/YouTube bios for TikTok links
|
|
95
|
+
|
|
96
|
+
**URL patterns:**
|
|
97
|
+
- tiktok.com/@username
|
|
98
|
+
- tiktok.com/@username/video/{id}
|
|
99
|
+
|
|
100
|
+
**Key signals:**
|
|
101
|
+
- Short-form video = unfiltered personality (harder to fake than LinkedIn)
|
|
102
|
+
- Duets/stitches = who they interact with (social graph)
|
|
103
|
+
- Sound choices = cultural references, generation markers
|
|
104
|
+
- Comment replies = engagement style, how they handle criticism
|
|
105
|
+
- Posting frequency = discipline, content strategy vs impulse
|
|
106
|
+
|
|
107
|
+
**Style analysis:**
|
|
108
|
+
- Face-to-camera = confident, extroverted
|
|
109
|
+
- Voiceover only = introverted or analytical
|
|
110
|
+
- Trending sounds = follower mentality
|
|
111
|
+
- Original audio = thought leader / creator
|
|
112
|
+
- High production = professional content, possible team
|
|
113
|
+
|
|
114
|
+
## Google Maps / Business Listings
|
|
115
|
+
|
|
116
|
+
**Extract:** business name, address, phone, website, hours, reviews, rating, owner responses.
|
|
117
|
+
|
|
118
|
+
**OSINT value:**
|
|
119
|
+
- Owner responses to reviews = writing style, conflict resolution patterns
|
|
120
|
+
- Business address = physical location confirmation
|
|
121
|
+
- Multiple businesses at same address = related entities
|
|
122
|
+
- Review timeline = business lifecycle
|
|
123
|
+
|
|
124
|
+
## Industry Sources (Russian market)
|
|
125
|
+
- AdIndex.ru - ad industry news, appointments, interviews
|
|
126
|
+
- Sostav.ru - marketing industry portal
|
|
127
|
+
- GlobMSK.ru - Moscow business directory with bios
|
|
128
|
+
- Kommersant.ru - business newspaper, rankings
|
|
129
|
+
- Forbes.ru - profiles, lists
|
|
130
|
+
- ConferenceCast.tv - speaker profiles with video
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Psychoprofile Construction
|
|
2
|
+
|
|
3
|
+
## Core Principle
|
|
4
|
+
Deduce from BEHAVIOR, never assume. Every trait needs cited evidence.
|
|
5
|
+
|
|
6
|
+
## MBTI Assessment
|
|
7
|
+
|
|
8
|
+
### E vs I (Extraversion / Introversion)
|
|
9
|
+
E markers: high posting frequency, "we/let's/together", conferences, large audience
|
|
10
|
+
I markers: low posting, "I noticed/I tried", few appearances, small engaged audience
|
|
11
|
+
|
|
12
|
+
### S vs N (Sensing / Intuition)
|
|
13
|
+
S markers: concrete examples, numbers, step-by-step, linear career, photos of things
|
|
14
|
+
N markers: cross-domain connections, trend predictions, metaphors, career pivots
|
|
15
|
+
|
|
16
|
+
### T vs F (Thinking / Feeling)
|
|
17
|
+
T markers: "metrics/ROI/optimization", impersonal analysis, low emoji
|
|
18
|
+
F markers: "I understand/that's hard", vulnerability, warm emoji (❤️ 🤗 ✨)
|
|
19
|
+
|
|
20
|
+
### J vs P (Judging / Perceiving)
|
|
21
|
+
J markers: regular schedule, structured content, long tenures, goals
|
|
22
|
+
P markers: irregular posting, spontaneous content, frequent changes, process-oriented
|
|
23
|
+
|
|
24
|
+
### Confidence Levels
|
|
25
|
+
- High: 10+ data points across 3+ sources
|
|
26
|
+
- Medium: 5-10 data points across 2+ sources
|
|
27
|
+
- Low: <5 data points or single source
|
|
28
|
+
|
|
29
|
+
## Big Five Alternative (OCEAN)
|
|
30
|
+
- Openness: career diversity, travel, arts, experimental content
|
|
31
|
+
- Conscientiousness: posting regularity, career progression, structured writing
|
|
32
|
+
- Extraversion: social media activity, public speaking, collaboration
|
|
33
|
+
- Agreeableness: language warmth, conflict avoidance, community focus
|
|
34
|
+
- Neuroticism: hedging, anxiety markers, perfectionism
|
|
35
|
+
|
|
36
|
+
## Source Priority for Psychoprofile
|
|
37
|
+
|
|
38
|
+
Ranked by signal quality (best → worst):
|
|
39
|
+
1. **YouTube transcripts / podcast interviews** — unscripted, long-form, authentic voice
|
|
40
|
+
2. **Telegram messages** — unfiltered daily communication
|
|
41
|
+
3. **Blog posts / articles** — edited but personal voice
|
|
42
|
+
4. **Instagram captions** — curated but with personality leaks
|
|
43
|
+
5. **LinkedIn posts** — performative, lowest signal-to-noise
|
|
44
|
+
6. **Conference talks** — scripted but body language cues in descriptions
|
|
45
|
+
|
|
46
|
+
If YouTube channel exists with 5+ videos — it is the PRIMARY psychoprofile source.
|
|
47
|
+
Extract 3-5 transcripts before attempting MBTI assessment.
|
|
48
|
+
|
|
49
|
+
## Writing Style Quantification
|
|
50
|
+
- Average sentence length (short <10, medium 10-20, long 20+)
|
|
51
|
+
- Emoji density (per 100 words)
|
|
52
|
+
- Self-reference rate (I/me per 100 words)
|
|
53
|
+
- Hedge word frequency (maybe, perhaps, possibly)
|
|
54
|
+
- Language switching patterns (bilingual profiles)
|
|
55
|
+
- What they DON'T write about = privacy boundaries
|
|
56
|
+
|
|
57
|
+
## Values Deduction (from actions, not words)
|
|
58
|
+
- What they create → what they value
|
|
59
|
+
- What they share/forward → community identity
|
|
60
|
+
- Career trajectory → money vs impact vs status vs freedom
|
|
61
|
+
- Platform choices → privacy tolerance, tech savviness
|
|
62
|
+
- What they avoid → boundaries
|
|
63
|
+
|
|
64
|
+
## Personal Data Rules
|
|
65
|
+
- Zodiac: ONLY if birth date CONFIRMED (never guess)
|
|
66
|
+
- Family: only CONFIRMED info (photos, bios mentioning kids)
|
|
67
|
+
- Pets: usually visible in Instagram stories
|
|
68
|
+
- Relationship: only if explicitly stated
|
|
69
|
+
- Never speculate on family structure
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# OSINT Toolkit Reference
|
|
2
|
+
|
|
3
|
+
## Table of Contents
|
|
4
|
+
1. [Search Tools](#search-tools)
|
|
5
|
+
2. [Scraping Tools](#scraping-tools)
|
|
6
|
+
3. [Apify Actor Runner](#apify-actor-runner-embedded)
|
|
7
|
+
4. [Apify Actor Catalog (55+)](#apify-actor-catalog)
|
|
8
|
+
5. [Actor Discovery](#actor-discovery)
|
|
9
|
+
6. [Shortcuts (apify.sh)](#shortcuts)
|
|
10
|
+
7. [Telegram](#telegram)
|
|
11
|
+
8. [Apify Troubleshooting](#apify-troubleshooting)
|
|
12
|
+
9. [Cost Reference](#cost-reference)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Search Tools
|
|
17
|
+
|
|
18
|
+
### Brave Search (web_search built-in)
|
|
19
|
+
- No setup, FREE plan 2000 queries/month, rate limit 1/sec
|
|
20
|
+
- Best for: general web, articles, profile discovery
|
|
21
|
+
- Weakness: rate limited, no geo-targeting
|
|
22
|
+
|
|
23
|
+
### Jina s.reader (scripts/jina.sh search)
|
|
24
|
+
- Top 10 results as full markdown
|
|
25
|
+
- Best for: broad search with content extraction
|
|
26
|
+
- Weakness: can return wrong person on common names
|
|
27
|
+
|
|
28
|
+
### Parallel AI (scripts/parallel.sh search)
|
|
29
|
+
- AI-powered search with reasoning and citations
|
|
30
|
+
- Best for: social media discovery, cross-referencing
|
|
31
|
+
- Weakness: sometimes returns irrelevant AI-reasoned results
|
|
32
|
+
|
|
33
|
+
### Bright Data (scripts/brightdata.sh search)
|
|
34
|
+
- Google/Bing/Yandex with geo-targeting, bypasses CAPTCHA
|
|
35
|
+
- search-geo: `brightdata.sh search-geo ru "query"` (search as if from Russia)
|
|
36
|
+
- search-yandex: `brightdata.sh search-yandex "query"` (better for Russian targets)
|
|
37
|
+
- Batch: up to 10 queries
|
|
38
|
+
|
|
39
|
+
## Scraping Tools
|
|
40
|
+
|
|
41
|
+
### web_fetch (built-in)
|
|
42
|
+
- Basic URL → markdown. First attempt, fallback to better tools
|
|
43
|
+
- Fails on: LinkedIn, Facebook, Cloudflare
|
|
44
|
+
|
|
45
|
+
### Jina r.reader (scripts/jina.sh read)
|
|
46
|
+
- Clean markdown, faster than web_fetch
|
|
47
|
+
- Fails on: LinkedIn authwall, Facebook authwall, Instagram JS
|
|
48
|
+
|
|
49
|
+
### Bright Data (scripts/brightdata.sh scrape)
|
|
50
|
+
- **Bypasses EVERYTHING**: bot detection, CAPTCHA, authwall, Cloudflare
|
|
51
|
+
- The nuclear option. Use when others fail.
|
|
52
|
+
- Batch: up to 10 URLs via scrape-batch
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Apify Actor Runner (embedded)
|
|
57
|
+
|
|
58
|
+
`run_actor.js` — universal script that runs ANY Apify actor. Embedded from
|
|
59
|
+
[apify/agent-skills](https://github.com/apify/agent-skills) v1.3.0.
|
|
60
|
+
|
|
61
|
+
**Requirements:** Node.js 18+ (for global fetch), APIFY_API_TOKEN or APIFY_TOKEN env var.
|
|
62
|
+
|
|
63
|
+
### Via bash wrapper (recommended)
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Quick answer — top 5 results in chat
|
|
67
|
+
bash scripts/run-actor.sh "ACTOR_ID" 'JSON_INPUT'
|
|
68
|
+
|
|
69
|
+
# Export to CSV
|
|
70
|
+
bash scripts/run-actor.sh "ACTOR_ID" 'JSON_INPUT' --output /tmp/result.csv --format csv
|
|
71
|
+
|
|
72
|
+
# Export to JSON
|
|
73
|
+
bash scripts/run-actor.sh "ACTOR_ID" 'JSON_INPUT' --output /tmp/result.json --format json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Direct node call
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
APIFY_TOKEN=$APIFY_API_TOKEN node scripts/run_actor.js \
|
|
80
|
+
--actor "ACTOR_ID" --input 'JSON_INPUT'
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Apify Actor Catalog
|
|
86
|
+
|
|
87
|
+
### Instagram (12 actors)
|
|
88
|
+
|
|
89
|
+
| Actor ID | Best For | OSINT Use |
|
|
90
|
+
|----------|----------|-----------|
|
|
91
|
+
| `apify/instagram-profile-scraper` | Profile data, follower counts, bio | **Primary** — bio, location, links |
|
|
92
|
+
| `apify/instagram-post-scraper` | Individual post details, engagement | Content analysis |
|
|
93
|
+
| `apify/instagram-comment-scraper` | Comment extraction | Sentiment, social graph |
|
|
94
|
+
| `apify/instagram-hashtag-scraper` | Hashtag content, trending topics | Find target by hashtag |
|
|
95
|
+
| `apify/instagram-hashtag-stats` | Hashtag performance metrics | Audience analysis |
|
|
96
|
+
| `apify/instagram-reel-scraper` | Reels content and metrics | Video content style |
|
|
97
|
+
| `apify/instagram-search-scraper` | Search users, places, hashtags | Discovery |
|
|
98
|
+
| `apify/instagram-tagged-scraper` | Posts tagged with specific accounts | **Who tags them** = social graph |
|
|
99
|
+
| `apify/instagram-followers-count-scraper` | Follower count tracking | Influence assessment |
|
|
100
|
+
| `apify/instagram-scraper` | Comprehensive Instagram data | Full profile deep dive |
|
|
101
|
+
| `apify/instagram-api-scraper` | API-based Instagram access | Fallback scraper |
|
|
102
|
+
| `apify/export-instagram-comments-posts` | Bulk comment/post export | Large-scale extraction |
|
|
103
|
+
|
|
104
|
+
### Facebook (14 actors)
|
|
105
|
+
|
|
106
|
+
| Actor ID | Best For | OSINT Use |
|
|
107
|
+
|----------|----------|-----------|
|
|
108
|
+
| `apify/facebook-pages-scraper` | Page data, metrics, contact info | **Primary** for public pages |
|
|
109
|
+
| `apify/facebook-page-contact-information` | Emails, phones, addresses | Contact enrichment |
|
|
110
|
+
| `apify/facebook-posts-scraper` | Post content and engagement | Writing style analysis |
|
|
111
|
+
| `apify/facebook-comments-scraper` | Comment extraction | Sentiment analysis |
|
|
112
|
+
| `apify/facebook-likes-scraper` | Reaction analysis | Audience mapping |
|
|
113
|
+
| `apify/facebook-reviews-scraper` | Page reviews | Reputation analysis |
|
|
114
|
+
| `apify/facebook-groups-scraper` | Group content and members | Community membership |
|
|
115
|
+
| `apify/facebook-events-scraper` | Event data | Activity/interests |
|
|
116
|
+
| `apify/facebook-ads-scraper` | Ad creative and targeting | Competitor intel |
|
|
117
|
+
| `apify/facebook-search-scraper` | Search results | Discovery |
|
|
118
|
+
| `apify/facebook-reels-scraper` | Reels content | Video style |
|
|
119
|
+
| `apify/facebook-photos-scraper` | Photo extraction | Visual profile |
|
|
120
|
+
| `apify/facebook-marketplace-scraper` | Marketplace listings | Business activity |
|
|
121
|
+
| `apify/facebook-followers-following-scraper` | Follower/following lists | Social graph |
|
|
122
|
+
|
|
123
|
+
**Note:** Facebook personal profiles require Bright Data. These actors work with public Pages/Groups/Marketplace.
|
|
124
|
+
|
|
125
|
+
### TikTok (14 actors)
|
|
126
|
+
|
|
127
|
+
| Actor ID | Best For | OSINT Use |
|
|
128
|
+
|----------|----------|-----------|
|
|
129
|
+
| `clockworks/tiktok-scraper` | Comprehensive TikTok data | Full platform deep dive |
|
|
130
|
+
| `clockworks/free-tiktok-scraper` | Free TikTok extraction | **Budget fallback** |
|
|
131
|
+
| `clockworks/tiktok-profile-scraper` | Profile data, bio, stats | **Primary** — bio, follower data |
|
|
132
|
+
| `clockworks/tiktok-video-scraper` | Video details and metrics | Content analysis |
|
|
133
|
+
| `clockworks/tiktok-comments-scraper` | Comment extraction | Sentiment, audience |
|
|
134
|
+
| `clockworks/tiktok-followers-scraper` | Follower lists | Social graph |
|
|
135
|
+
| `clockworks/tiktok-user-search-scraper` | Find users by keywords | **Discovery** by name |
|
|
136
|
+
| `clockworks/tiktok-hashtag-scraper` | Hashtag content | Topic analysis |
|
|
137
|
+
| `clockworks/tiktok-sound-scraper` | Trending sounds | Cultural markers |
|
|
138
|
+
| `clockworks/tiktok-ads-scraper` | Ad content | Competitor ads |
|
|
139
|
+
| `clockworks/tiktok-discover-scraper` | Discover page content | Trending content |
|
|
140
|
+
| `clockworks/tiktok-explore-scraper` | Explore content | Algorithm analysis |
|
|
141
|
+
| `clockworks/tiktok-trends-scraper` | Trending content | Trend tracking |
|
|
142
|
+
| `clockworks/tiktok-live-scraper` | Live stream data | Real-time activity |
|
|
143
|
+
|
|
144
|
+
### YouTube (5 actors)
|
|
145
|
+
|
|
146
|
+
| Actor ID | Best For | OSINT Use |
|
|
147
|
+
|----------|----------|-----------|
|
|
148
|
+
| `streamers/youtube-scraper` | Video data and metrics | Content analysis |
|
|
149
|
+
| `streamers/youtube-channel-scraper` | Channel info, subscriber data | **Primary** — channel metadata |
|
|
150
|
+
| `streamers/youtube-comments-scraper` | Comment extraction | Audience sentiment |
|
|
151
|
+
| `streamers/youtube-shorts-scraper` | Shorts content | Short-form style |
|
|
152
|
+
| `streamers/youtube-video-scraper-by-hashtag` | Videos by hashtag | Topic discovery |
|
|
153
|
+
|
|
154
|
+
### Google Maps (4 actors)
|
|
155
|
+
|
|
156
|
+
| Actor ID | Best For | OSINT Use |
|
|
157
|
+
|----------|----------|-----------|
|
|
158
|
+
| `compass/crawler-google-places` | Business listings, ratings, contact | **Primary** — verify business owners |
|
|
159
|
+
| `compass/google-maps-extractor` | Detailed business data | Deep business intel |
|
|
160
|
+
| `compass/Google-Maps-Reviews-Scraper` | Review extraction | Writing style in responses |
|
|
161
|
+
| `poidata/google-maps-email-extractor` | Email discovery from listings | Contact enrichment |
|
|
162
|
+
|
|
163
|
+
### Other Platforms (6 actors)
|
|
164
|
+
|
|
165
|
+
| Actor ID | Best For | OSINT Use |
|
|
166
|
+
|----------|----------|-----------|
|
|
167
|
+
| `apify/google-search-scraper` | Google search results | Structured search |
|
|
168
|
+
| `apify/google-trends-scraper` | Google Trends data | Interest tracking |
|
|
169
|
+
| `voyager/booking-scraper` | Booking.com hotel data | Travel/business intel |
|
|
170
|
+
| `voyager/booking-reviews-scraper` | Booking.com reviews | Reputation |
|
|
171
|
+
| `maxcopell/tripadvisor-reviews` | TripAdvisor reviews | Hospitality intel |
|
|
172
|
+
| `vdrmota/contact-info-scraper` | Contact enrichment from URLs | **Emails/phones from any site** |
|
|
173
|
+
|
|
174
|
+
### LinkedIn
|
|
175
|
+
|
|
176
|
+
LinkedIn actors are volatile on Apify. Current primary:
|
|
177
|
+
- `supreme_coder~linkedin-profile-scraper` via `apify.sh linkedin` → $0.005/profile
|
|
178
|
+
- Fallback: `brightdata.sh scrape` (always works, higher cost)
|
|
179
|
+
- If primary fails: `bash scripts/apify.sh store-search "linkedin scraper"`
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Actor Selection by OSINT Task
|
|
184
|
+
|
|
185
|
+
| OSINT Phase | What You Need | Primary Actors |
|
|
186
|
+
|-------------|---------------|----------------|
|
|
187
|
+
| **Profile discovery** | Find accounts | `apify/instagram-search-scraper`, `clockworks/tiktok-user-search-scraper`, `apify/facebook-search-scraper` |
|
|
188
|
+
| **Profile deep dive** | Extract bio/stats | `apify/instagram-profile-scraper`, `clockworks/tiktok-profile-scraper`, `streamers/youtube-channel-scraper` |
|
|
189
|
+
| **Social graph** | Who they interact with | `apify/instagram-tagged-scraper`, `apify/instagram-comment-scraper`, `clockworks/tiktok-followers-scraper`, `apify/facebook-followers-following-scraper` |
|
|
190
|
+
| **Content analysis** | Posts, videos, style | `apify/instagram-post-scraper`, `clockworks/tiktok-video-scraper`, `streamers/youtube-scraper` |
|
|
191
|
+
| **Contact enrichment** | Emails, phones | `vdrmota/contact-info-scraper`, `apify/facebook-page-contact-information`, `poidata/google-maps-email-extractor` |
|
|
192
|
+
| **Business verification** | Company, location | `compass/crawler-google-places`, `compass/google-maps-extractor` |
|
|
193
|
+
| **Psychoprofile signals** | Sentiment, style | `apify/instagram-comment-scraper`, `clockworks/tiktok-comments-scraper`, `streamers/youtube-comments-scraper` |
|
|
194
|
+
|
|
195
|
+
### Multi-Actor Workflows (OSINT-specific)
|
|
196
|
+
|
|
197
|
+
| Workflow | Step 1 → | Step 2 |
|
|
198
|
+
|----------|----------|--------|
|
|
199
|
+
| **Full Instagram** | `apify/instagram-profile-scraper` → | `apify/instagram-tagged-scraper` + `apify/instagram-comment-scraper` |
|
|
200
|
+
| **Business owner** | `compass/crawler-google-places` → | `vdrmota/contact-info-scraper` on website |
|
|
201
|
+
| **Content creator** | `streamers/youtube-channel-scraper` → | `streamers/youtube-comments-scraper` |
|
|
202
|
+
| **TikTok target** | `clockworks/tiktok-user-search-scraper` → | `clockworks/tiktok-profile-scraper` + `clockworks/tiktok-comments-scraper` |
|
|
203
|
+
| **Facebook page** | `apify/facebook-pages-scraper` → | `apify/facebook-posts-scraper` + `apify/facebook-page-contact-information` |
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Actor Discovery
|
|
208
|
+
|
|
209
|
+
When none of the 55+ actors fit, search the Apify Store dynamically:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Via mcpc CLI (if installed)
|
|
213
|
+
APIFY_TOKEN=$APIFY_API_TOKEN mcpc --json mcp.apify.com \
|
|
214
|
+
--header "Authorization: Bearer $APIFY_TOKEN" \
|
|
215
|
+
tools-call search-actors keywords:="SEARCH_KEYWORDS" limit:=10
|
|
216
|
+
|
|
217
|
+
# Via Apify API directly
|
|
218
|
+
bash scripts/apify.sh store-search "keyword1 keyword2"
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Tips:
|
|
222
|
+
- Use 1-3 simple keywords (e.g., "LinkedIn profiles", "Twitter scraper")
|
|
223
|
+
- Sort by: PAY_PER_EVENT (works with small budgets), high rating, high run count
|
|
224
|
+
- Actors on Apify are volatile — always have a Bright Data fallback
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Shortcuts
|
|
229
|
+
|
|
230
|
+
`apify.sh` provides quick shortcuts for common operations:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
bash scripts/apify.sh linkedin "https://linkedin.com/in/..." # $0.005
|
|
234
|
+
bash scripts/apify.sh instagram "handle" # free tier
|
|
235
|
+
bash scripts/apify.sh run <actor_id> '<json>' # any actor
|
|
236
|
+
bash scripts/apify.sh results <run_id> # get results
|
|
237
|
+
bash scripts/apify.sh run-status <run_id> # check status
|
|
238
|
+
bash scripts/apify.sh store-search "query" # find actors
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
For anything beyond shortcuts, use `run-actor.sh` — it handles polling,
|
|
242
|
+
timeout, and CSV/JSON export automatically.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Telegram
|
|
247
|
+
|
|
248
|
+
- Public channel posts: `web_fetch https://t.me/s/{channel}` (free, last ~20 posts)
|
|
249
|
+
- Profile bio: `web_fetch https://t.me/{username}` (free, shows bio/title)
|
|
250
|
+
- Private messages: tg.py (Telegram skill) or mcporter telegram tools
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Apify Troubleshooting
|
|
255
|
+
|
|
256
|
+
When an Apify actor fails:
|
|
257
|
+
1. Check if it blocks API on free plan ("run through UI only" error)
|
|
258
|
+
2. Check input field names (profileUrls vs urls vs user_name — varies per actor)
|
|
259
|
+
3. Check run status: `bash scripts/apify.sh run-status <run_id>`
|
|
260
|
+
4. Search for alternatives: `bash scripts/apify.sh store-search "platform scraper"`
|
|
261
|
+
5. Try the free-tier variant (e.g., `clockworks/free-tiktok-scraper`)
|
|
262
|
+
6. Fall back to Bright Data: `bash scripts/brightdata.sh scrape "<url>"`
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Cost Reference
|
|
267
|
+
|
|
268
|
+
| Tool | Cost | Notes |
|
|
269
|
+
|------|------|-------|
|
|
270
|
+
| LinkedIn (Apify supreme_coder) | $0.005/profile | |
|
|
271
|
+
| Instagram (Apify) | free tier | Limited runs |
|
|
272
|
+
| TikTok (Apify clockworks) | $0.01-0.05/profile | free-tiktok-scraper = free |
|
|
273
|
+
| YouTube (Apify streamers) | $0.01/channel | |
|
|
274
|
+
| Google Maps (Apify compass) | $0.01/listing | |
|
|
275
|
+
| Contact enrichment | $0.01/URL | |
|
|
276
|
+
| Facebook pages (Apify) | $0.01/page | Personal profiles = Bright Data |
|
|
277
|
+
| Facebook personal (Bright Data) | per-request | Check account balance |
|
|
278
|
+
| Jina | free tier with key | |
|
|
279
|
+
| Parallel | free tier with key | |
|
|
280
|
+
| Brave | free (2000/month) | |
|
|
281
|
+
| **Budget rule** | **≤$0.50 without asking** | **>$0.50 ask user** |
|