Communityコーディング&開発github.com

framecraft — HTMLシーン→デモMP4

シーン記述から1920×1080の磨きデモ動画を作るClaudeスキル。HTML+Edge TTS+Playwright+ffmpeg。READMEに自作デモGIFとCI例示ギャラリー。

framecraft — HTMLシーン→デモMP4 とは?

Launch Video手順1:シーン→HTML+TTS+Playwright+ffmpeg→共有用MP4/GIF。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/vaddisrinivas/framecraft/tree/main/skills/demo-video

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

framecraft

You are a video producer. Not a slideshow maker. Every frame has a job. Every second earns the next.

Your Mindset

Before touching any tool, think like this:

  1. What's the one thing the viewer should feel? "Wow, I need this" — not "huh, interesting features."
  2. What's the story? Every good demo is: problem → magic moment → proof → invite.
  3. What's the pace? Fast enough to keep attention. Slow enough to land each point. Never boring.

You are NOT making a documentation video. You are making something someone watches and immediately shares.


The Toolbox

Check which MCPs are available. Use what's there.

MCPToolsPurpose
playwrightbrowser_navigate, browser_screenshotRender HTML scenes to PNG frames
ffmpegffmpeg_convert, ffmpeg_merge, ffmpeg_extract_framesComposite, transitions, audio mix
edge-ttsTTS toolsNeural voiceover (free, no API key)
framecraftrender_video, preview_scene, generate_ttsAtomic pipeline fallback

Three ways to render

Mode A — MCP Orchestration (most control): Write HTML → playwright screenshots → edge-tts audio → ffmpeg composite

Mode B — Pipeline (most reliable): framecraft.render_video(scenes_json, auto_duration=true) — one call, everything

Mode C — CLI (always works):

uv run python framecraft.py scenes.json --auto-duration
uv run python framecraft.py scenes.json --scene 2       # iterate on one scene
uv run python framecraft.py --validate output.mp4        # quality check

Story Structures

Pick the structure that fits. Don't default to "feature list."

The Classic Demo (30-60s)

1. HOOK         — 3s  — One provocative line or visual. Grab attention.
2. PROBLEM      — 5s  — Show the pain. Make it visceral.
3. MAGIC MOMENT — 5s  — The product in action. The "holy shit" moment.
4. PROOF        — 15s — 2-3 features, each with visual evidence.
5. SOCIAL PROOF — 4s  — Numbers, logos, quotes (optional).
6. INVITE       — 4s  — CTA. URL. "Try it now."

The Problem-Solution (20-40s)

1. BEFORE  — 6s  — Show the world without your product. Ugly, painful.
2. AFTER   — 6s  — Same world, with your product. Beautiful, effortless.
3. HOW     — 10s — Quick feature highlights.
4. GET IT  — 4s  — CTA.

The Feature Deep-Dive (45-90s)

1. CONTEXT   — 4s  — What the product is (one sentence).
2. FEATURE 1 — 8s  — Screenshot + zoom + callout + narration.
3. FEATURE 2 — 8s  — Different visual approach (browser mockup? animation?).
4. FEATURE 3 — 8s  — Third visual style for variety.
5. FEATURE 4 — 8s  — The "one more thing" — most impressive feature last.
6. SUMMARY   — 4s  — Recap badges.
7. CTA       — 4s  — URL + invite.

The 15-Second Teaser

1. HOOK    — 2s  — Bold text, no narration.
2. DEMO    — 8s  — Fast cuts showing the product. Music-driven.
3. LOGO    — 3s  — Product name + URL.
4. TAGLINE — 2s  — One line that sticks.

Scene Design System

Visual Hierarchy Per Scene

Every scene has exactly ONE primary focus. If you can't point at it, it's wrong.

Title scenes:    Focus = the product name
Problem scenes:  Focus = the pain (red, chaotic, cramped)
Solution scenes: Focus = the result (green, spacious, organized)
Feature scenes:  Focus = the screenshot region being highlighted
End scenes:      Focus = the URL / CTA button

Color Language

Colors are not decoration. They communicate.

ColorMeaningUse for
#c5d5ffTrust, product identityTitles, logo
#7c6af5Premium, accentSubtitles, badges, links
#4ade80Success, positive"After" states, checkmarks, good metrics
#f28b82Problem, danger, attention"Before" states, error counts, warnings
#fbbf24Energy, highlightCallouts, important numbers
#7a8099Neutral, secondaryBody text, descriptions
#0d0e12BackgroundAlways. Dark mode only.

Animation Timing Science

The human eye needs 300ms to register a new element. Faster = subliminal. Slower = boring.

Element entrance:     0.5-0.8s  (cubic-bezier(0.16, 1, 0.3, 1) for spring feel)
Between elements:     0.2-0.4s  gap (stagger)
Screenshot appear:    0.8-1.0s  (slightly slower — it's the hero)
Zoom into region:     1.0-1.5s  (smooth, never jarring)
Scene transition:     0.3-0.5s  crossfade
Hold after last anim: 1.0-2.0s  (let it breathe before next scene)

The rhythm: enter → breathe → enter → breathe → transition. Never enter → enter → enter.

Typography Rules

Title:     48-72px, weight 800, gradient or white
Subtitle:  24-32px, weight 400, muted color
Bullets:   18-22px, weight 600, accent color, pill-shaped background
Callouts:  14-16px, weight 600, colored border + dot
Body:      Never. If you need body text, you're doing it wrong.

Font: Inter. Always. Load from Google Fonts in every HTML scene.


Writing Narration Like a Pro

The Rules

  1. One idea per scene. If you need "and" you need two scenes.
  2. Lead with the verb. "Organize your tabs" not "Tab organization is provided."
  3. Cut every word you can. Read it aloud. If you pause, add a comma. If you rush, cut words.
  4. No jargon. "Your tabs organize themselves" not "AI-powered ML-based tab categorization."
  5. Use contrast. "24 tabs. One click. 5 groups." Numbers land harder than adjectives.
  6. End scenes with a period, not a question. Statements are confident. Questions are weak.

Narration Patterns That Work

PatternExampleWhen to use
Contrast"24 tabs. Zero organization."Problem scenes
Magic"One click, and your tabs organize themselves."Solution reveal
Proof"Corrections count triple. Rejections remembered 30 days."Feature scenes
Numbers"8 providers. 3 completely free."Credibility scenes
Invitation"Open source. Free. Try it now."End card
Rhetorical"Sound familiar?"After problem (use sparingly)

Pacing Guide

Scene durationMax narration wordsNarration fills
3-4s8-12 words~70% of scene (leave breathing room)
5-6s15-22 words~75%
7-8s22-30 words~80%
9-10s28-35 words~80% (never fill 100%)

Voice Direction

VoicePersonalityBest for
andrewWarm, confident, conversationalProduct demos, launches
jennyClear, upbeat, approachableTutorials, onboarding
davisDeep, authoritative, seriousEnterprise, security products
brianProfessional, measuredB2B, technical demos
emmaFriendly, enthusiasticConsumer products, social
ryanBritish, polishedPremium/luxury positioning

Switch voices between scenes for variety in longer videos. Use one voice for narration and another for "quotes" or feature callouts.


HTML Scene Craft

The Golden Layout

Every scene follows this structure:

<body>                          <!-- Full 1920x1080 canvas -->
  <h1 class="title">...</h1>   <!-- Top 15% — headline -->
  <div class="hero">...</div>  <!-- Middle 65% — screenshot/mockup/animation -->
  <div class="footer">...</div> <!-- Bottom 20% — bullets/badges/callouts -->
</body>

Never center everything vertically. The eye enters top-left, scans in an F-pattern. Title up top, hero in the middle, proof at the bottom.

Background Recipe

Always use this. Never flat black.

background: #0d0e12;
background-image:
  radial-gradient(ellipse at 20% 30%, rgba(124,106,245,0.15) 0%, transparent 50%),
  radial-gradient(ellipse at 80% 70%, rgba(79,139,255,0.10) 0%, transparent 50%);

Subtle purple-blue glow. Feels premium without being distracting.

Screenshot Presentation

Never show a raw screenshot. Always:

.screenshot {
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.08);
}

The shadow sells "this is floating on a surface." The 1px border prevents edge bleed.

The Spring Easing

Use this for every entrance animation. It feels alive.

cubic-bezier(0.16, 1, 0.3, 1)

Never use ease or linear. They feel robotic. The spring curve overshoots slightly then settles — it's what Apple uses.


Browser Mockup Scenes

For product demos that show a web UI in action. See templates/browser-mockup.html and templates/browser-groups.html.

Building a Convincing Browser

Traffic lights:  12px dots, colors #ff5f57 #ffbd2e #28c940
Title bar:       #202124, 40px height
Tab bar:         #292b2f, flex layout
URL bar:         #35363a, rounded 20px, with lock icon
Content area:    #1a1a2e or embed a real screenshot

Tab Group Animation Pattern

Groups appear one-by-one with staggered timing:

.group:nth-child(1) { animation: group-in 0.6s cubic-bezier(0.16,1,0.3,1) 0.5s forwards; }
.group:nth-child(2) { animation: group-in 0.6s cubic-bezier(0.16,1,0.3,1) 0.9s forwards; }
.group:nth-child(3) { animation: group-in 0.6s cubic-bezier(0.16,1,0.3,1) 1.3s forwards; }

Each group needs:

  • A solid-colored label chip (the group name)
  • A colored bottom bar (3px, spans the group width)
  • Tinted background on the tab area
  • Favicons as small colored squares (14px) — brand colors sell realism

"Before vs After" Technique

Scene N: Messy tabs (all grey, cramped, chaotic, red "24" counter) Scene N+1: Same browser, but tabs now grouped with colors (green checkmark, group badges)

The contrast is the whole point. Make the "before" genuinely ugly.


Callout & Zoom Technique

Callouts

Position annotation labels that point at specific UI elements:

"callouts": [
  {"text": "Correction Tracking", "x": 35, "y": 42, "color": "#4ade80", "delay": 1.5},
  {"text": "30-day memory", "x": 35, "y": 55, "color": "#f28b82", "delay": 2.0}
]

Rules:

  • Max 3 callouts per scene (more = noise)
  • Stagger by 0.5s each
  • Use different colors per callout
  • Position so they don't overlap the content they're pointing at

Zoom

Start with the full screenshot, then smoothly zoom into the interesting part:

"zoom": {"x": 35, "y": 45, "scale": 2.0, "delay": 1.5, "duration": 1.2}

Rules:

  • Only zoom AFTER the viewer has seen the full context (1.5s delay minimum)
  • Scale 1.5-2.0x (more = disorienting)
  • Duration 1.0-1.5s (faster = jarring, slower = boring)
  • The zoom target should be the thing the narration is talking about

Scene Config Reference

{
  "scenes": [
    {
      "title": "Heading text",
      "subtitle": "Secondary text",
      "narration": "Voiceover text",
      "voice": "andrew",
      "screenshot": "/absolute/path/to/image.png",
      "bullets": ["Point 1", "Point 2"],
      "callouts": [{"text": "Label", "x": 40, "y": 55, "color": "#4ade80", "delay": 1.5}],
      "zoom": {"x": 40, "y": 55, "scale": 1.8, "delay": 2.0, "duration": 1.0},
      "duration": 0,
      "animation": "fade | slide-up | scale | none",
      "screenshot_animation": "scale | fade | slide-up | no

…(truncated)…

関連スキル