Importación de conversaciones → second-brain (2026-09-08)
Decisiones tomadas
-
Importar dos tipos de export: ZIP descargados desde Claude.ai y OpenAI como fuentes de conocimiento personal para alimentar el grafo de
second-brain. -
Procesamiento exclusivo en esta máquina: ninguna conversación, prompt o salida LLM sale del laptop ni va a APIs externas. No se usa el S76 remoto (
[IP]) para este pipeline. Todo corre con Ollama local (http://localhost:11434). -
Primero respaldo y versionado: antes de importar los ZIP,
second-braintiene commit + tag v$(date +%Y%m%d) ysecond-brain-twitterfue inicializado como repositorio Git por primera vez. -
Los ZIP originales se conservan aparte: fuera de git, fuera de
content/, fuera del grafo publicado. Cifrados si es posible. Nunca entran al repo. -
Revisión humana obligatoria: nada entra directamente a
content/nodes/. Todo pasa primero por_stubs/conversations/como notas revisables sin edges. Solo después de revisión se adoptan al grafo. -
Inferencias separadas de hechos: cada salida tiene campos explícitos: evidencia (origen), inferencia (interpretación), confianza (alta/media/baja). No hay mezcla.
-
Deduplicación e incrementalidad: cada nuevo export procesa solo lo no visto, registra cambios (ideas nuevas, modificadas, resueltas) y nunca sobrescribe silenciosamente.
Arquitectura del proceso
1. Respaldo y versionado ✅
second-brain: commit789aa4e, tagv20260908-post-checkpoint.second-brain-twitter: init + commit897ed51, tagv20260908.
2. Recepción de exports (pendiente)
~/Downloads/claude-export-XXXXX.zip
~/Downloads/openai-export-XXXXX.zip
↓ cp --archive cifrado
~/nef/backups/exports/conversaciones/YYYY-MM-DD/
3. Normalización
Cada ZIP → .json crudo → estructura común:
{
"id": "hash(archivo+linea)",
"fuente": "claude" | "openai",
"fecha": "2026-09-04TXX:XX:XXZ",
"conversacion": "nombre_o_id_de_la_conversacion",
"rol": "user" | "assistant" | "system",
"texto": "...",
"proyecto": "nombre_del_proyecto_si_se_puede_deducir",
"adjuntos": [],
"hash_origen": "sha256(del_archivo_original)"
}4. Limpieza de datos sensibles
- Eliminar emails, teléfonos, IPs.
- Extraer tokens/claves que aparezcan en prompts.
- Reemplazar URLs de terceros por referencia al contexto donde aparecen.
5. Detección de patrones con LLM local
Prompt adaptado para buscar:
- ideas recurrentes entre conversaciones
- decisiones ya tomadas
- preguntas abiertas sin resolver
- proyectos mencionados o abandonados
- problemas repetidos
- conceptos aprendidos
- prompts reutilizables
- referencias y fuentes citadas
- contradicciones entre fechas
- compromisos pendientes
- patrones sobre cómo trabajas y dónde te atoras
Modelo: qwen3.6 o mistral según disponibilidad. Todo vía http://localhost:11434/api/chat.
6. Salidas
| Archivo | Contenido |
|---|---|
reports/conversaciones-inventario.md | Qué conversaciones hay, por fecha, volumen total |
reports/ideas-recurrentes.md | Ideas que aparecen en ≥2 conversaciones distintas |
reports/decisiones.md | Decisiones ya tomadas con evidencia y fecha |
reports/preguntas-abiertas.md | Preguntas sin resolver aún |
reports/inferencias.md | Patrones deducidos con nivel de confianza |
reports/historial-de-cambios.md | Changelog: qué cambió por export |
_stubs/conversations/claude/<id>-<slug>.md | Stubs individuales, uno por concepto/decisión |
_stubs/conversations/openai/<id>-<slug>.md | Stubs de OpenAI |
Formato de stub (mismo frontmatter que el sistema actual):
---
title: "Concepto o decisión extraída"
kind: idea | decision | question | pattern
status: unseen
level: 0
edges: []
tags: [conversacion, claude|openai, tema]
sources:
- name: Claude / OpenAI
url: "[restringido — ver backup/...]"
date: "YYYY-MM-DD"
open_questions: []
---
**Evidencia:** fragmentos de la conversación original
**Inferencia:** patrón o conclusión deducida
**Confianza:** alta | media | baja
**Acción sugerida:** (si aplica)
*Nota: requiere revisión antes de adoptar al grafo.*7. Validación
- Comparar hashes SHA-256 de los ZIP contra los almacenados en backups.
- Verificar que ningún email, teléfono o token aparezca en las salidas.
- Revisar manualmente todos los stubs antes de moverlos a
content/nodes/. - Mantener bitácora de qué se adoptó y cuándo.
Scripts a crear
~/nef/second-brain/scripts/import-conversations.py
- Recibe ZIP o carpeta descomprimida como argumento.
- Detecta formato automáticamente (Claude vs OpenAI).
- Exporta JSON normalizado.
- Ejecuta detección de patrones con Ollama local.
- Escribe stubs en
_stubs/conversations/. - Genera reportes en
reports/. - Registra changelog incremental.
~/nef/second-brain/scripts/import-conversations.sh
Wrapper shell que:
- Pide ruta del ZIP.
- Lo copia cifrada a
~/nef/backups/exports/conversaciones/YYYY-MM-DD/. - Corrige permisos y ejecuta el Python.