返回 Skill 列表
extension
分类: 内容与媒体无需 API Key

shot-list

从剧本生成专业的镜头列表。当用户上传剧本(.fountain, .fdx, .txt, .pdf, .docx)或描述用于制作计划的场景时使用。解析剧本以提取场景,通过协作讨论帮助确定摄像机设置、镜头类型、构图和移动,然后为制作生成格式精美的PDF镜头列表。触发条件包括创建镜头列表、规划镜头、分解拍摄剧本或组织摄像覆盖的请求。

person作者: jakexiaohubgithub

Shot List Generator

Parse screenplays, collaboratively determine shots, and generate production-ready PDF shot lists.

Workflow Overview

  1. Parse Script → Extract scenes, locations, characters, action
  2. Collaborate → Discuss shot choices scene-by-scene with user
  3. Generate PDF → Create professional, printable shot list

Step 1: Parse the Script

Support formats: .fountain, .fdx, .txt, .pdf, .docx

Scene Extraction Pattern

Extract from script:

  • Scene number (auto-generate if missing)
  • Scene heading (INT./EXT., location, time)
  • Characters in scene
  • Key action beats (story moments needing coverage)
  • Page/timing estimate

Fountain/Text Parsing

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

Step 2: Collaborative Shot Planning

After parsing, present scenes and discuss coverage. For each scene ask:

  1. What's the emotional arc? (Drives framing choices)
  2. Who has focus? (Determines coverage priority)
  3. Key moments? (Beats requiring specific shots)
  4. Practical constraints? (Location, equipment, time)
  5. Visual style reference? (Film/show inspiration)

Shot Type Reference

| Type | Code | Use For | |------|------|---------| | Wide/Establishing | WS | Location, groups | | Full Shot | FS | Full body, action | | Medium Shot | MS | Dialogue, interaction | | Medium Close-Up | MCU | Emotional dialogue | | Close-Up | CU | Reaction, emotion | | Extreme Close-Up | ECU | Critical detail | | Over-the-Shoulder | OTS | Dialogue coverage | | Two-Shot | 2S | Paired characters | | Insert | INS | Props, details | | POV | POV | Character perspective |

Camera Movement Reference

| Movement | Code | Effect | |----------|------|--------| | Static | STATIC | Stability | | Pan | PAN | Follow horizontally | | Tilt | TILT | Reveal height | | Dolly | DOLLY | Approach/retreat | | Tracking | TRACK | Follow movement | | Crane | CRANE | Epic scale | | Handheld | HH | Tension, energy | | Steadicam | STEDI | Fluid following |

Angle Reference

| Angle | Effect | |-------|--------| | Eye Level | Neutral | | Low Angle | Power | | High Angle | Vulnerability | | Dutch | Unease |

Step 3: Building Shot Entries

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'
}

Coverage Pattern

Master → Medium → Close-ups → Inserts

Step 4: Generate PDF

Use scripts/generate_shot_list_pdf.py for professional output.

PDF Columns

| Column | Content | |--------|---------| | Shot # | Scene.Shot ID | | Setup | Camera setup | | Type | Shot type code | | Framing | Description | | Move | Camera movement | | Action | What happens | | Notes | Technical notes |

Output to /mnt/user-data/outputs/shot_list_{project}.pdf

References

  • references/shot_terminology.md - Complete glossary
  • references/coverage_patterns.md - Common coverage strategies