본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

synthetic-screen-recording

Remotion의 TerminalScene으로 터미널 녹화처럼 보이는 데모를 만듭니다. 명령 입력과 출력, 대기 시간을 구성하고 화면 동작을 내레이션에 맞춥니다.

원문원문 설명 보기

Synthetic terminal-style screen recording guidance for Remotion `TerminalScene`.

연동 도구Playwright

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • 설치 절차를 영상으로 제작합니다
  • 명령 표시를 내레이션에 맞춥니다
  • 동일한 터미널 데모를 재현합니다
  • 합성 영상과 실제 화면 녹화를 선택합니다

한국어 소개

할 수 있는 일

Remotion의 TerminalScene으로 터미널 화면 녹화처럼 보이는 데모를 구성합니다. 명령어 입력, 실행 결과, 대기 시간, 떠오르는 배지를 순서대로 정의하고 입력 속도와 표시 시간을 조정합니다. 각 단계의 소요 시간을 확인하고, 내레이션이 설명하는 시점에 화면 동작을 맞추는 방법도 안내합니다.

이럴 때 유용합니다

명령어와 출력을 미리 정할 수 있는 설치 안내나 환경 설정 영상에 적합합니다. 같은 내용을 반복해서 렌더링하거나 실제 데스크톱을 보여 주지 않고 터미널 작업을 설명할 때도 활용합니다. 합성 영상과 실제 화면 녹화 중 어느 방식이 적합한지 판단할 때도 사용합니다.

사용 예시

  • “이 설치 절차를 TerminalScene으로 영상으로 만들어 주세요.”
  • “내레이션 시작 시점에 맞춰 명령 사이의 대기 시간을 조정해 주세요.”
  • “이 데모에 합성 영상과 실제 화면 녹화 중 어떤 방식이 적합한지 판단해 주세요.”

주의 사항

Remotion과 자료에 나온 remotion-composer의 TerminalScene이 필요합니다. 실제 앱 화면이나 네트워크 대기처럼 예측하기 어려운 동작은 실제 화면 녹화로 보여 줍니다. 생성 영상은 미리 정의한 동작을 재현합니다. 라이선스는 MIT입니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

문서 점검

AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.

안전성전송·삭제·명령 실행 등을 명시하고 있는가
A양호명령을 표시용 데이터로 정의하며 실행이나 외부 전송을 지시하지 않습니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
B일부 부족TerminalScene의 위치는 제시하지만 Remotion 설치 절차는 없습니다.

점수에는 넣지 않았습니다. 2026년 10월 23일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

포함된 파일(1)

  • SKILL.md9.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Synthetic Screen Recording (Remotion TerminalScene)

Decision this skill answers: When the user wants a screen-recording-looking demo of a terminal, CLI tool, or coding workflow — do I capture the real desktop (OS screen recording via screen_recorder, Windows-MCP, Cap, or Playwright), or do I synthesize it in Remotion with the TerminalScene component?

Heuristic: If the agent can author the exact command/output sequence in advance, synthesize. Only capture live when the real behavior is unpredictable, needs a real app UI, or the user explicitly asked for a real recording.

Why this exists

v3 of the OpenMontage showcase tried to use Windows-MCP + screen_recorder to drive a Git-Bash window for the install walkthrough. It stalled on window positioning, focus races, and taskbar privacy concerns. We pivoted to pure Remotion rendering — a React component named TerminalScene that draws a fake terminal and types commands character-by-character. The output is visually indistinguishable from a real screen recording (same traffic-light window chrome, blinking cursor, scrolling output) but deterministic, privacy-safe, pixel-perfect at 1080p, and pace-controllable to the frame.

That component + pattern is the capability this skill makes discoverable.

When to use synthetic (TerminalScene)

YES, synthesize when:

  • The demo is a terminal / CLI / coding session where commands and outputs are predictable
  • The user wants a polished tutorial feel (clean typography, floating pills, cursor blink)
  • Install walkthroughs, setup demos, API key config, make targets, git clone flows
  • You need tight sync with narration — every command must land on a specific beat
  • You want the result reproducible (re-render gets identical pixels)
  • The user's actual desktop has private apps/windows visible you'd otherwise have to crop

NO, capture a real screen when:

  • The demo is a real app UI that can't be faked (Figma, Photoshop, a web app with live state, a browser flow)
  • The user explicitly asked for a recording of their actual screen
  • The behavior depends on timing you can't script (streaming LLM output, real network latency)
  • There's a visual quirk (a cursor effect, a plugin pop-up) that only appears in the live environment

For a browser demo → playwright-recording skill, not this one. For a real desktop → screen_recorder tool or Cap via cap_recorder.

The component — TerminalScene

Located at: remotion-composer/src/components/TerminalScene.tsx Exported from: remotion-composer/src/components/index.ts Wired in dispatch: remotion-composer/src/Explainer.tsx (if (cut.type === "terminal_scene"))

Props:

interface TerminalSceneProps {
  title?: string;           // shown in the window title bar
  steps: TerminalStep[];    // the timeline
  prompt?: string;          // "$", ">", etc.
  accentColor?: string;     // pill + prompt glow
  backgroundColor?: string;
}

Step kinds:

{ kind: "cmd",   text: string, typeSpeed?: number, holdSeconds?: number }
{ kind: "out",   text: string, holdSeconds?: number }
{ kind: "pause", seconds: number }
{ kind: "pill",  text: string, color?: string, durationSeconds?: number }
  • cmd — prints the prompt, types the text character-by-character (typeSpeed is seconds per character, default 0.035), then holds for holdSeconds (default 0.3)
  • out — a line of program output, reveals instantly with a short fade-in
  • pause — dead time. Terminal holds on last visible state. USE THIS TO SYNC WITH NARRATION.
  • pill — non-blocking floating badge (top-right). Spring-in, hold, spring-out. Does NOT advance the cursor — the next step runs in parallel.

Authoring pattern

Author a new scene by adding a cut to build_composition.py (or your equivalent props builder):

install_steps = [
    {"kind": "pause", "seconds": 7.0},                 # wait for intro narration
    {"kind": "cmd", "text": "git clone https://github.com/calesthio/OpenMontage.git",
     "typeSpeed": 0.045, "holdSeconds": 0.3},
    {"kind": "out", "text": "Cloning into 'OpenMontage'..."},
    {"kind": "out", "text": "remote: Enumerating objects: 2847, done."},
    {"kind": "pill", "text": "repo cloned", "color": "#34D399", "durationSeconds": 2.6},
    {"kind": "pause", "seconds": 3.8},                 # bridge to next narration cue
    # ...
]

cuts.append({
    "id": "install-terminal",
    "type": "terminal_scene",
    "terminalTitle": "bash — OpenMontage setup",
    "prompt": "$",
    "accentColor": "#22D3EE",
    "steps": install_steps,
    "in_seconds": 50.0,
    "out_seconds": 110.0,
})

THE RULE: pace with narration, never ahead

The #1 failure mode: steps run continuously and burn through all content in the first 40% of the scene, leaving the terminal frozen for the remaining 60%. This is what killed the v3 first pass — the capability menu rendered at t=80s but narration didn't announce it until t=92s.

Do this instead:

  1. Know your narration cues — for each scene, write down the exact video-time each narration segment starts.
  2. Start with a pause that reaches the first narration cue before any command types.
  3. Time each command to land with its narration line — cmd should start typing the moment narration says its line, not before.
  4. Put pauses between command groups that bridge to the next narration cue.
  5. End with a closer hold — a pause long enough that the final state is readable after narration ends.

Sanity-check your steps before rendering — every minute of Remotion render is precious. Sum the step durations and verify they equal scene duration:

import math
def trace(steps, scene_start, fps=30):
    t = 0.0
    for s in steps:
        k = s["kind"]
        if k == "cmd":
            tf = math.ceil(len(s["text"]) * s.get("typeSpeed", 0.035) * fps)
            t += tf / fps + s.get("holdSeconds", 0.3)
        elif k == "out":
            t += max(2, math.ceil(0.08 * fps)) / fps + s.get("holdSeconds", 0.15)
        elif k == "pause":
            t += s["seconds"]
        # "pill" is non-blocking — does NOT advance cursor
        print(f"  {t + scene_start:6.2f}s  {k}: {s.get('text', '')[:40]}")
trace(install_steps, 50)

Look at the output column. Each narration cue's video-time must appear adjacent to the command/output it announces. If a command lands 10s before or after its cue, adjust pauses.

See lib/verify_scene_pacing.py for a reusable version of this script.

Design rules (inherited from the v3 retune)

  • Intro pause — every terminal scene opens with at least 2s of empty-terminal-with-blinking-cursor before anything types. The viewer needs to register the window.
  • Pill timing — a pill should fire at the exact moment its named event completes on screen (e.g., repo cloned immediately after the last Receiving objects line). Pills are your substitute for real-world UI notifications.
  • Command hold after typing — keep holdSeconds ≥ 0.3 on every cmd so viewers register the completed command before the first output scrolls in.
  • Output cadence — space holdSeconds on output lines between 0.4 and 1.0. Output that flies too fast feels like a bug; output that crawls feels boring.
  • Auto-scroll works — the terminal holds the most recent 18 lines. Don't worry about off-screen content.
  • Cursor blinks only on the latest command line while typing + a ~0.2s tail after typing completes.

ProviderChip (companion component)

The .agents/skills/synthetic-screen-recording pattern also owns ProviderChip — a rotating badge overlay that cycles through a list of provider names at a fixed cadence. Used in the v3 showcase to cycle through all 11 AI video-gen providers during the "generated motion" section.

overlays.append({
    "type": "provider_chip",
    "providers": ["Veo 3.1", "Seedance 2.0", "Kling 2.5", ...],
    "cycleSeconds": 2.5,
    "position": "bottom-right",
    "accentColor": "#22D3EE",
    "label": "generated with",
    "in_seconds": 195.0,
    "out_seconds": 222.5,
})

Wired in dispatch at: remotion-composer/src/Explainer.tsx overlay renderer (overlay.type === "provider_chip").

Adding new synthetic-UI components

The pattern generalizes. When you need to fake another UI surface (Claude Code chat bubbles, a Jira ticket view, a GitHub PR diff, a Slack message, a VS Code status bar):

  1. Copy TerminalScene.tsx as a template.
  2. Define a steps interface for the relevant timeline primitives.
  3. Render each step by interpolating frame against cumulative start/end times.
  4. Wire it into Explainer.tsx's SceneRenderer dispatch with a new cut.type.
  5. Add the type to the Cut interface in Explainer.tsx and to components/index.ts.
  6. Add a section to this skill documenting it.
  7. Update remotion-composer/SCENE_TYPES.md with the new cut type.

Related skills

  • .agents/skills/remotion — general Remotion authoring (hooks, springs, sequences)
  • .agents/skills/playwright-recording — real browser-flow capture for web apps
  • tools/capture/screen_recorder — ffmpeg-based desktop capture
  • tools/capture/cap_recorder — Cap.so polished desktop capture
  • skills/pipelines/screen-demo/asset-director.md — chooses between synthetic and real for a screen-demo project

Provenance

Introduced: OpenMontage showcase v3 render (2026-04-16). Original motivation: the v3 setup walkthrough section needed a 60-second install demo where every command aligned to Chirp 3 HD narration cues, and Windows-MCP-driven real capture was too flaky in practice. See projects/openmontage-showcase/build_composition.py for the reference implementation.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

3d-asset-generation

무료요약 있음

글이나 이미지로 3D 모델을 생성하고 카탈로그 소재와 함께 활용합니다. Blender에서 형상, 재질, 크기와 지면 접촉을 점검하고 출처를 기록한 뒤 장면에 배치합니다.

  • 글로 독자적인 3D 소품 제작
  • 콘셉트 이미지의 물체를 입체로 제작
  • 카탈로그의 식물과 바위로 배경 채우기
calesthio/OpenMontage7.1만2026년 10월 24일 업데이트

acestep

무료요약 있음

ACE-Step 1.5로 곡의 스타일, 길이, 템포 등을 지정해 영상 배경 음악과 가사가 있는 곡을 생성합니다. 참고 음원 편곡과 보컬·악기 분리도 지원합니다.

  • 영상 장면에 맞는 배경 음악 제작
  • 가사가 있는 짧은 징글 제작
  • 참고 음원을 재즈 스타일로 편곡
calesthio/OpenMontage7.1만2026년 10월 24일 업데이트

agents

무료요약 있음

ElevenLabs로 음성 대화 AI를 만들고 목소리, 응답 방침, 외부 도구 연동을 설정합니다. 웹사이트 삽입과 Twilio를 통한 전화 발신도 다룹니다.

  • 문의 응대용 음성 봇 제작
  • 웹사이트에 음성 안내 삽입
  • 대화 가능한 음성 캐릭터 시제품 제작
calesthio/OpenMontage7.1만2026년 10월 24일 업데이트

ai-video-gen

무료요약 있음

글이나 참고 이미지로 AI 영상을 생성하고 용도와 비용에 맞는 서비스를 선택합니다. 소셜 미디어용 세로 영상, 상품 사진의 영상화, 기존 클립의 대화형 편집을 지원합니다.

  • 소셜 미디어용 세로 영상 제작
  • 상품 사진에 움직임 추가
  • 예산과 표현에 맞는 생성 서비스 선택
calesthio/OpenMontage7.1만2026년 10월 24일 업데이트

ai-video-gen

무료요약 있음

텍스트나 참고 이미지로 AI 영상을 생성하고 용도와 비용에 맞는 서비스를 선택하도록 돕습니다. 화면 비율 설정, 진행 상황 확인, Gemini Omni를 통한 대화형 편집도 지원합니다.

  • 글로 설명한 장면을 영상으로 만듭니다
  • 상품 사진에 움직임을 더합니다
  • 소셜 미디어용 세로 영상을 제작합니다
calesthio/OpenMontage7.1만2026년 10월 24일 업데이트

atlas-cloud

무료요약 있음

Atlas Cloud에서 하나의 API 키로 여러 모델을 사용해 이미지와 영상을 생성하고 편집합니다. 결과물과 사용 모델, 설정, 예상 비용 기록을 저장합니다.

  • 한 서비스에서 이미지와 영상 생성
  • 참고 자료로 상품 이미지 편집
  • 이미지·영상·음성을 참고한 영상 생성
calesthio/OpenMontage7.1만2026년 10월 24일 업데이트

calesthio의 스킬 모두 보기

이 스킬의 문제 신고