字数工作台
本页只展示工具说明。运行工具时,请打开本地小说工作区的 tools 文件夹;网页不提供启动脚本下载。
需要同时更新网站时,Windows 双击更新网站.cmd,Mac 使用更新网站.command。网站入口会先执行本工具的更新与核对,再同步小说、生成作品首页、构建网站并打开预览,无需先单独点“更新字数”。网站需要已有的 Node.js 环境;下面的独立字数工具仍只使用系统自带能力。
保存正文后,Windows 双击更新字数.cmd,Mac 双击更新字数.command。每次更新一次,核对完保留结果,按键后结束。无需安装 Python、Node、PowerShell 7 或其他软件,也不依赖 Obsidian。
日常使用
用任意编辑器修改并保存 Markdown,再运行对应入口。窗口按“项目统计 → 文件明细 → 完成核对 → 本次总览”显示:
- 蓝青色用于标题与阶段,白色用于项目名称,灰色用于路径和辅助说明。
- 金色标记已更新、待处理的统计;增量为绿色、减量为金色,不把删减文字当作错误。
- 绿色表示核对完成,红色用于真正的执行错误。
- 每个项目显示“一致”或“已更新”;列出变动文件、旧字数、新字数与增减量,并说明新增、改名、移出统计、格式修复和只读保护恢复。
- 没有变化时明确显示“本次无变化,未改写文件”,不会反复刷新文件修改时间。
窗口随系统终端宽度自然换行,不强制改字体、窗口大小或系统主题。颜色使用终端的基础调色板;设置 NO_COLOR=1 可关闭脚本配色。Mac 是否自动关闭终端窗口取决于终端设置。
这些是统计和生成文件的变化,不保存正文版本历史。两种计数都不变的改写不会被报告为字数变化。
工具只读写本地文件,不联网、不上传、不监听文件、不在后台运行。执行窗口等待按键期间不会继续统计;未保存的编辑不计入。后续改稿需要再次执行。
系统要求与 Mac 首次使用
Windows 使用系统自带的 Windows PowerShell 5.1;Mac 使用系统自带的 /usr/bin/osascript、JavaScript for Automation 和 Foundation。两端遵守相同口径、配置和报告格式,不需要额外运行环境。
把完整工作区复制到 Mac,保留 tools 和各项目之间的位置关系。若复制后双击提示没有执行权限,在工作区根目录的终端运行一次:
chmod u+x tools/更新字数.command也可直接运行,无需设置执行权限:
bash tools/更新字数.commandWindows 入口只为本次脚本进程设置执行策略,不修改机器的永久设置;若组织策略禁用系统脚本,窗口会保留系统提示。
系统能力参考:Microsoft:随 Windows 提供的 PowerShell、Apple:JavaScript for Automation、Apple:脚本执行权限。
统计内容与保护
- 仅扫描项目指定目录中的 Markdown。正文须有完整属性区及
类型: 正文;缺失属性区、无效或重复章序会报错,不静默漏计。 - 主口径
han_ascii_characters:汉字、英文字母、数字各计一字,英文按字母而非单词计数。辅助口径为正文去空白后的可见字符,扩展汉字与 emoji 按 Unicode 字符计数。 - 排除属性、标题、HTML/Obsidian 注释、图片、嵌入与格式符号;链接计显示文字。正文代码内容仍计数,代码围栏不计。
- 作者笔记优先另存;正文中的备注可用
<!-- wordcount:ignore:start -->与<!-- wordcount:ignore:end -->成对包围,不支持嵌套。 - 只回写
正文字数,保留其他属性、正文、UTF-8 BOM 与原换行。统计期间检测到文件被改动时停止该项目并提示重试;运行时应先保存并暂时停笔。 - 生成统计表和可选章节清单设为只读。正文仍可编辑,字数属性被误改时下次执行恢复为实测值。只读保护不是不可绕过的权限边界。
- 同一工作区同时执行多个入口时,后启动的一份会提示等待;结束或中断后系统自动释放锁,不留后台进程。
新项目接入
无需添加书名名单。工作区直接子目录中的项目有标准 08_正文/ 即可自动识别,首次成功执行后补充以下配置。check 只检查,不创建配置或改写项目文件。
{
"source": "08_正文",
"report": "90_项目管理/正文字数统计.md",
"count_mode": "han_ascii_characters"
}已有 90_项目管理/字数统计配置.json 优先。非标准目录通过配置指定,所有路径均相对于项目根目录,不能越界或经过符号链接,输出不能放入正文目录。无效配置会报错,不回退默认值。
可增加 chapter_index 指向项目内的 JSON 清单;该文件由工具完整生成,不应混入手写资料。首次自动接入遇到同名手写统计表时,会提示另选输出位置,避免覆盖。
非交互执行与维护
以下命令均在工作区根目录执行,不等待按键。sync 更新一次,check 只检查,update 更新后立即核对。正常退出为 0,过时统计或项目错误为 1,启动失败为 2。
Windows:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools/wordcount.ps1 -Mode sync
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools/wordcount.ps1 -Mode checkMac:
osascript -l JavaScript tools/wordcount-mac.js sync "$PWD" "$PWD/tools" --plain
osascript -l JavaScript tools/wordcount-mac.js check "$PWD" "$PWD/tools" --plain实现:Windows 原生程序(本地文件:wordcount.ps1)、Mac 系统接口(本地文件:wordcount-mac.js)、Mac 统计核心(本地文件:wordcount-core.js)。两端共用报告格式(本地文件:wordcount-format.json)与口径测试样例(本地文件:wordcount-cases.json)。调整计数规则时必须同步两端并运行回归检查,不可仅改一端。
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools/test_wordcount.ps1osascript -l JavaScript tools/test_wordcount-mac.js "$PWD/tools"验证范围:Windows 的实际文件读写、只读保护、并发检测和入口已实测;Mac 统计核心已验证样例和当前项目输出一致,系统文件接口仍需在 Mac 真机运行验证。