前言¶
智能體在處理劇本或劇本片段時,往往需要把原始文本轉換成符合行業標準的排版格式。目前常見的做法是依賴在線服務或 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