O que 100x-persona faz?
Descrição em uma frase
Recebe um texto puro de script/roteiro e gera "quem fala" (persona) + "onde se passa" (cena, entidade independente, não um campo da persona) + como ambos se vinculam à sentença original do script, com todos os elementos referenciando o texto palavra por palavra. Pertence à camada de geração criativa L2 do sistema 100x, correspondendo ao passo "3.1 Persona × Cena".
Quando acionar
O usuário diz:
- "Atribua uma persona a este script" / "Quem seria adequado para entregar este script" / "Como definir essa persona"
- "Como definir essa cena" / "Que cena combina com este anúncio" / "Onde este script deve ser filmado"
- "who should deliver this script" / "what persona fits this product"
- "what setting fits this ad" / "where should this be filmed"
- Ou fornece diretamente um texto de script e pede "atribuir persona e cena" / "assign a character and setting"
Entrada
Entrada mínima (categoria A, obrigatória): source_script – texto puro do script/roteiro completo. Este skill não aceita arquivos de vídeo, apenas texto.
Saída opcional upstream (categoria C, ignorada silenciosamente se ausente, sem bloquear ou exigir execução de outros skills):
segments[] gerado por 100x-segment (se existir, pairings[].segment_ref pode ser preenchido; se ausente, o campo inteiro é omitido e a localização é feita exclusivamente por script_span_quote).
Saída
A estrutura segue schema.json: PersonaSceneBundle = source_script (eco do texto original para verificação de evidências) + personas (mapa de personas, entidades independentes) + scenes (mapa de cenas, entidades independentes, no mesmo nível que personas, não campos de string da persona) + pairings (tabela de vinculação entre persona, cena e sentença original do script) + meta. Opcionalmente, renderiza um resumo Markdown legível (lista de personas, lista de cenas, tabela de pares).
Restrições principais (4 axiomas, detalhados em axioms.md)
- Cenas são entidades independentes, referenciadas por ID, não campos embutidos na persona –
personas/scenessão dois mapas no mesmo nível, epersona_ref/scene_refempairings[]devem existir nos respectivos mapas (integridade referencial). - As evidências de autoridade e dor do público devem ser substrings literais do texto original, sem invenção –
authority_evidence_quote/audience_pain_quote/script_span_quotedevem ser encontráveis palavra por palavra emsource_script. Limitação conhecida (não um defeito oculto): uma substring literal apenas prova que "esta frase existe no texto original", não prova que "a direção semântica desta frase no campo da persona não está sendo usada de forma contrária" – por exemplo, extrair uma frase de auto-dúvida ("se você não acredita em mim") e usá-la ao contrário como âncora de autoridade ainda é uma substring válida. O mecanismo atual inclui uma detecção de frases de auto-dúvida de conjunto fechado (que exige divulgação se acionada, ver axioma 2 emaxioms.md), mas inversões do tipo ironia/citação-refutação ainda não são detectadas, este é o limite da correspondência de strings, conforme o axioma 2 emaxioms.md("Limite do mecanismo e medidas de mitigação"). - Cenas devem ser específicas com coordenadas micro, não locais genéricos – lista de palavras genéricas de conjunto fechado é rejeitada + pelo menos 2 objetos de cena concretos.
- Personas e cenas não podem ser órfãs; uma vez criadas, devem ser referenciadas por pelo menos um pairing – não é permitido acumular para "parecer uma matriz completa".
Processo em três fases
Detalhado em workflow.md: Fase 1 – Inferência de persona (escaneia o script por sinais de Autoridade/Dor, extrai frases de evidência palavra por palavra) → Fase 2 – Modelagem de cena (cria entidades independentes para cada pista de cena + vincula com persona e sentença original do script + verifica zero órfãos) → Fase 3 – Saída (monta JSON, passa pelos axiomas 1-4).
Garantia de chamada independente
Se a categoria A (source_script) estiver ausente → responde com recusa fixa pedindo o texto, sem adivinhar, sem aceitar arquivo de vídeo como substituto. Se a categoria C (saída upstream 100x-segment) estiver ausente → ignora silenciosamente, nunca exige que o usuário execute outro skill primeiro.
Palavras proibidas
Deixe-me / espero / talvez / provavelmente / possivelmente / talvez / vamos; tom de atendimento de IA (as an AI / I'd be happy to / feel free to); não inventar qualificações, certificações, depoimentos ou dados de eficácia que não estejam no texto original; não fixar dicionários de categorias de clientes; micro_coordinate não deve usar palavras genéricas de conjunto fechado (ver axioma 3 em axioms.md: em algum lugar / qualquer / algum local / TBD / somewhere / anywhere, etc.).
Roteamento (recomendado, não obrigatório)
- Já tem script segmentado e quer atribuir persona/cena por segmento em vez de pelo texto inteiro → skill de segmentação (se existir,
segment_refpode ser preenchido). - Quer transformar descrições de persona/cena em prompts de geração de vídeo com IA → skill de montagem de prompts (se existir).
- Quer primeiro gerar palavras-chave de busca para imagens de referência antes de definir persona/cena → skill de palavras-chave de busca (se existir).
- Quer voltar à entrada principal para re-triagem → entrada principal do sistema 100x (se existir).
Todos os itens acima são recomendações "após a saída", não dependências prévias; se o skill correspondente ainda não estiver construído, isso não afeta o funcionamento independente deste skill.
Autoverificação de fábrica
Execute node scripts/validate.js --selftest para verificar. As restrições estruturais do schema.json (required/additionalProperties/enum/pattern/minItems, etc.) são executadas pelo ajv (validador JSON Schema draft-07 real, declarado como devDependency em package.json, execute npm install primeiro) dentro de scripts/validate.js, não são enumerações manuais de campos. Os axiomas 1 (integridade referencial), 2 (substrings de evidência) e 4 (zero órfãos) são regras agregadas entre objetos/campos que o JSON Schema vanilla não consegue expressar estruturalmente; são implementados por código personalizado em scripts/validate.js. Além disso, inclui checkAuthorityHedgeRisk (mitigação parcial do axioma 2: se frases de auto-dúvida de conjunto fechado forem detectadas, exige divulgação em meta.warnings, caso contrário FALHA) – esta é apenas uma mitigação, não uma correção completa; inversões semânticas de frases de evidência do tipo ironia/citação-refutação ainda não são detectadas, e o --selftest item 10 inclui um caso de regressão real que "atualmente é aprovado" para demonstrar esse limite, não afirma tê-lo eliminado:
npm install # Instalar ajv na primeira execução
node scripts/validate.js <bundle.json> [bundle2.json ...] # Validar saídas
node scripts/validate.js --selftest # Executar testes de regressão internos
Origem
Este skill é uma construção independente baseada em referências de estilo de critérios e especificações de estrutura de campos. A origem de cada critério, o design dos campos e as decisões de design estão detalhados em sources.md.