--- name: noti-youtube-edit description: Build a Vietnamese landscape 16:9 YouTube video (1920×1080) with HyperFrames (HTML/CSS/GSAP → MP4), keeping the Noti.vn/GĐT branding inherited from noti-tiktok-vn. Supports 2 modes - A) talking-head + motion graphics (full-frame face, camera move to PiP, karaoke captions) and B) full-text explainer (text scenes + slides/charts, no face on screen). Includes the "camera move" technique (animate the wrapper, never the video), the fix for Vietnamese text losing diacritics, and picking sound effects itself by content + timestamp from the `assets/sound-effects/` library (tag `hay-dung`) and wiring them into the video (mandatory on every video). Use when the user brings a Vietnamese clip/transcript and wants a landscape YouTube video that keeps the dark fintech blue branding. --- # YouTube Edit 16:9 - the Noti.vn / GĐT standard ## ⚖️ STYLE DESIGN - PRIORITY RULE (read this first) If the edit prompt contains a **"STYLE DESIGN (BẮT BUỘC TUÂN THỦ 100%)"** section: the palette, fonts and tone in that section **COMPLETELY REPLACE** every color/font/branding rule in this skill (including "dark fintech blue", the GĐT hex values, the default gradient...). Keep only: animation technique, layout, cutting rhythm, render workflow, the bug fixes. Illustrations generated through /api/illustrations must pass the correct styleId in the prompt. NO Style Design section → use the skill's default branding. If the edit prompt ALSO contains a **"PHONG CÁCH DỰNG"** (video style) section: that section **WINS over this skill** for ALL visual and motion language - materials, transitions, camera moves, effects. This skill then keeps only PROCESS: step order, cutting, captions/keys, draft→final, QC. Do not mix the skill's default visuals into the video style - half-and-half is exactly the failure this rule exists to prevent. This skill builds **landscape 16:9** YouTube videos with HyperFrames (HTML/CSS/JS + GSAP → MP4). Architecture: face cam + overlay beats + camera move/PiP; the **branding** is inherited from `noti-tiktok-vn` (Noti.vn dark fintech blue). It differs from `noti-tiktok-vn` only in the **landscape 16:9 frame** instead of vertical 9:16. **Project structure:** scaffold with `npx hyperframes init`, then follow the layout in the `video-pipeline` skill (`index.html` + `compositions/` + `assets/` + `renders/` + `hyperframes.json` + `meta.json`). The Noti.vn branding (colors/fonts/glass) is written out in the STYLE section below, and the SFX timestamp wiring in the SOUND EFFECT section - you do not need an example project for either. (`video-projects/sapo/` and `video-projects/mcp-tiktok-2/` are example projects on the author's machine, NOT shipped with the repo - `video-projects/` is gitignored.) > ⚡ Read this whole file before building. Every ⚠️ section is a bug already hit & already fixed - do NOT repeat it. --- ## ROLE Video editor working in HyperFrames. Compose HTML/CSS/JS, animate with GSAP, render a **landscape 1920×1080** MP4. Noti.vn branding. ## TWO MODES (pick by the user's input) - **Mode A - Talking-head + motion graphics** (the default when the user brings a single clip of someone speaking): the face video runs full-frame in the background, animated text + karaoke captions overlay on top, and a **camera move** shrinks the face into a PiP whenever the graphics take the stage. (`noti-tiktok-vn` style, landscape frame.) - **Mode B - Full-text explainer** (when the user brings a transcript + slides/images/figures and there is NO face on screen): N text scenes + slide/chart scenes, every piece of text a real HTML element. (≈ the `noti-tiktok-full-text` logic but in a landscape layout.) Ask the user if it is unclear. Both modes SHARE: branding, font fixes, transcription, **SFX (mandatory)**, render contract, environment. --- ## OUTPUT SPEC (16:9) - **1920×1080**, **30fps** (60fps if there is a lot of kinetic typography / fast camera moves). - ⚠️ YouTube safe zone (DIFFERENT from TikTok - there is no button column on the right): - **Title-safe**: important text inside the central **1728×972** area (leave ~5% on each edge). - **Bottom ~90px**: the scrubber (progress bar) + timestamp appear on hover → do NOT put important text/captions below `y > 990`. Put captions at `bottom: ~110–150px` (lower third), NOT flush with the bottom. - **Top right corner**: the YouTube "cards" icon → leave ~120×120px clear if it is used. - **End screen (last 20s)**: if you plan to use YouTube's end screen (subscribe/suggested video), leave those slots clear (~right corner + center-right) for the last 20s. If you are NOT using the native end screen, ignore this. - Exploit the width: **lower third**, **side panel**, **split screen**, **corner PiP dock** - landscape is wide, so prefer horizontal layouts over vertical stacks. - Each scene = its own HTML sub-composition (`