Máquina de Estados Narrativa: del artículo técnico a la novela histórica

Qué hace el modelo
Este código implementa un pipeline de publicación técnica y narrativa que:
- Carga fuentes externas
- Lee archivos Markdown locales y descarga páginas web.
- Filtra spam, detecta idioma y marca cada fuente con identificadores
(SOURCE)o(SOURCE_URL)para rastrear su procedencia.
- Genera fragmentos RAG
- Divide el texto en párrafos relevantes.
- Asigna identificadores
(RAG: trace_X)para poder citar explícitamente las fuentes en el artículo final. - Esto asegura trazabilidad y rigor documental.
- Define un estado del artículo (
ArticleState)- Guarda las ideas clave, temas agrupados, artículo técnico, novela histórica y metadatos.
- Permite validar instrucciones del usuario y controlar el flujo de generación.
- Extrae ideas clave con LLM
- El modelo (Deepseek) analiza el material y produce 12 ideas principales con descripciones.
- Estas ideas se convierten en la base del artículo.
- Agrupa en temas
- El LLM organiza las ideas en 4–6 grandes temas con títulos y resúmenes.
- Esto facilita la divulgación y la claridad.
- Redacta el artículo técnico
- El modelo escribe un artículo claro y didáctico en español.
- Incluye una síntesis final de unas 400 palabras con referencias explícitas a los fragmentos
(RAG: id). - Añade un apartado “Fuentes citadas”.
- Genera una novela histórica
- Produce una narración evocadora basada en las ideas y fragmentos.
- Valida las instrucciones del usuario (tono, POV, RAGs obligatorios).
- Integra al menos 3 citas
(RAG: id)y marca inferencias como[HIPÓTESIS]. - Añade síntesis y bloque “Referencias RAG”.
- Exporta todo en Markdown
- Guarda el artículo técnico y la narración en un único archivo con secciones: introducción, ideas clave, historia novelada, referencias RAG y metadatos.
🔗 Integración con investigaciones previas
El modelo no funciona en vacío: se apoya en trabajos anteriores que ya publicados en esta web, como:
- Agente como máquina de estados con múltiples expertos en genética y paleontología
- Agente de planificación y ejecución para investigación historiográfica y etimológica
- Modelo de LangGraph para transformar artículos técnicos en didácticos
Estas investigaciones previas aportan la arquitectura conceptual (máquina de estados, agentes de planificación, LangGraph) que el código actual reutiliza para:
- estructurar el flujo de ideas,
- validar instrucciones del usuario,
- y transformar artículos técnicos en piezas divulgativas y narrativas.
Descripción breve de nodos y flujo
Descripción de nodos y flujo
ResearchTools (opcional) Módulos que añaden resultados de búsqueda académica (research_ret, ArXiv, PubMed) y alimentan al Fetcher.
CLI / UI Recoge parámetros: --url, --md, --topic, --user-instructions, --article-word-target, --dry-run. Puede inyectar valores desde variables LOCAL_*.
Ingestor Normaliza entradas y arma la lista de fuentes (archivos Markdown y URLs).
Fetcher Descarga páginas con requests o urllib. Si está instalado, usa trafilatura para extraer texto limpio.
Extractor Si no hay trafilatura, usa BeautifulSoup. Prioriza etiquetas <article> / <main>, luego el mayor <div> / <section>, y finalmente fallback al texto plano.
Filter Aplica blacklist de spam (palabras clave). Opcional: detección de idioma y filtro por topics. Rechaza páginas no relevantes.
Markup Añade marcador de origen al contenido:
<!-- SOURCE: filename -->
<!-- SOURCE_URL: url -->
Fragmenter / generate_fragments_with_sources Divide en párrafos. Descarta cortes cortos o spam. Aplica filtro por topics. Crea fragmentos etiquetados (RAG: trace_n) y produce source_map trace_n -> fuente.
RAGstore Estructura en memoria (y opcional persistencia) con lista de (trace_id, excerpt, source).
LLM Preparer Selecciona evidencia (fragments). Aplica constraints (instrucciones del usuario con (RAG: id)). Compone prompts para el modelo.
LLM steps
extract_core_ideas: pide 12 ideas clave del texto combinado.
group_themes: agrupa esas ideas en 4–6 temas.
write_didactic_article: genera artículo + síntesis de X palabras (parametrizable).
write_novel_historical: genera novela integrando (RAG: id) y síntesis final.
TraceMapSaver Guarda un JSON con mapping completo trace_id -> {source, excerpt, offset} para trazabilidad.
Output Writer Escribe archivo Markdown final con:
- Artículo técnico
- Novela histórica
- Referencias RAG
- Metadata
Monitoring Logging en nivel INFO/DEBUG. Archivo de trazas (ejemplo: trace_YYYYMMDD_HHMM.md).







sanchezpares.com
[…] Máquina de Estados Narrativa: del artículo técnico a la novela histórica […]