mcpField
P
papercut-storyboard

papercut-storyboard

github.com/0xs4n4tgクリエイティブ・メディア9951 回インストール2 週間前に更新
リポジトリ

papercut-storyboard について

papercut-storyboardは、Papercut動画の制作前にシーンを設計するスキルです。シーンごとのカメラワーク、トランジション、フレーム単位のイベント、効果音を指定し、制作時の判断のばらつきを抑えます。

主な機能

  1. 01シーンごとのカメラワークとカットの計画
  2. 02構成表をフレーム単位の視覚イベントに展開
  3. 03字幕帯、背景、シーン要素の指定
  4. 04トランジションと効果音の計画
  5. 05証拠提示、コールバック、テンポ規則の確認

活用シーン

  1. 01脚本を実行可能なシーン設計に変換
  2. 02シーンごとのカメラワークと開始カットを指定
  3. 03強調するナレーション語に視覚イベントを割り当て
  4. 04papercut-buildへの引き継ぎ前に絵コンテを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/0xs4n4tg/papercut-explainer --skill papercut-storyboard

インストール後、Claude Code で/papercut-storyboardを入力して読み込まれたか確認します。

詳細

Papercut ストーリーボード

ストーリーボードは、すべてのシーンの土台となる計画です。各シーンのカメラの動きとカットを指定するので、シーンエージェントが独自に考案することはありません。「CameraPush または独自の変形」とだけ書かれた簡単な指示では、どのシーンも単調なプッシュインか手作業のズームになり、キットのカメラワークが活用されません。

事前確認

  • インストール:最小構成で十分です。ライブラリがある場合は、各カメラワークのプロパティと適した場面を library/papercut/CATALOG.md の「paper/camera.tsx」と「paper/transitions.tsx」の各セクションで確認します。ファイルがない、または古い場合は、python3 $PAPERCUT_LIB/tools/catalog.py を実行します。$PAPERCUT_LIB は環境変数から取得し、設定されていない場合は ~/.config/papercut-explainer/config.env の PAPERCUT_LIB= の行から取得します。それでもわからない場合は、一度だけ尋ねます。
  • narration/script.json と、HOOK ブロックおよびステージング表(各行にバナー、セット、小道具、UI の場面、マスコット、ギャグを記載)を含む papercut/STORYBOARD.md が必要です。ない場合は、papercut-hook と papercut-script を実行します。
  • セット選び用の背景シート:library/papercut/public/bg/backdrops/_sheet.jpg。この手順で必要なものだけを開きます。

1. 全体ルール

これらを STORYBOARD.md の先頭、HOOK ブロックの下に記載します。役割別のパレット(セットごとに背景色を変えます):../papercut-explainer/references/style-guide.md のセクション 5。フォント:セクション 6。キャンバスとゾーン:セクション 4。ひとつの長い比喩に合う機能解放には、セクション 12 を使えます。

  • 1080x1920、30 fps。バナーは高さの 14~21%、キャプション帯は 68~80%(顔に重ならないようシーンごとに位置を調整)、下部 20%は空けておきます。
  • 光は左上から当てます。彩度を高めるのは、キャラクター、キャプション、信号だけにします。

2. カメラ/カット表

シーンブロックの前に、シーンごとに 1 行を記載します。各行では、キットの paper/camera.tsx にあるコンポーネントと、そのシーンへのカットに使う paper/transitions.tsx の CutSeries の種類を指定します。

シーンカメラ(paper/camera.tsx)カットイン(CutSeries の種類)
S01HookOrbitCamera + Depth、"" で SnapZoomなし
S04Name<focal prop> まで上昇する CranetearAway
S09Peak<lineup> に沿った CrabTrackwhip
S10CTA<prop> から phone への RackFocustapePull
  • カメラの選択肢:OrbitCamera + Depth、SnapZoom、Crane、CrabTrack、DollyZoom、RackFocus、ForegroundPass、DutchTilt、FocusPulse、FreezeFrame、PullBack、PovMask、TimeRamp、TiltShift、FocusHunt、Handheld、CameraPush(paper/kit.tsx から)。各カメラワークに適した場面については、カタログの paper/camera.tsx セクションを確認します。
  • カットの選択肢:hard、whip、zoomThrough、pageTurn、tearAway、tapePull、stampCut、infiniteZoom、popUpBook、keyhole、burnAway。
  • 通常の CameraPush を使用できるのは、シーンの最大 3 分の 1 までです。
  • 各行のカメラをシーンブロックのヘッダーにコピーします。カット列は episode.json に "cuts": {"S04Name": {"kind": "tearAway"}} として追加します(項目がない場合はハードカットです)。この処理は papercut-build が行います。

3. シーンブロック

シーンごとに 1 ブロックを作成し、各シーンを 1.5~5 秒にします。カットは文の切れ目に合わせます。

## S03: <beat>  (5.6-8.2 s, 78 f)   BANNER: <TAKEAWAY IN CAPS>
Location/bg: <world location + bg colour>     Camera: <camera.tsx component + params, from the table>   Cut in: <kind>
Cast: <who, accessories>                       Caption band: y=0.76
| VO word (stressed) | frame | event                                    | motion spec                   |
| "<word>"           | +6    | <prop enters / state flips / acts>       | <spring/slide/swap + frames>  |
Ambient: <LED blink, idle bob, stars, screen waveform>
Boil: banner + labels, +-1.5 px every 2 frames
SFX: <pop, chime, click...>
  • ステージング表の各行を、フレーム単位のイベントに展開します。強調語ごとに 1 つ(0.4~0.8 秒ごと)設定し、環境の動きは常に続けます。フレームは語を基準としたオフセットで、後から cueOf(ID)(word, n) で読み取ります。
  • 製品 UI は、紙のモニターまたはノート PC 上に大まかに再現し、カーソルのクリック、入力、進捗、波形、リストのスクロールなどの偽の操作を加えます。
  • 証拠: リールごとに一度、元のページの実際のスクリーンショット(描き直しではなく、library/tools/capture.mjs によるブラウザーキャプチャ)を紙のカードに貼り、赤いマーカーで重要な行を囲む円を描いていきます。それ以外はすべて、紙切り絵風に大まかに再現します。
  • CTA の前に、以前のセットへのコールバックを 1 つ入れます。

4. カメラとトランジションのルール

  • 各シーンにカメラの動きを1つ設定します。基本はゆっくりとしたプッシュインです。奥行きを出すには、照明のあるセットでパララックスオービットを加えます。数字やジョークでは強調する言葉にパンチインまたはスナップズームを入れます。前景の横切り(レンズの前をぼかした紙のオブジェクトが通過する動き)やラックフォーカス、スケールを見せるプルバック、苦戦するマスコットの場面でラベルを付けたフリーズフレームも使います。
  • バナーが変わる場面では、ほとんどをハードカットにします。トピックの切り替え2〜3回でモーションブラーを伴うウィップパンを使い、画面、ドア、鏡の「内側」に入るときはズームスルーを使います。ページをめくる、または破る動きはリールごとに最大1回にし、気づきを得る場面かビフォー/アフターの対比で使います。CTAへのつなぎにはテープを引く動きを使います(無地のクラフト紙のテープで、任意で label を使って単語を印字できます)。
  • フックからのカットでは、その動きを引き継ぎます。S01とS02には papercut-hook のルールを適用します。
  • トランジションは6〜12フレームにし、それぞれにSFX(ウィップ、ズーム、ページをめくる音、破る音、テープを剥がす音)を付けます。
  • ライブラリプロジェクトでは、キットのトランジションシリーズを使ってシーンを連結します。これにより、すべてのシーンが plan.json のフレームで開始され、音声との同期が保たれます。

5. SFX プラン

  • エア音(whoosh、slide、whip、zoom)はまとめて、リール全体で2.5秒あたり最大1回にします。cues.py はこれを超えると警告を表示します。目安として、33秒で12回なら問題ありませんが、26秒で24回では多すぎます。
  • 登場時には接触音(pop、thud、stamp)または無音を使います。音声をレンダリングする前に、tools/cues.json で回数を確認します。
  • 各ブロックの SFX: 行には、library/audio/CATALOG.md にあるSFX名を記載します。シーンエージェントは実際の行を tools/cue_sheet.d/<Scene>.json に書き込みます。
  • ベッドのプリセット(episode.json の "bed")を選び、カットの種類に合わせて cutSfx を設定します。tearAway は破る音、tapePull はテープを剥がす音です。

チェック項目

  • すべてのシーンにカメラの動きとカットインがあり、単純な CameraPush を使うのは全体の3分の1以下です。

  • 強調する言葉すべてにイベントがあり、環境の動きも記載されています。

  • 証明する場面が1つ、コールバックが1つあり、CTAへのつなぎにテープを引く動きまたはウィップパンを使っています。

  • ページをめくる、または破る動きは最大1回で、エア音は予算内です。

  • 各シーンブロックのイベント表に、期待を持たせる箇所と誇張する箇所を1つずつ記載します。キットのコンポーネントに対応付けた12の原則については、../papercut-explainer/references/motion-principles.md を参照してください。

引き継ぎ

次は papercut-build です。プロジェクトのひな形を作成し、カメラ/カット表とシーンの境界を episode.json に変換します。STORYBOARD.md と narration/script.json を読み込みます。STORYBOARD.md の Timing セクションは、音声の完成後に生成されるため、記載しないでください。

コメント