Communitygithub.com

扎提·关系影像随笔

生成扎提风格的 3 分钟中文男女关系/爱情影像随笔:素材可按客户要求随时替换(客户实拍、公版电影、AI 联网找的免费 stock、照片、纯文字、混合),雨伞/雨/胶片视觉脊柱、宋体动效、3:4 封面。

O que é 扎提·关系影像随笔?

Este skill, denominado '扎提·关系影像随笔' (Zhati · Relationship Video Essay), permite criar ensaios visuais curtos (2:40–3:40) no estilo característico de Zhati, como o episódio 'Por que algumas pessoas boas se relacionam com as pessoas erradas?'. Ele é voltado para produtores de conteúdo, criadores e marcas que desejam produzir vídeos narrativos sobre relacionamentos amorosos, vínculos afetivos e temas emocionais chineses, com um toque cinematográfico e uma estética nostálgica de filme, usando guarda-chuva, chuva e granulação como elementos visuais centrais. O skill suporta múltiplas plataformas de desenvolvimento (como Claude Code, Cursor, Codex) e oferece um fluxo de trabalho completo: desde a definição do briefing do cliente, passando pela escrita de novo roteiro, geração de locução (com clonagem de voz local), seleção de materiais de arquivo (filmagens do cliente, filmes em domínio público, stock gratuito via busca automatizada, fotos, texto puro), até a montagem, sincronização de legendas, mixagem de áudio e renderização final em 16:9 com capa 3:4. O skill automatiza tarefas como busca de stock gratuito, download, padronização de mídia e geração de manifestos, mas exige que o usuário crie novos roteiros, locuções e textos para cada episódio, evitando reutilizar materiais antigos. O objetivo é manter a metodologia de produção consistente (16 beats narrativos, tipografia Song, sistema de cores, movimento de câmera) enquanto permite total flexibilidade de conteúdo e materiais, customizados conforme o cliente.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add Alzat007/zhati-relationship-film

Perguntar na sua IA favorita

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

Documentação

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)

ItemPadrão
Vídeo principal1920×1080 / 30fps / 2:40–3:40
Proporção de tela16:9
IdiomaNarração em chinês simplificado + legendas embutidas + SRT
Capa1080×1440 (3:4), PNG + JPG
ÁudioNarração + trilha original + som de chuva, aproximadamente −15 LUFS, pico real ≤ −1,5 dBFS
LegendasEmbutidas no vídeo; arquivo .srt separado
EntregaMP4, SRT, capa 3:4, texto de publicação, fontes dos materiais, projeto editável
Aprovação do clienteTrê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 --ref para 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á:

  1. Criar um novo projeto em $BASE_DIR/my-episode-slug (padrão $HOME/relationship-films, pode ser alterado com --base);
  2. Copiar o código do template mais recente do skill (index.html, cover/cover.html) e, a partir da matriz, copiar vendor/, fontes, texturas e um conjunto de materiais iniciais;
  3. Copiar assets/score.wav da matriz como faixa de áudio placeholder (para que a página possa ser executada);
  4. Gerar templates para BRIEF.md, 文稿.txt, 字幕.srt, treatment.md, 素材来源.md, 发布文案.md, assets.manifest.json;
  5. 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:

  1. Gancho (uma pergunta)
  2. 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)
  3. Limitação tipo "esta é uma história fictícia"
  4. Distinção entre dois conceitos (bondade vs. adequação, ou o par de conceitos correspondente)
  5. Perspectiva filosófica A (amizade/reciprocidade/ respeito, etc.)
  6. Limitação de uma pessoa ("o esforço de uma pessoa sozinha não pode completar um relacionamento de dois")
  7. Pergunta de virada emocional (por que ainda se espera a próxima vez mesmo estando triste)
  8. Perspectiva psicológica (repetição/padrão; use "uma forma de entender", não um diagnóstico)
  9. Reconhecimento de padrão (esforço para obter reconhecimento)
  10. Frieza e autodúvida
  11. Virada ética (a dor não foi causada por você; a responsabilidade é de quem causou a dor)
  12. Limitação e exceção (engano, mudança, ver depois de conviver)
  13. Autorreflexão (duas perguntas; espelho/reflexo)
  14. Perspectiva filosófica B (autorrespeito)
  15. Uma frase muito pequena (ação executável)
  16. Exercício e conclusão (manter a gentileza, mas também deixar espaço para si)
  17. 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 de om-sound, portanto, ao renderizar, adicione --silent, caso contrário, om render tentará reconstruir a faixa de áudio. Consulte a seção "Áudio" em references/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, o data-duration do nó raiz, o DUR no 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-rate dos 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 still para verificar start+0.5s, start+2s, end-0.5s para 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:

  1. Alterar o src correspondente ao data-asset-slot;
  2. Recalcular as janelas de vídeo com ffprobe;
  3. Reextrair stills;
  4. Alterar #credit, #credits .cols, 素材来源.md;
  5. 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 check 0 erros;
  • om qa sem 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;
  • ffprobe confirme 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)

  1. 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.
  2. Novo texto: não pode haver frases textuais antigas da matriz em index.html; use references/text-slots.md para verificar item por item.
  3. 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.
  4. É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.
  5. 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.
  6. Áudio: narração clara, sem clipping, sem silêncio inesperado; a renderização com --silent preserva a faixa de áudio personalizada.
  7. 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.html para 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: renderiza cover/cover.html em 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.

Habilidades Relacionadas