Narracore Format:本地、免费、无限制的剧本排版工具

前言

智能体在处理剧本或剧本片段时,往往需要把原始文本转换成符合行业标准的排版格式。目前常见的做法是依赖在线服务或 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__* 命名空间下:

  1. format_screenplay:解析剧本文本(或已类型化的块)为 8 种语义块类型,排版纯文本,输出页数统计和诊断信息。output="validate_only" 用于仅验证结构。
  2. analyze_screenplay:生成确定性统计:场景列表(包含序号、地点、时间、内外景)、每场字数、对话比例、动作密度、人物占比表。
  3. diagnose_scenes:逐场诊断“可拍摄性”:根据证据逐字验证,并计算 0–100 分(使用 BigInt 精确计算,不伪造分数)。
  4. convert_fountain:在 Narracore 类型化块和 Fountain 格式之间互相转换。
  5. 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye