# Pack OSINT : Shadow, recherche en sources ouvertes encadrée

> Shadow mène une enquête en sources ouvertes par phases, avec une porte de base légale obligatoire pour toute personne nommée. Installation, clés d’API, budget, sept consignes, sorties, limites.

Canonical: https://bmad-plus.rochetta.fr/fr/docs/packs/osint/
Language: fr
BMAD+ version: 0.23.1
Documentation reviewed: 2026-10-19
Author: Laurent Rochetta
License: MIT

Documentation BMAD+ › [Packs](https://bmad-plus.rochetta.fr/fr/docs/packs/) › Pack OSINT : Shadow, recherche en sources ouvertes encadrée

Le pack OSINT installe Shadow, un agent qui transforme un nom, un pseudo ou une entreprise en dossier de recherche gradué, à partir de sources publiques (OSINT signifie renseignement en sources ouvertes). Il enchaîne recherches rapides, vérification des sources, extraction sur les réseaux sociaux via des scrapers Apify et recoupement, en montant toujours du peu coûteux et rapide vers le coûteux et approfondi. Comme enquêter sur une personne nommée est un traitement de données personnelles, le pack est encadré : Shadow doit consigner une base légale et une finalité avant de toucher à quiconque est identifiable.

> **Attention · À lire avant de l’utiliser sur une personne** Le responsable de traitement, c’est vous, pas BMAD+. Enquêter sur une personne identifiable exige une base légale documentée (RGPD article 6, et une condition de l’article 9(2) pour toute inférence de personnalité ou de catégorie particulière) avant la première requête. Le scraping peut enfreindre les conditions d’utilisation d’une plateforme. Les résultats sont générés par IA, peuvent être faux et doivent être vérifiés par un humain avant toute décision. Cette page ne constitue pas un conseil juridique.

<a id="when-to-use"></a>
## Quand l’utiliser

- Vérification préalable d’un fournisseur, d’un partenaire ou d’une contrepartie, avec finalité et base légale énoncées.
- Recherche sur une entreprise, un produit ou un marché : aucune porte de base légale n’est requise puisqu’aucune personne physique n’est profilée.
- Recherche de sécurité ou enquête mandatée, quand le mandat et la base sont explicites et auditables.
- Pas pour la curiosité envers un particulier, le harcèlement, ni le profilage d’un voisin, d’un ex, d’un salarié ou d’un candidat sans base. Shadow refuse ces demandes.

<a id="installed"></a>
## Ce qui est installé

Un agent, Shadow, dans `.agents/skills/agent-shadow/`, plus deux compétences copiées depuis le paquet fourni `osint-agent-package` dans `.agents/skills/` : `bmad-osint-investigate` (le pipeline d’enquête et ses scripts de fournisseurs) et `bmad-osint-investigator` (un second point d’entrée hérité du paquet ; il charge `_bmad/bmm/agents/osint-investigator.md`, un fichier qu’une installation de BMAD+ ne crée pas : partez donc de Shadow). Le registre ne liste pas de compétences propres à ce pack ; les deux ci-dessus viennent du paquet. Le menu de Shadow nomme, pour QS, LI, IG, FB, PP, CE et DG, des fichiers de consigne que le paquet ne livre pas : ces entrées s’exécutent à partir de la ligne du menu et des instructions du pipeline de `bmad-osint-investigate`.

**Menu de Shadow**

| Code | Capacité | Porte de base légale |
| --- | --- | --- |
| INV | Enquête complète, phases 0 à 6, dossier noté | Oui, pour une personne nommée |
| QS | Recherche rapide multi-moteurs sur un nom ou un pseudo | Non pour un pseudo public |
| LI / IG / FB | Extraction de profils publics LinkedIn, Instagram, Facebook via Apify | Oui |
| PP | Profil de personnalité (MBTI, Big Five) | Oui, plus une condition de l’article 9 |
| CE | Enrichissement de contact : e-mail, téléphone, coordonnées | Oui |
| DG | Diagnostic des API et outils disponibles | Non |

<a id="phases"></a>
### Les phases de l’enquête

1. Phase -1, porte de base légale : consigner la base, la finalité, le responsable, la durée de conservation et la façon dont les demandes d’accès ou d’effacement sont honorées. Pas de base, pas de travail sur une personne nommée.
2. Phase 0, autodiagnostic des outils : lancer le diagnostic et noter les outils et clés manquants.
3. Phase 1, collecte de départ : recherches peu coûteuses d’abord, puis vérification des sources citées et fusion des identifiants.
4. Phase 1.5, renseignement interne : regarder ce que vous détenez déjà (historique de conversations, e-mails, carnet de contacts local) si de tels outils sont configurés, avant d’aller à l’extérieur.
5. Phase 2, extraction par plateforme : données structurées des réseaux sociaux via des scrapers Apify.
6. Phase 3, recoupement et notation de confiance : tableau des faits, vérifications croisées, contradictions, homonymes.
7. Phase 4, profil psychologique, uniquement avec la condition juridique supplémentaire.
8. Phase 5, évaluation de complétude : couverture, score de profondeur, diversité des sources, critères d’arrêt.
9. Phase 6, rendu du dossier selon le modèle, avec score de profondeur, nombre de sources et dépense totale.

<a id="quick-start"></a>
## Démarrage rapide

1. **Installer le pack** Core est ajouté automatiquement. Python 3.10 ou plus récent doit être disponible sur la machine qui exécute les scripts.

   ```sh
   npx bmad-plus install --packs osint
   ```
2. **Définir au moins une clé d’API en variable d’environnement** Une seule clé suffit pour commencer ; Jina est la première suggérée. N’écrivez jamais une clé dans un fichier du projet. Les noms lus par Shadow sont `JINA_API_KEY`, `APIFY_API_TOKEN`, `PERPLEXITY_API_KEY`, `EXA_API_KEY`, `TAVILY_API_KEY`, `PARALLEL_API_KEY` et `BRIGHTDATA_MCP_URL`.

   ```sh
   $env:JINA_API_KEY = "votre-cle"
   ```
3. **Demander à Shadow ce qui est disponible** Le diagnostic ne touche aucune donnée personnelle et indique quels fournisseurs répondent.

   ```sh
   Shadow, fais le diagnostic des outils et API OSINT disponibles.
   ```

<a id="examples"></a>
## Exemples à copier

<a id="example-osint-diagnose"></a>
### Vérifier d’abord la boîte à outils (DG)

À lancer juste après avoir défini vos clés. Exemptée de la porte de base légale.

**Dans votre assistant IA**

```text
Shadow, fais le diagnostic des outils et API OSINT disponibles.
```

**Ce que vous devriez obtenir** Une carte des fournisseurs de recherche et de scraping : quelles clés sont définies, lesquelles manquent et ce que cela limite (par exemple, sans Apify, les données structurées des réseaux sociaux sont limitées).

<a id="example-osint-company-research"></a>
### Étudier une entreprise, pas une personne

Une recherche sur une entreprise n’exige pas de porte de base légale. Dites ce que vous voulez décider grâce au résultat et nommez le dossier de sortie : le paquet livre deux conventions (voir [Ce qu’il écrit et où](#outputs)).

**Dans votre assistant IA**

```text
Shadow, lance INV sur la société Acme Ltd, une personne morale et non une personne physique : forme juridique, activité, dépôts publics, mentions presse, sanctions ou litiges publiés. Je veux décider de l’intégrer comme fournisseur. Enregistre le dossier dans _bmad-output/osint-reports/, note chaque fait et liste ce que tu n’as pas pu vérifier.
```

**Ce que vous devriez obtenir** Un dossier sur la société, enregistré là où vous l’avez demandé (`_bmad-output/osint-reports/`), avec un niveau de confiance de A à D sur chaque fait (Shadow indique l’échelle qu’il applique) et la liste de ce qui n’a pas pu être vérifié. Shadow indique la qualité des sources et ses limites, et annonce le coût au fil de l’eau ; il dépense jusqu’à 0,50 dollar sans demander et demande au-delà.

<a id="example-osint-due-diligence"></a>
### Enquête complète avec base consignée (INV)

Énoncez d’emblée la finalité, la base et la conservation ; Shadow les consigne avant de chercher.

**Dans votre assistant IA**

```text
Shadow, mène une vérification préalable sur la directrice générale du fournisseur Acme Ltd, Jane Doe. Finalité : référencement du fournisseur. Base : intérêt légitime, test de mise en balance noté dans notre dossier d’onboarding. Responsable de traitement : Acme Client. Conservation : 12 mois. Les demandes des personnes concernées vont à privacy@acme-client.example. Enregistre le dossier dans _bmad-output/osint-reports/.
```

**Ce que vous devriez obtenir** La phase -1 vient d’abord : base, finalité, responsable et conservation sont consignés selon le modèle de base légale. Le dossier s’ouvre ensuite sur le bloc de gouvernance et sur l’avertissement que la production est générée par IA, peut contenir des erreurs, ne constitue pas un conseil juridique et exige une vérification humaine. Il est enregistré dans le dossier que vous avez nommé (ici `_bmad-output/osint-reports/`), avec la cible et la date dans le nom, comme le demande le fichier de l’agent Shadow.

<a id="example-osint-quick-search"></a>
### Recherche rapide sur un pseudo public (QS)

Le point d’entrée le moins cher : un passage rapide multi-moteurs, sans scraping des réseaux sociaux.

**Dans votre assistant IA**

```text
Shadow, recherche rapide sur le pseudo public @acme_support : quelle organisation le gère et quelles pages officielles y renvoient ?
```

**Ce que vous devriez obtenir** Des résultats des fournisseurs de recherche dont vous avez défini la clé, fusionnés et dédoublonnés (la recherche `volley.py` du pipeline envoie une même requête à tous). Shadow indique la qualité des sources et ses limites, et dit quels faits reposent sur une seule source.

<a id="example-osint-linkedin-extraction"></a>
### Extraire un profil LinkedIn public (LI)

Exige le token Apify et la porte de base légale. Donnez toute la base dans la demande : Shadow ne peut lire que ce qui figure dans la conversation ou dans le projet. Le scraping peut enfreindre les conditions de la plateforme ; vérifiez-les d’abord.

**Dans votre assistant IA**

```text
Shadow, extrais le profil LinkedIn public https://www.linkedin.com/in/jane-doe-example pour le dossier d’onboarding d’Acme Ltd. Finalité : référencement du fournisseur. Base : intérêt légitime, test de mise en balance noté dans notre dossier d’onboarding. Responsable de traitement : Acme Client. Conservation : 12 mois. Les demandes des personnes concernées vont à privacy@acme-client.example. Annonce le coût avant de lancer le scraper.
```

**Ce que vous devriez obtenir** Shadow vérifie que la base, la finalité, le responsable et la conservation sont consignés, puis lance le scraper Apify pour ce profil et ajoute les données structurées au dossier. Au-delà de 0,50 dollar de dépense cumulée, il s’arrête et vous demande.

<a id="example-osint-psychoprofile-declined"></a>
### Ce que reçoit une demande sans base (PP)

Cette consigne n’énonce ni finalité ni base, volontairement : elle montre la porte à l’œuvre.

**Dans votre assistant IA**

```text
Shadow, construis un profil de personnalité de ma nouvelle voisine, Jane Doe. Trouve tout ce que tu peux.
```

**Ce que vous devriez obtenir** Shadow refuse le profilage de la personne nommée : une demande ouverte du type « trouve tout » n’a ni finalité précise, ni base de l’article 6, ni condition de l’article 9 pour l’inférence de personnalité. Il propose les alternatives non personnelles, comme la recherche sur une entreprise, un produit ou un marché, ou l’étude d’une entité publique.

<a id="example-osint-contact-enrichment"></a>
### Enrichissement d’un contact professionnel (CE)

À utiliser avec une finalité énoncée, par exemple répondre à un partenaire qui vous a contacté.

**Dans votre assistant IA**

```text
Shadow, trouve l’e-mail et le téléphone professionnels de la directrice commerciale d’Acme Ltd, tels que publiés sur des sources publiques. Finalité : répondre à leur demande de partenariat. Base : intérêt légitime. Responsable de traitement : Acme Client. Conservation : 6 mois. Les demandes des personnes concernées vont à privacy@acme-client.example.
```

**Ce que vous devriez obtenir** La fiche de la porte est établie d’abord (base, finalité, responsable, conservation, traitement des demandes). Les coordonnées sont ensuite recherchées dans des sources publiques et notées de A à D ; Shadow indique l’échelle qu’il applique et signale les coordonnées qu’une seule source soutient.

<a id="outputs"></a>
## Ce qu’il écrit et où

- Dossier de sortie : le fichier de l’agent Shadow indique `_bmad-output/osint-reports/`, nommé avec la cible et la date (le dossier suit le réglage `output_folder` de `_bmad/config.yaml`), alors que les instructions de la compétence d’enquête indiquent `recherches/personnes-physiques/<nom>.md` ou `recherches/personnes-morales/<nom>.md` à la racine du projet, sans date. Le paquet livre les deux consignes : nommez donc le dossier dans votre demande pour obtenir celui que vous voulez.
- La fiche de base légale, issue du modèle `assets/lawful-basis-record.md`, figure en tête du dossier.
- Niveaux de confiance : chaque fait reçoit A, B, C ou D. Le fichier de l’agent Shadow les définit par le nombre de sources (A trois sources ou plus, B deux, C une, D non vérifié) ; le fichier du pipeline les définit par la preuve (A confirmé par au moins deux sources indépendantes ou un profil officiel, B une source crédible, C déduit, D non vérifié). Demandez à Shadow quelle échelle il a utilisée et lisez chaque niveau à côté des sources citées.

<a id="data-and-prerequisites"></a>
## Flux de données et prérequis

- Flux hors machine `osint-providers` : les scripts de Shadow appellent Apify, Exa, Jina, Parallel, Perplexity, Tavily et Bright Data en HTTPS, avec vos propres clés. Base de consentement : l’identifiant que vous définissez. Ce sur quoi vous enquêtez quitte votre machine sous forme de requête à ces fournisseurs.
- Clés : aucune n’est obligatoire. Chaque script de fournisseur ne vérifie que sa propre clé, donc une clé d’un fournisseur quelconque suffit pour démarrer. Les scripts lisent `APIFY_API_TOKEN` (les scrapers de réseaux sociaux), `PERPLEXITY_API_KEY`, `EXA_API_KEY`, `TAVILY_API_KEY`, `JINA_API_KEY`, `PARALLEL_API_KEY` et `BRIGHTDATA_MCP_URL` ; le registre les déclare toutes comme facultatives.
- Prérequis : Python 3.10 ou plus récent ; les scripts n’utilisent que la bibliothèque standard de Python, sans paquet supplémentaire.
- Les coûts sont sur vos comptes. Shadow suit la dépense par session et demande au-delà de 0,50 dollar par cible.

<a id="limits"></a>
## Limites et pièges

> **Attention · La phase 1.5 peut lire vos propres e-mails et conversations** Avant d’aller à l’extérieur, le pipeline consulte des sources internes comme l’historique de conversations, les e-mails et un carnet de contacts local, si des outils sont configurés pour cela. Si vous ne le voulez pas, dites-le dans la demande ou ne configurez pas ces outils. Les constats internes vont dans une section séparée marquée interne et confidentielle.

> **Remarque · Scripts des fournisseurs** Le paquet livre ses scripts de fournisseurs sous forme de fichiers Python (`apify.py`, `exa.py`, `jina.py`, `perplexity.py`, `tavily.py`, `brightdata.py`, `parallel.py`, `volley.py`, `diagnose.py`) qui n’utilisent que la bibliothèque standard de Python. Lancez-les avec Python 3.10 ou plus récent.

> **Remarque · Provenance** Le pipeline d’enquête est adapté d’une compétence open source sous licence MIT, et l’exécuteur Apify s’inspire des agent skills d’Apify (Apache-2.0). Les mentions exactes figurent dans THIRD-PARTY-LICENSES.md du paquet.

**Voir aussi**

- [Les dix packs côte à côte](https://bmad-plus.rochetta.fr/fr/docs/packs/packs-overview/)
- [Pack Shield (workflows RGPD, AIPD)](https://bmad-plus.rochetta.fr/fr/docs/packs/shield/)
- [Gestion des données et vie privée](https://bmad-plus.rochetta.fr/fr/docs/security/data-handling/)
- [Référence de la commande install](https://bmad-plus.rochetta.fr/fr/docs/reference/cli-install/)

[Documentation BMAD+](https://bmad-plus.rochetta.fr/fr/docs/) · [Packs](https://bmad-plus.rochetta.fr/fr/docs/packs/)

[Code sur GitHub](https://github.com/lrochetta/BMAD-PLUS)
