Communitygithub.com

woanderingboy/novel-video-pipeline

Pipeline de geração de mangá-drama (16:9) a partir de novelas. 5 estações: script -> assets -> storyboard -> áudio -> composição. Asset-first, firewall de IP, portão de segurança infantil. Consome a saída do novel-writing-pipeline.

O que é novel-video-pipeline?

Este skill de agente de IA implementa um pipeline completo para transformar histórias textuais (como web novels, mangás, roteiros originais, contos de fadas) em vídeos no formato mangá-drama (16:9) prontos para serem alimentados em modelos de vídeo-para-texto. Ele é composto por cinco estações sequenciais: Adaptação de Roteiro (S1), Criação de Biblioteca de Ativos (S2), Geração de Storyboard (S3), Áudio (S4) e Composição Final (S5). A chave é a abordagem 'asset-first': o pipeline primeiro constrói uma biblioteca de personagens (com visual_lock, três vistas, imagens de referência) e cenários (com eixos de ação, visões OTS, reverse) a partir do roteiro, e só então gera os prompts de storyboard referenciando esses ativos, garantindo consistência visual entre as cenas. O pipeline inclui um rigoroso firewall de propriedade intelectual (IP firewall) que impede a reprodução de personagens protegidos por direitos autorais, e um portão de segurança infantil opcional. Ele suporta plataformas como Bilibili, YouTube e Douyin, e é totalmente autossuficiente com scripts de busca de assets (imagens e áudio CC0) e validação integrada. O skill é ideal para criadores que desejam produzir conteúdo no estilo mangá-drama sem riscos de violação de direitos autorais, mantendo qualidade e consistência.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add woanderingboy/novel-video-pipeline

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Mangá-Drama (Novelas / Web Novels / Mangá) · Pipeline de 5 Estações (novel-video-pipeline)

Visão Geral

Transforma uma história textual (web novels, mangás, roteiros originais, contos de fadas) em pacotes de prompts de storyboard + imagens de referência visual + dublagem e trilha CC0 prontos para alimentar modelos de vídeo-para-texto, mantendo o limite de "não copiar imagens protegidas por direitos autorais de terceiros". Por padrão, direcionado para a linha de produção de mangá-drama (16:9 widescreen / séries em vários episódios), mas pode ser alternado para subtipos como mangá-drama infantil, vídeos curtos, etc. O tom da linha de produção é definido pelo ritmo dos mangás-drama populares atuais ("ganchos fortes + puxada emocional + reviravolta + pontos de satisfação + suspense entre episódios"), mas apenas empresta seu esqueleto metodológico; os personagens, enredo e estilos artísticos são sempre originais.

O pipeline consiste em quatro estações de trabalho sequenciais, cada uma produzindo um JSON / diretório de recursos acordado, e a próxima estação consome a saída da anterior. Ordem de produção principal: primeiro construir a biblioteca de ativos (S2), depois escrever os prompts de storyboard (S3) — o storyboard apenas arranja os ativos de acordo com a linguagem cinematográfica, garantindo consistência de personagens e continuidade espacial das cenas.

S1 Roteiro Adaptado  ──script.json──▶  S2 Biblioteca de Ativos  ──character_manifest + scene_manifest (+ visual_manifest)──▶  S3 Prompt de Storyboard  ──storyboard.json (referencia ativos+ref_images ancora)──▶  S4 Áudio  ──audio_manifest──▶  S5 Composição  ──Vídeo Final
  • S1 Roteiro Adaptado: Comprime histórias longas/originais em um "esqueleto de valor narrativo ou pedagógico + tabela de batidas", gerando script.json (título / logline / personagens / cenas / batidas).
  • S2 Biblioteca de Ativos (Primeira Construção): Lê o roteiro global, estabelece ativos de personagens com três vistas (character_manifest.json: visual_lock + vistas frontal/lateral/traseira + pacote de âncoras + fixed_prompt) e ativos de cena com múltiplas vistas (frente/verso) (scene_manifest.json: axis_of_action + establishing/OTS A→B/reverse/insert), e busca correspondentes imagens de referência visuais de domínio público / CC0 (visual_manifest.json). Aplica palavras negativas do firewall de IP. A saída desta etapa é a "biblioteca de ativos", que será referenciada diretamente pelo S3.
  • S3 Prompt de Storyboard (Baseado na Biblioteca de Ativos): Expande cada batida em tomadas (shots), cada tomada referencia character_ref (personagem + vista) e scene_ref (cena + vista), bloqueia a descrição da biblioteca de ativos + banco de movimentos de câmera (camera-movements.json) + predefinições da plataforma para compor o prompt, injeta negative_prompt, gerando storyboard.json.
  • S4 Áudio: Combina BGM / efeitos sonoros CC0 para as tomadas, gerando audio_manifest.json.
  • S5 Composição (Fechamento para Vídeo Final): Fecha o ciclo combinando storyboard.json do S3 (com ref_images imagens âncora) + audio_manifest.json do S4 — gera imagem/imagem-para-vídeo tomada por tomada (usando ref_images para travar o rosto) → alinhamento de áudio → edição e corte (de acordo com duration_s e aspect_ratio) → exportação para plataforma → verificação final de consistência. Veja detalhes em references/s5-composite.md e scripts/build_ffmpeg_concat.py.

Quando Usar (Gatilho)

  • O usuário fornece uma história / novela / web novel / mangá / roteiro e deseja "transformá-lo em mangá-drama / vídeo curto / storyboard / animação".
  • O usuário deseja "adaptar roteiro, escrever prompts de storyboard, gerar script de vídeo, combinar estilo artístico, combinar música".
  • O usuário precisa da saída de qualquer estação individual (ex.: apenas prompts de storyboard, ou apenas imagens de referência de domínio público).
  • O usuário tem requisitos rígidos de "direitos autorais limpos / uso comercial / risco zero de IP".

Fluxo de Trabalho (Workflow)

O fluxo completo se refere às ideias de orquestração de projetos open source populares, mas o código é próprio e os ativos são autocontidos:

  • ViMax (MIT, ~392 commits de pipeline de orquestração S1→S4) → Empresta sua divisão de estágios "história→storyboard→vídeo" e contratos de produto.
  • seedance-prompt-skill / ai-shortfilm-prompts (MIT) → Empresta a organização de modelos de prompt no formato SKILL, como base para S3.
  • ArcReel (AGPL) → Apenas estuda a arquitetura, não copia código (AGPL é contagiosa, proibida de incorporar neste skill de estilo MIT). Veja detalhes em references/architecture-licenses.md.

Etapa 0 · Recebimento da Demanda

Confirmar quatro pontos: ① Fonte da história (web novel / mangá / roteiro original / postagem ou caminho); ② Plataforma alvo (mangá-drama widescreen padrão para Bilibili / YouTube, veja assets/s3/platform-presets.json para bilibili; vertical para Douyin / WeChat Video, usar douyin); ③ Estilo artístico (manhua chinês / aquarela / realista / ukiyo-e / ilustração de livro infantil…); ④ Subtipo e público-alvo (padrão mangá-drama widescreen 16:9, com ritmo de sucessos populares mas original; se infantil, aplicar firewall de IP adicional + excluir conteúdo adulto).

Estação 1 · S1 Adaptação de Roteiro

  1. Carregar assets/s1/story-structure.md (template de estrutura de três atos / batidas) + assets/s1/adaptation-method.md (metodologia de compressão: preservar esqueleto de valor, remover redundância, curva emocional).
  2. Preencher assets/s1/beat-sheet.md conforme necessário (tabela de batidas preenchível).
  3. Consultar os exemplos de adaptação assets/s1/example-romeo-juliet.md e example-journey-to-west.md.
  4. Gerar script.json, campos conforme §Contrato S1 em references/workflow.md.

Estação 2 · S2 Biblioteca de Ativos (Primeiro Construir, Depois Escrever Storyboard)

  1. Ler todas as batidas / personagens / cenas do S1, criar ativos de personagens: carregar assets/s2/character-design.md, para cada personagem principal gerar character_manifest.json (visual_lock + fixed_prompt + três vistas frontal/lateral/traseira + pacote de âncoras ref_pack + regras de consistência).
  2. Criar ativos de cena: carregar assets/s2/scene-multiview.md, para cada cena principal gerar scene_manifest.json (geography + axis_of_action + views{establishing, ots_a, ots_b, reverse, insert}).
  3. Buscar/gerar imagens de referência visuais de domínio público / CC0 (visual_manifest.json) (múltiplos estilos: manhua chinês / aquarela / realista / ilustração de livro infantil / arte de domínio público do Met…), aplicar firewall de IP.
  4. Aplicar firewall de IP: assets/s2/negative-ip.json + assets/s2/negative-ip-firewall.md.
  5. Portão de Licença: Aceitar apenas Public Domain / CC0. Ativos de personagens/cena sempre originais, proibido copiar nomes e designs de sucessos populares (veja §6 do firewall de IP).

Estação 3 · S3 Prompt de Storyboard (Baseado na Biblioteca de Ativos)

  1. Carregar assets/s3/template-library.json (biblioteca de templates de storyboard: tipos de tomada / enquadramento / emoção) + assets/s3/camera-movements.json (banco de movimentos de câmera: 40+ movimentos + mapeamento batida→movimento + sintaxe de plataforma) + assets/s3/platform-presets.json (sintaxe de prompt, proporção de tela, limite de duração de cada plataforma) + assets/s3/tag-stats.json (estatísticas de frequência de tags) + assets/s3/negative-quality.md (palavras negativas de qualidade) + assets/s2/negative-ip.json (firewall de IP).

  2. Cada batida → pelo menos uma tomada; cada tomada deve conter character_ref e scene_ref (referenciando a biblioteca de ativos S2), e extrair a descrição fixa do personagem do fixed_prompt do ativo; extrair 1 movimento de câmera principal do camera-movements.json (subject_aware_map recomenda de acordo com o tipo de batida); deve conter negative_prompt (firewall de IP + palavras negativas de qualidade concatenadas).

  3. Gerar storyboard.json: shots[{shot_id, beat_ref, character_ref[], scene_ref, ref_images[] (opcional·âncoras diretas, veja abaixo "Ancoragem de Imagens de Referência"), camera_movement, shot_size, speed (opcional·modificador de velocidade slow_motion etc., veja speed_modifiers no camera-movements.json), prompt, prompt_readable, negative_prompt, platform, aspect_ratio, duration_s, attribution}]. Tomadas de mudança de poder usar camera_movement: low_angle/high_angle + speed: "slow_motion" (escrita conforme assets/s2/scene-multiview.md §3 (suplemento) Eixo de Poder).

    Ancoragem de Imagens de Referência (ref_images, chave para consistência entre tomadas): ref_images é uma lista de âncoras diretas de imagens para cada tomada, mais estável do que o fixed_prompt textual (alinhamento com @citação do Jimeng / trava-de-rosto com imagem única do Runway Gen-4). Cada item é uma string, com duas formas convencionadas: ① Token de referência de ativo char:<char_id>:<ref_pack_key_ou_three_view_key> / scene:<scene_id>:<view> (extraído automaticamente pelo script de character_manifest.ref_pack, e o gerador resolve para o caminho real da imagem); ② Caminho direto da imagem / URL (ex.: /assets/char_shen_zhao_face.png). Recomenda-se 2–3 imagens por personagem (close-up frontal / perfil / corpo inteiro), máximo 9 imagens para Jimeng, Runway trava com uma única. build_storyboard.py extrai automaticamente o ref_pack do personagem como ref_images; também pode ser alimentado diretamente no modelo de imagem-para-vídeo durante a composição S5 como referência para travar rosto/roupa.

  4. Dados CC BY 4.0 devem conter attribution (os ativos desta biblioteca são PD/CC0, isentos de atribuição por padrão; se dados CC BY externos forem introduzidos, a atribuição deve ser preenchida).

  5. Aceleração com Scaffold (opcional): Primeiro construir script.json do S1 + character_manifest.json / scene_manifest.json do S2, executar python scripts/build_storyboard.py --project <DIR> --platform bilibili para gerar automaticamente o rascunho de storyboard.json (preenche automaticamente character_ref/scene_ref por batida, seleciona 1 movimento de câmera principal do subject_aware_map, seleciona enquadramento por tipo de batida, concatena negative_prompt com cobertura total de tokens de IP), e então ajustar manualmente ângulo de câmera / emoção / diálogo / ritmo. Este script é a implementação automática da ordem "asset-first", e sua saída pode ser validada diretamente pelo validate_pipeline.py.

Estação 4 · S4 Áudio

  1. Carregar assets/s4/audio-manifest.json (lista de áudio CC0 já buscada, contendo BGM / efeitos sonoros / categorias de emoção: ambient / cinematic / playful / tense / romantic / lullaby etc.).
  2. Combinar por emoção da tomada: baixo suspense→seção de reviravolta, piano suave→seção de ternura, whoosh→transição, lullaby→seção de sono, cartoon bounce→seção animada.
  3. Gerar audio_manifest.json: items[{file, license, source, duration_ms}], apenas CC0.

Estação 5 · S5 Composição (Fechamento para Vídeo Final)

  1. Carregar references/s5-composite.md (SOP de composição S5: ciclo de cinco etapas + matriz de ferramentas + lista de verificação final de consistência). 1.5 Resolver imagens âncora: Executar python scripts/resolve_ref_images.py --project <DIR> para expandir os tokens ref_images de cada tomada (char:<id>:<key> / scene:<id>:<view>) para caminhos reais de imagem, gerando storyboard.resolved.json (tokens não resolvidos mantidos como string original com alerta).
  2. Gerar imagem / imagem-para-vídeo tomada por tomada: Usar ref_images do storyboard.resolved.json (imagens reais resolvidas) como referência para travar rosto/roupa, combinado com fixed_prompt + camera_movement + lens/stages do camera-movements.json, alimentar Jimeng @referência / Runway Gen-4 / Kling / Seedance para gerar cada clipe.
  3. Alinhamento de áudio: Selecionar BGM do audio_manifest.json (CC0) de acordo com a emoção da batida, cortar efeitos sonoros de acordo com duration_s.
  4. Edição e corte: Executar python scripts/build_ffmpeg_concat.py --project <DIR> --clips-dir <DIR>/clips para gerar lista de concatenação e comando, exportar 1080p de acordo com aspect_ratio (widescreen 16:9).
  5. Verificação final de consistência: Verificar lista §4 (personagem/cena/eixo/eixo de poder/duração/firewall de IP/áudio/proporção) antes de publicar.

Etapa 6 · Verificação de Portão (Obrigatório)

Executar scripts/validate_pipeline.py --project <DIR> --platform bilibili [--strict] [--content-rating {normal,child}], validar contratos das quatro estações + cinco portões de qualidade: o negative_prompt de cada tomada S3 deve cobrir todos os tokens de IP bloqueados em assets/s2/negative-ip.json (atender ao requisito rígido de não reproduzir imagens protegidas de terceiros; falta em modo strict é falha); a duração deve estar no conjunto legal da plataforma em platform-presets.json; a proporção deve corresponder (mangá-drama widescreen padrão 16:9); duração do áudio S4 deve estar entre 0,3 e 180s (preservar efeitos sonoros muito curtos reais). Em --strict, avisos também são considerados falhas. Só prosseguir para composição de vídeo após aprovação.

Classificação de Conteúdo (Importante · Padrão Sem Restrição de Tema): O portão padrão é --content-rating normal — nenhuma restrição de classificação de conteúdo, temas adultos como luta/violência/suspense/sombrio podem ser produzidos normalmente, apenas o firewall de IP e os contratos de ativos são mantidos. Apenas a linha de produção infantil adiciona --content-rating child (ou o alias antigo --child): força S1 a conter batidas do tipo "fechamento de valor", S3 cobre tokens negativos de segurança infantil (violence/gore/horror/blood/mature/nudity/weapon…), escaneia batidas em busca de conteúdo adulto (falha em strict). Ou seja: --child é um "interruptor de segurança infantil" puramente opcional; não passá-lo significa que o conteúdo do mangá-drama é completamente livre e não será infantilizado.

Scripts de Busca (Risco Zero de IP)

Dois scripts usam apenas biblioteca padrão + curl do sistema, sem necessidade de pip install:

# Ativos visuais S2: Ilustrações multistilo de domínio público OBI (inclui estilo livro infantil/manhua chinês) + imagens CC0 do Openverse + arte de domínio público do Met
python scripts/fetch_visual_assets.py --out <DIR> --sources obi,openverse,met

# Áudio S4: Openverse CC0 (sem chave); preencha chave PIXABAY/FREESOUND para ativar canais de expansão
python scripts/fetch_audio.py --out <DIR>
  • Portões de qualidade embutidos: licença (PD/CC0), qualidade de imagem (lado maior ≥1000 e lado menor ≥600, arquivo ≥50KB), deduplicação (SHA256 entre execuções), portão de fonte (apenas fontes institucionais), portão de sensibilidade (Openverse mature=true sempre excluído, requisito rígido para todas as plataformas).
  • A transferência OBI usa motor curl (--retry 5 --retry-all-errors -k) para contornar falhas esporádicas de SSL do urllib do Python neste ambiente.

Cinco Portões de Qualidade (Comuns a Todas as Estações)

  1. Portão de Licença: S2/S4 aceitam apenas Public Domain / CC0; introdução de CC BY 4.0 deve incluir attribution.
  2. Portão de Qualidade de Imagem: Imagem com lado maior ≥1000 e lado menor ≥600; áudio com duração 0,3–180s, arquivo ≥100KB.
  3. Portão de Deduplicação: SHA256 persistido entre execuções, imagens/áudio duplicados automaticamente ignorados.
  4. Portão de Fonte: Apenas fontes de nível institucional / domínio público (OBI, Openverse, Met, Freesound CC0…); rejeitar fontes desconhecidas.
  5. Portão de Sensibilidade: Todo conteúdo exclui mature (infantil adicionalmente reforçado); S2/S3 injetam forçadamente palavras negativas do firewall de IP, bloqueando imagens protegidas conhecidas; para IPs populares de mangá-drama / web novel pode-se referenciar sua estrutura de tema / emoção / ponto de satisfação (camada de método), mas é proibido copiar completamente personagem por personagem, cena por cena, cena icônica (cópia total).

Firewall de IP (Referenciar, Não Copiar)

  • Palavras negativas constantes em assets/s2/negative-ip.json, cobrindo Peppa Pig, Disney, Marvel, Sanrio, Numberblocks, My Little Pony, etc. imagens protegidas por direitos autorais registrados de terceiros — estas são fronteiras rígidas, independentemente de referência ou não, não podem ser reproduzidas (o portão valida forçadamente a cobertura dos tokens).
  • Disciplina Específica para Mangá-Drama (Referenciar, Não Copiar): O "tipo de tema, estrutura emocional, paradigma de ponto de satisfação, linguagem de câmera, ritmo" de IPs populares de mangá-drama / web novel pertencem à camada de método, não passível de direitos autorais, pode ser usado como nutriente criativo, incentiva-se referenciar; mas é proibida a cópia completa — ou seja, não copiar personagem por personagem (mesmo nome e design), não replicar cena icônica por cena, não reproduzir diretamente estilo artístico marcante / combinação de cores icônica, não transportar diálogos originais. Mesmo que o usuário mencione um sucesso específico, apenas extrair seu "esqueleto de método reutilizável" em vez de "expressão", converter para descrição original ("protagonista masculino de preto com forte destino + protagonista feminina de vermelho confrontando"), então enviar para modelo de imagem/vídeo e sobrepor negative prompt como dupla segurança para bloquear imagens protegidas de terceiros.
  • Este skill não incorpora nenhum texto protegido por direitos autorais, apenas estatísticas de estrutura / padrões de escrita; todos os exemplos são de domínio público ou material próprio do usuário.

Recursos

  • assets/s1/: Template de estrutura de história, metodologia de compressão de adaptação, tabela de batidas preenchível, formato de roteiro, dois exemplos de adaptação.
  • assets/s2/: Banco de palavras negativas negative-ip.json + explicação do firewall de IP negative-ip-firewall.md + metodologia de ativos de personagem character-design.md + metodologia de ativos de cena scene-multiview.md.
  • assets/s3/: Biblioteca de templates de storyboard template-library.json, banco de movimentos de câmera camera-movements.json, predefinições de plataforma platform-presets.json, estatísticas de tags tag-stats.json, palavras negativas de qualidade negative-quality.md.
  • assets/s4/: Lista de áudio CC0 buscada audio-manifest.json.
  • scripts/: fetch_visual_assets.py (buscar imagens S2), fetch_audio.py (buscar áudio S4), build_storyboard.py (geração automática de scaffold de storyboard S1+S2 → S3, suporta extração automática de âncoras ref_images / seleção automática de ângulo power_dynamic / orçamento de tomada --target-duration / desligar sugestão de autodesenvolvimento --no-growth), resolve_ref_images.py (S5 resolver tokens ref_images para caminhos reais de imagem, gerar storyboard.resolved.json), build_ffmpeg_concat.py (S5 gerar lista de concatenação FFmpeg + comando a partir de storyboard.json), validate_pipeline.py (portão entre estações, padrão --content-rating normal sem restrição de conteúdo; --content-rating child / --child aciona portão rígido infantil), collect.py (coleta de autodesenvolvimento: realimentar saída da execução + avaliação humana + logs de falha para servidor de memória), load_learnings.py (carga de autodesenvolvimento: buscar learnings.json do servidor de memória e cachear localmente, para build_storyboard.py ler sugestões de padrões de falha frequentes).
  • memory_server/: server.py (serviço de memória sem dependências, 4 tabelas SQLite + autenticação Bearer + limitação de taxa), growth.py (agregação → snapshot/learnings.json + recarga de priors), .env.example, README.md (implantação Caddy HTTPS / systemd / cron).
  • references/: architecture-licenses.md (referência a projetos open source e limites de licença), workflow.md (contratos detalhados das quatro estações e uso), case-studies.md (referência a movimentos de câmera / sintaxe de storyboard de mangá-drama/curtas virais, literatura metodológica, sem copiar IP), benchmark.md (avaliação comparativa: NVP vs ViMax/seedance/ai-shortfilm/ArcReel, matriz de pontuação + teste empírico), s5-composite.md (SOP de composição S5: ciclo de cinco etapas + matriz de ferramentas + lista de verificação final de consistência).

Observações

  • As grandes bibliotecas de imagens/áudio não estão incorporadas no skill (mantém portabilidade); use os scripts para buscar em tempo de execução, ou aponte para seu próprio diretório de materiais CC0 (como ./assets/characters, S4-Áudio/samples/).
  • Este skill é uma metodologia de orquestração + ativos autocontidos, não depende de código externo como ViMax/ArcReel para executar.
  • Após obter chave BHL / token NYPL, pode-se adicionar canais fetch_bhl() / fetch_nypl() manualmente em fetch_visual_assets.py (OBI já verificado sem necessidade de chave).

Autodesenvolvimento (Opcional · Ciclo Fechado de Dados)

Permite que o skill cresça sozinho com o uso: após cada execução da linha de produção, os indicadores objetivos / avaliações humanas / logs de falha são realimentados no banco de memória, e após agregação, as "sugestões de padrões de falha frequentes / pontuação / sinais de estilo" são realimentados para o skill, permitindo evitar problemas na próxima geração. Puramente biblioteca padrão, zero dependências, pode ser implantado independentemente em um servidor pequeno, desacoplado do corpo do skill. Implantação completa em memory_server/README.md.

Usando em uma única máquina? Não precisa implantar. Se NVP_MEMORY_URL não estiver definido, collect.py / load_learnings.py conectam-se automaticamente ao SQLite dentro do skill (memory_server/data/nvp_memory.db) e realizam agregação automática após coleta, configuração zero para ciclo completo. Apenas para "resumo multi-máquina / colaboração multi-pessoa / realimentação remota" é necessário iniciar server.py (veja abaixo "Iniciar Serviço" e README §2).

Ciclo de três etapas:

  1. Coleta (após executar linha de produção): python scripts/collect.py --project <DIR> --platform bilibili lê automaticamente batidas / tomadas / taxa de resolução / duração de script.json / storyboard.json / storyboard.resolved.json, escreve no banco de memória (padrão SQLite local; se NVP_MEMORY_URL estiver definido, faz POST para o serviço). Pode adicionar avaliação humana --feedback 5 overall "ritmo muito bom", ou logs de falha --failures fails.json. Para máquina offline, usar --mirror ./mirror.json --dry-run para gerar espelho, depois collect.py --sync ./mirror.json para sincronizar com o servidor. Adicionar --local para forçar local, --remote para forçar serviço.
  2. Agregação (automática local / programada no servidor): No modo local, a agregação é feita automaticamente após a coleta; no modo HTTP, usar cron para executar python memory_server/growth.py a cada hora, agregando as quatro tabelas SQLite em snapshot/learnings.json, e fazendo upsert do conhecimento estável na tabela priors.
  3. Realimentação (antes da próxima geração): python scripts/load_learnings.py lê learnings.json e cacheia em .cache/learnings.json (padrão lê snapshot local; se URL estiver definida, busca remota; --local força local, --no-fetch apenas lê cache); build_storyboard.py lê automaticamente e imprime "sugestões de autodesenvolvimento" durante a geração (padrões de falha frequentes → evitar com antecedência, como imagens de referência não resolvidas, falta de tomada de eixo de poder), pode desligar com --no-growth.

Iniciar Serviço: python memory_server/server.py --no-auth (teste local) ou python memory_server/server.py (público, precisa de variável de ambiente NVP_API_TOKEN / --token; usar Caddy como proxy reverso para TLS). Endpoints: GET /health, POST /ingest, GET /query, GET /snapshot, GET /export.

Habilidades Relacionadas