Communitygithub.com

Geschmacksanwendung

Generiere ein neues Video basierend auf einem destillierten Stilpaket und schneide es zu einem fertigen Stück – der Plan orientiert sich an der Referenz.

Was ist Geschmacksanwendung?

Diese Fähigkeit, 'taste-application', bildet die zweite Hälfte der Pipeline. Während 'taste-distillation' Referenzen in ein Stilpaket vermisst, generiert diese Fähigkeit neue Videos gegen dieses Paket und schneidet das Ergebnis zu einem fertigen Stück. Sie ist für Entwickler von KI-Agenten gedacht, die Videoinhalte mit kontrolliertem Stil und Rhythmus erstellen möchten. Unterstützt werden Plattformen wie Fal, Blender und Resolve. Die Pipeline ermöglicht die Generierung von Takes (nicht Einzelshots), das Einhalten von Rhythmusvorgaben basierend auf Referenzschnittverteilungen und die präzise Farbkorrektur mit verankerten Tonwerten gegenüber CDF-Matching. Wichtig: Das Stilpaket liefert Farbe und Rhythmus, während das KI-Modell Inhalt, Bewegung und Bildausschnitt beisteuert. Die Implementierung umfasst Skripte in `scripts/`, wobei der Benutzer Takes generieren, mithilfe von Blender 3D-Objekte erstellen und die Ergebnisse auf Verteilungsform (Hintergrundanteil, Chroma-MAE, Kadenz) überprüfen kann, bevor die Auslieferung erfolgt.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Geschmacksanwendung?

Die zweite Hälfte der Pipeline. taste-distillation misst Referenzen in ein Stilpaket; diese Fähigkeit generiert gegen dieses Paket und schneidet das Ergebnis.

Ausführungs- und Liefervertrag

Die ursprüngliche Implementierung befindet sich hier in scripts/; kein separates ito-video-Checkout ist erforderlich. Installieren Sie scripts/requirements.txt für die lokale Verarbeitung. Installieren Sie scripts/requirements-live.txt nur für die Ausführung durch den Anbieter. Live-Uploads, -Einreichungen und -Downloads erfordern zusätzlich zu den Anmeldeinformationen explizit TASTE_FORGE_ALLOW_LIVE=1; setzen Sie es nur für den autorisierten Lauf des Benutzers. --dry-run bleibt anmeldeinformationsfrei und erzeugt beschriftete Platzhalter. Ein mehrdeutiger Anbieter-Timeouts wird nicht als neuer kostenpflichtiger Auftrag wiederholt. Überprüfen Sie die Anbieteranfrage, bevor Sie entscheiden, ob eine weitere Einreichung gerechtfertigt ist.

Verwenden Sie vorhandene abgeschlossene Takes ohne Anbieteraufrufe:

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 ist ein Best-Effort-Kadenzziel, keine exakte Laufzeit. Vollständige Aufnahmen können einen kürzeren oder längeren Schnitt erzeugen; der Assembler dupliziert keine Clips oder fügt Auffüllungen hinzu, um das Ziel zu erreichen. Das Ausgabemanifest behält die tatsächliche duration bei und fügt duration_contract mit angeforderten und tatsächlichen Sekunden, Unterschreitung, Überschreitung und der cadence_target-Richtlinie hinzu. Unterschiede von mindestens einem Ausgabeframe werden explizit gewarnt. Es wird kein Exakt-Dauer-Modus bereitgestellt; wenn eine exakte Laufzeit erforderlich ist, überprüfen Sie die Quittung und überarbeiten oder lehnen Sie den Schnitt vor der Auslieferung ab.

Die Pipeline behält die bewerteten Shot-Dateien jedes Laufs, da die bearbeitbare FCPXML und EDL darauf verweisen. Sie verweigert Ausgabekollisionen und meldet Timeline-Exportfehler. Ein abgeschlossenes Rendering ist kein gespeichertes Editorprojekt oder eine kreative Freigabe. Bewahren Sie Quell-Assets und versionierte Projekt-Checkpoints vor und nach Live-Bearbeitungen auf; zeichnen Sie den gespeicherten Pfad und Hash getrennt von der In-Memory-Timeline-Quittung auf.

Klonbereite Fal-Graphen und ihr Offline-Eingabe-Compiler sind in workflows/README.md dokumentiert. Kompilieren Sie das Briefing und die Stilrichtung vor der Einreichung; gehen Sie nicht davon aus, dass ein nicht verbundenes Schemafeld einen Modell-Prompt beeinflusst. Validieren Sie aktuelle Endpunktfelder gegen den tatsächlichen Anbieter vor einem kostenpflichtigen Lauf.

Für Blender verwenden Sie die vollständige texturierte Quell-GLB; Retopologie ist ein separat benanntes Derivat und ersetzt niemals diese Quelle. blender_prop.py unterstützt explizit --width 1920 --height 1080 --fps 30 --receipt receipt.json und bewahrt vom Paket abgeleitete Randbeleuchtung und Materialtexturen. Das Speichern einer Szene unterscheidet sich vom Rendern; überprüfen Sie den Zustand der Quittung und die gepackten Bilder.

Für Resolve-Overlays verwenden Sie taste.resolve.apply_placements mit injizierten Objekten aus einem explizit ausgewählten, versionierten Ziel. Setzen Sie source_end_mode auf die auf diesem Host verifizierte Konvention. Gehen Sie nicht von einem inklusiven Quellende über Resolve-Versionen hinweg aus. Der Adapter ordnet überlappende Effekte oberhalb von konservierten Spuren an und überprüft jede Platzierung sofort und erneut nach allen Anhängen. Zusammengesetzte Ganzzahlen müssen mit der installierten API übereinstimmen; für den verifizierten Studio 21-Host ist Bildschirm 5, nicht die falsche 22 des historischen Builders. Die Quittung beweist nur die In-Memory-Platzierung. Speichern Sie das Projekt, überprüfen Sie seinen Checkpoint, dann inspizieren Sie die exakte gerenderte Ausgabe, bevor Sie die Lieferung melden.

Wann zu aktivieren

  • "Ein Video in diesem Stil erstellen" / "Das Paket anwenden" / "Dieses Filmmaterial ergänzen"
  • Zusammensetzen generierter Clips zu etwas mit echtem Schnittrhythmus
  • 3D-Props aus einem Look prägen und zurück ins Video bringen
  • Überprüfen, ob ein fertiges Stück tatsächlich seiner Referenz entspricht

Arbeitsteilung

Das Modell liefert Inhalt, Bewegung, Bildausschnitt und Beleuchtungsstruktur. Das Paket liefert Farbe und Rhythmus. Dies ist gemessen, nicht stilistische Präferenz – siehe taste-distillation für die Zahlen. Praktische Konsequenzen:

  • Der Generierungs-Prompt enthält keine Farbsprache. Fügen Sie hinzu: "Farbe: Keine. Neutral rendern. Die Grading wird nachträglich angewendet."
  • Halten Sie zwei separate Flags: --brief (was PASSIERT: Subjekt, Aktion, Ort) und --style-steer (wie es AUSSIEHT). Das Zusammenführen führt dazu, dass Stilwörter in die Szene ("Türkis" wird zu einem türkisen Objekt) und Subjektwörter in die Grading durchsickern.
  • Das Modell reagiert weitaus besser auf lokale, überprüfbare Regeln als auf globale. "Hintergründe rein schwarz und unbeleuchtet; Subjekte blasen in Richtung Weiß" funktioniert; "extremer Kontrast" nicht.

TAKES generieren, keine Shots

Die naheliegende Lesart von "den Rhythmus treffen" ist eine Generation pro Shot. Sie ist wirtschaftlich absurd. Eine Referenz mit durchschnittlich 0,78s/Shot bei einem Endpunkt mit einer 4-Sekunden-Untergrenze macht aus einem 10s-Stück 12 Aufrufe, 48 generierte Sekunden für 10 genutzte (21% Effizienz) und zwölf nicht zusammenhängende Clips, die zu etwas zusammengenäht werden, das als kontinuierlich gelesen werden soll.

Editoren drehen einen längeren Take und schneiden darin. Shots in ~5s-Takes gruppieren: 3 Aufrufe, 13 generierte Sekunden, 77% Effizienz, und aufeinanderfolgende Shots, die tatsächlich zueinander gehören, weil sie aus derselben Generation stammen.

Sagen Sie dem Modell, welche Form Sie wollen, oder es rendert einen langsamen, festgefahrenen Push und sechs Schnitte darin lesen sich wie ein Stottern:

"Gefilmt als EIN kontinuierlicher Take ohne harte Schnitte darin. Es wird in 6 Stücke von ungefähr 0,8s im Schnitt geschnitten, also müssen Bildausschnitt, Subjekt und Licht sich ständig ändern – jedes 0,8s-Fenster muss als eigener Shot für sich stehen können."

Schnittregeln

  • Neu encodieren, niemals Stream-Copy. Stream-Copy schneidet nur an Keyframes, was bei 0,78s die Schusslänge jede Grenze auf das nächste GOP rundet – und damit genau das zerstört, was die Pipeline bewahren soll.
  • Beim Ergänzen vorhandenen Filmmaterials dessen eigene Shot-Grenzen verwenden. Das Zerschneiden eines Basisvideos in zusammenhängende Stücke und deren Abspielen in Reihenfolge setzt einfach das Original wieder zusammen: Jeder "Schnitt" landet in der Mitte eines Shots und ist unsichtbar. Gemessen ergab eine 20-Shot-Montage nur 12 erkannte Schnitte. Erkennen Sie echte Grenzen und nehmen Sie jeden N-ten, so dass aufeinanderfolgende Auswahlen garantiert diskontinuierlich sind. Das verbesserte eine Schnittmessung von 1,29s auf 0,83s bei einem 0,78s-Ziel.
  • Schusslängen aus der Verteilung der Referenz abtasten, nicht aus ihrem Mittelwert, damit der Schnitt Rhythmusvarianz erbt, anstatt auf gleichmäßige Clips zu glätten.

Grading-Regeln

  • Direkte Messung schlägt eine eingebrannte LUT, wenn Sie den Clip haben: Messen Sie ihn, passen Sie seine L*-CDF an, wenden Sie Zonen-Chroma an. grade_clip_direct erreichte MAE 1,58 und Kontrast 34,0 gegenüber 34,7.
  • Verankern, nicht CDF-matching, wenn das Histogramm des Clips anders ist als das der Referenz. Das Erzwingen eines zu 68% schwarzen generierten Clips auf ein bewegtes Referenzhistogramm hob den gesamten Hintergrund aus dem Schwarz: Die Hintergrundbewahrung fiel auf 26,0% (CDF) gegenüber 69,0% (Anker), während MAE und Kontrast immer noch ausgezeichnet aussahen. Standardmäßig auf verankerten Ton.
  • Batch-Größe ist wichtig. Das Grading von 48 Frames auf einmal tötete den Prozess durch OOM; 6 ist sicher.

Wiederhergestelltes fal-Plattformverhalten

Diese Beobachtungen und Endpunkt-Beispiele stammen aus dem wiederhergestellten Workflow. Überprüfen Sie aktuelle Endpunkt-Metadaten erneut; sie sind keine Garantien für jede zukünftige Anbieterversion. Die gebündelten Graphvorlagen zeichnen die separat verifizierten Workflow-Eingaben auf, einschließlich expliziter generierter Audio-Steuerung.

Diese kosten echte Zeit zum Entdecken. Überprüfen Sie sie, bevor Sie einen Graphen entwerfen.

GrenzeDetail
Überhaupt kein 3D-Rendererfal hat image-to-3d, text-to-3d, 3d-to-3d und nichts anderes. Jeder 3d-to-3d-Endpunkt gibt ein weiteres Mesh aus. Es gibt keine Kategorie 3d-to-image/3d-to-video, daher kann eine gemünzte GLB nicht wieder in einen fal-Videographen eintreten. Rendern Sie lokal, dann verwenden Sie fal-ai/ffmpeg-api/images-to-video.
compose kann nicht überlagernfal-ai/ffmpeg-api/compose lehnt eine zweite Spur mit "Multiple video tracks are not supported" ab – und es zählt eine image-Spur als Videospur. Es sequenziert nur eine Videospur. Komponieren Sie lokal mit ffmpeg.
compose-Keyframes sind MillisekundenNichts in der Antwort sagt das. Ein in Sekunden eingereichter Lauf wird akzeptiert und gibt ein Video zurück, das 1000x zu kurz ist.
extract-frame bietet nur first/middle/lastKein beliebiger Zeitstempel. Verwenden Sie die drei als drei separate Konditionierungsbilder.
Keine Schleifen, keine String-Konkatenation im DAGDie Aufteilung pro Shot muss Knoten für Knoten erstellt oder lokal gehalten werden.
Kling 3.0 hat kein Referenz-zu-VideoDie v3-Linie ist nur Text/Bild/Bewegungssteuerung; Referenz-zu-Video lebt auf der o3-Linie: fal-ai/kling-video/o3/pro/reference-to-video.
Präfixe sind nicht einheitlichbytedance/*, tripo3d/*, meshy/*, minimax/*, openai/* haben kein fal-ai/-Präfix. kling-video, veo3.1, flux-*, hunyuan-3d, ffmpeg-api haben es.

Endpunktauswahl

SlotBesteWertalternative
Referenz→Videobytedance/seedance-2.5/reference-to-video (~$0,473/s @720p)fal-ai/kling-video/o3/pro/reference-to-video (~$0,112/s)
Bild→3Dfal-ai/hunyuan-3d/v3.1/pro/image-to-3d ($0,375, bis zu 8 Ansichten)tripo3d/h3.1/image-to-3d ($0,20)
Text→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 günstiger)
Teiltrennungfal-ai/hunyuan-3d/v3.1/part (nur FBX)tripo3d/tripo/segment
Text→Bildfal-ai/nano-banana-pro ($0,15 pauschal)fal-ai/flux-2-pro ($0,03/MP)

Seedance ist ~4x Kling o3's Preis für die gleichen 5 Sekunden. Es verdient das bei Multi-Referenz-Treue (bis zu 50 gemischte Bild/Video/Audio-Referenzen) und verdient es nicht, wenn es auf einem einzelnen Standbild konditioniert.

Modell-IDs und Preise ändern sich. Überprüfen Sie fal.ai/models, bevor Sie einen von ihnen versprechen.

Der 3D-Zweig

python mint3d.py --genre <name> --from-stills 4 --retopo --render
python mint3d.py --genre <name> --prompt "ein rissiger Chrom-Visier" --render
  • Generieren Sie zuerst eine saubere Platte; heben Sie nicht von Referenz-Standbildern ab. Die angegebene Eingabeanforderung des Endpunkts ist einfacher Hintergrund, einzelnes Objekt, Objekt >50% des Bildausschnitts. Referenzaufnahmen sind das Gegenteil davon – Collagen, Weitwinkelaufnahmen, mehrere Subjekte, eingebrannte Grafiken – und sie erzeugen skulptiertes Rauschen. Text → Einzelobjekt-Platte → Mesh kostet ~$0,15 extra und ist der Unterschied zwischen einem brauchbaren Mesh und einem verworfenen.
  • Multi-View ist nach Winkeln benannte Felder, keine Liste. input_image_url (vorne, erforderlich), dann back_image_url, left_image_url, right_image_url, left_front_image_url, right_front_image_url, top_image_url, bottom_image_url. Es gibt kein input_image_urls und kein multi_view-Flag – das Erfinden davon degradiert jede Münze auf Single-View, während es funktioniert. Ein falsches Winkel-Label ist schlimmer als das Weglassen der Ansicht, weil das Modell ihm vertraut.
  • Adressieren Sie die GLB per Schlüssel, nicht nach Position. Die Antwort trägt ein thumbnail-PNG und einen model_urls-Block neben model_glb; das Nehmen der ersten URL funktioniert nur, bis die Schlüssel neu angeordnet werden, und ein Vorschau-PNG wird problemlos heruntergeladen – nichts schlägt fehl, bis Blender sich weigert, es zu öffnen.
  • Fordern Sie PBR-Karten an. Ohne sie leuchtet das Mesh wie bemalte Pappe.
  • Retopologisieren Sie, wenn jemand es bearbeiten oder riggen wird. Generierte Meshes sind dicht und chaotisch.
  • Rendern Sie lokal, um den Kreislauf zu schließen. Sobald ein Drehteller Frames ist, ist es Filmmaterial, und jede nachgelagerte Stufe verarbeitet bereits Filmmaterial – Graden, Schneiden, als Element einblenden oder als Konditionierungsreferenz hochladen. Verwenden Sie Blender, wenn eine Binärdatei im PATH ist; behalten Sie einen leichtgewichtigen Software-Rasterizer als Standard, weil ein kopfloser GL-Kontext das mit Abstand häufigste ist, was in einem Container fehlt, und ein Renderer, der nur auf einer Workstation funktioniert, ist kein Teil einer Pipeline.

Überprüfen, dann glauben

Jede andere Stufe behauptet ein Ergebnis. Überprüfen Sie es, und überprüfen Sie die Verteilungsform, nicht nur Momente:

  • background – Anteil des Frames unter L*10 im Vergleich zur Zahl des Pakets. Vergleichen Sie mit der Referenz, nicht mit dem Quellclip: Eine generierte Quelle mit 68% Schwarz ist schwärzer als jede Referenz in einem 24–55% Band, also verlangt "die Schwarztöne der Quelle bewahren" das Falsche und entschuldigt gleichermaßen ein angehobenes Grading.
  • chroma_mae – Pro-Zone a*/b*-Fehler, unter Verwendung des Medians (passend dazu, wie die Ziele des Pakets gemessen wurden; ein Mittelwert vergleicht eine schiefe-sensitive Statistik mit einer robusten und meldet eine Definitionsdiskrepanz als Fehler).
  • contrast / black_point / white_point
  • banding – Leere L*-Histogramm-Bins zwischen belegten. Das Zählen aller leeren Bins funktioniert nicht: Ein legitimerweise dunkler Clip hat leere Highlight-Bins.
  • cadence – Erkannte mittlere Shotlänge im Vergleich zur Referenz.

Achten Sie auf die Einheitenfalle: OpenCV ändert die Lab-Konvention mit dem dtype. Bei float32 ist L* 0–100 und a*/b* sind vorzeichenbehaftet; bei uint8 ist L* 0–255 und a*/b* sind +128 vorgespannt. Das Mischen meldet Chromafehler in den Hunderten.

Vollständige Kette

python pipeline.py --genre <name> --refs a.mov b.mov \
  --brief "was passiert" --duration 12 \
  --base-video existing.mp4 --out out/FINAL.mp4

mint → distill → (mint3d) → apply → forge → verify. Stufen 1–3 sind gecached, sodass das Iterieren über Briefs nie etwas neu misst. --dry-run simuliert jeden Netzwerkaufruf: Der Plan, die Prompts, das Spurlayout und das Manifest werden trotzdem getestet.

Anti-Patterns

Nicht tunWarum
Eine Generation pro Shot21% Effizienz, 12 nicht zusammenhängende Clips
Farbe in den Prompt setzenGemessen nicht funktionierend; drückt weg von der neutralen Basis, die die LUT will
Stream-Copy der SchnitteNur Keyframe-Grenzen zerstören den Sub-Sekunden-Rhythmus
Ein Basisvideo zusammenhängend schneidenSetzt das Original wieder zusammen; jeder Schnitt unsichtbar
Vertrauen, dass compose überlagertEs kann nicht; es lehnt die zweite Spur ab
Sekunden an compose sendenStill 1000x zu kurz
Nur auf MAE ausliefernFügen Sie die Hintergrundanteil-Prüfung hinzu

Entliehenes Filmmaterial trägt die UI der Aufnahme-App

Der mit Abstand schlimmste Defekt in einem ausgelieferten Schnitt: Das fertige Video enthielt den Like-Button, den View-Zähler und den Kommentar-Button von jemand anderem, weil die Basis

…

[gekürzt für die Übersetzung]

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.

Verwandte Skills