前言¶
智能体在处理剧本或剧本片段时,往往需要把原始文本转换成符合行业标准的排版格式。目前常见的做法是依赖在线服务或 LLM 来做格式化,这会带来网络依赖、成本和结果不一致的问题。Narracore Format 是一个开源的 MCP 服务器,也是 DeepSeek Harness 的插件,它通过规则驱动的引擎在本地完成剧本排版,支持中英日混合内容,并返回结构化数据供后续工具使用。
插件定位¶
Narracore Format 是 Narracore 工具包的一部分,由维护者 xiaoanran0602-pixel 开发。它是一个本地运行的 MCP 服务器,同时作为 DSH 插件提供剧本格式化能力。核心价值是:免费、本地、无限制、确定性输出。插件负责将原始或格式松散的剧本文本转换成专业结构的剧本块,并生成排版后的纯文本输出。
核心功能¶
- 本地规则引擎:不依赖 LLM,纯规则驱动的排版引擎,相同输入得到相同输出。
- 多语言支持:支持中文、英文及混合文本,同时支持日剧广播剧格式和中文冒号体对话脚本。
- 自动选轨:根据字符集自动选择 33×38 的 CJK 字格轨或 61×55 的拉丁字格轨。
- 返回结构化数据:除了排版后的纯文本,还返回 8 种语义块类型(场景标题、动作、人物、括注、对话、转场等)、页数统计和诊断信息。
- 支持验证模式:
output="validate_only"可以仅检查结构而不进行排版。
工具列表¶
插件在 DSH 中提供五个工具,均在 mcp__narracore__* 命名空间下:
format_screenplay:解析剧本文本(或已类型化的块)为 8 种语义块类型,排版纯文本,输出页数统计和诊断信息。output="validate_only"用于仅验证结构。analyze_screenplay:生成确定性统计:场景列表(包含序号、地点、时间、内外景)、每场字数、对话比例、动作密度、人物占比表。diagnose_scenes:逐场诊断“可拍摄性”:根据证据逐字验证,并计算 0–100 分(使用 BigInt 精确计算,不伪造分数)。convert_fountain:在 Narracore 类型化块和 Fountain 格式之间互相转换。about_narracore:展示 Narracore 生态概览。
链接约定¶
工具之间传递数据时,应传递 blocks(类型化块),而不是格式化后的纯文本。块是确定性的,而文本需要重新解析。
安装与启用¶
DSH 安装¶
dsh plugin add narracore-format
安装后,智能体即可在 mcp__narracore__* 命名空间下使用上述五个工具。
任意 MCP 客户端安装¶
该包是一个标准的 stdio MCP 服务器,任何支持 stdio 的 MCP 客户端(如 Claude Code、Cursor 等)均可直接运行:
// Claude Code: claude mcp add narracore-format -- npx -y narracore-format@latest
// Cursor / 通用 MCP 配置:
{
"mcpServers": {
"narracore-format": { "command": "npx", "args": ["-y", "narracore-format@latest"] }
}
}
依赖要求:Node.js ≥ 22。
典型用法¶
示例 1:格式化中文剧本¶
输入一段松散格式的中文剧本,调用 format_screenplay 即可得到排版后的纯文本。
输入:
第 1 场 内 老式放映厅 - 夜
放映机的光柱切开黑暗,尘埃在光里悬浮。
常家青坐在最后一排,手里攥着一张褪色的电影票。
常家青
(低声)
如果胶片还在,就能证明那晚的一切。
检票员从阴影里走出来,把手电筒照在票面上。
检票员
这张票,二十年前就该作废了。
常家青站起身。光柱突然熄灭。
切至黑暗
输出(plain_text 来自 format_screenplay):
第 1 场 内 老式放映厅 - NIGHT
放映机的光柱切开黑暗,尘埃在光里悬浮。
常家青坐在最后一排,手里攥着一张褪色的电影票。
常家青
(低声)
如果胶片还在,就能证明那晚的一切。
检票员从阴影里走出来,把手电筒照在票面上。
检票员
这张票,二十年前就该作废了。
常家青站起身。光柱突然熄灭。
切至黑暗
示例 2:英文剧本排版¶
输入:
INT. PROJECTION BOOTH - NIGHT
The projector beam cuts through the dark.
CHANG
(quietly)
If the reel still exists,
it proves that night was real.
CUT TO BLACK.
输出:
INT. PROJECTION BOOTH - NIGHT
The projector beam cuts through the dark.
CHANG
(quietly)
If the reel still exists,
it proves that night was real.
CUT TO BLACK.
示例 3:结构分析与诊断¶
调用 analyze_screenplay 可获取场景列表、字数统计等统计信息;调用 diagnose_scenes 可获得每场的可拍摄性诊断与分数。后续工具可基于这些结构化数据继续处理。
适用场景与注意¶
- 适合需要本地、免费、确定性剧本排版的智能体开发者和 DSH 用户。
- 适合需要将剧本转换为 Fountain 格式、或进行剧本统计与诊断的场景。
- 插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
- 当前版本 MIT 许可证,布局引擎源自 Narracore 工具包,具体来源见 README 中的说明。
总结¶
Narracore Format 提供了一套本地、免费、无限制的剧本排版能力,通过规则驱动的引擎确保输出一致,并返回结构化数据供智能体链式调用。如果你正在构建需要剧本格式化、分析或转换的智能体工作流,这是一个值得纳入的工具。
参考资料¶
- GitHub:https://github.com/xiaoanran0602-pixel/narracore-format
- Narracore 官网:https://narracore.cn