Package an existing talking-head / interview / podcast video with timed, designed graphic overlays using HyperFrames. Use when the user wants kinetic titles, lower-thirds, data callouts, pull-quotes, side panels, or picture-in-picture on top of existing footage. The clip plays untouched underneath. Not plain subtitles (use hyperframes-embedded-captions).
Scanned 9/22/2026
npx -y skills add oyi77/1ai-skills --skill hyperframes-talking-head-recut --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Hyperframes Talking Head Recut?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/oyi77-hyperframes-talking-head-recut)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: hyperframes-talking-head-recut
description: "Package an existing talking-head / interview / podcast video with timed, designed graphic overlays using HyperFrames. Use when the user wants kinetic titles, lower-thirds, data callouts, pull-quotes, side panels, or picture-in-picture on top of existing footage. The clip plays untouched underneath. Not plain subtitles (use hyperframes-embedded-captions)."
domain: "content-creation"
tags:
- hyperframes
- talking-head
- graphic-overlays
- lower-thirds
- data-callouts
- video-packaging
version: "1.0.0"
author: "oyi77"
subdomain: "video-production"
type: "content"
license: Apache-2.0
---
## Overview
This skill recuts a talking-head video — re-timing, cropping, or pacing segments — into a new composition via HyperFrames. Use it to tighten a long take into clips or repurpose footage for short-form. It renders the recut MP4 from the original source.
# HyperFrames — Talking Head Recut
Layer timed, designed graphic cards onto an existing talking-head video — titles, lower-thirds, data callouts, quotes, side panels, PiP — synced to the transcript. The clip plays untouched underneath.
## When to Use
- User wants **graphic overlays** on a talking-head video
- User wants **lower-thirds** with names/titles
- User wants **data callouts** synced to spoken numbers
- User wants **pull-quotes** or **side panels**
- User wants **picture-in-picture** layout
- User says "package my video" or "add graphics to my interview"
## When NOT to Use
- User wants plain subtitles/captions (use `hyperframes-embedded-captions`)
- User wants to build a video from scratch (use `hyperframes-product-launch-video`)
- User wants a faceless explainer (use `hyperframes-faceless-explainer`)
- User wants to edit the footage itself (this skill leaves footage untouched)
## Workflow
### 1 · Check environment
```bash
npx hyperframes doctor # ffmpeg, headless browser, render deps
ls "<SKILL_DIR>/assets/fonts" "<SKILL_DIR>/assets/vendor/gsap.min.js"
```
Required: `ffmpeg` / `ffprobe` (system), bundled fonts + GSAP (in skill assets).
### 2 · Create work directory
```bash
VIDEO_PATH="/absolute/path/input.mp4"
WORK_DIR="videos/$(basename "$VIDEO_PATH" | sed 's/\.[^.]*$//')"
mkdir -p "$WORK_DIR"
```
### 3 · Extract audio and metadata
```bash
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height,r_frame_rate \
-show_entries format=duration -of json "$VIDEO_PATH" > "$WORK_DIR/metadata.json"
ffmpeg -y -i "$VIDEO_PATH" -vn -acodec libmp3lame -q:a 2 "$WORK_DIR/audio.mp3"
```
### 4 · Transcribe (local Whisper)
```bash
npx hyperframes transcribe "$WORK_DIR/audio.mp3" -d "$WORK_DIR" --json --model small.en
```
Writes word-level `transcript.json` (word `text` + `start` / `end` timestamps). No API key needed.
### 5 · Correct transcript
Read `transcript.json` and fix obvious ASR errors (homophones, product names, technical terms). Preserve `start` / `end` timestamps.
### 6 · Draft storyboard
Design cards directly from the transcript. Each card has:
| Field | Purpose |
|-------|---------|
| `id` | stable id for HTML/GSAP selectors |
| `intent` | natural-language description |
| `startSec` / `endSec` | timing in seconds |
| `accentIndex` | which of 5 theme accent colors |
| `zone` | canvas position (fullscreen, lower-third, side-panel, whiteboard-area, video-overlay) |
| `contentHints` | kicker/title/detail/data/quote |
**Card count formula:**
```
secPerCard = basePace × densityMultiplier
cardCount = max(5, round(videoDurationSec / secPerCard))
```
| Video duration | Base pace |
|----------------|-----------|
| < 60s | 6-8s |
| 60s - 3 min | 8-12s |
| 3 - 10 min | 12-20s |
| 10 - 30 min | 20-35s |
| > 30 min | 30-60s |
| Density signal | Multiplier |
|----------------|------------|
| High (many numbers, staccato) | × 0.7 |
| Medium (mixed) | × 1.0 |
| Low (one extended story) | × 1.5 |
### 7 · Decide render strategy
Ask the user to pick:
1. **Output ratio:** 16:9 (wide source), 9:16 (tall source), 4:5 (near-square)
2. **Layout:** standard, side-panel, picture-in-picture
3. **Style:** noir, editorial, bold-poster, blue-professional, etc.
4. **Card density:** auto (from formula), sparse, dense
### 8 · Design cards
Write each card's HTML directly in the conversation. Card zones:
| Zone | Bounds | Use for |
|------|--------|---------|
| fullscreen | whole canvas | hero moments, big numbers |
| lower-third | bottom 30% | annotation over visible video |
| side-panel | right 42% (landscape) / bottom 40% (portrait) | data side |
| whiteboard-area | inset 40px margin | dense data / annotated content |
| video-overlay | full canvas, mostly-transparent | annotation overlays |
### 9 · Assemble composition
Build `index.html` with:
- Video layer: `<video>` element with the source footage
- Card layers: absolutely-positioned divs with `data-start` / `data-duration`
- GSAP timeline: animating card entry/exit synced to transcript timestamps
```html
<div id="video-wrap">
<video src="input.mp4" muted></video>
</div>
<div class="card" id="card-01" data-start="0.5" data-duration="12.5" data-track-index="1">
<div class="card-kicker">AN HONEST QUESTION</div>
<div class="card-title">The soul-searching question at 11 PM</div>
</div>
```
### 10 · Render
```bash
npx hyperframes render --output output.mp4
```
Verify the output:
```bash
ffmpeg -ss 10 -i output.mp4 -frames:v 1 frame-10s.png
```
## Anti-Rationalization Table
| Rationalization | Reality |
|----------------|---------|
| "I'll add a card every 2 seconds" | Use the formula — density matters, not arbitrary frequency |
| "I'll skip transcription and guess timings" | Transcript word timestamps are the clock — cards must sync to speech |
| "I'll use a fixed card structure" | Cards emerge from what the transcript actually says |
| "I'll edit the footage to match the cards" | Footage plays untouched — cards overlay, don't replace |
| "I'll center content at 42% to avoid overlap" | Cards are positioned in zones — video fills the frame |
| "I'll add an outro automatically" | No fixed brand outro — design one only if the user asks |
## Verification
- [ ] `hyperframes doctor` passes
- [ ] `transcript.json` has word-level timestamps
- [ ] Card count ≥ 5 (floor)
- [ ] Each card has `startSec` < `endSec`
- [ ] Card timings clamped to video duration
- [ ] Output MP4 has visible synced overlays on 3+ sampled frames
- [ ] Footage plays untouched underneath
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!