mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-11 06:30:03 +00:00
Rename the `graphic-overlays` workflow skill to `talking-head-recut`: - move skills/graphic-overlays/ -> skills/talking-head-recut/ - update SKILL.md frontmatter name, H1, and self-references - update all /graphic-overlays route references (hyperframes router, general-video, root + cli-template AGENTS.md/CLAUDE.md, docs, quickstart) - update telemetry --skill flag, example composition id, timeline key - update .prettierignore path and scripts/test-skills-fresh.sh Identifier-only rename: the graphic-overlay card mechanism, design references, and trigger wording are unchanged. Co-authored-by: kiritowoo <295860553+kiritowoo@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
132 lines
5.2 KiB
HTML
132 lines
5.2 KiB
HTML
<!--
|
||
Frame: polaroid — white photo frame + Caveat label + blue washi tape (no tilt)
|
||
─────────────────────────────────────────────────────────────────────
|
||
When to use
|
||
- Casual, personal, warm feel. Looks great for interviews, memoirs, vlogs.
|
||
- Pairs well with: split, stack, pip layouts.
|
||
- Pairs well with: academic, whiteboard, editorial, xhs styles.
|
||
- Skip on overlay layout (clashes with full-bleed).
|
||
- In portrait PiP (narrow video bubble), polaroid gets cramped — prefer hairline.
|
||
|
||
IMPORTANT — NO TILT
|
||
Earlier iterations of the design tilted the polaroid by -1.4° / 5°. User
|
||
explicitly removed the tilt (chat L770–790). Keep the polaroid card,
|
||
label, and washi tape all UPRIGHT.
|
||
|
||
How to apply in the composition
|
||
Replace the bare #video-wrap with a wrapper div that draws the polaroid
|
||
around it. The polaroid card has its own background + padding; the video
|
||
sits inside a sub-region.
|
||
|
||
HTML pattern (use absolute positioning to fit the layout's video bounds):
|
||
<div class="frame-deco frame-deco--polaroid"
|
||
style="left:240px; top:140px; width:1440px; height:990px;">
|
||
<div class="polaroid-card">
|
||
<div class="polaroid-photo">
|
||
<!-- the actual #video-wrap element, sized to fill -->
|
||
<div class="video-wrapper" id="video-wrap">
|
||
<video src="input-video.mp4" ...></video>
|
||
</div>
|
||
</div>
|
||
<div class="polaroid-caption">speaker · 2026</div>
|
||
</div>
|
||
<div class="washi"></div>
|
||
</div>
|
||
|
||
The video bounds in storyboard.json should be the OUTER polaroid bounds.
|
||
The CSS inset values below carve out the inner photo area.
|
||
|
||
Suggested CSS
|
||
.frame-deco--polaroid { position: absolute; }
|
||
.polaroid-card {
|
||
position: absolute; inset: 24px;
|
||
background: #fefefe; padding: 14px 14px 64px;
|
||
box-shadow: 0 28px 60px -18px rgba(0,0,0,.55),
|
||
0 4px 12px rgba(0,0,0,.12);
|
||
box-sizing: border-box;
|
||
}
|
||
.polaroid-photo {
|
||
position: relative; width: 100%; height: calc(100% - 50px);
|
||
overflow: hidden; background: #000;
|
||
}
|
||
.polaroid-photo .video-wrapper {
|
||
position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 0;
|
||
}
|
||
.polaroid-caption {
|
||
position: absolute; bottom: 18px; left: 0; right: 0;
|
||
text-align: center;
|
||
font: 700 32px/1 "Caveat", ui-serif, cursive;
|
||
color: #1d1c1a;
|
||
}
|
||
.washi {
|
||
position: absolute; top: 12px; left: 20%;
|
||
width: 120px; height: 28px;
|
||
background: rgba(180,210,235,.85);
|
||
background-image: repeating-linear-gradient(90deg,
|
||
transparent 0 6px, rgba(255,255,255,.3) 6px 7px);
|
||
box-shadow: 0 3px 8px rgba(0,0,0,.15);
|
||
}
|
||
-->
|
||
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<title>frame · polaroid (white photo frame + caveat label, no tilt)</title>
|
||
<style>
|
||
html, body { margin: 0; padding: 0; background: #0a0c12; color: #fff;
|
||
font-family: ui-sans-serif, system-ui, sans-serif; }
|
||
.stage { position: relative; width: 1920px; height: 1080px;
|
||
transform-origin: top left; transform: scale(0.5);
|
||
background: #0a0c12; overflow: hidden; }
|
||
.frame-deco { position: absolute; left: 240px; top: 70px; width: 1440px; height: 940px; }
|
||
.polaroid-card {
|
||
position: absolute; inset: 24px;
|
||
background: #fefefe; padding: 14px 14px 64px;
|
||
box-shadow: 0 28px 60px -18px rgba(0,0,0,.55), 0 4px 12px rgba(0,0,0,.12);
|
||
box-sizing: border-box;
|
||
}
|
||
.polaroid-photo {
|
||
position: relative; width: 100%; height: calc(100% - 50px);
|
||
overflow: hidden; background: #1a1f2e;
|
||
background-image: repeating-linear-gradient(45deg,
|
||
transparent 0 12px, rgba(255,255,255,.05) 12px 13px);
|
||
}
|
||
.v-label { position: absolute; left: 24px; top: 24px;
|
||
padding: 8px 14px; border: 1px solid rgba(255,255,255,.45);
|
||
border-radius: 3px; color: rgba(255,255,255,.7);
|
||
font: 600 16px/1 ui-monospace, monospace; letter-spacing: .14em; }
|
||
.polaroid-caption {
|
||
position: absolute; bottom: 18px; left: 0; right: 0;
|
||
text-align: center;
|
||
font: 700 32px/1 "Caveat", ui-serif, cursive;
|
||
color: #1d1c1a;
|
||
}
|
||
.washi {
|
||
position: absolute; top: 12px; left: 20%;
|
||
width: 120px; height: 28px;
|
||
background: rgba(180,210,235,.85);
|
||
background-image: repeating-linear-gradient(90deg,
|
||
transparent 0 6px, rgba(255,255,255,.3) 6px 7px);
|
||
box-shadow: 0 3px 8px rgba(0,0,0,.15);
|
||
}
|
||
.note { position: absolute; left: 240px; bottom: 18px; right: 240px;
|
||
text-align: center; color: rgba(255,255,255,.5);
|
||
font: 14px/1.4 ui-monospace, monospace; letter-spacing: .12em; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="stage">
|
||
<div class="frame-deco">
|
||
<div class="polaroid-card">
|
||
<div class="polaroid-photo">
|
||
<span class="v-label">VIDEO</span>
|
||
</div>
|
||
<div class="polaroid-caption">speaker · 2026</div>
|
||
</div>
|
||
<div class="washi"></div>
|
||
</div>
|
||
<div class="note">POLAROID — white frame, Caveat handwritten caption, blue washi tape on top. Upright (no tilt).</div>
|
||
</div>
|
||
</body>
|
||
</html>
|