2026-09-08: second-brain-twitter — ingest + “la lógica” del export de X
Decisión
Crear ~/nef/second-brain-twitter/ como proyecto hermano del second-brain de
estudio (NO dentro de ~/nef/second-brain/, cuyo contrato es solo el grafo
AI/ML). Pipeline mínimo: ingest.py (export .js → data/twitter.db
SQLite) + report.py (reporte de patrones). Sin LLM en la primera pasada.
Privacidad por diseño
Nunca persistir: email/IP/phone/DM bodies/claves. El db es local.
La lógica encontrada (hechos, no inferencia)
- Cuenta @nefter_ creada 2009-11-09; 5,911 tweets (37% originales); 139,555 likes; 4,715 following; 879 followers; 128 DMs; 1,025 block.
- Perfil dominante: política/medios MX (RT de @julioastillero 119, @piedepagina 71, prensa en general). Hashtags: astilleroinforma, cdmx, ayotzinapa.
- Eras: diseño/web/frontend 2014–2017 (~38 hits web, ~33 tipografía/diseño); datos/viz 2018–2021 (39); IA/ML casi nula en toda la historia (pico 25 hits en 2022–2026, casi todos de RTs recientes).
- Cruce con títulos de nodos del grafo nodo.ws: prácticamente cero.
- Límites: likes sin autor/fecha y texto truncado; following sin screen names; DMs excluidos.
Conclusión (juicio)
El export documenta un “yo editorial/diseñador” (2009–2022) que no es una mina técnica directa para un grafo de estudio AI/ML. Forzar la ingesta masiva metería ruido. Las vías con señal real:
- Originales técnicos propios (~2,196 originales, subconjunto técnico
mucho menor) → tarjetas de conocimiento con Ollama local, siguiendo el
patrón
_stubs/papers(revisión humana antes de entrar al grafo). - Los ~2–3k likes técnicos (IA/web/datos/diseño) como índice de “taste” y fuentes persona/dataset potenciales.
- Si el cruce sigue ≈0, cerrar el tema con un summary y NO alimentar el grafo (evitar contaminación).
Estado
~/nef/second-brain-twitter/{scripts/ingest.py, scripts/report.py} +
reports/logica-2026-09-08.md. La capa visual se separa en tweets y likes.
Decisión añadida: búsqueda unificada
La visualización permitirá buscar en ambos corpus:
- tweets propios (
tweets) - likes con texto (
likes)
La búsqueda no meterá todos los mensajes dentro del JSON del grafo. El JSON mantendrá muestras pequeñas para cargar rápido; la consulta completa vivirá en SQLite con un índice FTS5 local.
Flujo previsto
grafo (tweets / likes)
-> buscador global
-> API local read-only en [IP]
-> SQLite + FTS5
-> resultados paginados y evidencia completaFunciones
- Selector:
Tweets | Likes | Ambos. - Búsqueda por palabras, frases,
@mencióny#hashtag. - Paginación de 30 resultados.
- Filtros por idioma, RT/original, respuesta y periodo cuando exista fecha.
- Resultado con texto, referencia y enlace a X.
- Clic en un nodo para restringir la búsqueda a ese topic, categoría, término o cluster.
- El servidor queda solo en localhost; no se expone el corpus.
Estado de likes
- Export original: 139,555 registros.
- Artefactos automáticos eliminados de la SQLite de trabajo: 8,227.
- SQLite de trabajo: 131,328 likes.
- Likes procesados semánticamente: 130,626 con texto.
- 702 referencias sin texto quedan fuera de la búsqueda textual.
- Backup previo:
~/nef/backups/exports/second-brain-twitter/twitter.db.pre-platform-artifacts.sqlite.
La implementación del buscador queda pendiente; esta especificación es la decisión vigente.