软著登记材料生成
SkillDocs & knowledgeGenerates the full set of application materials for Chinese software copyright registration (ruanzhu), program identification material PDFs with fixed page counts, documentation identification material (manual) PDFs, and a field-by-field copy-paste checklist for the online form. Use when the user m
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the 软著登记材料生成 skill
What this skill tells your AI
The instructions your AI receives, as published by catcatuncle/ruanzhu-kit in SKILL.md and read by ahel’s review.
把一个软件项目加工成中国版权保护中心要求的全套登记材料,并算出在线表单每一项该填什么。
材料由 ruanzhu-kit 生成,不要手搓 HTML 和分页脚本——页数算错整份材料要重做。
三条命令
npx github:CatCatUncle/ruanzhu-kit init # 生成 ruanzhu.config.json 和说明书骨架
npx github:CatCatUncle/ruanzhu-kit count # 看清点到哪些文件、多少行、排版几页
npx github:CatCatUncle/ruanzhu-kit all --doc # 出两份 PDF + 表单清单 + 留存 .doc,并回读核验页数
技能目录里已经有这个仓库的话(~/.claude/skills/ruanzhu-kit/),直接
node ~/.claude/skills/ruanzhu-kit/bin/ruanzhu.mjs …,不用联网。
需要 Node 18+ 和 Chrome/Chromium/Edge 任一(CHROME_PATH 可指定)。
下文的 ruanzhu 指上面任一种调用方式。
硬约束(错了整份重做)
| 约束 | 要求 |
|---|---|
| 源程序页码 | 超过 60 页的,交前连续 30 页 + 后连续 30 页,中间略;不足 60 页全交 |
| 文档页码 | 同理;但说明书不足 30 页也可以全本提交,不必凑页数 |
| 每页行数 | 不少于 50 行,页数在生成前算死,不许交给排版引擎漂 |
| 页眉页码 | 每页页眉标软件名称和版本号(与申请表一致),右上角标页码;工具自动出,核验会查 |
| 文件格式 | 在线系统只收 PDF,Word 只用于改字和留存 |
| 著作权人 | 与营业执照/身份证一字不差,含行政区划和「有限公司」后缀 |
| 源程序量 | 表单、说明页、代码统计三处同一个数 |
步骤
1. 清点源码(最容易翻车的一步)
只收用户自己写的代码。依赖、构建产物、运行期数据、AI 生成的中间产物一律排掉——
行数虚高审查员一翻就露馅。ruanzhu count 会列出收进来的文件和行数最多的文件,
对着看一遍,不该在里面的加进 ruanzhu.config.json 的 exclude / excludeFiles。
order 决定拼接顺序,按「入口 → 核心模块 → 能力层 → 配置」排,让审查员看到的是
一份连贯的工程,不是按字母表打乱的文件堆。
2. 出程序鉴别材料
ruanzhu source --doc
命令跑完会回读 PDF 核验页数:超 60 页的项目应该是 62 页(封面 1 + 前 30 + 说明页 1 + 后 30)。 核验没全绿就别交。
页面太空可以 --lines-per-page 60 排密一点,上限 66 行(A4 + 2cm 边距 + 9pt)。
3. 写说明书,出文档鉴别材料
init 生成的 ruanzhu/说明书.md 是固定 11 章骨架:总体功能描述、运行环境、编译环境、
安装、启动、主要功能说明、软件架构、文件清单、配置文件、规范文件、常见问题。
按项目实际内容补完(模板里的 …… 全部换掉),然后:
ruanzhu manual --doc
第六章「主要功能说明」要和表单里的「软件的主要功能」互相对得上,别一个写五条一个写八条。
4. 出表单填写清单
把 ruanzhu.config.json 的 form 各字段填好,跑:
ruanzhu form
产出 表单填写清单.md,每个字段带字数和是否超限,可以直接往在线系统里粘。
字段怎么措辞见 docs/form-fields.md。
两个最常填反的字段:
- 开发该软件的操作系统 = 写代码用的系统;该软件的运行平台 = 软件能跑的系统。
- 开发环境配置要不低于运行环境,反过来逻辑上说不通。
软件的主要功能必须 500–1300 字,低于 500 会被驳回。分 6–9 条,每条「小标题 + 2–4 句」, 覆盖:核心能力、扩展机制、容错、数据存储、跨平台。
交付前自检
- 程序鉴别材料 PDF 页数核验通过(超 60 页的是 62 页)
- 说明书 PDF 页数真实,不是空壳
- 源程序量三处一致
- 著作权人与营业执照/身份证一字不差
- 「软件的主要功能」字数落在 500–1300,50 字字段都没超
- 材料里没有依赖、构建产物、运行期数据、AI 中间产物
常见坑
| 坑 | 后果 | 解法 |
|---|---|---|
| 用 Word 排版导 PDF | 页数随版本漂,50 行/页能渲成 71 页 | 用本工具,分页点在生成前钉死 |
| 按行数硬切分页 | 超长行折行撑破页面 | 按折行后的高度分页(本工具默认行为) |
| 把源码「对半分再各凑 30 页」 | 代码量大时每页几百行,PDF 远不止 62 页 | 取整份源程序的前 30 页和最后 30 页 |
| 统计行数时混入 node_modules、workspace | 行数虚高,驳回 | ruanzhu count 核对文件清单 |
| 著作权人写简称 | 驳回 | 与证照逐字对照 |
| 文件名与上传栏位对不上 | 传错位置 | 用工具生成的 ①… ②… 文件名 |
| 公司申请缺权属证明 | 驳回 | 备《职务开发声明》或《软件著作权转让合同》 |
| 转让合同没写「可对外再许可」 | 公司对外授权效力存疑 | 合同须含再许可条款 |
法人 vs 个人
| 法人(公司) | 个人 | |
|---|---|---|
| 办理身份 | 法人或其他组织 | 自然人 |
| 著作权人 | 营业执照全称 | 身份证姓名 |
| 其他证明文件 | 必须传营业执照 + 权属证明 | 一般不需要 |
| 适用 | 投标、申政策、商业授权 | 个人开发者 |
个人开发、公司申请的,要准备《软件著作权转让合同》,写明转让全部财产权利
且含对外再许可的权利,否则公司后续对外授权存在效力瑕疵。
在 ruanzhu.config.json 里把 applicantType 设成 company,表单清单会带上这段提示。
交付物
①程序鉴别材料_源程序前30页后30页_<软件名>.pdf ← 传「程序鉴别材料」
②文档鉴别材料_说明书_<软件名>.pdf ← 传「文档鉴别材料」
表单填写清单.md ← 逐字段可复制
<软件名>源程序.doc / <软件名>说明书.doc ← --doc 产出,可编辑留存
其他证明文件(营业执照、权属证明)由用户自己准备,命名成 ③其他相关证明文件_….pdf。
没有 Node 环境时
核心只有一个算法:按折行后的高度分页,而不是按行数。一行 300 字符在 A4 上
(2cm 边距、9pt Courier New)会折成 4 行,每行 89 字符,每页最多 66 行。先算出每一行
占几个行高单位,累加到 50 就换页,用 <div style="page-break-after:always"> 钉死分页点,
再用 chrome --headless=new --no-pdf-header-footer --print-to-pdf=out.pdf in.html 渲染。
实现见 lib/paginate.mjs。
Signals
- GitHub stars
- 22
- Forks
- 11
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
ruanzhu-kit- Source
- github.com/catcatuncle/ruanzhu-kit