mcpField
S
shot-list

shot-list

github.com/jakerains创意与媒体81 次安装
代码仓库

关于 shot-list

shot-list 是将剧本整理为可打印 PDF 镜头清单的协作规划技能。它可解析多种剧本格式,提取场景信息,并逐场景规划镜头覆盖。

主要功能

  1. 01解析 Fountain、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对话覆盖
双人镜头2S成对角色
插入镜头INS道具、细节
主观镜头POV角色视角
摄影机运动参考
运动代码效果
固定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 列
列内容
镜头编号场景.镜头 ID
设置摄影机设置
类型镜头类型代码
构图描述
运动摄影机运动
动作发生的内容
备注技术说明

输出至 /mnt/user-data/outputs/shot_list_{project}.pdf

参考资料

  • references/shot_terminology.md - 完整术语表
  • references/coverage_patterns.md - 常见拍摄覆盖策略

评论

支持 Markdown