Skip to main content

coco-preproduction

Coco影视前期统筹(顺场表 + 人物包 二合一)。管线 A 顺场表——把剧本按影视工业标准切成「场」,一场一行、场号顺序纯数字,交付带「场景统计」sheet 的 Excel(总场数/总页数/预估总时长、日夜与内外占比、按主场景归组、角色出场),列序固定为 集·场号·日/夜·内/外·主场景·场景·氛围·内容梗概·页数·角色列组(每人一列,表头写全名、格里填单字缩写)·特约·群众·道具·视效·备注。管线 B 人物包——从剧本整理人物体系,出①人物圣经 Word(每人九块字段小传 + 次要人物速查 + 关系总表 + Vogler 八原型矩阵 + 未解扣,并提炼「反派阶梯」「同处境不同答案」两组骨架)②力导向关系网 HTML(零依赖单文件,自写物理引擎自动聚簇,支持拖拽钉住、双击隔离邻域、滚轮缩放、关系类型与阵营双重筛选实时重排、搜索定位、深浅主题)。触发词:顺场表、分场、分场表、场次表、场景表、场号、场次统计、场景统计、梳理场次、排场、统筹表、主场景归组、角色出场、scene breakdown;人物小传、人物关系、人物关系图、关系图谱、关系网、人物图谱、人物圣经、角色小传、人物设定、人物功能、整理人物、character bible。不适用于:镜头级拆分(景别/运镜/镜号,请用分镜表 skill)、拍摄通告单排期、普通数据表格制作。

インストールへ移動

ソース情報

リポジトリ
gujiapeng1991-droid/coco-preproduction
ソースの最終更新活動
2026年9月6日 01:26
検出された SKILL.md の言語
中国語
スター
0
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
coco-preproduction
slug
coco-preproduction
version
2.0.0
displayName
Coco影视前期统筹
display_name_zh
Coco影视前期统筹
author
user_23e58d64
category
创意设计
license
MIT
homepage
https://github.com/gujiapeng1991-droid/coco-preproduction
agent_created
true
tags
["顺场表","分场","场次统计","人物小传","人物关系","关系网","人物圣经","影视统筹","剧本","Excel","character bible"]
platforms
["macos","windows","linux"]
summary
剧本前期统筹一条龙——两条管线并装。管线 A 顺场表:剧本切「场」,一场一行,出带场景统计的 Excel(角色每人一列,表头全名、格内单字缩写);管线 B 人物包:整理人物体系,出人物圣经 Word + 力导向关系网 HTML。常规链路是 A 做完接 B,顺场表的角色列直接就是人物包的候选名单。
description
Coco影视前期统筹(顺场表 + 人物包 二合一)。管线 A 顺场表——把剧本按影视工业标准切成「场」,一场一行、场号顺序纯数字,交付带「场景统计」sheet 的 Excel(总场数/总页数/预估总时长、日夜与内外占比、按主场景归组、角色出场),列序固定为 集·场号·日/夜·内/外·主场景·场景·氛围·内容梗概·页数·角色列组(每人一列,表头写全名、格里填单字缩写)·特约·群众·道具·视效·备注。管线 B 人物包——从剧本整理人物体系,出①人物圣经 Word(每人九块字段小传 + 次要人物速查 + 关系总表 + Vogler 八原型矩阵 + 未解扣,并提炼「反派阶梯」「同处境不同答案」两组骨架)②力导向关系网 HTML(零依赖单文件,自写物理引擎自动聚簇,支持拖拽钉住、双击隔离邻域、滚轮缩放、关系类型与阵营双重筛选实时重排、搜索定位、深浅主题)。触发词:顺场表、分场、分场表、场次表、场景表、场号、场次统计、场景统计、梳理场次、排场、统筹表、主场景归组、角色出场、scene breakdown;人物小传、人物关系、人物关系图、关系图谱、关系网、人物图谱、人物圣经、角色小传、人物设定、人物功能、整理人物、character bible。不适用于:镜头级拆分(景别/运镜/镜号,请用分镜表 skill)、拍摄通告单排期、普通数据表格制作。
# Coco 影视前期统筹 剧本到开拍前的**两条管线**装在一个包里。两条各自独立,也可以串着跑完。 | 管线 | 干什么 | 产物 | |---|---|---| | **A · 顺场表** | 把剧本切成「场」,一场一行 | `.xlsx`(顺场表 + 场景统计 sheet),可加 `--html` | | **B · 人物包** | 把人物体系从剧本里抠出来 | 人物圣经 `.docx` + 关系网 `.html` | > **常规链路:A → B → 交付。** 顺场表的角色列就是人物包的候选名单,别重新读一遍剧本。 ## 先路由,别一上来全读 按用户要什么进对应章节,**另一条管线的 references 不用读**: | 用户说 | 走哪条 | |---|---| | 分场 / 顺场表 / 场次统计 / 主场景归组 / 演员档期 | **管线 A** | | 人物小传 / 人物关系 / 关系图 / 人物圣经 / 整理人物 | **管线 B** | | 「统筹一套」「前期全出」「剧本拆一套」 | A → B 全跑,**三样分册交付** | | 镜头 / 景别 / 运镜 / 怎么拍 | ❌ 不归本 skill,转分镜表 skill | --- # 管线 A · 顺场表 ## 核心规则 **一场 = 同一时间 + 同一空间 + 同一组人 的连续戏。** 剧本的场景标题行(`内景·陈默家客厅·夜`)天然就是分场标记。 一场之内变了下面任一项,**直接开新场号**(不用 1A/1B 后缀):具体位置 / 氛围转折 / 时间档 / 内外 / 叙事主体切走 / 中间插了别的戏。 只是镜头切了(正反打)、人物进出、对白段落多 —— **不另起场**,那是分镜的事。 编号 `1 2 3 4 …` 顺序纯数字,不跳号不重复不带字母。楔子/序幕/尾声并入顺序编号。 **主场景** `mainset` = 大景(统筹归组用,**值由脚本从场景列自动解析,不用手写**); **场景** `set` 写 `大景-具体位置`。列序上主场景排在场景之前。 **角色每人一列**:表头写**全名**,格里填**单字缩写**(不是 ✓)。全名从 `meta.角色缩写` 对照表自动解析。 特约/群众走 `extra`/`mass` 列,**不占角色列**——角色列只放主要演员,不然表会太宽。 ## 三步流程 > 拿到需求**先问再做**。用户赶时间说「直接做」才跳过提问,用合理默认值。 **Step 1 · 问类型与输入** 1. 剧集(多一个 `ep` 集列)还是影片(去掉 `ep`) 2. 完整剧本 → 照场景标题行切;只有梗概 → 按三要素推断分场并标注「推断」 **Step 2 · 分场** — 读 `references/scene-rules.md`,按三要素切场、顺序编号。 每场检查「内容梗概」有没有塞进两个位置或两种氛围,有就拆。场景统一 `大景-具体位置` 两层写法。 **Step 3 · 填列与产出** - **AI 填**:集、场号、日/夜、内/外、场景、氛围、内容梗概、页数 - **角色**:顶层 `roles` 声明全部角色 + 行内 `roles` 标该场出场者;缩写对照写 `meta.角色缩写` - **主场景**:脚本自动补,把 `mainset` 写进 `columns`(排 `set` 之前)可固定列序 - **角色列组固定排在「页数」之后**——`columns` 里 `cast` 的位置不影响最终列序,`cast` 只是占位 - **AI 合理推断** `vfx`/`extra`/`mass`/`props`(剧本明写直接填;没写按场景推断,如街市→群众、武打/雨雪→视效;实在没有留空不硬编) - **`note` 备注一列永远留空**给用户手填 ## 页数口径与分册(多集项目) 别凭感觉填页数。**先量每集剧本页数,按权重摊到各场**: 1. PDF 直接读页数(扣封面/标题页) 2. DOCX / 无页数的:转纯文本,用已知页数的集反推「正文字符/页」密度再折算。中文剧本正文约 **700–800 字/页** 3. 每场打权重 `w`(1 过场 / 2 标准 / 3 较长 / 4 重场戏),`页数 = 集总页数 × w / Σw`, 四舍五入到 0.1 页、最小 0.1,末行吃尾差 —— 这样每集总页数一定对得上原剧本 **分册交付**:除「全季总表」外,**再按集各出一份 xlsx**。用同一份 `data.json` 按 `ep` 过滤各跑一次, 单集表的 `meta.页数口径` 改成该集自己的总页数。 **剧本是 PDF/DOCX 时先转 txt 再分场**,别在 PDF 里硬看: ```bash # PDF -> txt(扫描件才需要 OCR) python -c "from pypdf import PdfReader; print('\n'.join((p.extract_text() or '') for p in PdfReader('in.pdf').pages))" > ep01.txt # DOCX -> txt(段落 + 表格都要取) python -c "import docx; d=docx.Document('in.docx'); print('\n'.join([p.text for p in d.paragraphs]+[c.text for t in d.tables for r in t.rows for c in r.cells]))" > ep04.txt ``` PDF 转出的文本会**夹杂孤立页码行**(单独一行的数字)——那是 PDF 页码不是场号,分场时忽略。 ## 产出命令 ```bash python ~/.workbuddy/skills/coco-preproduction/scripts/scene/make_scene_breakdown.py \ data.json -o 顺场表.xlsx [--html] ``` - 本机可用 managed python(已含 openpyxl),或任何装了 openpyxl 的 Python 3.9+ - 脚本在 openpyxl 缺失时自动安装;支持 CSV 输入与 stdin(`-` 代替路径) ## 输入格式(JSON) ```json { "title": "《雨夜来客》顺场表", "meta": { "集次": "S01E03", "编剧": "佚名", "版本": "v1", "页数口径": "0.1页粒度,1页≈1分钟", "角色缩写": "陈=陈默(男主) / 林=林晚(女主) / 周=老周" }, "roles": ["陈", "林", "周"], "columns": ["ep","scene","daynight","inout","mainset","set","mood","synopsis","pages","cast","extra","mass","props","vfx","note"], "rows": [ {"ep":"3","scene":"1","daynight":"夜","inout":"内","set":"陈默家-客厅", "mood":"温馨","synopsis":"陈默冒雨回家,林晚已等了三个小时,桌上饭菜凉透。", "roles":["陈","林"],"pages":0.5,"extra":"","mass":"","props":"凉掉的饭菜、湿雨衣","vfx":"","note":""} ] } ``` - `columns` 用字段 key,脚本自动映射中文表头;想调列序改这串字段名即可,不用动脚本 - 顶层 `roles` 声明全部角色;行内 `roles` 数组标该场出场者,也兼容 `"陈/林"` 字符串 - **表头全名 / 格内单字缩写**:全名从 `meta.角色缩写` 自动解析(`陈=陈默(男主)` → 表头「陈默」、格内「陈」), 不用另建名单;也可直接在 `roles` 里写 `["陈=陈默","林=林晚"]` - 影片类去掉 `ep`;不提供 `roles` 时「出场人物」保持单行文本 ## 两个 sheet **Sheet 1「顺场表」**:一场一行,**集列不合并**(每行都显示,筛选时不丢)。日夜/内外配色, 主场景列浅蓝加粗,氛围列浅紫,角色列加粗蓝字,隔行底色,冻结表头,表头筛选, A4 横版按宽缩放打印,末行「合计 · N 场」。 **Sheet 2「场景统计」**(自动生成): | 区块 | 用途 | |---|---| | 一、总览 | 总场数 / 总页数 / **预估总时长**(1 页 ≈ 1 分钟)/ 平均单场页数 | | 二、日·夜分布 | **夜戏占比**——决定周期与预算 | | 三、内·外分布 | **外景占比**——天气风险 | | 四、按主场景归组 | 页数降序带占比,页数最多的就是主景,统筹照这个排拍摄日 | | 五、角色出场 | 场数降序带页数,**演员档期直接看这个** | ## 交付前自检 1. **场号连续**:`1 2 3…` 无跳号无重复,纯数字无字母后缀 2. **该拆的拆了**:同一行塞了两个位置/两种氛围 = 漏拆 3. **关键字段非空**:场号、日夜、内外、场景、氛围、梗概、页数(备注除外) 4. **页数口径统一**:同一项目只用一种写法(推荐 0.1 页小数),别混用 1/8 分数与小数 5. **统计对得上**:总场数 = 数据行数;合计页数 = 统计 sheet 总页数;角色出场场数之和 ≥ 总场数 6. **主场景归组正确**:同景不同位置(`医院-走廊`/`医院-3楼病房`)要归一组,多组说明写法不一致或有别名 7. **梗概是场级的**:写「这场发生了什么」,出现景别/运镜就是串台 8. **角色列校验**:每场至少一个缩写(纯空镜除外);`meta.角色缩写` 写了对照表;主要演员别漏、特约群众别混进来 9. **多集并行**:各集场号格式一致、角色缩写一致(别一集「陈」一集「陈默」) --- # 管线 B · 人物包 ## 四步流程 **Step 1 · 拉名单(先分层,别一锅端)** - **主要人物**(10–15 人):有弧线、有前史、占戏份 → 写完整小传 - **次要 / 功能人物**(15–20 人):推动某一段、提供信息或设置障碍 → 只进速查表 - **背景人物**:不进文档 名单定了**先跟用户确认一遍**再往下写,别闷头写 30 个人。 **Step 2 · 写人物圣经(Markdown)** 按 `references/character-bible-structure.md` 的六章结构写。**先写 md,再转 docx。** 每人一块,固定九个字段: ``` 身份定位 → 外貌与标志性符号 → 性格内核 → 前史 → 本季弧线(逐集) → 核心戏剧功能(Vogler 原型)→ 与其他人的关系清单 → 台词风格 → 给演员/导演的提示 ``` **最关键的一步是提炼骨架,不是堆人。** 至少要找出两组对照结构: 1. **反派阶梯** —— 主角一路打穿的东西必须逐级变大(私仇/一个人 → 共谋/身边人 → 规则/一个机构 → 制度/整张网) 2. **同一处境的不同答案** —— 相似起点的人做了不同选择,各有各的下场 找不到就说明没读懂,回去重看剧本,**不要硬编**。 **Step 3 · 生成关系网** ```bash python3 ~/.workbuddy/skills/coco-preproduction/scripts/character/force_graph.py \ characters.json -o "《剧名》人物关系网.html" ``` 脚本会自检(id 重复 / 关系指向不存在的人 / 自环 / 阵营或类型未定义 / 孤立节点)再输出, 有问题直接报错退出,不会给你一个白屏的网页。 **Step 4 · 转 Word 并交付** ```bash python3 ~/.workbuddy/skills/coco-preproduction/scripts/character/md2docx.py \ "《剧名》人物圣经.md" -o "《剧名》人物圣经.docx" ``` ## 关系网 JSON 结构 最小可跑(完整规模示例见 `examples/character/character_sample_full.json`): ```json { "factions": [{"id":"hou","name":"江氏旧宅"}], "nodes": [ {"id":"si","name":"阿萤","sub":"方四 · 沈萤","ring":0,"fac":"hou","desc":"小传…"} ], "edges": [ {"a":"si","b":"hqc","t":"blood","label":"父女","note":"给字「籽安」"} ] } ``` | 字段 | 必填 | 说明 | |---|---|---| | `nodes[].id` | ✓ | 唯一英文短码,关系里引用它 | | `nodes[].name` | ✓ | 显示的名字 | | `nodes[].sub` | | 名字下第二行小字(身份/称号) | | `nodes[].ring` | ✓ | 0=主角(最大最亮带光晕)1/2/3 依次缩小;决定默认半径与字号 | | `nodes[].fac` | ✓ | 阵营 id,必须在 factions 里存在 | | `nodes[].desc` | | 侧栏小传,一句话到一段都行 | | `nodes[].r` / `fs` | | 手动覆盖半径与字号 | | `edges[].a/b` | ✓ | 两端人物 id(无向,顺序不影响) | | `edges[].t` | ✓ | 关系类型 id | | `edges[].label` | | 连线上的关系名(悬停时出现) | | `edges[].note` | | 补充说明,进侧栏 | **同一对人物的多重关系直接写两条**(既是「仇杀」又是「控制」),生成器会自动左右对称弯开。 **关系类型**不写则用默认 5 类(血亲/情感/同盟/仇杀/控制),含各自配色、线型与弹簧参数。 自定义就给 `types` 数组: ```json {"id":"foe","name":"仇杀 / 对抗","L":158,"k":0.038,"dash":true,"strong":false,"soft":false} ``` - `L` 弹簧自然长度(px)——越小两人越贴。情感 104 最紧,控制 172 最松 - `k` 弹性系数 · `dash` 虚线(高亮时会流动)· `strong` 加粗主线 · `soft` 半透明 阵营配色自动分配(内置 8 组,深浅主题各一套)。超过 8 个阵营循环复用, 指定颜色就在 JSON 里给 `palette`(数组三项 = `[填充, 描边, 文字]`): ```json "palette": {"hou": {"dark":["#3a2e17","#D9A441","#F2DCA6"], "light":["#FDF3DC","#D9A441","#7A5A16"]}} ``` ## 关系网能玩什么 | 操作 | 效果 | |---|---| | 拖拽节点 | 甩出去,全网重新找平衡;松手钉住(📌),双击解钉 | | 滚轮 / 空白拖动 | 以光标为中心缩放 / 平移 | | 悬停人物 | 只留他和他的关系,其余淡出,**连线浮出关系名**,虚线边流动 | | 双击人物 | 隔离模式——只留一阶邻域并自动放大居中;双击空白退出 | | 底部类型开关 | 关掉一类,剩下的网**当场重排** | | 阵营标签 | 点一下隐藏该阵营,网络跟着收拢 | | 搜索框 | 输入定位并镜头飞过去 | | ☀︎/☾ | 深浅主题切换(默认深色) | ## 交付前自检 **人物圣经** - [ ] 主要人物每人九块字段齐全,没有空着的小传 - [ ] 至少提炼出两组对照结构(反派阶梯 / 活法答案),不是平铺名单 - [ ] 关系总表与关系网里的边**数量对得上** - [ ] 剧本里的坑(生死未卜、身份成谜)单列成「未解扣」,不在小传里含糊过去 - [ ] docx 打开后标题层级、表格、引用块正常 **关系网** - [ ] 用浏览器真跑一遍:无 console 报错 - [ ] 节点标签零重叠(脚本拦不住这个,必须人眼或断言确认) - [ ] 切几次关系类型开关,重排后仍零重叠、不溢出可视区 - [ ] 点一遍每个主要人物,侧栏小传和关系列表都对得上 --- # A → B 交接:别重新读剧本 顺场表跑完,用户说「整理人物 / 拟小传 / 做个关系图 / 人物功能」,直接进管线 B, **从顺场表捞现成的**: | 顺场表里的东西 | 管线 B 怎么用 | |---|---| | 角色列(每人一列缩写) | 直接是**主要人物候选名单**,挑出场 ≥3 场的进小传 | | 五、角色出场(场数带页数) | 判断谁该进第一章完整小传、谁只配进速查表 | | 特约 / 群众列 | 功能人物的来源,进速查表 | | 主场景归组 | 反推阵营:长期出现在同一主场景群的人物多半同阵营 | | 内容梗概 | 逐集弧线的素材,不用重读剧本 | **交付顺序**:顺场表(分册 xlsx)→ 人物圣经(docx)→ 关系网(html)。 **三样各自独立成文件,不要合并**——合并版和压缩包在预览里读不了内容。 --- # 🔴 隐私红线(示例与文档一律不得含真实项目内容) 真实剧本是未公开资产。**写示例、写 reference、写注释时,一律用虚构剧本, 不许直接抄真实项目的人物名、地名、机构名、剧情。** - ✅ 可以:虚构人物(阿萤 / 沈砚 / 裴决)、虚构地名(黑风寨 / 醉花楼) - ❌ 不行:真实剧名、真实角色名、真实机构名、真实剧情梗概、真实主创信息 - 发现文档或示例里混进真实内容 → **立刻脱敏替换**,改完全局搜一遍确认无残留 - 交付给用户的**小样 / 演示件**同样用虚构剧本,不要用正在做的真实项目出样 本 skill 的示例全部基于虚构剧本《霜刃行》,仅结构(人数 / 关系数 / 阵营数 / 层级) 参照真实长篇项目的典型规模,内容无一是真的。 --- # 注意事项 - 不臆造剧本没给的内容。人物 `desc` 是从剧本读出来的,找不到就写「剧本未交代」—— 小传一旦掺假,后面选角、写续季全跟着歪。 - 页数是估算(1 页 ≈ 1 分钟为经验值),正式拍摄以现场为准。 - 顺场表**不做拍摄顺序重排**——那是通告单的活,本表场次顺序 = 剧本顺序。 - 关系网的物理参数在 `scripts/character/template.html`,调参方法写在 `references/web-design.md`, **改之前先看那份**,别乱调数字。 - 需要额外列(服装/化妆/置景/音乐)在 `columns` 里追加; 想用中文表头和列宽,先在脚本的 `FIELD_CN` / `WIDTHS` 补映射。 - 腾讯文档本地编辑器会把打开的 docx **另存到 `~/Downloads`** 并在原位留 `.~` 锁文件。 发现 docx 从项目目录消失了,先去 `~/Downloads` 找,别以为丢了。 # 资源 **脚本** - `scripts/scene/make_scene_breakdown.py` — JSON/CSV → 顺场表 .xlsx(补主场景列 + 场景统计 sheet) - `scripts/character/force_graph.py` — 关系网生成器(含自检) - `scripts/character/template.html` — 力导向引擎模板(改交互/物理动这里) - `scripts/character/md2docx.py` — Markdown → Word **参考** - `references/scene-rules.md` — 分场判据、换什么就另起一场、主场景两层写法、氛围词库、时间档 - `references/scene-breakdown-schema.md` — 标准列定义、角色列规范、统计口径、示例数据 - `references/character-bible-structure.md` — 人物圣经六章结构 + 小传字段 + Vogler 原型对照表 - `references/web-design.md` — 关系网设计规范与调参说明 **示例** - `examples/scene/sample_episode.json`(20 场 / 6 角色完整样例)、`sample_min.json`(3 场最小样例)、成品 xlsx/html - `examples/character/character_sample.json`(8 人 / 11 关系 / 5 阵营最小示例)
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る