Second-brain Twitter — operación de búsqueda (2026-09-10)

Backends

  • scripts/search_server.py sirve la visualización (~/nef/second-brain/dist) y expone /api/search.
  • --backend auto (default): Worker si hay token; local si no. Si el Worker falla, cae al FTS local e incluye fallback en la respuesta.
  • --backend worker|local para forzar.
  • Worker: https://second-brain-search.nef.workers.dev → D1 second-brain-search (5,911 tweets + 130,626 likes).
  • dist/serve-graph.command ahora arranca search_server.py en el puerto 8765 (antes http.server sin API).

Token

  • Se lee de SEARCH_TOKEN o de worker/.dev.vars (ignorado por git).
  • Secret remoto SEARCH_TOKEN configurado en el Worker (verificado con wrangler secret list).
  • No está en el env del shell ni en rc files.

Git

  • Rama de trabajo: feature/search-tweets-likes (commits abbe8c1, 41240e1, 385dffe).
  • Corpus/datos fuera de tracking en esa rama; los archivos siguen en disco.
  • Pendiente (otra sesión): purga de historial (git filter-repo) en todas las ramas.

Detalle

  • Cloudflare bloquea el User-Agent Python-urllib/3.x con 403; el server usa second-brain-search/1.0.

FTS5 (2026-09-11)

  • D1 migrado a FTS5: tweets_fts (5,911) y likes_fts (130,626); schema en worker/schema_fts.sql.
  • Worker usa MATCH con prefijos ("term"* unidos por AND) y ORDER BY rank; commit f00a70f.
  • Costo por búsqueda: ~29 filas leídas (antes: full scan de hasta ~136k con LIKE). La cuota free de 5M filas/día deja de ser el cuello de botella.
  • Import final: tweets 5,911 + likes 130,626 (verificado). Writes de FTS5 en D1 se cuentan por operación (baratos).