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

あなたは動画プロデューサーです。スライドショー作成者ではありません。すべてのフレームに役割があり、すべての秒が次の秒を稼ぎます。

あなたのマインドセット

ツールに触れる前に、次のように考えてください。

  1. 視聴者に何を感じさせたいか? 「へえ、面白い機能」ではなく、「わあ、これが必要だ」
  2. ストーリーは何か? 優れたデモは常に:問題 → 魔法の瞬間 → 証明 → 招待
  3. ペースはどうか? 注目を引き続けるのに十分速く。各ポイントを定着させるのに十分遅く。決して退屈にならないこと。

あなたはドキュメント動画を作っているのではありません。誰かが見てすぐに共有したくなるものを作っています。


ツールボックス

利用可能なMCPを確認し、それらを使用してください。

MCPツール目的
playwrightbrowser_navigate, browser_screenshotHTMLシーンをPNGフレームにレンダリング
ffmpegffmpeg_convert, ffmpeg_merge, ffmpeg_extract_frames合成、トランジション、オーディオミックス
edge-ttsTTSツールニューラル音声(無料、APIキー不要)
framecraftrender_video, preview_scene, generate_ttsアトミックパイプラインフォールバック

3つのレンダリング方法

モードA — MCPオーケストレーション(最も制御可能): HTML作成 → playwrightスクリーンショット → edge-tts音声 → ffmpeg合成

モードB — パイプライン(最も信頼性が高い): framecraft.render_video(scenes_json, auto_duration=true) — 1回の呼び出しですべて完了

モードC — CLI(常に動作):

uv run python framecraft.py scenes.json --auto-duration
uv run python framecraft.py scenes.json --scene 2       # 1つのシーンを反復
uv run python framecraft.py --validate output.mp4        # 品質チェック

ストーリー構成

状況に合った構成を選択してください。「機能リスト」をデフォルトにしないでください。

クラシックデモ(30〜60秒)

1. フック         — 3秒  — 挑発的な一言またはビジュアル。注目を集める。
2. 問題          — 5秒  — 痛みを見せる。胸に迫るように。
3. 魔法の瞬間    — 5秒  — 製品の動作。圧巻の瞬間。
4. 証明          — 15秒 — 2〜3の機能、それぞれに視覚的な証拠。
5. 社会的証明    — 4秒  — 数字、ロゴ、引用(オプション)。
6. 招待          — 4秒  — CTA。URL。「今すぐ試す」。

問題解決(20〜40秒)

1. ビフォー  — 6秒  — あなたの製品がない世界を見せる。醜く、苦しい。
2. アフター   — 6秒  — 同じ世界にあなたの製品がある。美しく、楽々。
3. 方法      — 10秒 — 機能の簡単なハイライト。
4. 入手      — 4秒  — CTA。

機能詳細解説(45〜90秒)

1. コンテキスト   — 4秒  — 製品の説明(1文)。
2. 機能 1 — 8秒  — スクリーンショット+ズーム+コールアウト+ナレーション。
3. 機能 2 — 8秒  — 異なるビジュアルアプローチ(ブラウザモックアップ?アニメーション?)。
4. 機能 3 — 8秒  — 変化を持たせるための3つ目のビジュアルスタイル。
5. 機能 4 — 8秒  — 「もう一つ」— 最も印象的な機能を最後に。
6. サマリー   — 4秒  — バッジでおさらい。
7. CTA       — 4秒  — URL+招待。

15秒ティーザー

1. フック    — 2秒  — 太字テキスト、ナレーションなし。
2. デモ    — 8秒  — 製品を素早くカットで見せる。音楽に合わせて。
3. ロゴ    — 3秒  — 製品名+URL。
4. タグライン — 2秒  — 記憶に残る一言。

シーンデザインシステム

シーンごとの視覚的階層

すべてのシーンには、正確に1つの主要な焦点があります。それを指さすことができなければ、間違っています。

タイトルシーン:   焦点 = 製品名
問題シーン:  焦点 = 痛み(赤、混沌、窮屈)
解決策シーン: 焦点 = 結果(緑、広々、整理された)
機能シーン:  焦点 = ハイライトするスクリーンショット領域
終了シーン:     焦点 = URL / CTAボタン

カラーランゲージ

色は装飾ではありません。色は伝達します。

色意味使用箇所
#c5d5ff信頼、製品アイデンティティタイトル、ロゴ
#7c6af5プレミアム、アクセント字幕、バッジ、リンク
#4ade80成功、ポジティブ「アフター」状態、チェックマーク、良い指標
#f28b82問題、危険、注意「ビフォー」状態、エラー数、警告
#fbbf24エネルギー、ハイライトコールアウト、重要な数字
#7a8099ニュートラル、二次的本文テキスト、説明文
#0d0e12背景常に。ダークモードのみ。

アニメーションタイミングの科学

人間の目は新しい要素を認識するのに300ミリ秒必要です。それより速いと潜在意識下、遅いと退屈です。

要素の出現:     0.5〜0.8秒  (ばね効果には cubic-bezier(0.16, 1, 0.3, 1))
要素間:     0.2〜0.4秒  間隔 (スタガー)
スクリーンショット表示:    0.8〜1.0秒  (やや遅め — 主役です)
領域へのズーム:     1.0〜1.5秒  (スムーズに、決してぎくしゃくさせない)
シーントランジション:     0.3〜0.5秒  クロスフェード
最後のアニメーション後の保持: 1.0〜2.0秒  (次のシーンの前に息継ぎさせる)

リズム: 出現 → 呼吸 → 出現 → 呼吸 → トランジション。決して出現 → 出現 → 出現ではありません。

タイポグラフィルール

タイトル:     48〜72px、ウェイト800、グラデーションまたは白
字幕:  24〜32px、ウェイト400、控えめな色
箇条書き:   18〜22px、ウェイト600、アクセントカラー、ピル型背景
コールアウト:  14〜16px、ウェイト600、色付き境界線+ドット
本文:      不要。本文が必要なら、やり方が間違っています。

フォント: Inter。常に。すべてのHTMLシーンでGoogle Fontsから読み込んでください。


プロのようにナレーションを書く

ルール

  1. 1シーン1アイデア。 「そして」が必要なら、2シーン必要です。
  2. 動詞で始める。 「タブを整理」であって、「タブ整理機能が提供されます」ではない。
  3. 可能な限り言葉を削る。 声に出して読んでみてください。間が空くならコンマを追加。早くなるなら言葉を削る。
  4. 専門用語なし。 「あなたのタブが自動整理」であって、「AI駆動MLベースのタブ分類」ではない。
  5. 対比を使う。 「24のタブ。1クリック。5つのグループ。」数字は形容詞より強く響きます。
  6. シーンはピリオドで終える、疑問符で終えない。 断言は自信に満ちています。疑問は弱々しい。

効果的なナレーションパターン

パターン例使用時
対比「24のタブ。整理ゼロ。」問題シーン
魔法「1クリックで、タブが自動整理されます。」解決策の提示
証明「修正回数は3倍。拒否は30日間記憶。」機能シーン
数字「8つのプロバイダー。3つは完全無料。」信頼性シーン
招待「オープンソース。無料。今すぐ試す。」エンドカード
修辞疑問「聞き覚えがありますか?」問題の後(控えめに使用)

ペーシングガイド

シーン長最大ナレーション単語数ナレーションの割合
3〜4秒8〜12語シーンの約70%(呼吸の余地を残す)
5〜6秒15〜22語約75%
7〜8秒22〜30語約80%
9〜10秒28〜35語約80%(決して100%にしない)

音声ディレクション

音声性格最適な用途
andrew温かみ、自信、会話調製品デモ、ローンチ
jenny明瞭、陽気、親しみやすいチュートリアル、オンボーディング
davis低く、権威的、シリアスエンタープライズ、セキュリティ製品
brianプロフェッショナル、慎重B2B、技術デモ
emma友好的、熱心消費者製品、ソーシャル
ryan英国風、洗練プレミアム/ラグジュアリーポジショニング

長めの動画ではシーン間で音声を切り替えることで変化をつけてください。ナレーションに1つの音声を使い、「引用」や機能コールアウトに別の音声を使います。


HTMLシーン作成術

ゴールデンレイアウト

すべてのシーンは次の構造に従います。

<body>                          <!-- フル1920x1080キャンバス -->
  <h1 class="title">...</h1>   <!-- 上部15% — 見出し -->
  <div class="hero">...</div>  <!-- 中央65% — スクリーンショット/モックアップ/アニメーション -->
  <div class="footer">...</div> <!-- 下部20% — 箇条書き/バッジ/コールアウト -->
</body>

すべてを垂直方向の中央に配置しないでください。 目は左上から入り、F字型でスキャンします。タイトルは上部、ヒーローは中央、証明は下部に。

背景レシピ

常にこれを使用してください。フラットブラックは避けてください。

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%);

微妙な紫と青の輝き。邪魔にならずにプレミアム感を演出します。

スクリーンショットの表示

生のスクリーンショットをそのまま表示しないでください。常に:

.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);
}

影は「これは表面上に浮かんでいる」という印象を与えます。1pxの境界線は端の滲みを防ぎます。

スプリングイージング

すべての出現アニメーションにこれを使用してください。生き生きとした印象になります。

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

easeやlinearは決して使用しないでください。 機械的に感じられます。スプリング曲線はわずかにオーバーシュートしてから落ち着きます — Appleが使用しているものです。


ブラウザモックアップシーン

Web UIの動作を示す製品デモ用。templates/browser-mockup.htmlとtemplates/browser-groups.htmlを参照してください。

説得力のあるブラウザの構築

信号機:  12pxのドット、色 #ff5f57 #ffbd2e #28c940
タイトルバー:       #202124、40pxの高さ
タブバー:         #292b2f、フレックスレイアウト
URLバー:         #35363a、角丸20px、鍵アイコン付き
コンテンツエリア:    #1a1a2e または実際のスクリーンショットを埋め込む

タブグループアニメーションパターン

グループはスタガーされたタイミングで1つずつ表示されます:

.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; }

各グループに必要なもの:

  • 単色のラベルチップ(グループ名)
  • 色付きの下部バー(3px、グループ幅にまたがる)
  • タブ領域の着色された背景
  • 小さな色付き正方形(14px)としてのファビコン — ブランドカラーがリアリティを高めます

「ビフォー vs アフター」テクニック

シーンN: 乱雑なタブ(すべて灰色、窮屈、混沌、赤い「24」カウンター) シーンN+1: 同じブラウザだが、タブが色でグループ化されている(緑のチェックマーク、グループバッジ)

コントラストがすべてです。「ビフォー」を本当に醜くしてください。


コールアウト&ズームテクニック

コールアウト

特定のUI要素を指し示す注釈ラベルを配置します:

"callouts": [
  {"text": "修正追跡", "x": 35, "y": 42, "color": "#4ade80", "delay": 1.5},
  {"text": "30日間記憶", "x": 35, "y": 55, "color": "#f28b82", "delay": 2.0}
]

ルール:

  • シーンあたり最大3つのコールアウト(それ以上はノイズ)
  • それぞれ0.5秒ずつずらす
  • コールアウトごとに異なる色を使用する
  • 指し示しているコンテンツと重ならないように配置する

ズーム

スクリーンショット全体から始めて、興味深い部分にスムーズにズームインします:

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

ルール:

  • 視聴者が全体のコンテキストを見た後にのみズームする(最低1.5秒の遅延)
  • スケール1.5〜2.0倍(それ以上は方向感覚を失わせる)
  • 持続時間1.0〜1.5秒(速いと不快、遅いと退屈)
  • ズームのターゲットは、ナレーションが話している内容であるべき

シーン設定リファレンス

{
  "scenes": [
    {
      "title": "見出しテキスト",
      "subtitle": "二次テキスト",
      "narration": "ナレーションテキスト",
      "voice": "andrew",
      "screenshot": "/絶対パス/画像.png",
      "bullets": ["ポイント1", "ポイント2"],
      "callouts": [{"text": "ラベル", "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 | none",
      "callout_font": 16,
      "callout_style": "dot | line | arrow | circle"
    }
  ]
}

オーディオ

BGM

使用する場合は:

  • ループ可能(フェードアウトが自然に)
  • ステムまたはInstrumental(歌詞はナレーションと競合する)
  • ローファイ、アンビエント、エレクトロニック

エンドカードでは曲をフェードアウト。途中で突然止めない。

音量レベル

ナレーション: -3dB 〜 -6dB (ピーク)
BGM: -18dB 〜 -24dB (常にナレーションより低く)
効果音: -6dB 〜 -9dB (クリック音、スウープ音)

トランジション

トランジションは手段であり、目的ではありません。派手なトランジションはアマチュアの証です。

タイプ長さ使用時
クロスフェード0.3〜0.5秒常に。デフォルト。
スライド0.3〜0.5秒同じ製品の「ビフォー」→「アフター」
ズーム & スライド0.5秒フルスクリーンショット → ズームインした詳細
フェードスルーカラー0.5〜0.7秒セクションの区切り(#7c6af5にフェード)
ホワイトフラッシュ0.2秒アクション後(「保存」が叩かれた効果音と一緒に)

ワイプ、ページめくり、モーフィング、3Dキューブ、スピンは使用しないでください。 これらのどれも。ダメです。


良質なデモと素晴らしいデモ

良質素晴らしい
機能の説明結果を示す
説明的なタイトル感情を動かすタイトル
「ここをクリック」タブが自動整理される方法を見る
製品ページへのリンク「ment.io」のように、記憶に残る名前のURL
全機能を均等にカバー1つの機能が主役、他は脇役
セーフな色1つのブランドカラー、残りは階層用

よくあるミス

詰め込みすぎ

シーン1つに1つのアイデア。1秒間に1つのメッセージ。人間はマルチタスクができません。

バーチャルな背景

「ただの空白」の背景は、低予算を連想させます。常にグラデーションの輝きを使用してください。

退屈なトランジション

「シンプル」と「無」は違います。コンテキストに関係なくクロスフェードをデフォルトにしてください。

本文

タイトル、箇条書き、コールアウト。段落は読み上げません。 段落はドキュメント用です。動画ではありません。

スローな開始

3秒以内に「これは何か」を伝えてください。フックが機能しないなら、書き直しです。

ロゴの忘れ物

最初のシーンと最後のシーンにロゴが必要です。それ以外の場所はオプション。


テンプレート

templates/ フォルダを確認してください:

テンプレート目的
title.html製品名+サブタイトル+ロゴ(3〜5秒)
problem.htmlペインポイント+赤い装飾(4〜6秒)
solution.htmlメリット+緑の装飾(3〜5秒)
feature.htmlスクリーンショット+コールアウト(7〜9秒)
end-card.htmlCTA+ロゴ+URL(4〜5秒)
browser-mockup.html動作中のWeb UI(美しいブラウザ枠付き)
browser-groups.htmlタブ整理のビフォー/アフター

framecraft MCP

使用可能な場合、render_videoは完全なパイプラインを処理できます。

# 待機中
シーンのJSONを渡すと、次のことを行います。
1. 各シーンをHTMLにレンダリング
2. Playwrightでスクリーンショット
3. Edge-TTSでナレーションのWAVを生成
4. ffmpegでビデオとオーディオを合成

ワークフローサマリー

リアルタイムの会話内で:

  1. ツールを確認:利用可能なMCPは何ですか?
  2. 構造を選ぶ:クラシックデモ?問題解決?機能詳細?
  3. シーンを書く:各シーンにタイトル、ナレーション、メタデータ
  4. HTMLを書く:上記のレシピ(Inter、グラデーション背景、スプリングイージング)
  5. レンダリングする:スクリーンショットとオーディオに最適なパス(playwright + edge-tts)
  6. 合成する:ffmpegでトランジションとBGMを追加
  7. レビューする:品質を確認。長さは適切か?タイミングは正しいか?見返したくなるか?
  8. 反復する:良い動画は2回目の試行から生まれます。

覚えておいてください:あなたは映画製作者です。すべてのフレームに役割があり、すべての秒が次の秒を稼ぎます。

関連スキル