Communitygithub.com

taste-application

Gera um novo vídeo a partir de um pacote de estilos destilado e o monta em uma peça final – o planejamento é extraído da referência.

O que é taste-application?

O Taste Application é a segunda metade do pipeline de criação de vídeo estilizado. Enquanto o Taste Distillation mede as referências e as transforma em um pacote de estilo, este skill gera conteúdo a partir desse pacote e realiza a edição final. Ele suporta integração com plataformas como fal, Resolve e Blender, permitindo geração de takes, composição de cenas, aplicação de regras de corte e gradagem, e verificação de qualidade. O skill fornece scripts em Python prontos para execução local ou em provedores, com opções de dry-run e controle de permissões via variável de ambiente. Também inclui um ramo 3D para minting de props e renderização local. A ênfase está na eficiência econômica (agrupando shots em takes mais longos para aproveitamento de ~77% contra 21% da abordagem ingênua) e na medição direta de atributos visuais como fundo, croma, contraste e cadência, em vez de confiar cegamente em promessas de plataforma.

Funciona com~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/tree/main/skills/taste-application

Perguntar na sua IA favorita

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

Documentação

Taste Application

A segunda metade do pipeline. taste-distillation mede as referências em um pacote de estilo; este gera a partir desse pacote e monta o resultado.

Contrato de Execução e Entrega

A implementação original está aqui em scripts/; não é necessário um checkout separado do ito-video. Instale scripts/requirements.txt para processamento local. Instale scripts/requirements-live.txt apenas para execução em provedor. Envios, submissões e downloads ao vivo exigem TASTE_FORGE_ALLOW_LIVE=1 explícito além das credenciais; defina-o apenas para a execução autorizada do usuário. --dry-run permanece livre de credenciais e produz placeholders rotulados. Um timeout ambíguo do provedor não é repetido como um novo job pago. Inspecione a requisição do provedor antes de decidir se outro envio é justificado.

Use takes já concluídos sem chamadas de provedor:

python scripts/pipeline.py --genero exemplo --root stylepacks \
  --takes media/take-a.mp4 media/take-b.mp4 --duracao 12 --fps 30 \
  --out out/revisao-v1.mp4

--duracao é um alvo de cadência de melhor esforço, não um tempo de execução exato. Takes completos podem produzir uma edição mais curta ou mais longa; o montador não duplica clipes nem adiciona preenchimento para atingir o alvo. O manifesto de saída mantém a duracao real e adiciona duracao_contrato com a duração solicitada e real, déficit, excesso e a política cadence_target. Diferenças de pelo menos um quadro de saída são avisadas explicitamente. Nenhum modo de duração exata é fornecido; quando um tempo de execução exato é necessário, inspecione o recibo e revise ou rejeite o corte antes da entrega.

O pipeline mantém os arquivos de take graduados de cada execução porque o FCPXML e EDL editáveis os referenciam. Ele recusa colisões de saída e relata falhas na exportação da timeline. Um render concluído não é um projeto de editor salvo ou aprovação criativa. Preserve os assets de origem e os checkpoints de projeto versionados antes e depois das edições ao vivo; registre o caminho salvo e o hash separadamente do recibo da timeline em memória.

Os gráficos Fal prontos para clone e seu compilador de entrada offline estão documentados em workflows/README.md. Compile o briefing e a direção de estilo antes do envio; não presuma que um campo de esquema desconectado afeta um prompt de modelo. Valide os campos atuais do endpoint com o provedor real antes de uma execução paga.

Para o Blender, use o GLB texturizado completo; a retopologia é um derivado nomeado separadamente e nunca substitui essa fonte. blender_prop.py suporta --largura 1920 --altura 1080 --fps 30 --recibo recibo.json explícitos e preserva a iluminação de borda e texturas de material derivadas do pacote. Salvar uma cena é distinto de renderizá-la; inspecione o estado do recibo e as imagens empacotadas.

Para sobreposições no Resolve, use taste.resolve.apply_placements com objetos injetados de um alvo versionado explicitamente selecionado. Defina source_end_mode para a convenção verificada naquele host. Não presuma que o source end é inclusivo entre versões do Resolve. O adaptador aloca efeitos sobrepostos acima das faixas preservadas e verifica cada posicionamento imediatamente e novamente após todas as anexações. Inteiros compostos devem corresponder à API instalada; para o host verificado Studio 21, Screen é 5, não o incorreto 22 do builder histórico. O recibo prova apenas o posicionamento em memória. Salve o projeto, verifique seu checkpoint, depois inspecione a saída renderizada exata antes de relatar a entrega.

Quando Ativar

  • "faça um vídeo neste estilo" / "aplique o pacote" / "complete esta filmagem"
  • Montar clipes gerados em algo com ritmo de edição real
  • Mintar props 3D a partir de um visual e colocá-los de volta no vídeo
  • Verificar se uma peça final realmente corresponde à sua referência

Divisão de Trabalho

O modelo fornece conteúdo, movimento, enquadramento e estrutura de iluminação. O pacote fornece cor e ritmo. Isso é medido, não preferência estilística — veja taste-distillation para os números. Consequências práticas:

  • O prompt de geração contém zero linguagem de cor. Adicione "Cor: nenhuma. Render neutro. A gradagem é aplicada depois."
  • Mantenha duas flags separadas: --brief (o que ACONTECE: assunto, ação, lugar) e --style-steer (como PARECE). Mesclá-las vaza palavras de estilo para a cena ("azul-petróleo" se torna um objeto azul-petróleo) e palavras de assunto para a gradagem.
  • O modelo responde muito melhor a regras locais e verificáveis do que a regras globais. "Fundos preto puro e não iluminados; assuntos indo para o branco" funciona; "contraste extremo" não.

Gerar TAKES, Não Shots

A leitura óbvia de "igualar a cadência" é uma geração por shot. É economicamente absurdo. Uma referência com média de 0,78s/shot contra um endpoint com piso de 4 segundos transforma uma peça de 10s em 12 chamadas, 48 segundos gerados para 10 usados (21% de eficiência), e doze clipes não relacionados costurados no que deveria ser contínuo.

Editores rolam um take mais longo e cortam dentro dele. Agrupar shots em takes de ~5s: 3 chamadas, 13 segundos gerados, 77% de eficiência, e shots consecutivos que realmente pertencem uns aos outros porque vieram da mesma geração.

Diga ao modelo qual forma você quer, ou ele renderiza um lento push travado e seis cortes dentro dele leem como um soluço:

"Filmado como UM take contínuo sem cortes duros dentro dele. Será cortado em 6 pedaços de aproximadamente 0,8s na edição, então o enquadramento, assunto e luz devem continuar mudando ao longo de todo o take – qualquer janela de 0,8s tem que se sustentar sozinha como seu próprio shot."

Regras de Corte

  • Re-codifique, nunca copie stream. Copiar stream corta apenas em keyframes, que em 0,78s significam que o comprimento do shot arredonda cada limite para o GOP mais próximo — destruindo a coisa exata que o pipeline existe para preservar.
  • Ao complementar filmagem existente, use seus próprios limites de shot. Fatiar um vídeo base em pedaços contíguos e reproduzi-los em ordem apenas remonta o original: todo "corte" cai no meio de um shot e é invisível. Medido, uma montagem de 20 shots registrou apenas 12 cortes detectados. Detecte limites reais e pegue a cada N-ésimo shot para que escolhas consecutivas sejam garantidamente descontínuas. Isso moveu uma medição de corte de 1,29s para 0,83s contra um alvo de 0,78s.
  • Amostre comprimentos de shot da distribuição da referência, não de sua média, para que o corte herde a variância de ritmo em vez de achatar para clipes uniformes.

Regras de Gradagem

  • Medição direta supera uma LUT assada quando você tem o clipe: meça-o, iguale sua CDF L*, aplique croma por zona. grade_clip_direct alcançou MAE 1,58 e contraste 34,0 contra 34,7.
  • Âncore, não iguale CDF, quando o histograma do clipe é diferente do da referência. Forçar um clipe gerado 68%-preto em um histograma de referência ocupado levantou todo o fundo do preto: preservação do fundo caiu para 26,0% (CDF) versus 69,0% (âncora), enquanto MAE e contraste ainda pareciam excelentes. Padrão para tom ancorado.
  • Tamanho do lote importa. Gradear 48 quadros de uma vez matou o processo por falta de memória; 6 é seguro.

Comportamento Recuperado da Plataforma fal

Estas observações e exemplos de endpoint vieram do workflow recuperado. Re-verifique os metadados atuais do endpoint; eles não são garantias sobre todas as versões futuras do provedor. Os templates de gráfico fornecidos registram as entradas de workflow verificadas separadamente, incluindo controle explícito de áudio gerado.

Isso custa tempo real para descobrir. Verifique-os antes de projetar um gráfico.

LimiteDetalhe
Nenhum renderizador 3Dfal tem image-to-3d, text-to-3d, 3d-to-3d e nada mais. Cada endpoint 3d-to-3d emite outra malha. Não há categoria 3d-to-image/3d-to-video, então um GLB mintado não pode re-entrar em um gráfico de vídeo fal. Renderize localmente, depois use fal-ai/ffmpeg-api/images-to-video.
compose não pode sobreporfal-ai/ffmpeg-api/compose rejeita uma segunda trilha com "Várias trilhas de vídeo não são suportadas" — e conta uma trilha de image como trilha de vídeo. Ele sequencia apenas uma trilha de vídeo. Componha localmente com ffmpeg.
compose keyframes são em milissegundosNada na resposta diz isso. Uma execução enviada em segundos é aceita e retorna um vídeo 1000x mais curto.
extract-frame oferece apenas primeiro/meio/últimoNenhum timestamp arbitrário. Use os três como três imagens de condicionamento distintas.
Sem loops, sem concatenação de strings no DAGO fan-out por shot tem que ser autorado nó por nó, ou mantido local.
Kling 3.0 não tem referência-para-vídeoA linha v3 é apenas texto/imagem/controle de movimento; referência-para-vídeo está na linha o3: fal-ai/kling-video/o3/pro/reference-to-video.
Prefixos não são uniformesbytedance/*, tripo3d/*, meshy/*, minimax/*, openai/* não carregam o prefixo fal-ai/. kling-video, veo3.1, flux-*, hunyuan-3d, ffmpeg-api carregam.

Escolhas de Endpoint

SlotMelhorAlternativa de valor
referência→vídeobytedance/seedance-2.5/reference-to-video (~$0.473/s @720p)fal-ai/kling-video/o3/pro/reference-to-video (~$0.112/s)
imagem→3Dfal-ai/hunyuan-3d/v3.1/pro/image-to-3d ($0.375, até 8 vistas)tripo3d/h3.1/image-to-3d ($0.20)
texto→3Dfal-ai/hunyuan-3d/v3.1/pro/text-to-3dtripo3d/h3.1/text-to-3d
retopologiafal-ai/hunyuan-3d/v3.1/smart-topology ($0.75)tripo3d/tripo/remesh (~75x mais barato)
divisão de partesfal-ai/hunyuan-3d/v3.1/part (apenas FBX)tripo3d/tripo/segment
texto→imagemfal-ai/nano-banana-pro ($0.15 fixo)fal-ai/flux-2-pro ($0.03/MP)

Seedance é ~4x o preço do Kling o3 pelos mesmos 5 segundos. Ele ganha isso na fidelidade de múltiplas referências (até 50 referências mistas de imagem/vídeo/áudio) e não ganha quando condicionado a uma única imagem parada.

IDs de modelo e preços mudam. Verifique em fal.ai/models antes de prometer qualquer um deles.

O Ramo 3D

python mint3d.py --genero <nome> --de-stills 4 --retopo --render
python mint3d.py --genero <nome> --prompt "um visor de cromo rachado" --render
  • Gere uma placa limpa primeiro; não extraia de stills de referência. O requisito de entrada declarado do endpoint é fundo simples, objeto único, objeto >50% do quadro. Os reels de referência são o oposto disso — colagens, planos abertos, vários assuntos, gráficos queimados — e produzem ruído esculpido. Texto → placa de objeto único → malha custa ~$0,15 extra e é a diferença entre uma malha utilizável e uma descartada.
  • Multi-visualização é nomeada por campos por ângulo, não uma lista. input_image_url (frente, obrigatório), depois back_image_url, left_image_url, right_image_url, left_front_image_url, right_front_image_url, top_image_url, bottom_image_url. Não há input_image_urls e nenhuma flag multi_view — inventá-los degrada cada mint para visualização única enquanto parece funcionar. Um rótulo de ângulo errado é pior do que omitir a vista, porque o modelo confia nele.
  • Acesse o GLB por chave, não por posição. A resposta carrega um PNG de thumbnail e um bloco model_urls ao lado de model_glb; pegar a primeira URL funciona apenas até que as chaves sejam reordenadas, e um PNG de pré-visualização baixa bem — nada falha até que o Blender se recuse a abri-lo.
  • Solicite mapas PBR. Sem eles, a malha ilumina como papelão pintado.
  • Retopologize se alguém for editar ou riggar. Malhas geradas são densas e caóticas.
  • Renderize localmente para fechar o ciclo. Uma vez que um turntable são quadros, é filmagem, e todo estágio downstream já lida com filmagem — gradear, cortar, exibir como elemento, ou enviar como referência de condicionamento. Use o Blender quando um binário estiver no PATH; mantenha um rasterizador de software leve como padrão, porque um contexto GL headless é a coisa mais comum que falta em um contêiner e um renderizador que funciona apenas em uma estação de trabalho não é parte de um pipeline.

Verifique, Depois Acredite

Todo outro estágio afirma um resultado. Verifique-o, e verifique a forma da distribuição, não apenas momentos:

  • background — proporção do quadro abaixo de L*10 vs o valor do pacote. Compare com a referência, não com o clipe de origem: uma origem gerada com 68% de preto é mais preta do que qualquer referência em uma faixa de 24–55%, então "preserve os pretos da origem" exige a coisa errada e igualmente desculpa uma gradagem levantada.
  • chroma_mae — erro a*/b* por zona, usando a mediana (combinando com como os alvos do pacote foram medidos; uma média aqui compara uma estatística sensível à assimetria com uma robusta e relata uma incompatibilidade de definição como um erro).
  • contrast / black_point / white_point
  • banding — bins vazios do histograma L* entre bins ocupados. Contar bins vazios totais não funciona: um clipe legitimamente escuro tem bins de destaque vazios.
  • cadence — comprimento médio detectado do shot vs o da referência.

Cuidado com a armadilha de unidades: OpenCV muda a convenção Lab com dtype. Em float32, L* é 0–100 e a*/b* são com sinal; em uint8, L* é 0–255 e a*/b* são deslocados +128. Misturá-los relata erros de croma nas centenas.

Cadeia Completa

python pipeline.py --genero <nome> --refs a.mov b.mov \
  --brief "o que acontece" --duracao 12 \
  --video-base existente.mp4 --out out/FINAL.mp4

mint → distill → (mint3d) → apply → forge → verify. Estágios 1–3 são cacheados, então iterar em briefs nunca re-mede nada. --dry-run substitui toda chamada de rede: o plano, prompts, layout de trilhas e manifesto ainda são exercitados.

Anti-Padrões

Não façaPor quê
Uma geração por shot21% de eficiência, 12 clipes não relacionados
Colocar cor no promptMedido como não funcionando; afasta-se da base neutra que a LUT deseja
Copiar stream nos cortesLimites apenas em keyframes destroem o ritmo subsegundo
Cortar um vídeo base contiguamenteRemonta o original; todo corte invisível
Confiar que compose sobrepõeEle não pode; rejeita a segunda trilha
Enviar segundos para composeSilenciosamente 1000x mais curto
Entregar apenas com MAEAdicione a verificação de proporção de fundo

Filmagem Emprestada Carrega a UI do App de Captura

O pior defeito único encontrado em um corte entregue: o vídeo finalizado enviou o botão de like, contador de visualizações e bolha de comentários de outra pessoa, porque o base …

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

Habilidades Relacionadas