项目详情

ruanzhu-kit

中国软著登记材料生成器——源码进去,页数一页不差的 PDF 出来

CatCatUncle/ruanzhu-kit MIT Node 18+ · 零 npm 依赖Claude SkillCLI

更新于 2026-09-26 · 同作者:OpenWorkBuddy

← 返回汇总
项目速览

一句话定位

一条命令出齐程序鉴别材料 + 说明书 + 表单清单

开源的中国软著登记材料生成器:从源码树生成页数精确的源程序 PDF(前 30 页 + 后 30 页)、说明书 PDF 和在线表单填写清单(逐字段算字数)。不装 Word、不拼页码、不怕页数漂移。纯 Node 实现,零 npm 依赖,只要一个 Chrome 做无头渲染;自带 SKILL.md,可当 Claude Code / OpenWorkBuddy 的技能用。适合:需要申请软件著作权的开发者和小团队,以及任何被「页数不对、整份重做」折磨过的人。

项目速览

核心数据:小,但每一行都有用

0
npm 依赖
85
核心分页算法行数
38KB
整个仓库体积
17
自测项(含真 PDF 回读)
11
Stars(4 天)
8
Forks
6
子命令
MIT
协议(商用无障碍)

2026-09-22 创建 · 09-23 最近 push · 结构:bin/ruanzhu.mjs + lib 六模块(collect / config / markdown / paginate / render / verify)· 数据采集于 2026-09-26

为什么存在

软著材料最麻烦的不是写,是页数

  • 60 页规则:源程序超过 60 页只能交前连续 30 页 + 后连续 30 页,中间插说明页写清略去多少行
  • Word 页数会漂:同一份稿子随版本、字体、打印机驱动能差出十几页——一漂,整份材料重做
  • 行数虚高被驳回:统计时混进依赖、构建产物,count 一步把可疑文件列在最前面现形
  • 表单有字数暗坑:「主要功能」少于 500 字直接驳回,工具逐字段替你数
手工 Word 排版ruanzhu-kit
页数随字体 / 驱动漂移渲染前算死,出完回读 PDF 核验
超长代码行折行撑破页面按折行后行高单位计算
前 30 + 后 30手动截取插页自动截取 + 自动写说明页
表单字数自己数逐字段算,带校验
依赖Word / WPSNode 18+ 和一个 Chrome
🔥 核心算法

页数是怎么在渲染前算死的

A4 纵向 210mm 左右各 2cm 边距 → 正文宽 481pt 481pt ÷ (9pt × 0.6em) = 89 字符/行 Courier New 9pt,中文算 2 个字符宽 728pt ÷ 11pt = 66 行/页(上限) 默认每页排 50 行,--lines-per-page 可调 wrapUnits = max(1, ceil(宽/89)) 一行 300 字符 → 折 4 个行高单位;空行也占 1 paginate:按单位切页 逐行累加单位,装满 50 换页 分页点 page-break-after 钉死 交给 Chrome 无头渲染 单行折超一整页 → 截断为单页(防死循环) 出完回读 PDF 数页数 不许拿脚本预期值当结论 README 实例 103,145 行源码 按每页 50 行 → 2,132 页排版 交上去的是 62 页 封面 1 + 前 30 + 说明页 1 + 后 30 核验:✓ 页数 62/62 ✓ 说明页在第 32 页 · ✓ 末页非空
计算与流程核心概念:折行单位A4 页面

核心实现在 lib/paginate.mjs,85 行,可以单独拿走用。

🔥 交付结构

62 页材料长什么样

封面 软件名 / 版本号 前连续 30 页 整份源程序的头部(不是对半分的前一半) 说明页(第 32 页) 写明共几行 / 略去几页 后连续 30 页 源程序末尾 30 页 略去 2,070 页不交 ≤ 60 页的项目直接全交(材料 = 排版页数 + 封面);> 60 页固定交 62 页。「把源码对半分再各凑 30 页」是错的——代码量一大每页会被撑到几百行。
init 配置→ count 清点(可疑文件现形)→ source 源程序 PDF→ manual 说明书 PDF→ form 表单清单→ verify 回读核验

count 这一步别跳:node_modules 之外的脏东西(构建产物、评测数据、运行期生成文件)基本都在清单前十行现形——行数虚高是驳回的高频原因。

工程细节

出完之后:回读 PDF 数页数

  • 页数是唯一「错了整份重做」的硬指标——生成完必须回读真实 PDF 去数,不许拿脚本里的预期值当结论
  • 两级回退:装了 poppler 就用 pdfinfo;没装就退回解析 PDF 页树(latin1 读 /Type /Pages /Count),保证任何机器都能自检
  • 逐页文本抽取:pdftotext -layout 按分页符切开,肉眼确认封面、说明页、末页没串位
$ ruanzhu source
已生成 ruanzhu/out/①程序鉴别材料_…_示例项目.pdf

核验
  ✓ 页数      实际 62 页,期望 62 页
  ✓ 封面      示例项目管理系统V1.0源程序…
  ✓ 说明页在第 32 页  本软件源程序共103145行…
  ✓ 末页非空  region.setCenter(cp); } } }

17 项自测里最后两项会真的出一份 PDF 再回读页数——测试不为覆盖率,为的是「页数说一不二」这条命根子。

使用面

六个子命令,四份产物

命令作用
init生成配置 + 说明书骨架(11 章固定结构)
count只统计不出文件,核对文件清单用
source源程序 PDF,回读核验页数
manual说明书.md → 文档鉴别材料 PDF
form表单填写清单,逐项算字数
all三样一起出 + 自检清单
产物传到哪
①程序鉴别材料_源程序前30页后30页_*.pdf「程序鉴别材料」栏
②文档鉴别材料_说明书_*.pdf「文档鉴别材料」栏
表单填写清单.md在线表单逐字段复制,带字数校验
*.doc(--doc)可编辑留存件,改字用

选项:--lines-per-page 排密一点(默认 50,上限 66)· --out 换输出目录 · 营业执照、权属证明等「其他证明文件」需自备

避坑清单

六个高频驳回原因

坑后果工具怎么挡
用 Word 排版导 PDF页数漂移,整份重做渲染前算死 + 回读核验
统计混入依赖 / 构建产物行数虚高,驳回count 把可疑文件列最前
著作权人写简称驳回——必须与营业执照一字不差表单清单逐字段提示
「开发操作系统」填成运行平台逻辑矛盾(前者是你写代码用的系统)docs/form-fields.md 逐项措辞
「主要功能」少于 500 字驳回form 替你数字数
公司申请缺权属证明驳回提示备《职务开发声明》/《转让合同》
生态位

当 AI 技能用:SKILL.md 一份,Agent 全跑

  • 通用技能包格式:仓库根目录 SKILL.md,Claude Code / Claude Agent SDK 都认——clone 到 ~/.claude/skills/ 即装
  • 装进 OpenWorkBuddy:丢进 skills/ 目录,说一句「帮我准备这个项目的软著材料」,agent 自己清点源码、出两份 PDF、核页数、算表单字数
  • 不用 agent 也一样:直接敲命令行产出的材料完全相同——SKILL.md 只是说明书,不是运行时依赖
# 当 Claude Code 技能装
git clone https://github.com/CatCatUncle/ruanzhu-kit.git \
  ~/.claude/skills/ruanzhu-kit

# 或塞进 OpenWorkBuddy 的技能目录
git clone …/ruanzhu-kit.git /skills/ruanzhu-kit

# 然后只说人话
「帮我准备这个项目的软著材料」
同作者生态 · OpenWorkBuddy

本地 AI 办公助理,ruanzhu-kit 是它的技能之一;技能装前过 skill-guard 静态体检

同作者生态 · toolward

agent 技能 / MCP 连接器静态安检,37 条规则六族,ruanzhu-kit 这类技能的「第二把尺子」

作者

猫叔,前大厂 Agent 工程师,常驻深圳;FDE / Agent 落地合作 contact@aijentra.com

在线体验

玩一下它的分页算法

贴一段你的源码,实时看它怎么按「折行后的行高单位」切页、怎么按登记办法取前 30 后 30——中文注释占 2 个字符宽、空行也占 1 单位、压缩产物会被点名。逻辑 1:1 移植自 paginate.mjs,对拍过 10 万行案例。

▶ 打开软著分页模拟器

渲染与回读核验不在演示范围 · 零网络依赖 · 单文件

风险提示

需要警惕

潜力评估

未来空间

评分 7.5:把「软著材料」这件高频、琐碎、错了就整份重做的事,用 85 行分页算法 + 零依赖 CLI 一次做对——问题选得准,刀法极简,MIT 无商用障碍,README 的对比表和避坑清单显出对审查流程的真实理解。作为 Claude Skill 与 OpenWorkBuddy 生态互哺(办公 agent 的真实交付场景 + 技能市场的第一个刚需样本)。扣分:受众窄(仅中国软著)、4 天新星无 release、单人维护、表单规则需随版权中心政策持续跟进。对要申软著的开发者,这是当下最省事的正确答案;作为项目,它的价值在「让 OpenWorkBuddy 的技能生态有了一个可复制的小而美样板」。


上一个
OpenWorkBuddy
下一个
reverse-skill
1 / 13