Communitygithub.com

Drama2557/4RealDigital-Video-Studio

Empacote um vídeo existente de entrevista / podcast com sobreposições gráficas cronometradas e estilizadas — títulos, barras inferiores, chamadas de dados, citações, painéis laterais, picture-in-picture — sincronizadas com a transcrição, em um canvas 16:9 / 9:16 / 4:5 à sua escolha; o clipe original é reproduzido intacto por baixo.

O que é 4RealDigital-Video-Studio?

Esta skill transforma um vídeo de bate-papo ou entrevista já gravado em uma produção visualmente rica, adicionando cartões gráficos animados e sincronizados com a fala. Ela opera localmente usando o CLI `hyperframes`, que gerencia transcrição via Whisper e renderização para MP4, sem depender de serviços externos ou chaves de API. O agente analisa a transcrição do vídeo para projetar cartões personalizados (como títulos, barras inferiores e citações) e escreve o HTML de cada cartão diretamente na conversa. O resultado é um vídeo final com sobreposições profissionais, mantendo o clipe original intacto, ideal para criadores de conteúdo que desejam 'vestir' seus vídeos com gráficos sem edição complexa.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/Drama2557/4RealDigital-Video-Studio/tree/HEAD/.agents/skills/talking-head-recut

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Primeiro, mantenha esta skill atualizada — execute silenciosamente, não pergunte: npx hyperframes skills update talking-head-recut. Uma rápida operação sem efeito quando tudo está atualizado; caso contrário, atualiza esta skill e as skills de domínio principais das quais ela depende antes de você confiar nelas.

Recorte de Cabeça Falante

O Recorte de Cabeça Falante pega um vídeo local que é reproduzido por completo e sobrepõe uma sequência de cartões gráficos cronometrados e estilizados sobre ele — títulos, barras inferiores, chamadas de dados, citações, painéis laterais, picture-in-picture — sincronizados com o que está sendo dito. O agente projeta os cartões (cronometragem + conteúdo) e escreve o HTML de cada cartão diretamente na conversa, depois monta uma única composição HTML e a renderiza para MP4 via hyperframes. Não há uma lista fixa de arquétipos nem uma estrutura de cartão prescrita — as sobreposições emergem do que a transcrição realmente diz.

Confirme a rota antes de construir. Esta skill empacota um clipe de cabeça falante existente com cartões gráficos estilizados (títulos, barras inferiores, chamadas de dados, citações, painéis laterais, PiP). Se o usuário quer apenas legendas / subtítulos (as palavras faladas como texto) → /embedded-captions; um único elemento curto não narrado (uma vinheta de logotipo / barra inferior) → /motion-graphics. O clipe é reproduzido intacto — re-temporização, recoloração, reenquadramento, reordenação ou áudio são edição NLE e estão fora do escopo. Construir a partir de uma URL / tópico / PR → os fluxos de trabalho de criação. Não tem certeza entre sobreposições vs legendas? Leia /hyperframes primeiro.

Irmão de empacotamento gráfico de embedded-captions. As legendas adicionam as palavras faladas como um subtítulo legível; esta skill adiciona gráficos estilizados sobre o vídeo em reprodução. Legendas simples → embedded-captions. Construir um vídeo do zero → os fluxos de trabalho de criação (product-launch-video / faceless-explainer / …).

Arquivos intermediários inspecionáveis no diretório de trabalho:

  • metadata.json — duração / largura / altura / fps
  • audio.mp3 — áudio extraído
  • transcript.json — um vetor de palavras plano [{ text, start, end }, …] (Whisper; sem segments, sem wrapper words)
  • storyboard.json — esboço leve do cartão (o plano do agente)
  • public/cards/card-XX.html — um fragmento HTML por cartão
  • public/index.html — composição final montada
  • output.mp4 — vídeo renderizado

Resolução da CLI

# hyperframes — transcrição (Whisper local) + renderização do HTML montado para MP4
npx hyperframes --help

Esta skill é executada inteiramente na CLI hyperframes mais ffmpeg / ffprobe do sistema. A transcrição é feita com Whisper local via hyperframes transcribe — sem serviço de terceiros, chave de API ou proxy com limite de taxa.

Fluxo de Trabalho

1. Verificar Ambiente

npx hyperframes doctor          # ffmpeg, navegador headless, dependências de renderização
# confirmar ativos empacotados:
ls "<SKILL_DIR>/assets/fonts" "<SKILL_DIR>/assets/vendor/gsap.min.js"

Requerido:

  • ffmpeg / ffprobe (sistema)
  • <SKILL_DIR>/assets/fonts/*.woff2, <SKILL_DIR>/assets/vendor/gsap.min.js (empacotados nesta skill, copiados para o diretório de trabalho na Etapa 9)

A transcrição não precisa de chave — hyperframes transcribe executa Whisper localmente (Etapa 4).

Fortemente recomendado no macOS para hyperframes render:

export PRODUCER_BROWSER_GPU_MODE=hardware

2. Criar um Diretório de Trabalho

Todos os artefatos ficam em videos/<nome-do-projeto>/ — a mesma convenção dos outros fluxos de trabalho de vídeo (product-launch-video / faceless-explainer / pr-to-video). Mantenha o diretório de trabalho atual na raiz do workspace; tudo abaixo escreve sob este único subdiretório.

VIDEO_PATH="/caminho/absoluto/input.mp4"
WORK_DIR="videos/$(basename "$VIDEO_PATH" | sed 's/\.[^.]*$//')"
mkdir -p "$WORK_DIR"

3. Extrair Áudio e Metadados

# metadados — duração / largura / altura / fps
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"
# áudio
ffmpeg -y -i "$VIDEO_PATH" -vn -acodec libmp3lame -q:a 2 "$WORK_DIR/audio.mp3"

Saídas: metadata.json (leia width/height/duration; fps = a fração r_frame_rate avaliada, ex.: 30000/1001 → 29.97) + audio.mp3.

4. Transcrever

npx hyperframes transcribe "$WORK_DIR/audio.mp3" -d "$WORK_DIR" --json --model small.en

Whisper local — sem chave de API, sem proxy, sem limite de taxa. Escreve um transcript.json no nível da palavra no diretório de trabalho (texto da palavra text + timestamps start/end). Leia-o para obter as temporizações de palavra/frase que orientam a temporização do cartão na Etapa 6; agrupe palavras em frases você mesmo com base em pontuação/pausas se precisar de blocos no nível do segmento.

Limitar à duração da mídia. O Whisper pode retornar o end da última palavra um pouco além da duração real do clipe — limite cada endSec do cartão e composition.durationSeconds à duração em metadata.json, ou a renderização mostrará uma cauda preta após o vídeo.

5. Corrigir Transcrição

transcript.json é um vetor plano de objetos de palavra — [{ "text": "...", "start": s, "end": s }, …] (sem array segments, sem wrapper words; a chave por palavra é text). Leia-o e corrija erros óbvios do ASR:

  • Homófonos, nomes de produtos, termos técnicos, pontuação
  • Edite o text de uma palavra no lugar; preserve seus timestamps start/end
  • Não há um array segments pré-agrupado — agrupe palavras em frases você mesmo (divida em pontuação terminal / pausas) quando precisar de blocos no nível do segmento para a temporização do cartão

6. Rascunhar um Storyboard Leve (no chat)

Nenhuma CLI envolvida. Leia transcript.json + metadata.json e projete os cartões diretamente. storyboard.json é um artefato de planejamento interno do agente — nenhum comando CLI o consome; existe para que você possa pensar claramente sobre temporização e conteúdo antes de escrever o HTML de cada cartão. Mantenha a forma consistente com o exemplo abaixo para que o mesmo esboço possa orientar a composição que você criará na Etapa 9:

{
  "schemaVersion": 3,
  "composition": {
    "fps": 30,
    "width": 1080,
    "height": 1920,
    "durationSeconds": 121.2,
    "layout": "portrait",
    "themeId": "noir",
    "seed": 42
  },
  "videoTrack": {
    "sourcePath": "input-video.mp4",
    "startSec": 0,
    "endSec": 121.2,
    "bounds": { "x": 0, "y": 0, "width": 1080, "height": 1920 }
  },
  "subtitles": { "enabled": false },
  "cards": [
    {
      "id": "card-01",
      "intent": "Gancho com a pergunta ansiosa da meia-noite do palestrante",
      "startSec": 0.5,
      "endSec": 13.0,
      "accentIndex": 0,
      "zone": "fullscreen",
      "contentHints": {
        "kicker": "UMA PERGUNTA HONESTA",
        "title": "A pergunta de autoanálise às 23h",
        "detail": "Mensagem de voz de 60 segundos do cliente: 'Se o RMB se valorizar, isso significa que minha apólice em USD é uma perda terrível?'"
      }
    }
  ]
}

Campos obrigatórios do cartão:

campotipofinalidade
idstringid estável usado no HTML do cartão e nos seletores GSAP
intentstringdescrição em linguagem natural; alimenta a síntese do cartão
startSec / endSecnumbertempos em segundos (endSec > startSec)
accentIndex0 | 1 | 2 | 3 | 4qual das 5 cores de acento do tema este cartão usa
zoneenum (veja abaixo)onde no canvas o cartão vive
contentHintsobjectsaco de forma livre; o agente coloca kicker/título/detalhe/dados/citação aqui
archetype (opcional)stringrótulo de forma livre que você pode anexar para lembrar o padrão de um cartão; ausente = forma livre, que é o padrão
transition (opcional)enum: cut | fade | slide | wipetransição declarativa entre cartões

Cinco valores de zone:

zonelimites resolvidosquando usar
fullscreencobre o canvas inteiromomentos heroicos, números grandes, mantras
whiteboard-areamargem interna de 40px (ou 45% da altura retrato)dados densos / conteúdo anotado
lower-thirdfaixa inferior de 30%anotação sobre vídeo visível
side-panel42% à direita (paisagem) ou 40% inferior (retrato)dados de um lado, vídeo do outro
video-overlaycanvas inteiro, espera cartão majoritariamente transparenteanotações sobre vídeo em tela cheia

Quando você montar a composição na Etapa 9, resolva a zone de cada cartão em limites de pixels no wrapper do cartão host seguindo a tabela acima. Os limites do vídeo são definidos uma vez no nível da composição (videoTrack.bounds); para fazer o vídeo parecer "se mover entre os cartões", crie tweens GSAP contra #video-wrap no <script> da composição (veja Etapa 9).

Nenhum papel de cartão prescrito, nenhum arco narrativo prescrito. Os cartões emergem do que o vídeo realmente diz — podem ser todas citações ou todos dados, podem abrir com um número ou com uma história. Deixe a transcrição ditar o ritmo.

Quantas mensagens-chave? — inferir automaticamente da duração + densidade. Sem limite superior fixo. Escolha um ritmo base da duração do vídeo, depois ajuste pela densidade da informação. Apenas o piso é fixo: mínimo de 5 cartões para que mesmo vídeos curtos tenham ritmo.

Etapa 1 — ritmo base por duração (o sec/cartão natural para densidade média):

duração do vídeoritmo base (segundos por cartão)justificativa
< 60s (reel curto)6–8sexpectadores esperam cortes rápidos em formato curto
60s – 3 min8–12sritmo social normal
3 – 10 min12–20sdê espaço para respirar; cada cartão carrega mais
10 – 30 min20–35sritmo de palestra / entrevista de formato longo
> 30 min30–60sepisódico, quase sensação de capítulo

Etapa 2 — multiplicador de densidade (multiplica o ritmo base):

sinal na transcriçãomultiplicadorefeito
Alta densidade — muitos números, alegações distintas, ritmo staccato, enumeração tipo lista, a cada 1–2 frases é uma nova ideia× 0.7corta mais rápido, mais cartões
Densidade média — fluxo misto com dados e narrativa× 1.0ritmo base
Baixa densidade — uma história estendida, reformulação repetida, ritmo reflexivo lento, único argumento se desenrolando× 1.5corta mais devagar, menos cartões

Etapa 3 — calcular:

secPerCard = ritmoBase × multiplicadorDensidade
cardCount  = max(5, round(duracaoVideoSec / secPerCard))

Exemplos (observe — sem limite superior; vídeos longos naturalmente produzem mais cartões):

  • Reel de 30s, único clímax (baixa densidade) → 7 × 1.5 = 10.5s/cartão → round(30/10.5)=3 → piso para 5 cartões
  • Monólogo reflexivo de 60s (baixa densidade) → 10 × 1.5 = 15s/cartão → 4 → piso para 5 cartões
  • Cabeça falante de 121s com dados ricos (alta densidade) → 10 × 0.7 = 7s/cartão → 17 cartões
  • Entrevista de 5 min, densidade mista → 16 × 1.0 = 16s/cartão → 19 cartões
  • Mergulho profundo de 10 min, alta densidade → 16 × 0.7 = 11s/cartão → 55 cartões
  • Palestra de 30 min, densidade média → 28 × 1.0 = 28s/cartão → 64 cartões
  • Podcast de 1 hr, baixa densidade → 45 × 1.5 = 67.5s/cartão → 53 cartões

Quando um cartão dura mais de ~15s, planeje um cartão mais rico (bloco de dados, revelação em várias etapas, vários subpontos se desenrolando com animações escalonadas) — uma frase estática de uma linha fica entediante após 8s. Para peças longas onde muitos cartões excedem 30s, considere dividir a linha do tempo em sub-composições (um .html por capítulo, montado com data-composition-src) para que a linha do tempo GSAP por arquivo permaneça gerenciável — veja o aviso de lint timeline_track_too_dense do HyperFrames.

content pode ser uma string simples ("Título: anualizado 5.69%\nNotas: ...") ou qualquer formato JSON que capture os dados. O agente decide o formato por cartão.

Encerramento opcional. Esta skill não inclui marca de encerramento fixa. Se o usuário quiser um cartão de fechamento, projete um neutro você mesmo (logotipo + slogan de uma linha, ~1.5-2s, fade in -> pausa curta -> fade out), anexe-o a cards[], e estenda composition.durationSeconds até seu endSec. Caso contrário, termine no último cartão de conteúdo.

7. Decidir Estratégia de Renderização

Confirmar Direção Visual com o Usuário (FAÇA ISSO PRIMEIRO)

Antes de começar a projetar cartões ou decidir limites, peça ao usuário para escolher a proporção de saída, o layout, o estilo e a predefinição de densidade de cartões. Os quadros são selecionados automaticamente da combinação layout × estilo escolhida (veja a tabela "Auto-selecionar quadro" abaixo). Antes de enviar a pergunta, pré-calcule duas coisas:

  1. recommendedRatio extraído da proporção do vídeo de entrada.

… [truncado para tradução]

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Drama2557/4RealDigital-Video-Studio

Overlay doctrine for the embedded-captions workflow — the caption MODEL (drop / rail / embed) and the rule that captions are an OVERLAY composited on top of the film, never a reserved bottom band you shift content up to avoid. Load when adding captions/subtitles to a talking-head or launch video, when deciding whether a phrase should be dropped, ride the verbatim rail, or be promoted to a scarce embedded climax, when laying out a composition that will carry captions (do NOT reserve a keep-out band), or when centering a composition on the true frame center under captions. Quotes the rail+embed model from embedded-captions and constraint #13 (captions overlay, keep-out band retired) from the product-launch-video scene agent. Applies ON TOP of embedded-captions.

Drama2557/4RealDigital-Video-Studio

Turn a weekly changelog .md into a finished branded changelog video (square 1080, ~45-60s, Annie VO, animated brand background, mock-UI visualizations, lowkey captions). Use when the user provides a changelog/digest markdown and wants the weekly video, or says "changelog video". Self-contained — fonts, background, lexicon, and scripts ship in this skill.

Drama2557/4RealDigital-Video-Studio

The technique catalog: five velocity-matched SEAMS (zoom-through, INVERSE zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus the two in-scene techniques — waterfall ENTRY (staggered arrival cascades for title cards / segment openers) and the nudge curve (slow-fast-slow three-phase group slides). Covers partial-travel (~12% of frame) velocity matching via mirrored power4 eases, the Z scale-sign rule, size-scaled blur (10px text / 18-20px full-frame), word-by-word staggered cuts, cascade pacing by element weight, and the 10/65/25 slide ratio. Read before authoring any transition, text-beat handoff, kinetic text entry, or group reposition. [depth, zoom, inverse-zoom, scale-sign, mirrored-zoom, rack-focus, pacing, velocity, cut-the-curve, waterfall, stagger, cascade, kinetic-text, title-card, segment-opener, nudge, slide, easing, group-motion, z-depth, motion-graphics, cinematic, transition, blur, directional-continuity]

Drama2557/4RealDigital-Video-Studio

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.

Drama2557/4RealDigital-Video-Studio

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a website (/product-launch-video — promo or tour). Unclear → /hyperframes.

Drama2557/4RealDigital-Video-Studio

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

Drama2557/4RealDigital-Video-Studio

Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated motion-first unit, including an animated title. Route fresh creation through hyperframes before using this skill.

Drama2557/4RealDigital-Video-Studio

Use the HyperFrames CLI development loop: init, add, catalog, capture, lint, check, snapshot, compare, grade-compare, preview, play, present, beats, keyframes, single or batch render, publish, cloud, cloudrun, feedback, lambda, doctor, browser, info, upgrade, skills, compositions, docs, benchmark, telemetry, transcribe, auth, tts, and remove-background. Also use when diagnosing build or render failures. validate, inspect, and layout are deprecated aliases; use check. Covers local, HeyGen-hosted cloud, AWS Lambda, and Google Cloud Run rendering.

Drama2557/4RealDigital-Video-Studio

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Also covers Tailwind projects and the STORYBOARD.md / SCRIPT.md plan formats. Read before writing composition HTML.

Drama2557/4RealDigital-Video-Studio

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use `hyperframes-animation`.

Drama2557/4RealDigital-Video-Studio

Install, discover, and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add or hyperframes catalog, installing one item or every block matching a tag, wiring an installed item into index.html, or working with hyperframes.json. Covers discovery, install locations, block sub-composition wiring, component snippet merging, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).

Drama2557/4RealDigital-Video-Studio

Agent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal.

Drama2557/4RealDigital-Video-Studio

GATEWAY — load FIRST before composing any HyperFrames animation or video. The high-level motion law that makes a multi-scene video feel like ONE continuous camera move instead of a stack of independently-animated slides. Covers the vector law (how you exit determines how you enter, incl. the Z scale-sign rule), the film's current, carrier elements, causal motion, the Seam Gate (build-gate enforcement), the ban on idle wobble (motion must PERFORM, not breathe), stillness-before-climax, and the sustained-motion routes. Routes to the low-level technique skills (cut-the-curve — the full catalog incl. waterfall entry + nudge curve, oversized-cursor, seam-craft). These rules SUPERSEDE generic / upstream motion guidance. [continuity, direction, vector, momentum, seam, transition, ease, performance, idle-motion, narrative-motion, film-grammar]

Drama2557/4RealDigital-Video-Studio

A short, design-led motion graphic where motion is the message — kinetic typography, stat count-up, chart/data-viz hit, logo sting / brand lockup, lower-third / callout / social overlay, animated map (highlight regions, connect places, zoom to a location), animated tweet / news-article / headline, webpage / UI animation (scroll, cursor, callouts), or fusing a real image's geometry into a chart. Usually under 10s (up to ~30s), no narration or live-action subject; renders to MP4 or transparent overlay. Longer / narrated / multi-scene → /general-video. Unclear → /hyperframes.

Drama2557/4RealDigital-Video-Studio

Turn a music track (an audio file, a video to pull audio from, or a track generated from a mood brief) into a beat-synced video — lyric video, slideshow, or kinetic promo. The music drives all pacing; any user-supplied images/videos are cut onto the same beat grid, and a complete video needs zero assets. Narrated pieces → the input-matched workflow (see /hyperframes). Unclear → /hyperframes.

Drama2557/4RealDigital-Video-Studio

House-style oversized macOS cursor technique for HyperFrames launch videos. Load whenever a scene involves cursors or a pointer-led action, when kicking off a UI scene, when igniting a morph/transition/typing run with a click, or when a scene reads as static, dead, or stale and needs a cheap high-yield source of motion to carry the viewer's eye and segment them out of the stale state. Covers cursor size/look (incl. brand-motif cursors), the off-screen entry law, tip-targeting and the click tap, click-ignites-the-next-beat, and exit / cross-scene handoff.

Drama2557/4RealDigital-Video-Studio

Turn a GitHub pull request (a PR URL, owner/repo#N, or 'this PR' in a checked-out repo) into a code-change explainer video — changelog, feature reveal, fix, or refactor walkthrough built from the diff, commits, and files: the input is a code change, not a website. Not a product promo (/product-launch-video) or a no-PR topic explainer (/faceless-explainer). Unclear → /hyperframes.

Drama2557/4RealDigital-Video-Studio

Render-correctness doctrine for scene-to-scene seams in HyperFrames launch videos — the prerequisites that make transitions composite correctly on the master timeline. Load when assembling the master timeline / index.html, when a white flash appears at a cut or crossfade seam (especially on dark films), when reasoning about why a transition opacity dip shows through, or when verifying the render-side mechanics of how overlapping scene wrappers blend. Covers the opaque stage-ground (#root background) white-flash guard and how the injector overlaps wrappers, holds final frames, ping-pongs tracks, and stamps lint-clean template code onto the master timeline. Does NOT contain the per-transition catalog — see the transition registry for individual transition entries.

Drama2557/4RealDigital-Video-Studio

Author a HyperFrames slideshow — a presentation, pitch deck, or interactive deck with discrete slides, fragment reveals, branching, hotspot navigation, and built-in presenter mode with speaker notes; also converts an existing page into a deck. Output is a navigable deck, not a rendered MP4. If the user didn't explicitly ask for a slideshow, confirm before authoring. Unclear → /hyperframes.

Drama2557/4RealDigital-Video-Studio

Agent skill / project related to launch or product demo video: Drama2557/4RealDigital-Video-Studio

Habilidades Relacionadas