From 18af61f803ac674b2fa1e208d60d73513fbf79fe Mon Sep 17 00:00:00 2001 From: Florentine Flach Date: Tue, 16 Jun 2026 18:30:28 +0200 Subject: [PATCH 1/2] feat(outro): add parameterized outro system for @derblasseschimmer Reels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduces a one-command editorial outro pipeline that produces consistent, brand-accurate results without manual iteration. Eliminates ~40 min of per-Reel trial-and-error by automating luminance detection, color selection, and HyperFrames rendering. New files: - helpers/make_outro.py — 7-step wrapper: frame extract → ffprobe luminance → config inject → HyperFrames PNG-sequence render → still composite (no zoompan) → final MP4 assembly with 30ms audio fade → verify frames - helpers/check_luminance.py — standalone luminance checker for manual use - templates/outro/outro_template.html — parametrized GSAP template; reads window.__OUTRO_CONFIG__, auto-selects text/veil colors from luminance (HELL >65 → espresso on cream; DUNKEL <40 → alabaster on espresso; mid → white) SKILL.md: three new anti-patterns derived from this session: - zoompan on static stills → integer stepping = stutter; use static still + GSAP veil - Never design overlay colors without measuring luminance first - Veil easing must be power2.out (never power2.in — starts too slowly) Co-Authored-By: Claude Sonnet 4.6 --- SKILL.md | 3 + helpers/check_luminance.py | 104 ++++++++++++ helpers/make_outro.py | 252 ++++++++++++++++++++++++++++ templates/outro/outro_template.html | 198 ++++++++++++++++++++++ 4 files changed, 557 insertions(+) create mode 100644 helpers/check_luminance.py create mode 100644 helpers/make_outro.py create mode 100644 templates/outro/outro_template.html diff --git a/SKILL.md b/SKILL.md index fa4b776d..605ae03f 100644 --- a/SKILL.md +++ b/SKILL.md @@ -320,3 +320,6 @@ Things that consistently fail regardless of style: - **Editing before confirming the strategy.** Never. - **Re-transcribing cached sources.** Immutable outputs of immutable inputs. - **Assuming what kind of video it is.** Look first, ask second, edit last. +- **`zoompan` für statische Outro-Hintergründe.** Ganzzahl-Stepping verursacht sichtbares Ruckeln. Statisches Still verwenden — Bewegung kommt vom GSAP-Veil in HyperFrames. +- **Overlay-Design ohne vorherige Luminanzmessung.** Nie raten. Immer `ffprobe signalstats` oder `check_luminance.py` vor dem ersten Farbentscheid ausführen. Konsequenz: cremefarbener Text auf hellem Footage (unsichtbar). +- **Veil-Animation mit `power2.in`.** Startet träge — "langweilig fürs Auge". Immer `power2.out` für den Cream-Veil (sofort merklich hell, dann sanft auslaufen). Dauer 3.5s, nicht 7s. diff --git a/helpers/check_luminance.py b/helpers/check_luminance.py new file mode 100644 index 00000000..7efbbf3e --- /dev/null +++ b/helpers/check_luminance.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 +""" +check_luminance.py — measure average luminance of a video frame or image. + +Usage: + uv run python helpers/check_luminance.py + uv run python helpers/check_luminance.py