O que 扎提·关系影像随笔 faz?
Este é um fluxo de trabalho reutilizável extraído do episódio finalizado Por que algumas pessoas boas se relacionam com as pessoas erradas?. O objetivo não é replicar o mesmo roteiro, mas sim permitir que cada novo episódio siga o mesmo método de produção:
Uma história de relacionamento com um objeto concreto + letras grandes em fonte Song + textura de filme/gravação real/foto + narração contida + capa 3:4.
O que é fixo é o método, não o material
Fixo: gramática narrativa de 16 batidas, padrões de fonte/paleta/movimento/som, capa 3:4, portões rígidos de origem e ética, QA.
Variável: roteiro, narração, música, filme/gravação real do cliente/produto/foto/stock autorizado, retratos de pessoas, fundo da capa, texto de publicação.
A IA pode encontrar vídeos de fundo sozinha: quando o cliente não tem material, use scripts/stock_search.py para pesquisar em Mixkit/Coverr/Pexels/Pixabay, selecione 3 candidatos, baixe com scripts/fetch_stock.py, remova a faixa de áudio, padronize e escreva o manifesto. Veja references/stock-sources.md para detalhes.
O sétimo céu da matriz, Freud/Aristóteles/Kant, são apenas implementações de referência, não materiais que devem aparecer em todos os episódios. Se o cliente tem uma loja real, use o material do cliente; se o cliente quer exemplos da história do cinema, mude para 2–3 filmes de domínio público; se o cliente não tem material, faça apenas texto/gráficos. Não force um filme ou um rosto para manter a "sensação de série".
Consulte references/client-brief.md e references/asset-strategy.md para escolhas detalhadas.
Primeiro, avalie se é aplicável
Aplicável:
- Temas emocionais chineses: relacionamentos homem-mulher, amor, intimidade, limites, autoestima, dar e receber, término e reconciliação.
- Histórias de clientes (marcas/instituições) que desejam falar sobre "relacionamento, limites, respeito, companheirismo" e são adequadas para uma expressão ensaística.
- Usuário deseja um ensaio visual paisagem (horizontal) de 2:40–3:40, com narração, legendas e sensação cinematográfica.
- Usuário explicitamente diz "no estilo de Pessoas Boas e Erradas", "use o template anterior", "faça como uma série".
Não aplicável:
- Lançamento de produto puro/vendas/montagem rápida/explicação de funções; outros formatos são mais adequados.
- Usuário solicita o uso de trechos ainda protegidos por direitos autorais, como Casablanca, Amor à Flor da Pele, sem autorização. Explique o risco e mude para filmes de domínio público ou peça ao cliente que forneça material autorizado.
- Usuário deseja o vídeo final em 9:16 (vertical). Este template é 16:9 (capa 3:4); vertical exigiria um novo layout, não pode ser simplesmente cortado.
Especificações do produto final (padrão)
| Item | Padrão |
|---|---|
| Vídeo principal | 1920×1080 / 30fps / 2:40–3:40 |
| Proporção de tela | 16:9 |
| Idioma | Narração em chinês simplificado + legendas embutidas + SRT |
| Capa | 1080×1440 (3:4), PNG + JPG |
| Áudio | Narração + trilha original + som de chuva, aproximadamente −15 LUFS, pico real ≤ −1,5 dBFS |
| Legendas | Embutidas no vídeo; arquivo .srt separado |
| Entrega | MP4, SRT, capa 3:4, texto de publicação, fontes dos materiais, projeto editável |
| Aprovação do cliente | Três pontos: Brief → Primeiro still → Final |
Localização do episódio matriz (implementação de referência)
Episódio matriz de referência (não distribuído com o repositório; usado apenas como referência de ativos/estrutura):
- Em desenvolvimento local:
~/Desktop/自媒体/good-people-wrong-person - Em outras máquinas: use
--refpara apontar para seu próprio projeto matriz
O novo episódio não deve usar os materiais da matriz por padrão. Use --ref apenas para obter vendor/, fontes, texturas e uma faixa de áudio placeholder; filme, retratos, stills, roteiro e áudio devem ser alterados conforme o brief do cliente.
A matriz contém:
index.html: composição huashu-motion completa do episódio de 201,37 segundos.cover/cover.html: arquivo fonte da capa 3:4 (1080×1440).assets/movies/: trechos verificados, com áudio removido e quadros corrigidos para inteiros, de Sétimo Céu (1927).assets/portraits/: retratos em domínio público de Freud, Aristóteles, Kant.assets/stills/,assets/textures/,assets/fonts/,vendor/.assets/score.wav: mixagem final do episódio anterior (narração + trilha + chuva). Deve ser substituído no novo episódio; não pode ser reutilizado.output/: entregáveis do episódio anterior, apenas para referência; não copiar.
Se a matriz não existir: use templates/index.template.html e templates/cover-3x4.template.html para recuperar o código; os trechos de filme e retratos devem ser obtidos e verificados novamente conforme references/rights-and-ethics.md.
Como iniciar um novo episódio
SKILL="$HOME/.agents/skills/zhati-relationship-film"
$SKILL/scripts/new_episode.sh my-episode-slug --base "$HOME/relationship-films"
O script irá:
- Criar um novo projeto em
$BASE_DIR/my-episode-slug(padrão$HOME/relationship-films, pode ser alterado com--base); - Copiar o código do template mais recente do skill (
index.html,cover/cover.html) e, a partir da matriz, copiarvendor/, fontes, texturas e um conjunto de materiais iniciais; - Copiar
assets/score.wavda matriz como faixa de áudio placeholder (para que a página possa ser executada); - Gerar templates para
BRIEF.md,文稿.txt,字幕.srt,treatment.md,素材来源.md,发布文案.md,assets.manifest.json; - Criar
assets/imported/e imprimir os próximos passos e os slots de texto/material que precisam ser substituídos.
Em seguida, siga o pipeline abaixo. Não pule a etapa de escrever uma nova narração e novas legendas.
Pipeline
0. Leia o brief do cliente, bloqueie o conteúdo + materiais
Primeiro, leia references/client-brief.md e condense os requisitos do cliente em um plano de conteúdo de 10 linhas:
Público / Plataforma / Duração / Tema em uma frase / Pergunta-gancho / Dois conceitos / Perspectiva mental ou psicológica / Virada ética / Uma frase pequena / Padrão e fonte do material
Em seguida, leia references/beat-sheet.md e encaixe o tema nas 16 batidas narrativas. O padrão do material deve ser decidido antes de escrever a narração: filmagem real do cliente / filme de domínio público / stock autorizado / foto / texto puro / misto. Não escreva 3 minutos completos e depois peça material ao cliente.
Estrutura padrão:
- Gancho (uma pergunta)
- História concreta (chuva/guarda-chuva; pode ser substituído por outro objeto concreto, mas deve haver um objeto que percorra toda a história)
- Limitação tipo "esta é uma história fictícia"
- Distinção entre dois conceitos (bondade vs. adequação, ou o par de conceitos correspondente)
- Perspectiva filosófica A (amizade/reciprocidade/ respeito, etc.)
- Limitação de uma pessoa ("o esforço de uma pessoa sozinha não pode completar um relacionamento de dois")
- Pergunta de virada emocional (por que ainda se espera a próxima vez mesmo estando triste)
- Perspectiva psicológica (repetição/padrão; use "uma forma de entender", não um diagnóstico)
- Reconhecimento de padrão (esforço para obter reconhecimento)
- Frieza e autodúvida
- Virada ética (a dor não foi causada por você; a responsabilidade é de quem causou a dor)
- Limitação e exceção (engano, mudança, ver depois de conviver)
- Autorreflexão (duas perguntas; espelho/reflexo)
- Perspectiva filosófica B (autorrespeito)
- Uma frase muito pequena (ação executável)
- Exercício e conclusão (manter a gentileza, mas também deixar espaço para si)
- Créditos finais/fontes
Se o novo tema não precisar de dois filósofos, pode manter apenas um; se não precisar de perspectiva psicológica, pode condensar 8–9 em um parágrafo. Não invente citações ou diagnósticos para preencher a estrutura.
1. Escreva uma nova narração
- Alvo: 950–1150 caracteres chineses, velocidade normal de fala de aproximadamente 3 minutos; se o usuário fornecer o texto, primeiro faça uma edição para "cortar até que haja espaço para respirar", não mude a posição.
- Mantenha expressões restritivas: uma forma de entender / não é uma explicação para todos / a responsabilidade pela dor não pode ser atribuída a outro.
- O final deve ter uma "ação pequena" ou "frase pequena" que possa ser lembrada, como "Eu também sinto frio, eu também preciso deste guarda-chuva".
- Escreva em
文稿.txt, uma linha por parágrafo, para facilitar a geração de legendas.
2. Gere nova narração e nova linha do tempo
Priorize o uso de clonagem de voz local do próprio usuário (consulte o skill macos-local-voice); não faça upload de gravações de referência. Quando não houver voz disponível, pergunte claramente ao usuário: gravação própria / clone local / timbre do sistema / sem áudio.
Resultados:
- Uma narração completa
assets/voice.wav(48kHz, idealmente 24-bit); - Tempos de início e fim de cada frase (JSON ou CSV), com precisão de 0,01s;
- Um novo array
CUES([início, fim, texto]).
Não reutilize a narração de 194 segundos da matriz. A linha do tempo da matriz é apenas para entender o ritmo, não é o áudio do novo episódio.
3. Trilha sonora e mixagem
- Mantenha a direção de "piano/cordas/ambiente leve + som de chuva", não use músicas com direitos autorais prontas.
- Meta da mixagem: narração clara, música em torno de −28~−32 LUFS, geral aproximadamente −15 LUFS, pico real ≤ −1,5 dBFS.
- Saída
assets/score.wav, substituindo a faixa placeholder; o elemento<audio id="score" ...>na página deve ser mantido, mas a duração deve ser alterada. - Este template usa
id="score"em vez deom-sound, portanto, ao renderizar, adicione--silent, caso contrário,om rendertentará reconstruir a faixa de áudio. Consulte a seção "Áudio" emreferences/visual-system.md.
4. Reajuste os pontos de sincronia
Esta é a etapa mais subestimada. Todos os tempos da matriz são codificados diretamente; ao mudar a narração, cada cena deve ser reajustada.
Distribua a nova duração para as 16 cenas de acordo com a proporção em references/beat-sheet.md e, em seguida:
- Primeiro, altere o array
CUES, odata-durationdo nó raiz, oDURno JavaScript,<audio data-duration>. - Cada cena começa com o "início da primeira frase de narração daquele trecho" e termina com o início da primeira frase do trecho seguinte.
- Os tempos de animação dentro da cena devem ser escalados proporcionalmente por "nova duração / duração antiga"; não desloque apenas o início, caso contrário, a segunda metade ficará dessincronizada.
- Os
data-start/data-duration/data-media-start/data-playback-ratedos clipes de vídeo também devem ser recalculados; certifique-se de que o clipe não termine antes do fade-out. Os clipes da matriz já foram corrigidos para quadros inteiros, mas ao trocar a fonte, é necessário corrigir novamente. - Após cada alteração em uma cena, use
om stillpara verificarstart+0.5s,start+2s,end-0.5spara garantir que não haja resquícios de texto antigo, sobreposição de texto ou quadros vazios.
Consulte references/text-slots.md para a lista de substituições e references/retiming.md para o método de reajuste.
5. Troque o texto, não troque o DNA visual
Substitua sistematicamente os slots de texto em index.html (consulte references/text-slots.md), incluindo:
- Variável do título do filme
filmTitle, duas linhas do gancho; - Quatro parágrafos de letras grandes da história do guarda-chuva;
- Limitação "história fictícia";
- Rótulos dos dois quadros: bondade/adequação;
- Parágrafos e fontes de Aristóteles/Freud/Kant;
- Cena fria, virada, responsabilidade, espelho, autorreflexão, ação, final, créditos;
- Cada frase de legenda no
CUES.
Mantenha:
- Paleta, combinação de fontes Song/PingFang/EB Garamond;
- Base de filme, chuva, guarda-chuva, granulação, vinheta, flash branco, linha sublinhada vinho;
- Espaçamento à esquerda e direita em 16:9 e faixa de legenda inferior;
- Ritmo de "um evento por quadro", não coloque todo o texto na mesma tela.
Não mantenha o texto antigo da matriz. Se o novo episódio apresentar pensadores diferentes de "Aristóteles/Freud/Kant", as fontes devem ser verificadas novamente e marcadas na tela como "Interpretação/Aplicação", não como citações diretas falsas.
6. Substituição de materiais (obrigatório, conforme solicitação do cliente)
A matriz usa Sétimo Céu (1927), mas esta é apenas uma implementação de referência. Escolha o padrão de acordo com references/asset-strategy.md:
- Filmagem real do cliente/foto/produto/loja: prioridade; especifique autorização/consentimento de retrato; mantenha rostos reais, sem suavização excessiva; produtos apenas como "objeto no relacionamento", não como propaganda explícita.
- Filme de domínio público: pode continuar usando Sétimo Céu ou trocar por 1–3 filmes de domínio público; remova o áudio, corrija quadros, extraia stills, faça anotações individualmente.
- IA encontra stock gratuito: quando o cliente não tem material, pesquise 3 candidatos e mostre ao cliente; após confirmação, baixe/padronize com
scripts/fetch_stock.py. Não baixe de YouTube/streaming/conteúdo protegido; não contorne marcas d'água/paywalls. Fonte, licença e crédito são registrados no manifesto. - Stock autorizado: mantenha licença/pedido; não use prévias com marca d'água.
- Foto/arquivo/retrato: identifique a fonte (foto/estátua/pintura); domínio público ou autorizado pelo cliente; não use IA para fingir ser uma figura histórica.
- Apenas texto/gráficos: quando não houver filmagem, deixe que o texto e o espaço vazio se tornem a imagem; não force a inserção de um filme.
- Misto: no máximo 2–3 fontes; uma gradação de cor, um conjunto de fontes, crédito por fonte.
Após a substituição, é obrigatório:
- Alterar o
srccorrespondente aodata-asset-slot; - Recalcular as janelas de vídeo com
ffprobe; - Reextrair stills;
- Alterar
#credit,#credits .cols,素材来源.md; - Executar
python3 scripts/asset_report.py --manifest assets.manifest.json --project ..
Não use trechos ainda protegidos por direitos autorais, como Casablanca, Férias em Roma, Amor à Flor da Pele, a menos que o cliente forneça autorização por escrito explícita.
7. Verifique, renderize, revise
cd "$HOME/relationship-films/my-episode-slug"
om check . --samples 6
om render . --silent --fps 30 --workers 4 --video extract
om qa out/<new-file>.mp4
A renderização leva cerca de 25–35 minutos (1080p/30fps/4 workers, escala de 201 segundos). Não use 720p para fingir 1080p.
Se o om local for um script wrapper (por exemplo, que configura ambiente Node/Chrome), aponte OM para ele; scripts/ tentará $OM, om, ~/.agents/skills/huashu-motion/bin/om nesta ordem.
Obrigatório:
om check0 erros;om qasem saltos de quadro único;- Verificação de stills: gancho, bordas de cada cena, virada, Freud, final, créditos;
- Revisão independente a frio (encontre um agente que não participou da produção para assistir apenas ao produto final); corrija pelo menos os MUST-FIX;
ffprobeconfirme 1920×1080/30fps/duração correta/AAC 48kHz estéreo;- Decodificação completa sem erros; loudness/pico dentro dos padrões.
8. Capa e texto de publicação
- Capa: copie
cover/cover.html, substitua título, duração, gancho inferior, fonte; renderize 1080×1440 PNG + JPG. Layout do modelo: marcador superior + título grande ("pessoa errada" em âmbar) + guarda-chuva/duas pessoas no meio + uma frase de ouro na parte inferior + fonte. - Texto de publicação: de acordo com
references/publishing.md, produza versão longa/curta/versão Bilibili/comentário fixado/tags; não reutilize diretamente o texto do episódio anterior. - Créditos finais e logotipo no canto devem manter as limitações necessárias como "imagem de filme, não caso real" e "perspectiva explicativa, não diagnóstico".
9. Entrega
my-episode-slug/output/
<slug>_1080p_30fps.mp4
<slug>_字幕.srt
<slug>_封面_3x4.png
<slug>_封面_3x4.jpg
<slug>_发布文案.md
素材来源.md
项目说明.md
Portões rígidos (não entregar se não passar)
- Nova narração: o novo episódio deve ter uma nova narração gravada/gerada; não pode simplesmente casar o áudio de 194 segundos da matriz com as novas legendas.
- Novo texto: não pode haver frases textuais antigas da matriz em
index.html; usereferences/text-slots.mdpara verificar item por item. - Direitos autorais/materiais: filme, material do cliente, stock, retratos, música, áudio devem ter registro de fonte/autorização; cada fonte tem crédito; título/ano/identificador de "não é caso real" na tela.
- Ética: não diagnosticar, não culpar a vítima, não falsificar citações originais de filósofos, não tratar personagens de filme como casos reais.
- Imagem: nenhum texto cortado, nenhuma palavra isolada em linha, nenhum texto sobrepondo legendas; se o episódio ainda usar a metáfora do guarda-chuva, ambos devem estar sob o guarda-chuva no final.
- Áudio: narração clara, sem clipping, sem silêncio inesperado; a renderização com
--silentpreserva a faixa de áudio personalizada. - Revisão: os MUST-FIX da revisão independente a frio devem estar corrigidos, ou deve haver um registro claro do motivo pelo qual foram mantidos.
O que NÃO fazer
- Não reutilizar diretamente o texto antigo, legendas antigas ou narração antiga da matriz.
- Não tratar Sétimo Céu/Freud/Aristóteles/Kant como materiais fixos; não os force se o cliente não precisar.
- Não transformar todas as cenas na mesma imagem + mesmo texto; a gramática de cenas da matriz tem variações.
- Não usar gradiente azul-roxo, neon, fundo de estrelas com aparência de IA.
- Não cortar diretamente o vídeo 16:9 para a capa 3:4; use
cover/cover.htmlpara recriar o layout. - Não escrever as palavras de filósofos/especialistas como "citações famosas" com aspas; use "ele discutiu/uma forma de entender".
- Não usar filmes com direitos autorais, rostos de clientes, registros de chat ou produtos não divulgados sem autorização do cliente.
- Não baixar fundos diretamente de YouTube/Bilibili/streaming/conteúdo protegido; não contornar marcas d'água, paywalls ou restrições regionais; use apenas stock gratuito/autorizado explicitamente permitido.
- Não usar rótulos diagnósticos como "física do amor" ou "cérebro apaixonado" como título; use perguntas, não sentenças.
Mapa de arquivos
references/client-brief.md: brief do cliente, matriz de conteúdo, pontos de aprovação.references/asset-strategy.md: filmagem real do cliente/domínio público/stock/foto/texto puro/misto, unificação de múltiplas fontes, slots de material, manifesto.references/stock-sources.md: pesquisa, licenciamento, download e crédito em Mixkit/Coverr/Pexels/Pixabay/Commons.references/beat-sheet.md: estrutura de 16 batidas, proporções, eventos de tela, função do roteiro.references/visual-system.md: paleta, fontes, câmera, guarda-chuva/chuva, áudio, capa.references/text-slots.md: lista de substituições item por item.references/retiming.md: método de reajuste da linha do tempo para nova narração.references/rights-and-ethics.md: fonte de vídeo/retrato/áudio/ética.references/publishing.md: título, texto longo, texto curto, descrição Bilibili, comentário fixado, tags.templates/index.template.html: composição do episódio matriz.templates/cover-3x4.template.html: capa 3:4.templates/assets.manifest.example.json: modelo de lista de materiais.scripts/new_episode.sh: cria novo projeto.scripts/prepare_media.sh: corrige quadros, extrai stills, verifica fonte.scripts/render.sh: encapsulamento de renderização com--silent.scripts/render_cover.sh: renderizacover/cover.htmlem 1080×1440 PNG/JPG.scripts/verify.sh: check/qa/ffprobe/decodificação/loudness.scripts/asset_report.py: verifica arquivos/direitos/crédito/cenas no manifesto de materiais.scripts/stock_search.py: pesquisa stock gratuito online, gera candidatos/página/licença.scripts/fetch_stock.py: baixa, remove faixa de áudio, padroniza para 1920×1080/30fps e atualiza manifesto.