All skills
heygen-com avatar

/embedded-captions

@0a5e3c7
by HeyGenheygen-com/hyperframes55k stars
4,998

Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet `anchor` rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.

Requires /hyperframes

Use this Skill: https://skilld.dev/gh/heygen-com/hyperframes/embedded-captions

This session only. Nothing lands on disk.

referencesscene-types.md

≈1.6k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Scene Types — picking the right template

The three templates differ in one thing: what surface (if any) the text physically sits on. Pick by reading the scene, not by the genre label.

wall-embed — "text is printed on a real surface"

Original Memory Wall render used this. Text uses perspective transform + mix-blend-mode: overlay to look like it was silk-screened onto a wall behind the subject. The illusion is strong when it works and completely broken when forced.

Four conditions — ALL must hold

  1. A flat or near-flat surface exists somewhere in the frame, larger than the caption block. Good: acoustic foam panel, painted wall, door, stone facade, large backdrop cloth, blackboard. Bad: bookshelf (3D depth + decorative items), mic shield (too small), window (transparent, content behind it shifts), brick wall with mortar patterns (competes).
  2. The surface is at a non-zero angle to the camera. Perspective is what sells "embedded". If the wall is perfectly parallel (0° rotation relative to camera), pasting rotateY:0 text onto it looks like a sticker, not embedded. Memory Wall's foam wall was tilted ~13° — perfect. A wall directly behind a centered frontal subject usually has no exploitable angle.
  3. The surface is mid-luminance. Overlay blend neutralizes mid-tones — text keeps contrast against a mid-grey wall. On near-black surfaces (luminance < 60), overlay makes text vanish → switch to mix-blend-mode: screen. On near-white surfaces (> 180), overlay also fails → switch to mix-blend-mode: normal with opaque color.
  4. The surface has no competing graphical content. Plain paint, uniform acoustic foam, blurred OOF background all work. Printed wallpaper, picture frames, text on signage, busy bookshelves all compete with the caption and ruin the embed illusion.

If any condition fails, do not use wall-embed. Pick another template.

What memory-wall looked like

The acoustic foam wall to the right of the subject took ~40% of frame width, tilted ~13° toward the viewer, mid-grey color, uniform dimpled texture. Perfect. Text with rotateY(-13deg) and overlay blend sat on it like printed letters.

Anti-examples (wall-embed would FAIL)

  • champion / demo1_avatarv — bookshelf background with books, white vases, picture frames. Cluttered + 3D depth. Fails condition 1 and 4. Used corner-column-crown instead.
  • Jobs 60 Minutes — blurry potted plant background. No flat surface at all. Fails condition 1.
  • Randy Pausch "Time is all we have" — completely black backdrop. No perspective to exploit, no mid-tone surface. Fails 2 and 3. Used portrait-header.
  • Any vlog / selfie with handheld camera — surface moves frame-to-frame, can't lock perspective. Even if conditions 1-4 hold briefly, motion breaks the illusion.

corner-column-crown — "text sits in a clean region next to the subject"

The default for most talking-head content. Works when wall-embed doesn't.

Conditions

  1. Single subject, fixed camera. Handheld is tolerable if drift is small.
  2. At least one clean zone (≥ 15% of frame width) to the left or right of the subject where captions can sit without continuous body occlusion.
  3. Background can be cluttered or 3D — we're not relying on a flat surface, just readable contrast. Screen blend mode picks up darker backgrounds (bookshelves, dark walls) naturally.
  4. Landscape aspect (16:9 or similar). For portrait, use portrait-header.

When to add the crown vs when to skip it

  • Add crown if there's a natural "title drop" line — the one phrase that lands the story (e.g. "WIMBLEDON CHAMPION", "BEATLES", "SHARP AGAIN"). Check layout-heuristics.md § Crown placement for the three geometric conditions.
  • Skip crown for factual / neutral monologues where no phrase carries the climax. Short videos (<10s) often don't need it.

portrait-header — "subject fills center, text lives in top banner"

For 9:16 aspect where the subject inevitably fills the middle.

Conditions

  1. Portrait aspect (9:16, 1080×1920 etc.).
  2. Subject occupies the vertical middle of frame, leaving ~15-25% of the frame height clear at the top.
  3. Optional crown at bottom — only works if there's also clean space beneath the subject's waist, which is rare in close-crop portrait.

What to watch

  • Subject's head top often approaches y=40 — top banner captions at top: 30px will get partially occluded by hair. Accept the partial occlusion (it reads as embed) or bump the caption size down to clear the hair.
  • If the subject already has baked-in captions (like the burned-in subtitles test case with yellow subtitles burned in), the skill should refuse — two caption systems compete.

Quick decision flow

START
  │
  ├─ Aspect is 9:16 / portrait?
  │    ├─ YES → portrait-header
  │    └─ NO ──▼
  │
  ├─ Does the scene have a flat uniform surface that passes
  │  ALL 4 wall-embed conditions?
  │    ├─ YES → wall-embed
  │    └─ NO ──▼
  │
  ├─ Single subject + fixed camera + ≥15% clean zone on one side?
  │    ├─ YES → corner-column-crown
  │    └─ NO ──▼
  │
  └─ Refuse with reason:
     "No flat surface for embed, no clean caption zone for column.
      Suggest a classic lower-third instead."

Mode checklist (run this before committing to wall-embed)

Read 3 frames (start, mid, end). For each, honestly answer:

  • Is there a single surface behind/beside the subject that occupies ≥ 30% of the frame?
  • Is that surface relatively flat (not curved, not 3D-stacked shelving)?
  • Does that surface angle at 5-20° to the camera (not perfectly parallel, not warped)?
  • Is the surface mid-luminance (not near-black like dark bookshelves, not near-white like a sunny window)?
  • Does the surface contain NO printed/decorative elements that compete with caption text?
  • Does the surface remain visible across all 3 frames (subject doesn't step in front of it)?

Need all six YES to use wall-embed. Even one NO → step down to corner-column-crown or portrait-header.

Source: SKILL.md on GitHub

No alerts3d3 checks · Risk SAFE
  • Gen Agent Trust Hub3d

    The skill is a professional video production tool for embedding cinematic captions into videos. It utilizes industry-standard tools like FFmpeg for audio/video processing, WhisperX for transcription, and Puppeteer for rendering. The skill includes built-in security features such as HTML sanitization of transcript data and Subresource Integrity (SRI) for external scripts.

  • Socket3d

    No alerts

  • Snyk3d

    Risk: LOW · No issues

Signed by skilld at 0a5e3c7. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 17 hours ago.

Activeupdated 4 days ago

README badge

README badge for heygen-com/hyperframes/embedded-captions