seed_data.json
12.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
{
"seed_version": "1.0.0",
"generated_at": "2026-03-27T00:00:00Z",
"total_entries": 55,
"validation_rules": [
{
"id": "VR001",
"name": "场景标题格式",
"pattern": "^(INT\\.|EXT\\.|INT\\./EXT\\.).*-\\s*(DAY|NIGHT|MORNING|EVENING|CONTINUOUS|MOMENTS LATER|LATER|DUSK|DAWN|AFTERNOON)$",
"case": "uppercase",
"error_message": "场景标题必须全大写,格式为 [INT./EXT.] 地点 - 时间",
"examples": [
"INT. COFFEE SHOP - DAY",
"EXT. BEACH - NIGHT",
"INT./EXT. CAR - MOVING"
]
},
{
"id": "VR002",
"name": "角色名格式",
"pattern": "^[A-Z][A-Z0-9\\s]{1,39}$",
"case": "uppercase",
"error_message": "角色名必须全大写,长度不超过40字符",
"examples": [
"SARAH",
"JOHN SMITH",
"DETECTIVE"
]
},
{
"id": "VR003",
"name": "时间标记有效值",
"enum": ["DAY", "NIGHT", "MORNING", "EVENING", "LATER", "CONTINUOUS", "MOMENTS LATER", "DUSK", "DAWN", "AFTERNOON"],
"error_message": "时间标记必须在有效值列表中",
"examples": ["DAY", "NIGHT", "MORNING", "EVENING"]
},
{
"id": "VR004",
"name": "对话缩进",
"left_indent_inches": 2.5,
"right_indent_inches": 2.5,
"error_message": "对话左右缩进必须为2.5英寸",
"examples": []
},
{
"id": "VR005",
"name": "字体规范",
"font_family": "Courier",
"font_size": 12,
"error_message": "必须使用 Courier 12pt 字体",
"examples": []
},
{
"id": "VR006",
"name": "页边距",
"margins": {
"left": 1.5,
"right": 1.0,
"top": 1.0,
"bottom": 1.0
},
"unit": "inches",
"error_message": "左页边距1.5英寸(装订),其余1英寸",
"examples": []
},
{
"id": "VR007",
"name": "括号提示格式",
"pattern": "^\\([^)]+\\)$",
"position": "between_character_and_dialogue",
"error_message": "演技指示需使用小括号,位于角色名与对话之间",
"examples": [
"(whispering)",
"(sarcastic)",
"(angry)"
]
},
{
"id": "VR008",
"name": "场景数量范围",
"min": 1,
"max": 200,
"error_message": "场景数量应在1-200之间",
"examples": []
},
{
"id": "VR009",
"name": "页面数量建议",
"recommended_min": 70,
"recommended_max": 120,
"warning": "建议剧本长度在70-120页之间(1页≈1分钟)",
"examples": []
},
{
"id": "VR010",
"name": "动作描述时态",
"tense": "present",
"error_message": "动作描述应使用现在时",
"examples": [
"Sarah walks into the room",
"He looks at her"
]
}
],
"sample_scenes": [
{
"id": "SC001",
"heading": "INT. COFFEE SHOP - DAY",
"location_type": "INT",
"location": "COFFEE SHOP",
"time_of_day": "DAY",
"action": "A busy coffee shop in downtown. SARAH (30s) enters, scanning the crowd.",
"dialogues": [
{
"character": "SARAH",
"parenthetical": null,
"text": "Is this seat taken?"
},
{
"character": "MIKE",
"parenthetical": "(looking up)",
"text": "No, help yourself."
}
]
},
{
"id": "SC002",
"heading": "EXT. BEACH - NIGHT",
"location_type": "EXT",
"location": "BEACH",
"time_of_day": "NIGHT",
"action": "The moon casts silver light on the waves. Two figures walk along the shore.",
"dialogues": [
{
"character": "LUCAS",
"parenthetical": null,
"text": "I never thought we'd end up here."
},
{
"character": "EMMA",
"parenthetical": "(softly)",
"text": "Life has its surprises."
}
]
},
{
"id": "SC003",
"heading": "INT. POLICE STATION - NIGHT",
"location_type": "INT",
"location": "POLICE STATION",
"time_of_day": "NIGHT",
"action": "DETECTIVE CHEN interrogates a suspect in a small, dimly lit room.",
"dialogues": [
{
"character": "DETECTIVE CHEN",
"parenthetical": "(stern)",
"text": "Where were you last night at 10 PM?"
},
{
"character": "SUSPECT",
"parenthetical": null,
"text": "I was at home, watching TV."
},
{
"character": "DETECTIVE CHEN",
"parenthetical": null,
"text": "Can anyone verify that?"
}
]
},
{
"id": "SC004",
"heading": "EXT. MOUNTAIN - MORNING",
"location_type": "EXT",
"location": "MOUNTAIN",
"time_of_day": "MORNING",
"action": "Sunrise peaks over the mountain range. A hiker rests on a rocky outcrop.",
"dialogues": [
{
"character": "HIKER",
"parenthetical": "(panting)",
"text": "Worth it. The view is incredible."
}
]
},
{
"id": "SC005",
"heading": "INT. HOSPITAL - DAY",
"location_type": "INT",
"location": "HOSPITAL",
"time_of_day": "DAY",
"action": "A doctor consults with a patient's family in the hallway.",
"dialogues": [
{
"character": "DR. WONG",
"parenthetical": null,
"text": "The surgery went well. She's in recovery now."
},
{
"character": "FAMILY MEMBER",
"parenthetical": "(relieved)",
"text": "Thank you, doctor. Thank you so much."
}
]
},
{
"id": "SC006",
"heading": "INT./EXT. CAR - MOVING",
"location_type": "INT./EXT",
"location": "CAR",
"time_of_day": "EVENING",
"action": "Rain batters the windshield. Two strangers share a ride in tense silence.",
"dialogues": [
{
"character": "DRIVER",
"parenthetical": null,
"text": "Long drive?"
},
{
"character": "PASSENGER",
"parenthetical": "(absentmindedly)",
"text": "Yeah. Three hours."
}
]
},
{
"id": "SC007",
"heading": "INT. RESTAURANT - NIGHT",
"location_type": "INT",
"location": "RESTAURANT",
"time_of_day": "NIGHT",
"action": "An elegant dinner setting. A couple celebrates their anniversary.",
"dialogues": [
{
"character": "JAMES",
"parenthetical": null,
"text": "Ten years. Can you believe it?"
},
{
"character": "RUTH",
"parenthetical": "(smiling)",
"text": "It feels like yesterday."
}
]
},
{
"id": "SC008",
"heading": "EXT. STADIUM - DAY",
"location_type": "EXT",
"location": "STADIUM",
"time_of_day": "DAY",
"action": "A soccer match in progress. The crowd roars as a goal is scored.",
"dialogues": [
{
"character": "COMMENTATOR",
"parenthetical": null,
"text": "GOAL! What an incredible strike!"
}
]
},
{
"id": "SC009",
"heading": "INT. COURTROOM - DAY",
"location_type": "INT",
"location": "COURTROOM",
"time_of_day": "DAY",
"action": "A high-stakes trial. The lawyer questions a witness.",
"dialogues": [
{
"character": "LAWYER",
"parenthetical": null,
"text": "Can you describe what you saw that night?"
},
{
"character": "WITNESS",
"parenthetical": null,
"text": "I saw two people arguing near the entrance."
}
]
},
{
"id": "SC010",
"heading": "EXT. FOREST - DUSK",
"location_type": "EXT",
"location": "FOREST",
"time_of_day": "DUSK",
"action": "Twilight in the forest. Leaves rustle as something moves through the brush.",
"dialogues": []
}
],
"format_templates": [
{
"template_id": "T001",
"name": "标准场景标题",
"format": "[INT./EXT.] [LOCATION] - [TIME]",
"examples": [
"INT. COFFEE SHOP - DAY",
"EXT. BEACH - NIGHT"
]
},
{
"template_id": "T002",
"name": "带副标题场景",
"format": "[INT./EXT.] [LOCATION] - [TIME]",
"variation": "[INT./EXT.] LOCATION - SUBTITLE - TIME",
"examples": [
"INT. ABANDONED WAREHOUSE - BASEMENT - NIGHT"
]
},
{
"template_id": "T003",
"name": "角色对话块",
"format": "CHARACTER NAME\n(parenthetical)\ndialogue",
"examples": [
"SARAH\n(whispering)\nBe careful."
]
},
{
"template_id": "T004",
"name": "动作描述块",
"format": "Present tense description of action",
"rules": [
"Use present tense",
"Start with subject",
"Keep paragraphs under 4 lines"
],
"examples": [
"Sarah walks toward the door. She hesitates, hand hovering over the handle."
]
},
{
"template_id": "T005",
"name": "转场标记",
"format": "CUT TO: / FADE TO: / DISSOLVE TO:",
"examples": [
"CUT TO:",
"FADE TO:",
"DISSOLVE TO:"
]
}
],
"error_patterns": [
{
"pattern_id": "EP001",
"error_type": "case_mismatch",
"description": "场景标题未使用大写",
"incorrect": "int. coffee shop - day",
"correct": "INT. COFFEE SHOP - DAY"
},
{
"pattern_id": "EP002",
"error_type": "case_mismatch",
"description": "角色名未使用大写",
"incorrect": "Sarah: Hello",
"correct": "SARAH: Hello"
},
{
"pattern_id": "EP003",
"error_type": "invalid_time_marker",
"description": "时间标记无效",
"incorrect": "INT. SHOP - MORNINGTIME",
"correct": "INT. SHOP - MORNING"
},
{
"pattern_id": "EP004",
"error_type": "missing_delimiter",
"description": "场景标题缺少分隔符",
"incorrect": "INT SHOP DAY",
"correct": "INT. SHOP - DAY"
},
{
"pattern_id": "EP005",
"error_type": "parenthetical_position",
"description": "括号提示位置错误",
"incorrect": "SARAH (whispering): Hello",
"correct": "SARAH\n(whispering)\nHello"
},
{
"pattern_id": "EP006",
"error_type": "dialogue_quotes",
"description": "对话使用了引号",
"incorrect": "\"Hello there,\" Sarah said.",
"correct": "SARAH\nHello there."
},
{
"pattern_id": "EP007",
"error_type": "past_tense",
"description": "动作描述使用过去时",
"incorrect": "Sarah walked into the room.",
"correct": "Sarah walks into the room."
},
{
"pattern_id": "EP008",
"error_type": "scene_heading_missing",
"description": "缺少场景标题",
"correct_format": "INT./EXT. LOCATION - TIME"
}
],
"structure_examples": [
{
"act": 1,
"pages": "1-30",
"description": "建置场景 - 介绍主角、世界、冲突催化剂",
"sample_scene": "SC001"
},
{
"act": 2,
"pages": "30-90",
"description": "对抗阶段 - 主角面对障碍,冲突升级",
"sample_scene": "SC003"
},
{
"act": 3,
"pages": "90-110",
"description": "解决阶段 - 高潮与结局",
"sample_scene": "SC007"
}
],
"tools_reference": [
{
"name": "Final Draft",
"type": "software",
"url": "https://www.finaldraft.com",
"description": "行业标准剧本写作软件"
},
{
"name": "Highland 2",
"type": "software",
"url": "https://highland2.app",
"description": "Mac端专业剧本工具"
},
{
"name": "WriterSolo",
"type": "web_app",
"url": "https://writersolo.com",
"description": "在线剧本编辑器"
},
{
"name": "Fountain",
"type": "format",
"url": "https://fountain.io",
"description": "纯文本剧本标记语言"
}
],
"source_urls": [
"https://www.studiobinder.com/blog/how-to-write-a-screenplay/",
"https://www.scriptreaderpro.com/",
"https://www.scripts.com/",
"https://www.finaldraft.com/"
]
}