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.
Files changed (53) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +482 -0
  3. package/osint-agent-package/README.md +88 -0
  4. package/osint-agent-package/SETUP_KEYS.md +108 -0
  5. package/osint-agent-package/agents/osint-investigator.md +80 -0
  6. package/osint-agent-package/install.ps1 +87 -0
  7. package/osint-agent-package/install.sh +76 -0
  8. package/osint-agent-package/skills/bmad-osint-investigate/SKILL.md +147 -0
  9. package/osint-agent-package/skills/bmad-osint-investigate/osint/SKILL.md +452 -0
  10. package/osint-agent-package/skills/bmad-osint-investigate/osint/assets/dossier-template.md +116 -0
  11. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/content-extraction.md +100 -0
  12. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/enrichment-databases-fr.md +148 -0
  13. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/platforms.md +130 -0
  14. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/psychoprofile.md +69 -0
  15. package/osint-agent-package/skills/bmad-osint-investigate/osint/references/tools.md +281 -0
  16. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/_http.py +101 -0
  17. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/apify.py +260 -0
  18. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/brightdata.py +101 -0
  19. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/diagnose.py +141 -0
  20. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/exa.py +79 -0
  21. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/jina.py +71 -0
  22. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/mcp-client.py +136 -0
  23. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/parallel.py +85 -0
  24. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/perplexity.py +102 -0
  25. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/tavily.py +72 -0
  26. package/osint-agent-package/skills/bmad-osint-investigate/osint/scripts/volley.py +208 -0
  27. package/osint-agent-package/skills/bmad-osint-investigator/SKILL.md +15 -0
  28. package/package.json +51 -0
  29. package/readme-international/README.de.md +392 -0
  30. package/readme-international/README.es.md +484 -0
  31. package/readme-international/README.fr.md +482 -0
  32. package/src/bmad-plus/agents/agent-architect-dev/SKILL.md +96 -0
  33. package/src/bmad-plus/agents/agent-architect-dev/bmad-skill-manifest.yaml +13 -0
  34. package/src/bmad-plus/agents/agent-maker/SKILL.md +201 -0
  35. package/src/bmad-plus/agents/agent-maker/bmad-skill-manifest.yaml +13 -0
  36. package/src/bmad-plus/agents/agent-orchestrator/SKILL.md +137 -0
  37. package/src/bmad-plus/agents/agent-orchestrator/bmad-skill-manifest.yaml +13 -0
  38. package/src/bmad-plus/agents/agent-quality/SKILL.md +83 -0
  39. package/src/bmad-plus/agents/agent-quality/bmad-skill-manifest.yaml +13 -0
  40. package/src/bmad-plus/agents/agent-shadow/SKILL.md +71 -0
  41. package/src/bmad-plus/agents/agent-shadow/bmad-skill-manifest.yaml +13 -0
  42. package/src/bmad-plus/agents/agent-strategist/SKILL.md +80 -0
  43. package/src/bmad-plus/agents/agent-strategist/bmad-skill-manifest.yaml +13 -0
  44. package/src/bmad-plus/data/role-triggers.yaml +209 -0
  45. package/src/bmad-plus/module-help.csv +10 -0
  46. package/src/bmad-plus/module.yaml +174 -0
  47. package/src/bmad-plus/skills/bmad-plus-autopilot/SKILL.md +99 -0
  48. package/src/bmad-plus/skills/bmad-plus-parallel/SKILL.md +93 -0
  49. package/src/bmad-plus/skills/bmad-plus-sync/SKILL.md +69 -0
  50. package/tools/bmad-plus-npx.js +33 -0
  51. package/tools/cli/bmad-plus-cli.js +50 -0
  52. package/tools/cli/commands/install.js +437 -0
  53. 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** |