feat(outro): parameterized outro system for @derblasseschimmer Reels#68
Open
shelynx79 wants to merge 2 commits into
Open
feat(outro): parameterized outro system for @derblasseschimmer Reels#68shelynx79 wants to merge 2 commits into
shelynx79 wants to merge 2 commits into
Conversation
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 <noreply@anthropic.com>
There was a problem hiding this comment.
4 issues found across 4 files
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
make_outro.py: - Audio now trimmed at cutpoint with 30ms fade at the cut boundary; outro is silent (padded with silence), matching the hard rule - Added has_audio() guard so videos without an audio stream no longer crash during filter graph resolution check_luminance.py: - Added check=True to ffprobe call so failures raise CalledProcessError instead of crashing with JSONDecodeError - Replaced deprecated tempfile.mktemp() with NamedTemporaryFile to eliminate TOCTOU race condition Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
helpers/make_outro.py— one-command outro pipeline (7 automated steps: frame extract →ffprobeluminance → config inject → HyperFrames PNG-sequence render → static still composite → final MP4 assembly with 30ms audio fade → 3 verification frames). Replaces ~40 min of manual iteration per Reel with a single command.helpers/check_luminance.py— standalone luminance checker; outputs text/veil color strategy for any frame or video timestamp viaffprobe signalstats(no PIL dependency).templates/outro/outro_template.html— parametrized GSAP/HyperFrames template; readswindow.__OUTRO_CONFIG__injected at render time; auto-selects text and veil colors from measured luminance (L >65 → espresso on cream; L <40 → alabaster on espresso; mid → white on dark).SKILL.md— 3 new anti-patterns documented from this session: nozoompanon stills (integer stepping = stutter), always measure luminance before overlay design, veil easing must bepower2.outnotpower2.in.Usage
Content JSON schema:
{ "stage1": { "kicker": "ZUM MERKEN", "context": "Merk Dir das für Deine", "hero": "Wunschliste" }, "stage2": { "kicker": "BALD BEI MIR", "context": "Drei neue Skin Tint Balms", "hero": "im direkten / Vergleich", "handle": "@derblasseschimmer" }, "veil_opacity": 0.88, "outro_duration": 7.0 }Test plan
🤖 Generated with Claude Code
Summary by cubic
Adds a one-command outro pipeline for
@derblasseschimmerReels that auto-detects luminance, chooses text/veil colors, renders ahyperframesoverlay, and assembles the final MP4. This standardizes the outro look and removes ~40 minutes of manual work per Reel.New Features
helpers/make_outro.py: 7-step pipeline (frame extract →ffprobeluminance → config inject →hyperframesPNG sequence → still composite/nozoompan→ MP4 with audio fade → verify frames).helpers/check_luminance.py: CLI to measure luminance for an image or video time; prints recommended text/veil strategy.templates/outro/outro_template.html: parameterizedgsap/hyperframestemplate readingwindow.__OUTRO_CONFIG__; luminance-aware colors andpower2.outveil easing.SKILL.md: adds three anti-patterns (nozoompan; measure luminance first; usepower2.outfor veil).Bug Fixes
has_audio()guard so videos without audio don’t crash.ffprobenow runs withcheck=True; replaced deprecated temp file usage withNamedTemporaryFileto avoid race conditions.Written for commit 265a79b. Summary will update on new commits.