Interior Reels
Verwandle rohe Innenarchitektur-Clips in 9:16-Reels, die hochgeladen werden können. Das Skript ist nur ein Werkzeug. Redaktionelle Entscheidungen (welcher Shot, welcher Teil, welche Reihenfolge) sind Aufgabe von Claude und müssen auf dem Ansehen der Bilder jedes Clips basieren, nicht auf Vermutungen aus dem Dateinamen.
SKILL = Ordner dieses Skills. Alle Skripte: python3 SKILL/scripts/<name>.py.
Vor dem Start (einmal pro Sitzung)
Führe bash SKILL/setup.sh aus. Wenn es FEHLER gibt, behebe sie zuerst. Lies SKILL/brand.json für Studionamen, CTA, Logo, Standardmuster und Kundenpräferenzen.
Absolute Regeln (dürfen nicht verletzt werden)
- Text und Logo sind nicht Aufgabe des Assistenten. Text und Logo werden vom Kunden in der GUI festgelegt und in
<ordner>/_edit/overlay.jsongespeichert.render.pyliest diese Datei und überschreibt das gesamtetextundlogoim Plan. Schreibe keintextoderlogoinplan.json, frage den Kunden nicht nach dem Textinhalt und füge keinen eigenen Text zuoverlay.jsonhinzu (einschließlich CTA ausbrand.json), es sei denn, der Kunde fordert dies an. - Muster steuern nur Schnitte und Darstellung. Aus dem Muster übernommen werden: Slot-Reihenfolge, Dauer, Bewegung, Übergänge und Grading.
text,beispiel_textundlogoim Muster sind nur Notizen aus dem Referenzvideo und werden nicht gerendert. - Text oder Logo per Chat ändern =
overlay.jsonbearbeiten. Wenn der Kunde fordert, Textinhalt, Schriftart, Position, Einblendzeitpunkt, Größe, Farbe oder Logo zu ändern, bearbeite<ordner>/_edit/overlay.json(Format inPLAN.mdAbschnittoverlay.json) und rendere neu. Die GUI lädt diese Datei nach deiner Antwort neu. Schriftarten nur ausSKILL/fonts/. Liste der Schriftarten, Kategorien, Merkmale und Verwendungen findest du infonts/fonts.json; wähle daraus entsprechend der vom Kunden gewünschten Stimmung aus. Unterschiedliche Schriftart oder -größe pro Zeile (z.B. „zweite Zeile in Great Vibes”) wird übertext[].pro_zeilegesteuert. Logo nurschwarz(brand/logo.png) oderweiß(brand/logo-weiss.png). Studiendaten (Name, Webseitekeziakarin.com, Instagram@keziakarin.studio) bleiben ausbrand.json. - Audio ebenfalls aus
overlay.json(audio). Wähle oder ändere keine Musik selbst und schreibe keinmusikin den Plan. Wenn der Kunde per Chat (Lied wechseln, Lautstärke, Startpunkt, Final mit/ohne Musik, Beat-Sync) dies fordert, bearbeiteaudioinoverlay.json(Format inPLAN.md). Musik nur aus Audio des Musterleitfadens (patterns/audio/) oder der Studiobibliothek (brand/musik/). Erinnere den Kunden daran, dass Referenzaudio anderen Personen gehört, wenn sie es im Finale verwenden möchten. - Wenn
overlay.jsonnoch nicht existiert, läuft der Render trotzdem ohne Text und Logo aus dem Muster. Teile dem Kunden mit, dass Text und Logo im GUI-Bereich Details ausgefüllt werden können. - Lösche oder ersetze
overlay.jsonnicht ohne Aufforderung. Diese Datei ist die Wahl des Kunden. - Verwacklungen werden automatisch behandelt.
render.pymisst Verwacklungen jedes Segments und stabilisiert selbst ("stabil": "auto", Standard). Füllestabilnur, wenn es einen Grund gibt:trueerzwingt Stabilisierung,falsedeaktiviert (z.B. bei bewusster Handbewegung). Lies die Tabelle „Stabil” im Render-Log:! Restverwacklung sichtbar= Ergebnis prüfen;! FEHLGESCHLAGEN= Render gestoppt, wähle einen anderen Bereich oder Clip für dieses Segment. Gib bei der Überprüfung trotzdemverwacklungin_review/*.jsonfür Teile ein, die deutlich verwackelt/unscharf sind: Dieser Bereich wird beim Render nicht verwendet, wenn erstartverschiebt. - Wähle brauchbare Teile aus, verwende nicht alle Sekunden des Clips. Beim Rendern analysiert
render.pyautomatisch die Clips (_qualitaet/) und markiert dunkle, leere (kein Objekt) oder unscharfe Teile. Segmente, die mehr als 0,3 Sekunden schlechte Teile enthalten, werden abgelehnt und erhalten einenstart-Vorschlag. Pflicht: Verschiebestartzum Vorschlag, oder reduziere diedauer, oder tausche den Clip. Verwende--ignoriere-qualitaetnicht ohne Benutzererlaubnis. - Dauer richtet sich nach dem Footage, nicht nach dem Muster. Wenn der gute Bereich des Clips kürzer ist als der Musterslot, kürze diesen Slot. Die gesamte Reel-Länge darf kürzer sein als die
gesamt_dauerdes Musters. Fülle keinen Slot mit schlechtem Material. - Sieh dir Frames vor dem Finale an. Vorschläge aus der Analyse müssen durch Ansehen der Frames in diesem Bereich (Raster oder Vorschau) überprüft werden. Die Analyse weiß nicht, ob das Hauptobjekt gut ist oder ob dieser Teil der richtige Auftakt ist.
- Überprüfe zuerst alle Rohclips. Führe
scripts/review_material.py <material-ordner>aus, sieh dir JEDES Blatt in_review/an, bis es fertig ist, und fülle dann das JSON jedes Clips (angesehen,verwacklung,geeigneter_bereich,entscheidung) aus.render.pylehnt das Rendern ab, wenn Clips nicht überprüft wurden oder Segmente außerhalb vongeeigneter_bereichliegen (außer mit--ignoriere-qualitaet). - Überprüfe Text nach dem Rendern. Die Textposition wird vom Kunden gewählt (3x3-Raster). Nach dem Rendern sieh dir
*_text<N>_check.jpgan (rotes Quadrat = ungefährer Textbereich). Wenn Text Gesichter oder Hauptobjekte verdeckt, informiere den Kunden und schlage eine andere Position vor. Ändere die Position nicht selbst ohne Zustimmung. - Kundenauswahlclips aus
<ordner>/_edit/clips.json. Lies diese Datei, bevor du einen Plan erstellst (Format inPLAN.mdAbschnittclips.json).auftakt= Clip des ersten Segments,abschluss= Clip des letzten Segments,vermeiden= darf in keinem Segment verwendet werden. Die Kundenauswahl hat Vorrang vorshot_artdes Musters; wenn die Shot-Art des Clips vom Musterslot abweicht, informiere den Kunden. Die besten Sekunden innerhalb des ausgewählten Clips werden weiterhin vom Assistenten gewählt.render.pylehnt Pläne ab, die gegen diese Datei verstoßen (kann nicht mit--ignoriere-qualitaetumgangen werden). Ändere oder löscheclips.jsonnicht; diese Datei wird von der GUI geschrieben.
Ablauf: Clip in Reel bearbeiten
- Sammle Informationen. Pflicht: Clip-Ordner. Optional: Muster und Audiodatei (Sprache/Voiceover, mp3/m4a/wav). Text und Logo sind bereits in
_edit/overlay.json, frage nicht danach. Frage nur nach wirklich fehlenden Dingen, maximal 1 Frage. Wenn eine Audiodatei vorhanden ist, tragesprachein den Plan ein (siehePLAN.md). Sprache wird nicht vom Skill aufgenommen: Der Benutzer muss die Audiodatei bereitstellen. Vergleiche die Anzahl der Clips im Ordner mitmin_clipsdes Musters. Wenn es weniger sind, informiere den Kunden und schlage ein Muster mit kleineremmin_clipsoder zusätzliche Clips vor. Fortsetzung ist trotzdem erlaubt, wenn der Kunde zustimmt. - Scannen. Führe
scan_clips.py <ordner>aus, um<ordner>/_scan/zu erstellen. - Sieh dir JEDES Raster
_scan/<clip>.jpgmit dem Ansichts-Tool an. Notiere für jeden Clip in einer Tabelle: Shot-Art (Weit / Medium / Detail / Walk-Through / Schwenk), Raum, Qualität (verwackelt, dunkel, zu hell, Personen oder unordentliche Gegenstände), beste Sekunden (sekunde_frameinmanifest.jsonordnet Rasterkästchen Sekunden zu) und Kamerabewegungsrichtung. Fahre nicht fort, bevor alle Raster angesehen wurden. - Wähle Muster aus
SKILL/patterns/*.json, entsprechend der Anfrage oder Standard. Bei automatischer Auswahl wähle dasjenige, dessengeeignet_fueram besten zur Anzahl und zum Inhalt der Clips passt. Liestrainings_notizendes gewählten Musters (falls vorhanden) und wende die daraus gelernten Erkenntnisse beim Füllen der Slots an. - Fülle Slots. Wähle für jeden Slot in
ablaufeinen Clip und eine Startsekundestart, die zushot_artpasst, befolge die unten stehenden Story-Regeln. Kopieredauer,bewegung,uebergang_ein,effekt_ein,effekt_aus,abdunkelnund Grading aus dem Muster. Kopiere auchrahmenundendein den Plan, änderelogo_slotinlogo_segment(Index des Segments, in dem sich dieser Slot befindet), und fülleauftakt_segmentmit dem Index des Segments des ersten Text-Slots des Musters (text[0].slot), damit der Auftakttext aus der GUI in diesem Slot erscheint. Wenn das Mustertext[0].dauerhat, schreibe auchauftakt_dauer_text(Zahlenwert, Sekunden) in den Plan – dies stellt sicher, dass der Auftakttext lange genug angezeigt wird, um lesbar zu sein. Wenn das Mustertext[0].bis_slothat, schreibe auchauftakt_textin den Plan:start,animation,fade,auswerden austext[0]kopiert, undbis_segment= Index des Segments von Slotbis_slot. Kopiere keinen Text und kein Logo. Schreibe<ordner>/_edit/plan.jsongemäßSKILL/PLAN.mdmit absoluten Pfaden.- Muster mit
rahmenLetterbox: bevorzuge Querformat-Clips. Hochformat-Clips werden in der Mitte auf ein 16:9-Band zugeschnitten; wenn sie trotzdem verwendet werden müssen, informiere den Kunden. - Wiederverwendung von Clips ist erlaubt, wenn die Anzahl der Clips geringer ist als die Anzahl der Slots: Die
start-Bereiche im selben Clip müssen mindestens 1 Sekunde auseinander liegen und dürfen nicht in zwei aufeinanderfolgenden Segmenten sein. Der Render gibt eine Warnung aus, wenn diese Regel verletzt wird. - Wenn das Muster
noch_nicht_unterstuetzthat, erwähne diesen Effekt gegenüber dem Kunden vor dem Rendern. - Bearbeitungsmodus aus der GUI (genannt in der Nachricht „Bearbeitung starten”):
referenz_folgen(Standard): Kopiere den Musterablauf exakt, entferne, tausche oder kombiniere keine Slots. Overlay-Texte sind bereits entsprechend dem Muster-Slot nummeriert (wann), und das Logo verwendetlogo_segment, daher muss die Segmentreihenfolge mitablaufübereinstimmen. Wenn Clips fehlen, verwende Clips wieder (Regel oben), entferne keine Slots.benutzerdefiniert: Das Muster ist nur der Ausgangspunkt für den Stil (Grading, Übergänge, Effekte, Rahmen). Dauer und Anzahl der Segmente können an die Clips angepasst werden. Schreibe"modus": "benutzerdefiniert"in den Plan, damit Referenzaudio auf die Beats synchronisiert wird.
- Muster mit
- Vorschau. Führe
render.py <plan> --previewaus und sieh dir dann*_preview_check.jpgan. Prüfe: sinnvolle Reihenfolge, keine schlechten Shots, Text vom Overlay lesbar und verdeckt keine Hauptobjekte, keine seltsamen eingefrorenen Frames. Korrigiere den Plan bei Bedarf und wiederhole den Vorgang. - Finale. Führe
render.py <plan>aus, sieh dir*_check.jpgnoch einmal an und melde dann den Videopfad zusammen mit einer 1-2-sätzigen Zusammenfassung der Shot-Reihenfolge.
Story-Regeln für Innenarchitektur
- Die ersten 3 Sekunden entscheiden, ob der Zuschauer weiterscrollt. Der Auftakt muss der stärkste Shot sein: hell, gerade, Raum vollständig sichtbar.
- Folge dem Grundriss. Raumreihenfolge vom Eingang zu öffentlichen Bereichen (Wohnzimmer, Esszimmer, Küche) dann zu privaten Bereichen (Schlafzimmer, Badezimmer). Springe nicht hin und her zwischen Räumen.
- Wechsle die Maßstäbe ab. Weit, dann Detail, dann weit. Zwei aufeinanderfolgende Weit-Shots aus verschiedenen Räumen sollten besser mit einem Übergang verbunden werden, nicht mit einem Schnitt.
- Bewegungsrichtung fortsetzen. Schwenk nach links wird mit einem Shot verbunden, der sich nach links bewegt oder einem Übergang
slideleft/smoothleft. Vermeide entgegengesetzte Bewegungsrichtungen an einer Verbindungsstelle. - Nimm stabile Teile. Wähle Sekunden in der Mitte der Bewegung, nicht wenn die Kamera startet oder stoppt. Überspringe verwackelte, unscharfe Teile oder solche mit Personen.
- Abschluss verwende den schönsten Shot, der einen leeren Bereich für CTA und Logo hat.
- Text: wird vom Kunden über
overlay.jsongesteuert. Wenn um Rat gebeten, schlage maximal 6 Wörter pro Text vor. - Weniger Clips als Slots: Entferne zuerst
detail-Slots. Mehr Clips: Verwende nur die besten, nicht alle Clips müssen verwendet werden. - Querformat-Clips: Verwende
"fuellung": "unscharf", wenn die Komposition wichtig ist. Wenn das Hauptobjekt in der Mitte ist, reichtzuschnitt.
Ablauf: Überarbeitung nach Ergebnis
Gilt, wenn die Kundennachricht mit [Überarbeitungsmodus: ...] endet (GUI fügt dies hinzu, wenn _edit/plan.json bereits existiert). Ziel: Verstehe die Überarbeitungsabsicht, bevor du etwas änderst, da das erneute Rendern lange dauert. Der Kunde klickt nur auf Schaltflächen, daher MÜSSEN alle Fragen über den fragen-Block gesendet werden, nicht als freier Text.
- Neue Überarbeitungsnachricht (keine Antwort, kein „Ausführen”):
- Lies
plan.jsonund sieh dir das letzte*_check.jpg-Ergebnis an. Ändere keine Dateien. - Sende eine Runde: maximal 4 Fragen. Inhalt sind Fragen zur Absicht (welcher Shot, wie viel, welcher Stil) und maximal 2 Erkenntnisse aus dem Ergebnis (z.B. dunkler Shot, Text verdeckt Objekt), jeweils mit Optionen wie „Beheben” / „Belassen”.
- Jede Frage hat 2-4 kurze Optionen (≤ 6 Wörter), genau eine Option mit
"empfohlen": true."multi": truenur für Auswahlen, die mehr als eine Option zulassen (z.B. welche Shots ersetzt werden sollen). Füge keine Option „Sonstiges” hinzu; die GUI bietet dies bereits. - Schreibe maximal 1 einleitenden Satz, dann den Block, dann stoppe und warte.
- Lies
- Nachricht beginnt mit
Antwort:= Antwort auf eine Runde. Wenn immer noch etwas unklar ist und dies die erste Runde ist, sende eine zweite Runde (gleiche Regeln). Danach (oder wenn alles klar ist) sende einenzusammenfassung-Block: Liste der vorzunehmenden Änderungen, 1 Punkt pro Änderung. Stoppe und warte. Direkt ausführen: ...= verwende dieempfohlen-Optionen für alle letzten Fragen und führe dann ohne Zusammenfassung aus.Entsprechend der Zusammenfassung ausführen.= führe genau den Inhalt der letzten Zusammenfassung aus (Plan/Overlay bearbeiten, Vorschau, Finale) und melde dann wie gewohnt.- Freitext-Nachricht bei geöffneter Karte = freie Antwort. Behandle sie wie
Antwort:. - Maximal 2 Frage-Runden pro Überarbeitung. Anfragen, die bereits sehr klar sind (z.B. „Schriftart auf Great Vibes ändern”), erfolgen trotzdem über 1 kurze Runde (nur Erkenntnisse oder 1 Bestätigungsfrage), dann Zusammenfassung.
- Nachricht „Auswahlclips geändert” (von GUI gesendet, nachdem der Kunde Auftakt-, Abschluss- oder zu vermeidende Clips geändert hat) = normale Überarbeitung: Lies die neueste
_edit/clips.jsonund wende sie auf den Plan über Schritte 1-4 oben an (absolute Regel 13).
Blockformat (gültiges JSON, ein Block pro Antwort):
```fragen
{"art": "frage", "fragen": [
{"id": "f1", "titel": "Welcher Shot soll ersetzt werden?", "multi": true,
"optionen": [{"label": "Shot 2 (Küche)", "empfohlen": true}, {"label": "Shot 4 (Schlafzimmer)"}]},
{"id": "f2", "titel": "Erkenntnis: Shot 3 etwas dunkel", "multi": false,
"optionen": [{"label": "Beheben", "empfohlen": true}, {"label": "Belassen"}]}
]}
```
```fragen
{"art": "zusammenfassung", "zusammenfassung": ["Shot 2 durch Küchenclip Sekunde 4 ersetzt", "Shot 3 aufgehellt"]}
```
Ablauf: Stil-Training
Gilt, wenn die Nachricht mit [Trainingsmodus: ...] endet (vom Reiter Stil-Training in der GUI gesendet). Ziel: Vorhandene Muster anhand ihrer Beispielvideos erneut testen, nicht passende Stellen melden und das Muster mit Zustimmung des Kunden korrigieren. Alle Fragen MÜSSEN über den fragen-Block erfolgen (Format in „Ablauf: Überarbeitung nach Ergebnis”).
- Eingabe aus der GUI-Nachricht: Mustername, Modus (
referenz_folgen/benutzerdefiniert) und Clip-Ordner. - Material. Lies
SKILL/patterns/<muster>.jsoneinschließlichtrainings_notizen. Beispielvideo =skill/beispiel-video/<video_beispiel>(Ordnerbeispiel-videoneben dem Skill-Ordner). Referenzblatt: Verwende vorhandenesSKILL/_ref/<name>/(suche nach Mustername oder dem Dateinamenvideo_beispielohne Erweiterung; siehefilmstreifen.jpg/shots.jpg). Wenn nicht vorhanden, führeanalyze_ref.py <video_beispiel> --name <muster> --out <ordner>/_training/<muster>/refaus. - Arbeitsordner =
<ordner>/_training/<muster>/. Berühre keine Dateien außerhalb dieses Ordners. 4... (Fortsetzung folgt in der vollständigen Datei)