Communitygithub.com

taste-application

Génère une nouvelle vidéo à partir d'un pack de style distillé et la monte en un produit fini – le plan s'inspire de la référence.

Qu'est-ce que taste-application ?

Cette compétence constitue la seconde moitié du pipeline de stylisation vidéo. Après que **taste-distillation** a mesuré une référence pour créer un pack de style, **taste-application** génère de nouvelles vidéos conformes à ce pack et les assemble en un montage final. Elle prend en charge des workflows locaux (via des scripts Python) et des exécutions sur fournisseur (avec des options de dry-run et des variables d'environnement comme `TASTE_FORGE_ALLOW_LIVE`). La compétence met l'accent sur l'efficacité : au lieu de générer une prise par plan (ce qui est économiquement absurde avec un taux d'efficacité de 21 %), elle regroupe les plans en prises d'environ 5 secondes, atteignant une efficacité de 77 % et une continuité visuelle bien supérieure. Elle intègre des règles strictes de coupe (ré-encodage obligatoire, détection des vrais points de coupe dans les vidéos de base) et d'étalonnage (mesure directe vs LUT, ancrage tonal), ainsi que des observations détaillées sur les plateformes comme fal (limitations sur le rendu 3D, le compose, les préfixes d'endpoint). Une branche 3D permet de générer des maillages à partir de textes ou d'images, avec retopologie et rendu local. Enfin, la compétence insiste sur la vérification systématique des résultats (distribution des noirs, erreur chroma, cadence) et fournit des commandes complètes pour exécuter tout le pipeline.

Compatible avec~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/taste-application

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Taste Application

La seconde moitié du pipeline. taste-distillation mesure les références dans un pack de style ; celui-ci génère à partir de ce pack et monte le résultat.

Contrat d'exécution et de livraison

L'implémentation originale est livrée ici dans scripts/ ; aucun checkout ito-video séparé n'est nécessaire. Installez scripts/requirements.txt pour le traitement local. Installez scripts/requirements-live.txt uniquement pour l'exécution via un fournisseur. Les téléversements, soumissions et téléchargements en direct nécessitent l'option TASTE_FORGE_ALLOW_LIVE=1 en plus des identifiants ; ne l'activez que pour l'exécution autorisée par l'utilisateur. --dry-run reste sans identifiant et produit des placeholders étiquetés. Un délai d'attente ambigu du fournisseur n'est pas relancé comme un nouveau travail payant. Inspectez la demande du fournisseur avant de décider d'une nouvelle soumission.

Utilisez les prises déjà terminées sans aucun appel fournisseur :

python scripts/pipeline.py --genre example --root stylepacks \
  --takes media/take-a.mp4 media/take-b.mp4 --duration 12 --fps 30 \
  --out out/review-v1.mp4

--duration est une cible de cadence au mieux, pas une durée exacte. Les plans complets peuvent produire un montage plus court ou plus long ; l'assembleur ne duplique pas les clips ni n'ajoute de remplissage pour atteindre la cible. Le manifeste de sortie conserve la duration réelle et ajoute duration_contract avec les durées demandée et réelle, le manque, le dépassement et la politique cadence_target. Les écarts d'au moins une image de sortie sont signalés explicitement. Aucun mode de durée exacte n'est fourni ; lorsqu'une durée exacte est requise, inspectez le reçu et révisez ou rejetez la coupe avant la livraison.

Le pipeline conserve les fichiers de plan gradés de chaque exécution car le FCPXML et l'EDL modifiables y font référence. Il refuse les collisions de sortie et signale les échecs d'exportation de la timeline. Un rendu terminé n'est pas un projet éditeur sauvegardé ni une approbation créative. Conservez les actifs sources et les points de contrôle du projet versionnés avant et après les modifications en direct ; enregistrez le chemin sauvegardé et le digest séparément du reçu de la timeline en mémoire.

Les graphes Fal prêts à cloner et leur compilateur d'entrée hors ligne sont documentés dans workflows/README.md. Compilez le brief et la direction stylistique avant la soumission ; ne supposez pas qu'un champ de schéma déconnecté affecte l'invite du modèle. Validez les champs actuels de l'endpoint auprès du fournisseur réel avant une exécution payante.

Pour Blender, utilisez le GLB texturé complet ; la retopologie est un dérivé nommé séparément et ne remplace jamais cette source. blender_prop.py prend en charge --width 1920 --height 1080 --fps 30 --receipt receipt.json explicites et préserve l'éclairage par bord du pack et les textures de matériau. Sauvegarder une scène est différent de la rendre ; inspectez l'état du reçu et les images packagées.

Pour les incrustations Resolve, utilisez taste.resolve.apply_placements avec des objets injectés depuis une cible versionnée explicitement sélectionnée. Définissez source_end_mode sur la convention vérifiée sur cet hôte. Ne supposez pas une fin de source inclusive entre les versions de Resolve. L'adaptateur alloue les effets de chevauchement au-dessus des pistes préservées et vérifie chaque placement immédiatement puis à nouveau après tous les ajouts. Les entiers composites doivent correspondre à l'API installée ; pour l'hôte vérifié Studio 21, Screen est 5, pas le 22 incorrect du constructeur historique. Le reçu prouve un placement en mémoire uniquement. Sauvegardez le projet, vérifiez son point de contrôle, puis inspectez la sortie rendue exacte avant de signaler la livraison.

Quand activer

  • "faire une vidéo dans ce style" / "appliquer le pack" / "compléter ce métrage"
  • Assembler des clips générés en quelque chose avec un vrai rythme de montage
  • Créer des accessoires 3D à partir d'un look et les réintégrer dans la vidéo
  • Vérifier qu'un produit fini correspond réellement à sa référence

Division du travail

Le modèle fournit le contenu, le mouvement, le cadrage et la structure lumineuse. Le pack fournit la couleur et le rythme. C'est mesuré, pas une préférence stylistique — voir taste-distillation pour les chiffres. Conséquences pratiques :

  • L'invite de génération ne contient aucun langage de couleur. Ajoutez "Couleur : aucune. Rendu neutre. L'étalonnage est appliqué après."
  • Conservez deux drapeaux séparés : --brief (ce qui SE PASSE : sujet, action, lieu) et --style-steer (à quoi cela RESSEMBLE). Les fusionner fait fuir les mots de style dans la scène ("teal" devient un objet teal) et les mots de sujet dans l'étalonnage.
  • Le modèle répond bien mieux à des règles locales et vérifiables qu'à des règles globales. "Fonds noirs purs et non éclairés ; sujets tendant vers le blanc" fonctionne ; "contraste extrême" non.

Générer des PRISES, pas des plans

La lecture évidente de "correspondre à la cadence" est une génération par plan. C'est économiquement absurde. Une référence moyenne de 0,78 s/plan contre un endpoint avec un plancher de 4 secondes transforme une pièce de 10 s en 12 appels, 48 secondes générées pour 10 utilisées (efficacité de 21 %), et douze clips sans rapport cousus ensemble dans ce qui devrait être continu.

Les monteurs tournent une prise plus longue et coupent à l'intérieur. Grouper les plans en prises d'environ 5 s : 3 appels, 13 secondes générées, efficacité de 77 %, et des plans consécutifs qui s'appartiennent réellement parce qu'ils proviennent de la même génération.

Dites au modèle quelle forme vous voulez, sinon il rend une poussée lente et verrouillée et six coupes à l'intérieur se lisent comme un bégaiement :

"Filmé comme UNE seule prise continue sans coupe dure à l'intérieur. Elle sera coupée en 6 morceaux d'environ 0,8 s au montage, donc le cadrage, le sujet et la lumière doivent constamment changer tout au long — toute fenêtre de 0,8 s doit pouvoir tenir seule comme son propre plan."

Règles de coupe

  • Ré-encodez, jamais copie de flux. La copie de flux ne coupe que sur les images clés, ce qui, à 0,78 s, signifie que la longueur du plan arrondit chaque limite au GOP le plus proche — détruisant exactement ce que le pipeline existe pour préserver.
  • Lorsque vous complétez un métrage existant, utilisez ses propres limites de plan. Découper une vidéo de base en morceaux contigus et les jouer dans l'ordre ne fait que réassembler l'original : chaque "coupe" tombe au milieu d'un plan et est invisible. Mesuré, un assemblage de 20 plans n'a enregistré que 12 coupes détectées. Détectez les vraies limites et prenez un plan sur N afin que les choix consécutifs soient garantis discontinus. Cela a fait passer la mesure de coupe de 1,29 s à 0,83 s pour une cible de 0,78 s.
  • Échantillonnez les longueurs de plan à partir de la distribution de la référence, pas de sa moyenne, afin que la coupe hérite de la variance rythmique au lieu d'aplatir en clips égaux.

Règles d'étalonnage

  • La mesure directe surpasse une LUT cuite quand on a le clip : mesurez-le, faites correspondre sa CDF L t, appliquez la chroma zonale. grade_clip_direct a atteint MAE 1,58 et contraste 34,0 contre 34,7.
  • Ancrez, ne faites pas correspondre la CDF, quand l'histogramme du clip ne ressemble pas à celui de la référence. Forcer un clip généré à 68 % de noir sur un histogramme de référence chargé a soulevé tout l'arrière-plan du noir : la préservation de l'arrière-plan est tombée à 26,0 % (CDF) contre 69,0 % (ancrage), alors que MAE et contraste étaient tous deux excellents. Par défaut, utilisez le ton ancré.
  • La taille du lot compte. Étalonner 48 images à la fois a tué le processus par manque de mémoire ; 6 est sûr.

Comportement récupéré de la plateforme fal

Ces observations et exemples d'endpoints proviennent du workflow récupéré. Re-vérifiez les métadonnées actuelles de l'endpoint ; elles ne sont pas des garanties pour chaque future version du fournisseur. Les modèles de graphes fournis enregistrent les entrées de workflow vérifiées séparément, y compris le contrôle explicite de l'audio généré.

Ils coûtent du temps réel à découvrir. Vérifiez-les avant de concevoir un graphe.

LimiteDétail
Aucun rendu 3D du toutfal a image-to-3d, text-to-3d, 3d-to-3d et rien d'autre. Chaque endpoint 3d-to-3d émet un autre maillage. Il n'y a pas de catégorie 3d-to-image/3d-to-video, donc un GLB créé ne peut pas rentrer dans un graphe vidéo fal. Rendez localement, puis utilisez fal-ai/ffmpeg-api/images-to-video.
compose ne peut pas incrusterfal-ai/ffmpeg-api/compose rejette une deuxième piste avec "Multiple video tracks are not supported" — et il compte une piste image comme une piste vidéo. Il séquence une seule piste vidéo. Composez localement avec ffmpeg.
Les images clés de compose sont en millisecondesRien dans la réponse ne le dit. Une soumission en secondes est acceptée et renvoie une vidéo 1000x trop courte.
extract-frame offre uniquement première/milieu/dernièrePas d'horodatage arbitraire. Utilisez les trois comme trois images de conditionnement distinctes.
Pas de boucles, pas de concaténation de chaînes dans le DAGLe déploiement par plan doit être créé nœud par nœud, ou rester local.
Kling 3.0 n'a pas de référence-vers-vidéoLa ligne v3 est uniquement texte/image/contrôle de mouvement ; la référence-vers-vidéo se trouve sur la ligne o3 : fal-ai/kling-video/o3/pro/reference-to-video.
Les préfixes ne sont pas uniformesbytedance/*, tripo3d/*, meshy/*, minimax/*, openai/* n'ont pas de préfixe fal-ai/. kling-video, veo3.1, flux-*, hunyuan-3d, ffmpeg-api en ont.

Choix d'endpoints

EmplacementMeilleurAlternative économique
référence→vidéobytedance/seedance-2.5/reference-to-video (~0,473$/s @720p)fal-ai/kling-video/o3/pro/reference-to-video (~0,112$/s)
image→3Dfal-ai/hunyuan-3d/v3.1/pro/image-to-3d (0,375$, jusqu'à 8 vues)tripo3d/h3.1/image-to-3d (0,20$)
texte→3Dfal-ai/hunyuan-3d/v3.1/pro/text-to-3dtripo3d/h3.1/text-to-3d
retopologiefal-ai/hunyuan-3d/v3.1/smart-topology (0,75$)tripo3d/tripo/remesh (~75x moins cher)
division de piècesfal-ai/hunyuan-3d/v3.1/part (FBX uniquement)tripo3d/tripo/segment
texte→imagefal-ai/nano-banana-pro (0,15$ fixe)fal-ai/flux-2-pro (0,03$/MP)

Seedance coûte environ 4x le prix de Kling o3 pour les mêmes 5 secondes. Il le mérite pour la fidélité multi-référence (jusqu'à 50 références mixtes image/vidéo/audio) et ne le mérite pas lorsqu'il se conditionne sur une seule image fixe.

Les ID de modèles et les prix changent. Vérifiez sur fal.ai/models avant de promettre l'un d'eux.

La branche 3D

python mint3d.py --genre <nom> --from-stills 4 --retopo --render
python mint3d.py --genre <nom> --prompt "un casque chrome fissuré" --render
  • Générez d'abord une plaque propre ; ne la tirez pas des images de référence. L'entrée déclarée de l'endpoint est un arrière-plan simple, un seul objet, objet >50 % du cadre. Les rouleaux de référence sont le contraire — collages, plans larges, plusieurs sujets, graphiques incrustés — et ils produisent du bruit sculpté. Texte → plaque à objet unique → maillage coûte ~0,15$ de plus et fait la différence entre un maillage utilisable et un maillage jeté.
  • La multi-vue est nommée par champ par angle, pas une liste. input_image_url (avant, obligatoire), puis back_image_url, left_image_url, right_image_url, left_front_image_url, right_front_image_url, top_image_url, bottom_image_url. Il n'y a pas de input_image_urls ni de drapeau multi_view — les inventer dégrade chaque création en simple vue tout en semblant fonctionner. Une étiquette d'angle erronée est pire que d'omettre la vue, car le modèle lui fait confiance.
  • Adressez le GLB par clé, pas par position. La réponse contient un PNG thumbnail et un bloc model_urls à côté de model_glb ; prendre la première URL fonctionne jusqu'à ce que les clés se réorganisent, et un PNG d'aperçu se télécharge bien — rien n'échoue jusqu'à ce que Blender refuse de l'ouvrir.
  • Demandez les cartes PBR. Sans elles, le maillage s'éclaire comme du carton peint.
  • Retopologisez si quelqu'un doit l'éditer ou le rigger. Les maillages générés sont denses et chaotiques.
  • Rendez localement pour boucler la boucle. Une fois qu'un tourne-disque est des images, c'est du métrage, et chaque étape en aval gère déjà le métrage — étalonnez-le, coupez-le, utilisez-le comme élément ou téléversez-le comme référence de conditionnement. Utilisez Blender quand un binaire est sur le PATH ; gardez un rasteriseur logiciel léger en dépendances comme valeur par défaut, car un contexte GL sans tête est la chose la plus courante qui manque dans un conteneur et un rendu qui ne fonctionne que sur un poste de travail ne fait pas partie d'un pipeline.

Vérifiez, puis croyez

Chaque autre étape prétend un résultat. Vérifiez-le, et vérifiez la forme de la distribution, pas seulement les moments :

  • background — part du cadre sous L*t 10 par rapport à la valeur du pack. Comparez à la référence, pas au clip source : une source générée à 68 % de noir est plus noire que toute référence dans une bande de 24 à 55 %, donc "préserver les noirs de la source" demande la mauvaise chose et excuse tout aussi bien un étalonnage relevé.
  • chroma_mae — erreur a*/b* par zone, utilisant la médiane (correspondant à la façon dont les cibles du pack ont été mesurées ; une moyenne compare ici une statistique sensible à l'asymétrie à une statistique robuste et signale une divergence de définition comme une erreur).
  • contrast / black_point / white_point
  • banding — bins d'histogramme L*t vides entre les bins occupés. Compter le nombre total de bins vides ne fonctionne pas : un clip légitimement sombre a des bins de hautes lumières vides.
  • cadence — longueur moyenne de plan détectée par rapport à celle de la référence.

Attention au piège des unités : OpenCV change la convention Lab avec le dtype. En float32, Lt est 0–100 et a/b* sont signés ; en uint8, Lt est 0–255 et a/b* sont biaisés +128. Les mélanger signale des erreurs chroma dans les centaines.

Chaîne complète

python pipeline.py --genre <nom> --refs a.mov b.mov \
  --brief "ce qui se passe" --duration 12 \
  --base-video existing.mp4 --out out/FINAL.mp4

mint → distill → (mint3d) → apply → forge → verify. Les étapes 1 à 3 sont mises en cache, donc itérer sur les briefs ne remesure jamais rien. --dry-run simule chaque appel réseau : le plan, les invites, la disposition des pistes et le manifeste sont toujours testés.

Anti-patrons

À ne pas fairePourquoi
Une génération par plan21 % d'efficacité, 12 clips sans rapport
Mettre la couleur dans l'inviteMesuré comme ne fonctionnant pas ; éloigne de la base neutre que veut la LUT
Copie de flux des coupesLes limites uniquement sur les images clés détruisent le rythme sub-secondes
Couper une vidéo de base de manière contiguëRéassemble l'original ; chaque coupe invisible
Faire confiance à compose pour incrusterIl ne peut pas ; il rejette la deuxième piste
Envoyer des secondes à composeSilencieusement 1000x trop court
Livrer sur le seul MAEAjoutez la vérification de la part d'arrière-plan

Un métrage emprunté transporte l'interface utilisateur de l'application de capture

Le pire défaut unique trouvé dans une coupe livrée : la vidéo finale contenait le bouton "j'aime", le compteur de vues et la bulle de commentaires de quelqu'un d'autre, parce que la base

…

[Le texte original était tronqué ; la traduction se termine ici.]

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/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

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.

Skills associés