# Pack OSINT: Shadow, investigación en fuentes abiertas con gobernanza

> Shadow investiga en fuentes abiertas por fases, con puerta de base legal obligatoria para personas con nombre. Instalación, claves de API, presupuesto, siete prompts, salidas y límites.

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

Documentación de BMAD+ › [Packs](https://bmad-plus.rochetta.fr/es/docs/packs/) › Pack OSINT: Shadow, investigación en fuentes abiertas con gobernanza

El pack OSINT instala a Shadow, un agente que convierte un nombre, un alias o una empresa en un dosier de investigación calificado a partir de fuentes públicas (OSINT significa inteligencia de fuentes abiertas). Encadena búsquedas rápidas, verificación de fuentes, extracción en redes sociales con scrapers de Apify y contraste de datos, y siempre escala de lo barato y rápido a lo caro y profundo. Como investigar a una persona con nombre es un tratamiento de datos personales, el pack tiene gobernanza: Shadow debe registrar una base legal y una finalidad antes de tocar a nadie identificable.

> **Advertencia · Léelo antes de usarlo sobre una persona** El responsable del tratamiento eres tú, no BMAD+. Investigar a una persona identificable exige una base legal documentada (RGPD artículo 6, y una condición del artículo 9(2) para cualquier inferencia de personalidad o categorías especiales) antes de la primera petición. El scraping puede infringir las condiciones de uso de una plataforma. El resultado lo genera una IA, puede ser erróneo y necesita verificación humana antes de cualquier decisión. Esta página no es asesoramiento jurídico.

<a id="when-to-use"></a>
## Cuándo usarlo

- Diligencia debida sobre un proveedor, socio o contraparte, con finalidad y base legal declaradas.
- Investigación de empresas, productos o mercados: no requiere la puerta de base legal porque no se perfila a ninguna persona física.
- Investigación de seguridad o encargada por mandato, cuando el mandato y la base son explícitos y auditables.
- No sirve para la curiosidad sobre un particular, el acoso ni el perfilado de un vecino, expareja, empleado o candidato sin base. Shadow las rechaza.

<a id="installed"></a>
## Qué se instala

Un agente, Shadow, en `.agents/skills/agent-shadow/`, más dos habilidades copiadas del paquete incluido `osint-agent-package` a `.agents/skills/`: `bmad-osint-investigate` (el pipeline de investigación y sus scripts de proveedores) y `bmad-osint-investigator` (un segundo punto de entrada heredado del paquete; carga `_bmad/bmm/agents/osint-investigator.md`, un archivo que una instalación de BMAD+ no crea, así que empieza por Shadow). El registro no enumera habilidades propias de este pack; las dos anteriores proceden del paquete. El menú de Shadow nombra, para QS, LI, IG, FB, PP, CE y DG, archivos de instrucciones que el paquete no incluye: esas entradas se ejecutan a partir de la línea del menú y de las instrucciones del pipeline de `bmad-osint-investigate`.

**Menú de Shadow**

| Código | Capacidad | Puerta de base legal |
| --- | --- | --- |
| INV | Investigación completa, fases 0 a 6, dosier puntuado | Sí, para una persona con nombre |
| QS | Búsqueda rápida multimotor sobre un nombre o alias | No para un alias público |
| LI / IG / FB | Extracción de perfiles públicos de LinkedIn, Instagram y Facebook con Apify | Sí |
| PP | Perfil de personalidad (MBTI, Big Five) | Sí, más una condición del artículo 9 |
| CE | Enriquecimiento de contacto: correo, teléfono, datos de contacto | Sí |
| DG | Diagnóstico de las API y herramientas disponibles | No |

<a id="phases"></a>
### Las fases de la investigación

1. Fase -1, puerta de base legal: registrar la base, la finalidad, el responsable, el plazo de conservación y cómo se atienden las solicitudes de acceso o supresión. Sin base, no hay trabajo sobre una persona con nombre.
2. Fase 0, autodiagnóstico de herramientas: ejecutar el diagnóstico y anotar qué herramientas y claves faltan.
3. Fase 1, recogida inicial: primero búsquedas baratas, luego verificar las fuentes citadas y fusionar identificadores.
4. Fase 1.5, inteligencia interna: mirar lo que ya tienes (historial de conversaciones, correo, un directorio local de contactos) si hay herramientas configuradas, antes de salir al exterior.
5. Fase 2, extracción por plataforma: datos estructurados de redes sociales con scrapers de Apify.
6. Fase 3, contraste y puntuación de confianza: tabla de hechos, comprobaciones cruzadas, contradicciones, homónimos.
7. Fase 4, perfil psicológico, solo con la condición jurídica adicional.
8. Fase 5, evaluación de completitud: cobertura, puntuación de profundidad, diversidad de fuentes, criterios de parada.
9. Fase 6, salida del dosier según la plantilla, con puntuación de profundidad, número de fuentes y gasto total.

<a id="quick-start"></a>
## Inicio rápido

1. **Instalar el pack** Core se añade automáticamente. Python 3.10 o superior debe estar disponible en la máquina que ejecuta los scripts.

   ```sh
   npx bmad-plus install --packs osint
   ```
2. **Definir al menos una clave de API como variable de entorno** Una sola clave basta para empezar; Jina es la primera sugerida. No escribas nunca una clave en un archivo del proyecto. Los nombres que lee Shadow son `JINA_API_KEY`, `APIFY_API_TOKEN`, `PERPLEXITY_API_KEY`, `EXA_API_KEY`, `TAVILY_API_KEY`, `PARALLEL_API_KEY` y `BRIGHTDATA_MCP_URL`.

   ```sh
   $env:JINA_API_KEY = "tu-clave"
   ```
3. **Preguntar a Shadow qué hay disponible** El diagnóstico no toca datos personales e indica qué proveedores responden.

   ```sh
   Shadow, haz el diagnóstico de las herramientas y API de OSINT disponibles.
   ```

<a id="examples"></a>
## Ejemplos para copiar

<a id="example-osint-diagnose"></a>
### Comprobar primero la caja de herramientas (DG)

Ejecútalo justo después de definir tus claves. Está exento de la puerta de base legal.

**En tu asistente de IA**

```text
Shadow, haz el diagnóstico de las herramientas y API de OSINT disponibles.
```

**Lo que deberías obtener** Un mapa de los proveedores de búsqueda y scraping: qué claves están definidas, cuáles faltan y qué limita eso (por ejemplo, sin Apify los datos estructurados de redes sociales son limitados).

<a id="example-osint-company-research"></a>
### Investigar una empresa, no una persona

Investigar una empresa no exige la puerta de base legal. Indica qué quieres decidir con el resultado y nombra la carpeta de salida: el paquete trae dos convenciones (consulta [Qué escribe y dónde](#outputs)).

**En tu asistente de IA**

```text
Shadow, lanza INV sobre la sociedad Acme Ltd, una persona jurídica y no una persona física: forma jurídica, actividad, depósitos públicos, menciones en prensa, sanciones o litigios publicados. Quiero decidir si la incorporo como proveedor. Guarda el dosier en _bmad-output/osint-reports/, califica cada hecho y enumera lo que no pudiste verificar.
```

**Lo que deberías obtener** Un dosier sobre la sociedad, guardado donde lo pediste (`_bmad-output/osint-reports/`), con un grado de confianza de A a D en cada hecho (Shadow indica la escala que aplica) y la lista de lo que no se pudo verificar. Shadow indica la calidad de las fuentes y sus límites, y va informando del coste; gasta hasta 0,50 dólares sin preguntar y pregunta por encima.

<a id="example-osint-due-diligence"></a>
### Investigación completa con base registrada (INV)

Declara desde el principio la finalidad, la base y la conservación; Shadow las registra antes de buscar.

**En tu asistente de IA**

```text
Shadow, realiza una comprobación de diligencia debida sobre la directora general del proveedor Acme Ltd, Jane Doe. Finalidad: alta del proveedor. Base: interés legítimo, ponderación anotada en nuestro expediente de alta. Responsable del tratamiento: Acme Client. Conservación: 12 meses. Las solicitudes de los interesados van a privacy@acme-client.example. Guarda el dosier en _bmad-output/osint-reports/.
```

**Lo que deberías obtener** La fase -1 va primero: se registran la base, la finalidad, el responsable y la conservación con la plantilla de base legal. El dosier se abre después con el bloque de gobernanza y el aviso de que el resultado lo genera una IA, puede contener errores, no es asesoramiento jurídico y exige verificación humana. Se guarda en la carpeta que indicaste (aquí `_bmad-output/osint-reports/`), con el objetivo y la fecha en el nombre, como pide el archivo del agente Shadow.

<a id="example-osint-quick-search"></a>
### Búsqueda rápida sobre un alias público (QS)

El punto de entrada más barato: un pase rápido multimotor, sin scraping de redes sociales.

**En tu asistente de IA**

```text
Shadow, búsqueda rápida sobre el alias público @acme_support: ¿qué organización lo gestiona y qué páginas oficiales enlazan a él?
```

**Lo que deberías obtener** Resultados de los proveedores de búsqueda cuya clave definiste, fusionados y sin duplicados (la búsqueda `volley.py` del pipeline envía una misma consulta a todos). Shadow indica la calidad de las fuentes y sus límites, y dice qué hechos se apoyan en una sola fuente.

<a id="example-osint-linkedin-extraction"></a>
### Extraer un perfil público de LinkedIn (LI)

Exige el token de Apify y la puerta de base legal. Da la base completa en la petición: Shadow solo puede leer lo que está en la conversación o en el proyecto. El scraping puede infringir las condiciones de la plataforma; compruébalas antes.

**En tu asistente de IA**

```text
Shadow, extrae el perfil público de LinkedIn https://www.linkedin.com/in/jane-doe-example para el expediente de alta de Acme Ltd. Finalidad: alta del proveedor. Base: interés legítimo, ponderación anotada en nuestro expediente de alta. Responsable del tratamiento: Acme Client. Conservación: 12 meses. Las solicitudes de los interesados van a privacy@acme-client.example. Indica el coste antes de lanzar el scraper.
```

**Lo que deberías obtener** Shadow comprueba que la base, la finalidad, el responsable y la conservación están registrados, lanza el scraper de Apify para ese perfil y añade los datos estructurados al dosier. Por encima de 0,50 dólares de gasto acumulado se detiene y te pregunta.

<a id="example-osint-psychoprofile-declined"></a>
### Qué recibe una petición sin base (PP)

Este prompt no declara finalidad ni base, a propósito: muestra la puerta en acción.

**En tu asistente de IA**

```text
Shadow, construye un perfil de personalidad de mi nueva vecina, Jane Doe. Encuentra cuanto puedas.
```

**Lo que deberías obtener** Shadow rechaza el perfilado de la persona con nombre: una petición abierta del tipo «encuentra cuanto puedas» no tiene finalidad específica, ni base del artículo 6, ni condición del artículo 9 para inferir la personalidad. Ofrece alternativas no personales, como investigar una empresa, un producto o un mercado, o una entidad pública.

<a id="example-osint-contact-enrichment"></a>
### Enriquecimiento de un contacto profesional (CE)

Úsalo con una finalidad declarada, por ejemplo para responder a un socio que te contactó.

**En tu asistente de IA**

```text
Shadow, encuentra el correo y el teléfono profesionales de la directora comercial de Acme Ltd, tal como constan en fuentes públicas. Finalidad: responder a su solicitud de colaboración. Base: interés legítimo. Responsable del tratamiento: Acme Client. Conservación: 6 meses. Las solicitudes de los interesados van a privacy@acme-client.example.
```

**Lo que deberías obtener** Primero se establece el registro de la puerta (base, finalidad, responsable, conservación, atención de las solicitudes). Después se buscan los datos de contacto en fuentes públicas y se califican de A a D; Shadow indica la escala que aplica y señala los datos que solo respalda una fuente.

<a id="outputs"></a>
## Qué escribe y dónde

- Carpeta del dosier: el archivo del agente Shadow indica `_bmad-output/osint-reports/`, con el objetivo y la fecha en el nombre (la carpeta sigue el ajuste `output_folder` de `_bmad/config.yaml`), mientras que las instrucciones de la habilidad de investigación indican `recherches/personnes-physiques/<nombre>.md` o `recherches/personnes-morales/<nombre>.md` en la raíz del proyecto, sin fecha. El paquete trae las dos indicaciones, así que nombra la carpeta en tu petición para obtener la que quieres.
- El registro de base legal, de la plantilla `assets/lawful-basis-record.md`, figura al principio del dosier.
- Grados de confianza: cada hecho recibe A, B, C o D. El archivo del agente Shadow los define por número de fuentes (A tres o más fuentes, B dos, C una, D sin verificar); el archivo del pipeline los define por la evidencia (A confirmado por dos o más fuentes independientes o un perfil oficial, B una fuente creíble, C inferido, D sin verificar). Pregunta a Shadow qué escala usó y lee cada grado junto a las fuentes citadas.

<a id="data-and-prerequisites"></a>
## Flujos de datos y requisitos

- Flujo fuera de la máquina `osint-providers`: los scripts de Shadow llaman a Apify, Exa, Jina, Parallel, Perplexity, Tavily y Bright Data por HTTPS, con tus propias claves. Base de consentimiento: la credencial que defines. Lo que investigas sale de tu máquina como consulta a esos proveedores.
- Claves: ninguna es obligatoria. Cada script de proveedor comprueba solo su propia clave, así que basta una clave de cualquier proveedor para empezar. Los scripts leen `APIFY_API_TOKEN` (los scrapers de redes sociales), `PERPLEXITY_API_KEY`, `EXA_API_KEY`, `TAVILY_API_KEY`, `JINA_API_KEY`, `PARALLEL_API_KEY` y `BRIGHTDATA_MCP_URL`; el registro las declara todas como opcionales.
- Requisitos: Python 3.10 o superior; los scripts usan solo la biblioteca estándar de Python, sin paquetes adicionales.
- Los costes corren por tus cuentas. Shadow lleva el gasto por sesión y pregunta por encima de 0,50 dólares por objetivo.

<a id="limits"></a>
## Límites y trampas

> **Advertencia · La fase 1.5 puede leer tu propio correo y chats** Antes de salir al exterior, el pipeline consulta fuentes internas como el historial de conversaciones, el correo y un directorio local de contactos, si hay herramientas configuradas para ello. Si no lo quieres, dilo en la petición o no configures esas herramientas. Los hallazgos internos van en una sección aparte marcada como interna y confidencial.

> **Nota · Scripts de proveedores** El paquete incluye sus scripts de proveedores como archivos Python (`apify.py`, `exa.py`, `jina.py`, `perplexity.py`, `tavily.py`, `brightdata.py`, `parallel.py`, `volley.py`, `diagnose.py`) que solo usan la biblioteca estándar de Python. Ejecútalos con Python 3.10 o superior.

> **Nota · Procedencia** El pipeline de investigación está adaptado de una habilidad de código abierto con licencia MIT, y el ejecutor de Apify se inspira en las agent skills de Apify (Apache-2.0). Los avisos exactos están en THIRD-PARTY-LICENSES.md del paquete.

**Véase también**

- [Los diez packs lado a lado](https://bmad-plus.rochetta.fr/es/docs/packs/packs-overview/)
- [Pack Shield (workflows RGPD, EIPD)](https://bmad-plus.rochetta.fr/es/docs/packs/shield/)
- [Gestión de datos y privacidad](https://bmad-plus.rochetta.fr/es/docs/security/data-handling/)
- [Referencia del comando install](https://bmad-plus.rochetta.fr/es/docs/reference/cli-install/)

[Documentación de BMAD+](https://bmad-plus.rochetta.fr/es/docs/) · [Packs](https://bmad-plus.rochetta.fr/es/docs/packs/)

[Código en GitHub](https://github.com/lrochetta/BMAD-PLUS)
