Communitygithub.com

woanderingboy/novel-video-pipeline

Pipeline de generación de manga-drama (16:9) a partir de novelas. Cinco estaciones: guion -> activos -> storyboard -> audio -> composición. Prioridad de activos, cortafuegos IP, puerta de seguridad infantil. Consume la salida de novel-writing-pipeline.

¿Qué es novel-video-pipeline?

Esta skill convierte historias textuales (novelas web, cómics, guiones originales, cuentos ilustrados, etc.) en paquetes de prompts para storyboard, imágenes de referencia visual y audio/música CC0, listos para alimentar modelos de video generativo (texto a video o imagen a video). El pipeline se compone de cinco estaciones secuenciales: S1 (adaptación del guion), S2 (creación de activos: personajes y escenarios con vistas múltiples e imágenes de anclaje), S3 (storyboard que referencia directamente esos activos para garantizar consistencia entre tomas), S4 (audio CC0) y S5 (composición final del video). La skill está diseñada para producción de manga-drama en horizontal (16:9) orientado a plataformas como Bilibili, YouTube o TikTok, con un fuerte énfasis en la originalidad: prohíbe la copia de personajes, escenas o imágenes con derechos de autor (cortafuegos IP) y solo permite contenido de dominio público o CC0. Incluye scripts de automatización (generación de storyboard, resolución de referencias, validación con 5 compuertas de calidad) y un sistema opcional de auto-mejora (recopila métricas y feedback para evitar errores recurrentes). Es compatible con sub-tipos como contenido infantil (con filtros adicionales de seguridad) y permite ejecutar estaciones individuales (por ejemplo, solo storyboard).

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add woanderingboy/novel-video-pipeline

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

漫剧(小说 / 网文 / 漫画改编)· 四站式流水线(novel-video-pipeline)

Overview

Convierte una historia textual (novela web, cómic, guion original, cuento ilustrado, etc.) de forma estable en un paquete de prompts para storyboard + imágenes de referencia visual + audio/música CC0 listo para alimentar modelos de generación de video, manteniéndose siempre dentro del límite de no reproducir imágenes protegidas por derechos de autor de terceros. Por defecto, está orientada a la producción de manhua-drama (horizontal 16:9 / series de varios episodios), pero también se puede cambiar a sub-tipos como manhua-drama infantil, videos cortos individuales, etc. La línea de producción se basa en el ritmo de los manhua-drama más populares actuales ("gancho fuerte + tirón emocional + giro + punto de satisfacción + suspenso entre episodios"), pero solo toma prestado su esqueleto metodológico; los personajes, la trama y el estilo artístico son siempre originales.

La línea de producción consta de cuatro estaciones de trabajo en secuencia, cada una produce un JSON / directorio de recursos acordado, y la siguiente estación consume el producto de la anterior. El orden central de producción: primero construir la base de activos (S2), luego escribir los prompts del storyboard (S3) — el storyboard solo organiza los activos según el lenguaje de la cámara, asegurando la consistencia de los personajes y la continuidad del espacio de la escena.

S1 改编剧本  ──script.json──▶  S2 资产库  ──character_manifest + scene_manifest (+ visual_manifest)──▶  S3 分镜提示词  ──storyboard.json(引用资产+ref_images锚定)──▶  S4 音频  ──audio_manifest──▶  S5 合成  ──成片
  • S1 Adaptación del guion: Comprime el texto largo/original en un "esqueleto de valor narrativo o pedagógico + tabla de ritmos", genera script.json (title / logline / characters / scenes / beats).
  • S2 Base de activos (construir primero): Lee el guion completo, establece activos de personajes en tres vistas (character_manifest.json: visual_lock + vistas frontal/lateral/trasera + paquete de imágenes de anclaje + fixed_prompt) y activos de escena en múltiples vistas (scene_manifest.json: axis_of_action + vistas: establishing, ots a→b, reverse, insert), y acompaña con la descarga de imágenes de referencia visual de dominio público / CC0 (visual_manifest.json). Aplica el cortafuegos IP (palabras negativas). Esta estación produce la "base de activos" que S3 usará como referencia.
  • S3 Prompts del storyboard (basado en la base de activos): Expande cada beat en tomas (shot), cada shot referencia character_ref (personaje+vista) y scene_ref (escena+vista), toma la descripción fija de la base de activos, combina la biblioteca de movimientos de cámara (camera-movements.json) y las preconfiguraciones de la plataforma para crear el prompt, inyecta negative_prompt, y genera storyboard.json.
  • S4 Audio: Empareja música de fondo / efectos de sonido CC0 para cada toma, genera audio_manifest.json.
  • S5 Composición (cierre al video final): Toma el storyboard.json de S3 (que contiene ref_images de anclaje) y el audio_manifest.json de S4 para cerrar el video: genera imágenes / videos de imagen a video toma por toma (usando ref_images para fijar la cara) → alineación de audio → edición y montaje (según duration_s y aspect_ratio) → exportación a plataforma → verificación final de consistencia. Ver detalles en references/s5-composite.md y scripts/build_ffmpeg_concat.py.

When To Use(触发)

  • El usuario proporciona una historia/novela/novela web/cómic/guion y quiere "convertirlo en un manhua-drama / video corto / storyboard / animación".
  • El usuario quiere "adaptar un guion, escribir prompts de storyboard, generar un guion de video, emparejar estilo artístico, emparejar música".
  • El usuario necesita la salida de cualquier estación individual (por ejemplo, solo los prompts del storyboard, o solo las imágenes de referencia de dominio público).
  • El usuario tiene un requisito estricto de que el material sea "libre de derechos de autor / utilizable comercialmente / sin riesgo de IP".

工作流(Workflow)

El flujo completo se refiere a la idea de orquestación de soluciones open source populares, pero el código es propio y los activos son autónomos:

  • ViMax (MIT, ~392 commits, pipeline de orquestación S1→S4) → Toma prestada su segmentación en fases "historia→storyboard→video" y los contratos de los productos.
  • seedance-prompt-skill / ai-shortfilm-prompts (MIT) → Toma prestada su organización de plantillas de prompts en formato SKILL como base para S3.
  • ArcReel (AGPL) → Solo se aprende la arquitectura, no se copia el código (AGPL es viral, no se permite fusionar en esta skill de estilo MIT). Ver detalles en references/architecture-licenses.md.

第 0 步 · 接收需求

Confirmar cuatro puntos: ① Historia fuente (novela web / cómic / guion original / publicación o ruta); ② Plataforma objetivo (por defecto, manhua-drama horizontal para Bilibili / YouTube, ver assets/s3/platform-presets.json para bilibili; para vertical en Douyin / WeChat Video usar douyin); ③ Estilo artístico (manhua chino / acuarela / realista / ukiyo-e / ilustración infantil…); ④ Sub-tipo y audiencia (por defecto, manhua-drama horizontal 16:9, con ritmo de éxitos actuales pero original; si es para niños, se fuerza adicionalmente el cortafuegos IP + se excluye contenido maduro).

第 1 站 · S1 改编剧本

  1. Cargar assets/s1/story-structure.md (plantilla de estructura de tres actos / ritmos) + assets/s1/adaptation-method.md (metodología de compresión: conservar esqueleto de valor, eliminar redundancia, curva emocional).
  2. Rellenar opcionalmente assets/s1/beat-sheet.md (tabla de ritmos).
  3. Consultar los ejemplos de adaptación assets/s1/example-romeo-juliet.md y example-journey-to-west.md.
  4. Generar script.json, campos según §S1 del contrato en references/workflow.md.

第 2 站 · S2 资产库(先建,后写分镜)

  1. Leer todos los beats / characters / scenes de S1, establecer activos de personajes: cargar assets/s2/character-design.md, para cada personaje principal generar character_manifest.json (visual_lock + fixed_prompt + vistas frontal/lateral/trasera + paquete de anclaje ref_pack + reglas de consistencia).
  2. Establecer activos de escena: cargar assets/s2/scene-multiview.md, para cada escena principal generar scene_manifest.json (geography + axis_of_action + views{establishing, ots_a, ots_b, reverse, insert}).
  3. Descargar/generar imágenes de referencia visual de dominio público / CC0 visual_manifest.json (múltiples estilos: manhua chino / acuarela / realista / ilustración infantil / arte de dominio público Met…), aplicar cortafuegos IP.
  4. Aplicar cortafuegos IP: assets/s2/negative-ip.json + assets/s2/negative-ip-firewall.md.
  5. Puerta de licencia: Solo se acepta Public Domain / CC0. Los activos de personajes/escenas son siempre originales, prohibido copiar personajes con el mismo nombre y configuración de exitosos (ver §6 del cortafuegos IP).

第 3 站 · S3 分镜提示词(基于资产库写)

  1. Cargar assets/s3/template-library.json (biblioteca de plantillas de storyboard: tipo de plano / encuadre / emoción) + assets/s3/camera-movements.json (biblioteca de movimientos de cámara: 40+ movimientos + mapeo beat→movimiento + sintaxis de plataforma) + assets/s3/platform-presets.json (sintaxis de prompts de cada plataforma, relación de aspecto, límite de duración) + assets/s3/tag-stats.json (estadísticas de frecuencia de etiquetas) + assets/s3/negative-quality.md (palabras negativas de calidad) + assets/s2/negative-ip.json (cortafuegos IP).

  2. Cada beat → al menos una toma; cada toma debe llevar character_ref y scene_ref (referenciando la base de activos de S2), y tomar la descripción del personaje fija del fixed_prompt de los activos; tomar 1 movimiento de cámara principal del camera-movements.json (subject_aware_map recomienda según el tipo de beat); debe llevar negative_prompt (cortafuegos IP + palabras negativas de calidad concatenadas).

  3. Generar storyboard.json: shots[{shot_id, beat_ref, character_ref[], scene_ref, ref_images[] (opcional·enlace directo a imágenes de anclaje, ver más abajo "Anclaje de imágenes de referencia"), camera_movement, shot_size, speed (opcional·modificador de velocidad slow_motion etc., ver speed_modifiers en camera-movements.json), prompt, prompt_readable, negative_prompt, platform, aspect_ratio, duration_s, attribution}]. Para tomas de cambio de poder usar camera_movement: low_angle/high_angle + speed: "slow_motion" (escritura ver assets/s2/scene-multiview.md §三 (补) 权力轴).

    Anclaje de imágenes de referencia (ref_images, clave para la consistencia entre tomas): ref_images es una lista de enlaces directos a imágenes de anclaje para cada toma, más estables que el texto fixed_prompt (alinear con @引用 de Jimeng / Runway Gen-4 de una sola imagen para fijar cara). Cada elemento es una cadena, con dos formatos acordados: ① Token de referencia de activo char:<char_id>:<clave_ref_pack o clave_three_view> / scene:<scene_id>:<view> (extraído automáticamente por el script de character_manifest.ref_pack, y el generador lo resuelve a una ruta de imagen real); ② Ruta de imagen directa / URL (por ejemplo, /assets/char_shen_zhao_face.png). Se recomienda 2–3 imágenes por personaje (primer plano frontal/lateral/cuerpo completo), límite 9 en Jimeng, 1 en Runway para fijar. build_storyboard.py extrae automáticamente el ref_pack del personaje como ref_images; también se puede alimentar directamente al modelo de imagen a video en S5 como referencia para fijar cara/vestuario.

  4. Los datos con licencia CC BY 4.0 deben llevar attribution (los activos de esta biblioteca son PD/CC0, sin firma por defecto; si se introducen datos externos CC BY, se debe rellenar attribution).

  5. Aceleración con andamio (opcional): Primero construir S1 script.json + S2 character_manifest.json / scene_manifest.json, ejecutar python scripts/build_storyboard.py --project <DIR> --platform bilibili para generar automáticamente un borrador de storyboard.json (rellena automáticamente character_ref/scene_ref por beat, selecciona 1 movimiento de cámara principal de subject_aware_map, selecciona encuadre según tipo de beat, concatena negative_prompt cubriendo todos los tokens IP), luego refinar manualmente el ángulo de cámara / emoción / diálogo / ritmo. Este script es la implementación automática del orden "activos primero", y su salida pasa directamente validate_pipeline.py.

第 4 站 · S4 音频

  1. Cargar assets/s4/audio-manifest.json (lista de audio CC0 ya descargada, con categorías de BGM / efectos de sonido / emoción: ambient / cinematic / playful / tense / romantic / lullaby etc.).
  2. Emparejar según la emoción de la toma: bajo de suspense → segmento de giro, piano suave → segmento cálido, whoosh → transición, lullaby → segmento de sueño, cartoon bounce → segmento animado.
  3. Generar audio_manifest.json: items[{file, license, source, duration_ms}], solo CC0.

第 5 站 · S5 合成(闭环到成片)

  1. Cargar references/s5-composite.md (SOP de composición S5: cierre en cinco pasos + matriz de herramientas + lista de verificación de consistencia final). 1.5 Resolver imágenes de anclaje: Ejecutar python scripts/resolve_ref_images.py --project <DIR>, expandir los tokens ref_images (char:<id>:<key> / scene:<id>:<view>) de cada toma a rutas de imagen reales, generar storyboard.resolved.json (mantener tokens no resueltos como están y advertir).
  2. Generar imágenes / imagen a video toma por toma: Usar ref_images de storyboard.resolved.json (imágenes reales resueltas) como referencia para fijar cara/vestuario, junto con fixed_prompt + camera_movement + lens/stages de camera-movements.json para alimentar a Jimeng @引用 / Runway Gen-4 / Kling / Seedance y generar cada clip.
  3. Alineación de audio: Seleccionar BGM de audio_manifest.json (CC0) según la emoción del beat, recortar efectos de sonido según duration_s.
  4. Edición y montaje: Ejecutar python scripts/build_ffmpeg_concat.py --project <DIR> --clips-dir <DIR>/clips para generar la lista de concatenación y el comando, exportar a 1080p según aspect_ratio (horizontal 16:9).
  5. Verificación final de consistencia: Revisar la lista de verificación §4 (personajes/escenas/eje de acción/eje de poder/duración/cortafuegos IP/audio/proporción) antes de publicar.

第 6 步 · 门禁校验(必做)

Ejecutar scripts/validate_pipeline.py --project <DIR> --platform bilibili [--strict] [--content-rating {normal,child}], verificar los contratos de las cuatro estaciones + cinco compuertas de calidad: el negative_prompt de cada toma de S3 debe cubrir todos los tokens IP bloqueados en assets/s2/negative-ip.json (necesidad estricta de proteger imágenes protegidas de terceros, falla si falta en modo strict); la duración debe estar dentro del conjunto legal de la plataforma correspondiente en platform-presets.json, la relación de aspecto debe coincidir (por defecto 16:9 para manhua-drama horizontal); la duración del audio de S4 0.3–180s (conservar efectos de sonido muy cortos reales). Con --strict, las advertencias también se consideran fallo. Solo después de pasar se puede proceder a la composición de video.

Clasificación de contenido (importante · por defecto sin restricción de tema): La puerta de control por defecto usa --content-rating normal — no hace ninguna restricción de clasificación de contenido, se pueden producir normalmente temas para adultos como peleas / violencia / suspenso / oscuro, solo se mantiene el cortafuegos IP y los contratos de activos. Solo para líneas de producción infantiles se añade --content-rating child (o el alias anterior --child): fuerza que S1 incluya ritmos de "cierre de valor", S3 cubra tokens negativos de seguridad infantil (violence/gore/horror/blood/mature/nudity/weapon…), escanea beats para contenido maduro (falla en strict). Es decir: --child es un "interruptor de seguridad infantil" puramente opcional; si no se pasa, el contenido del manhua-drama es completamente libre y no se infantiliza.

拉取脚本(零 IP 风险)

Dos scripts que solo usan biblioteca estándar + curl del sistema, no requieren pip install:

# S2 视觉资产:OBI 公共领域多画风插画(含童书/国漫风)+ Openverse CC0 图 + Met 公版美术
python scripts/fetch_visual_assets.py --out <DIR> --sources obi,openverse,met

# S4 音频:Openverse CC0(免 key);填 PIXABAY/FREESOUND key 可启用扩充通道
python scripts/fetch_audio.py --out <DIR>
  • Compuertas de calidad incorporadas: licencia (PD/CC0), calidad de imagen (lado largo ≥ 1000 y lado corto ≥ 600, archivo ≥ 50KB), deduplicación (SHA256 entre ejecuciones), fuente (solo fuentes institucionales), sensibilidad (Openverse mature=true siempre excluido, requisito estricto en todas las plataformas).
  • OBI usa motor curl (--retry 5 --retry-all-errors -k) para evitar el fallo SSL esporádico de urllib de Python en este entorno.

五道质量闸门(全站通用)

  1. Puerta de licencia: S2/S4 solo aceptan Public Domain / CC0; la introducción de CC BY 4.0 debe llevar attribution.
  2. Puerta de calidad de imagen: Imagen con lado largo ≥ 1000 y lado corto ≥ 600; audio con duración 0.3–180s, archivo ≥ 100KB.
  3. Puerta de deduplicación: SHA256 persistente entre ejecuciones, imágenes/audio duplicados se saltan automáticamente.
  4. Puerta de fuente: Solo fuentes institucionales / de dominio público (OBI, Openverse, Met, Freesound CC0…); se rechazan fuentes desconocidas.
  5. Puerta de sensibilidad: Todo el contenido excluye mature (refuerzo adicional para infantil); S2/S3 inyectan forzosamente palabras negativas del cortafuegos IP para bloquear imágenes protegidas conocidas; para IP de manhua-drama / novelas web populares, se puede tomar prestada su estructura de tema / emoción / punto de satisfacción (capa metodológica), pero está prohibido copiar completamente personaje por personaje, escena por escena, o escenas emblemáticas (plagio completo).

IP 防火墙(借鉴不照搬)

  • Palabras negativas constantes en assets/s2/negative-ip.json, cubren Peppa Pig, Disney, Marvel, Sanrio, Numberblocks, My Little Pony y otros imágenes protegidas por derechos de autor de terceros — estos son límites duros, no se pueden reproducir independientemente de si se toman prestadas o no (la puerta de control verificará forzosamente la cobertura de tokens).
  • Disciplina específica para manhua-drama (tomar prestado, no copiar): El "tipo de tema, estructura emocional, paradigma de punto de satisfacción, lenguaje de cámara, ritmo" de los manhua-drama / novelas web populares pertenecen a la capa metodológica, no son protegibles por derechos de autor, pueden usarse como nutriente creativo, se fomenta tomar prestado; pero está prohibido el plagio completo — es decir, no copiar personaje por personaje (mismo nombre y configuración), no copiar la composición de escenas emblemáticas escena por escena, no reproducir directamente el estilo artístico característico / combinación de colores icónicos, no transportar diálogos originales. Incluso si el usuario nombra un éxito popular, solo se extrae su "esqueleto metodológico reutilizable" no su "expresión", se convierte en una descripción original ("protagonista masculino de pelo negro con fuerte destino + protagonista femenina de rojo enfrentándose"), luego se envía al modelo de imagen / video, y se superpone una doble capa de negative prompt para proteger las imágenes protegidas de terceros reales.
  • Esta skill no incrusta ningún texto protegido por derechos de autor, solo estadísticas de paradigmas de estructura / escritura; todos los ejemplos son de dominio público o material propio del usuario.

Resources

  • assets/s1/: Plantillas de estructura de historia, metodología de compresión de adaptación, tabla de ritmos rellenable, formato de guion, dos ejemplos de adaptación.
  • assets/s2/: Banco de palabras negativas negative-ip.json + explicación del cortafuegos IP negative-ip-firewall.md + metodología de activos de personaje character-design.md + metodología de activos de escena scene-multiview.md.
  • assets/s3/: Biblioteca de plantillas de storyboard template-library.json, biblioteca de movimientos de cámara camera-movements.json, preconfiguraciones de plataforma platform-presets.json, estadísticas de etiquetas tag-stats.json, palabras negativas de calidad negative-quality.md.
  • assets/s4/: Lista de audio CC0 ya descargada audio-manifest.json.
  • scripts/: fetch_visual_assets.py (descarga de imágenes S2), fetch_audio.py (descarga de audio S4), build_storyboard.py (generación automática de andamio de storyboard S1+S2 → S3, soporta extracción automática de anclaje ref_images / selección automática de power_dynamic / presupuesto de toma --target-duration / cierre de sugerencias de auto-crecimiento --no-growth), resolve_ref_images.py (S5 resuelve tokens ref_images a rutas de imagen reales, genera storyboard.resolved.json), build_ffmpeg_concat.py (S5 genera lista de concatenación FFmpeg + comando desde storyboard.json), validate_pipeline.py (puerta de control entre estaciones, por defecto --content-rating normal sin restricción de contenido; --content-rating child / --child activa puerta estricta infantil), collect.py (extremo de recolección de auto-crecimiento: retroalimenta el producto de una ejecución + puntuación humana + registros de fallos al servidor de memoria), load_learnings.py (extremo de retroalimentación de auto-crecimiento: obtiene learnings.json del servidor de memoria y lo guarda en caché local, para que build_storyboard.py lea sugerencias de patrones de fallo de alta frecuencia).
  • memory_server/: server.py (servicio de memoria sin dependencias, 4 tablas SQLite + autenticación Bearer + limitación de velocidad), growth.py (agregación → snapshot/learnings.json + retroalimentación a priors), .env.example, README.md (implementación Caddy HTTPS / systemd / cron).
  • references/: architecture-licenses.md (préstamo de soluciones open source y límites de licencia), workflow.md (contratos detallados de las cuatro estaciones y uso), case-studies.md (préstamo de lenguaje de cámara / storyboard de manhua-drama / videos cortos populares, literatura metodológica, no copia de IP), benchmark.md (comparación de evaluación: NVP vs ViMax/seedance/ai-shortfilm/ArcReel etc. matriz de puntuación + autoevaluación empírica), s5-composite.md (SOP de composición S5: cierre en cinco pasos + matriz de herramientas + lista de verificación de consistencia final).

注意事项

  • Las bibliotecas de imágenes/audio grandes no se incrustan en la skill (se mantiene portabilidad); se descargan con scripts en tiempo de ejecución, o se apunta a tu propio directorio de material CC0 (por ejemplo, ./assets/characters, S4-音频库/samples/ etc., lotes locales limpios).
  • Esta skill es una metodología de orquestación + activos autónomos, no depende de código externo como ViMax/ArcReel para funcionar.
  • Después de obtener la clave BHL / token NYPL, se puede añadir manualmente en fetch_visual_assets.py los canales fetch_bhl() / fetch_nypl() (OBI ya verificado sin clave).

自我生长(可选 · 数据闭环)

Permite que la skill crezca por sí misma con el uso: después de cada ejecución de la línea de producción, retroalimenta indicadores objetivos / puntuación humana / registros de fallos a la biblioteca de memoria, que después de la agregación retroalimenta "sugerencias de patrones de fallo de alta frecuencia / puntuación / señales de estilo" en la skill, para evitarlos por adelantado la próxima generación. Biblioteca estándar pura, sin dependencias, desplegable de forma independiente en un servidor pequeño, desacoplado del cuerpo de la skill. Implementación completa en memory_server/README.md.

¿Usar en una sola máquina? No es necesario desplegar. Sin configurar NVP_MEMORY_URL, collect.py / load_learnings.py se conectarán automáticamente al SQLite dentro de la skill (memory_server/data/nvp_memory.db) y se agregarán automáticamente después de la recolección, con configuración cero para un ciclo completo. Solo es necesario iniciar server.py para "resumen de múltiples máquinas / colaboración múltiple / retroalimentación remota" (ver más abajo "Inicio del servicio" y README §2).

Ciclo cerrado en tres pasos:

  1. Recolección (después de ejecutar la línea de producción): python scripts/collect.py --project <DIR> --platform bilibili lee automáticamente indicadores como beats / shots / tasa de resolución / duración de script.json / storyboard.json / storyboard.resolved.json, y escribe en la biblioteca de memoria (por defecto SQLite local; si se configura NVP_MEMORY_URL, hace POST al servicio). Se puede añadir puntuación humana --feedback 5 overall "Ritmo muy bueno", o registros de fallos --failures fails.json. La máquina sin conexión usa --mirror ./mirror.json --dry-run para generar un espejo, y luego collect.py --sync ./mirror.json lo sincroniza con el servidor. Se puede añadir --local para forzar local, --remote para forzar servicio.
  2. Agregación (automática local / servidor programado): En modo local, la agregación es automática después de la recolección; en modo HTTP, usar cron para ejecutar cada hora python memory_server/growth.py, que agrega las 4 tablas SQLite en snapshot/learnings.json, y hace upsert de conocimiento estable en la tabla priors.
  3. Retroalimentación (antes de la próxima generación): python scripts/load_learnings.py lee learnings.json y lo guarda en caché local en .cache/learnings.json (por defecto lee el snapshot local; si se configura URL, lo obtiene remotamente; --local fuerza local, --no-fetch solo lee caché); build_storyboard.py lo lee automáticamente e imprime "sugerencias de auto-crecimiento" durante la generación (patrones de fallo de alta frecuencia → evitación temprana, por ejemplo, imágenes de referencia no resueltas, falta de toma de eje de poder), también se puede usar --no-growth para desactivar.

Inicio del servicio: python memory_server/server.py --no-auth (prueba local) o python memory_server/server.py (público, necesita variable de entorno NVP_API_TOKEN / --token; Caddy como proxy inverso para TLS). Endpoints: GET /health, POST /ingest, GET /query, GET /snapshot, GET /export.

Skills relacionados