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
羽毛球分组比赛记分
小程序二维码

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

小夜