mcpField
S
shot-list

shot-list

github.com/jakerainsクリエイティブ・メディア81 回インストール
リポジトリ

shot-list について

shot-listは、脚本から共同で計画した印刷可能なPDFショットリストを作成するスキルです。複数の脚本形式からシーン情報を抽出し、シーンごとに撮影範囲を検討できます。

主な機能

  1. 01Fountain、FDX、TXT、PDF、DOCXの解析
  2. 02シーン、登場人物、アクション、時間の抽出
  3. 03シーンごとの撮影範囲の計画
  4. 04ショット、カメラ移動、アングルの参考情報
  5. 05印刷可能なPDFショットリストの生成

活用シーン

  1. 01脚本からショットリストを準備
  2. 02シーンの撮影範囲と視覚表現を検討
  3. 03印刷可能な制作資料を作成

インストール

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

$npx skills add https://github.com/jakerains/agentskills --skill shot-list

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.claude-plugin/
plugin.json
references/
coverage_patterns.md
shot_terminology.md
scripts/
generate_shot_list_pdf.py
parse_screenplay.py

詳細

ショットリストジェネレーター

脚本を解析し、ショットを共同で決定して、制作ですぐに使えるPDFショットリストを生成します。

ワークフローの概要

  1. 脚本を解析 → シーン、ロケーション、登場人物、アクションを抽出
  2. 共同で検討 → ユーザーとシーンごとにショットの選択について話し合う
  3. PDFを生成 → プロ仕様の印刷可能なショットリストを作成

ステップ1:脚本を解析する

対応形式:.fountain、.fdx、.txt、.pdf、.docx

シーン抽出パターン

脚本から以下を抽出します:

  • シーン番号(ない場合は自動生成)
  • シーン見出し(INT./EXT.、ロケーション、時間帯)
  • シーン内の登場人物
  • 重要なアクションの節目(映像で押さえる必要のある物語上の瞬間)
  • ページ数/所要時間の目安
Fountain/テキストの解析
import re

def parse_screenplay(text):
    """Extract scenes from screenplay text."""
    scenes = []
    scene_pattern = r'^((?:INT\.|EXT\.|INT\./EXT\.|I/E\.)\s+.+)$'
    
    lines = text.split('\n')
    current_scene = None
    scene_num = 0
    
    for i, line in enumerate(lines):
        line = line.strip()
        if re.match(scene_pattern, line, re.IGNORECASE):
            if current_scene:
                scenes.append(current_scene)
            scene_num += 1
            current_scene = {
                'number': scene_num,
                'heading': line,
                'characters': set(),
                'action_beats': [],
                'content': []
            }
        elif current_scene:
            current_scene['content'].append(line)
            if line.isupper() and len(line) > 1 and len(line) < 40:
                if not any(t in line for t in ['CUT TO', 'FADE', 'DISSOLVE']):
                    current_scene['characters'].add(line.split('(')[0].strip())
    
    if current_scene:
        scenes.append(current_scene)
    
    for s in scenes:
        s['characters'] = list(s['characters'])
    
    return scenes

ステップ2:共同でショットを計画する

解析後、シーンを提示して、必要なカバレッジについて話し合います。各シーンについて、次の点を確認します:

  1. 感情の流れはどうなっていますか?(フレーミングの選択に影響します)
  2. 誰に焦点を当てますか?(カバレッジの優先順位を決めます)
  3. 重要な瞬間はありますか?(特定のショットが必要な節目)
  4. 実際上の制約はありますか?(ロケーション、機材、時間)
  5. 映像スタイルの参考はありますか?(参考にする映画や番組)
ショットタイプのリファレンス
タイプコード用途
ワイド/エスタブリッシングWSロケーション、グループ
フルショットFS全身、アクション
ミディアムショットMS会話、やり取り
ミディアムクローズアップMCU感情的な会話
クローズアップCUリアクション、感情
エクストリームクローズアップECU重要なディテール
オーバー・ザ・ショルダーOTS会話のカバレッジ
ツーショット2S2人の登場人物
インサートINS小道具、ディテール
POVPOV登場人物の視点
カメラ移動のリファレンス
移動コード効果
固定STATIC安定感
パンPAN水平方向に追う
チルトTILT高さを見せる
ドリーDOLLY接近/後退
トラッキングTRACK動きを追う
クレーンCRANE壮大なスケール感
ハンドヘルドHH緊張感、躍動感
ステディカムSTEDI滑らかな追従
アングルのリファレンス
アングル効果
アイレベル中立
ローアングル力強さ
ハイアングル脆弱さ
ダッチアングル不安感

ステップ3:ショット項目を作成する

shot_entry = {
    'scene': 1,
    'shot': 'A',
    'setup': 1,
    'shot_type': 'MS',
    'framing': 'Medium on Sarah',
    'angle': 'Eye Level',
    'movement': 'STATIC',
    'lens': '50mm',
    'description': 'Sarah enters, sees the letter',
    'characters': ['SARAH'],
    'notes': 'Practical window light'
}
カバレッジのパターン

マスター → ミディアム → クローズアップ → インサート

ステップ4:PDFを生成する

プロ仕様の出力には scripts/generate_shot_list_pdf.py を使用します。

PDFの列
列内容
ショット番号Scene.Shot ID
セットアップカメラのセットアップ
タイプショットタイプのコード
フレーミング説明
移動カメラ移動
アクション起きること
備考技術的なメモ

出力先:/mnt/user-data/outputs/shot_list_{project}.pdf

参考資料

  • references/shot_terminology.md - 用語集の全容
  • references/coverage_patterns.md - 一般的なカバレッジ戦略

コメント