准备软件著作权材料时,真正麻烦的通常不是写一个封面,而是把软件名称、版本、源码、功能说明、运行截图和最终 PDF全部对应起来。
手工处理很容易遇到这些问题:源码选错、混入第三方依赖或测试代码;程序和文档中的软件名称不一致;截图与实际功能对不上;PDF 页数、行数或版式不符合要求;材料生成后又缺少可追溯的检查记录。
为了解决这些重复而又容易出错的工作,我开源了一个面向 Codex、ChatGPT Agent 及其他兼容 Agent Skills 标准智能体的工具:
generate-cn-software-copyright:中国软件著作权材料生成 Skill
项目地址:https://github.com/wangling-miao/generate-cn-software-copyright
它不是简单替换标题和公司名称的模板,而是一套从真实代码仓库出发,完成仓库分析、源码筛选、文档生成、截图整理、LaTeX 编译、Python 校验和审计留档的完整流程。
一、这个项目解决什么问题
软件著作权普通交存通常需要准备程序鉴别材料和一种文档鉴别材料。材料的页数、行数、软件名称、版本以及内容真实性都需要保持一致。

图片为网络资料示意,实际提交要求应以登记机构最新办事指南为准。
传统做法往往是:人工复制代码到 Word、手动删除空行、逐页调字体,再把产品截图塞进说明书。项目一旦稍大,维护起来就非常痛苦;同一套材料修改版本号后,还可能出现前后不一致。
这个 Skill 将整个过程拆成一条可以重复执行的工程流水线:
真实代码仓库
↓
读取软件信息配置
↓
分析并筛选原创源码
↓
整理真实运行截图与功能说明
↓
生成两份 LaTeX 文档
↓
使用 XeLaTeX 编译 PDF
↓
运行 Python 校验器
↓
输出 submission 提交材料 + audit 审计记录
它的目标不是“一键伪造一套看起来像软著的文件”,而是帮助开发者把已经真实完成的软件,整理成一致、可检查、可追溯的鉴别材料。
二、为什么要做成 Agent Skill
Agent Skill 可以把一套稳定、重复、带约束的工作流程封装在一个目录中。智能体先读取 SKILL.md 中的规则,再按需调用脚本、模板和参考资料,而不是每次都依赖临时提示词自由发挥。

Agent Skill 的核心是“指令 + 脚本 + 模板 + 参考资料”,图片来源:Verdent Guides。
对于软著材料这种任务,这种方式尤其合适,因为它既需要 AI 阅读和总结仓库,又需要确定性的代码筛选、文件生成、PDF 编译和规则校验。
项目中的 SKILL.md 对智能体设置了多项硬性要求,例如:
- 不得猜测著作权人、开发完成日期、发表状态和权属关系;
- 不得把尚未实现、只有占位代码或前后端未接通的功能写成已完成功能;
- 不得使用 AI 生成的假界面代替真实运行截图;
- 不得把
.env、私钥、令牌、个人数据、第三方依赖和生成代码放入提交源码; - 校验器存在错误时,不得宣称材料已经完成。
这使它更像一名按照检查清单工作的材料整理助手,而不是只负责“写得像”的文本生成器。
三、项目目录结构
仓库结构比较清晰:
generate-cn-software-copyright/
├── SKILL.md Agent 执行规则
├── README.md 使用说明
├── agents/openai.yaml Codex/ChatGPT 界面元数据
├── assets/templates/ 程序与文档 LaTeX 模板
├── examples/ 软件信息配置示例
├── references/ 法规、配置和仓库分析说明
├── scripts/build_materials.py 生成、编译并触发校验
├── scripts/validate_materials.py 材料校验器
├── scripts/validate_skill.py Skill 包结构校验器
├── scripts/smoke_test.py 自包含冒烟测试
└── requirements.txt Python 依赖
其中最重要的几个组成部分是:
1. SKILL.md
告诉智能体什么时候应该启用这个 Skill、必须读取哪些证据、哪些信息绝对不能猜测,以及生成完成前必须执行哪些检查。
2. assets/templates/
保存程序鉴别材料和文档鉴别材料的 LaTeX 模板。模板主要负责版面结构,真实内容则由配置文件、仓库分析结果和运行截图填充。
3. build_materials.py
负责收集源码、生成 TeX、复制并处理截图、调用 XeLaTeX 编译以及触发校验。
4. validate_materials.py
负责检查源码行数与连续性、材料信息一致性、截图质量、敏感信息风险、PDF 页数、A4 纵向版式和近空白页等问题。
四、核心能力
1. 从真实仓库中确定性地选择源码
对于 Git 仓库,脚本默认只读取已经被 Git 跟踪的文件,并排除常见的:
vendor、node_modules等第三方依赖;- 编译结果和构建产物;
- 自动生成代码;
- 单元测试、测试夹具和测试数据;
- 二进制文件;
- 环境文件、私钥及其他高风险敏感文件。
之后再依据 priority_globs 和稳定的路径顺序合并源码,并记录每个文件的哈希、来源路径和对应行号。
当合并后的源码超过 3000 行时,默认选取前 1500 行和后 1500 行;不足 3000 行时则提交全部源码。项目不会为了凑够行数,把无关配置、第三方库或测试代码塞进去。
2. 生成程序与文档两类材料
项目会生成:
程序鉴别材料.tex与程序鉴别材料.pdf;文档鉴别材料.tex与文档鉴别材料.pdf。
文档鉴别材料会基于配置中的软件概述、运行环境、安装方式、主要模块、数据流程、权限、安全措施和真实截图生成,而不是凭空编造一个通用说明书。
3. 自动处理截图
配置文件可以为主界面和每个主要功能模块指定真实截图。构建时,脚本会复制截图,并可默认转换为灰度 PNG,以适配传统黑白材料的版式习惯。原始截图不会被修改。
对于命令行工具、API 服务或代码库,也不要求强行伪造图形界面,可以使用真实终端输出、API 调试结果或真实示例程序作为运行证据。
4. Python 自动校验
校验器会检查:
- 配置必填项和残留占位符;
- 软件名称、版本、著作权人在不同材料中是否一致;
- 源码总行数、选取行数、前后段连续性和 SHA-256;
- 是否混入依赖、生成代码、测试文件或敏感文件;
- 私钥、访问令牌、密码和 API Key 的高风险特征;
- 截图是否存在、分辨率是否过低、是否完成灰度处理;
- XeLaTeX 是否成功编译;
- PDF 页数、A4 纵向、近空白页和程序页数是否匹配。
检查结果同时输出为 JSON 和 Markdown:JSON 方便 CI 或其他 Agent 继续处理,Markdown 方便人工审阅。
5. 保留审计轨迹
生成结果被分为两个目录:
copyright-materials/
├── submission/
│ ├── source-code.txt
│ ├── 程序鉴别材料.tex
│ ├── 程序鉴别材料.pdf
│ ├── 文档鉴别材料.tex
│ ├── 文档鉴别材料.pdf
│ └── images/
└── audit/
├── full-source.txt
├── source-manifest.json
├── image-manifest.json
├── build-record.json
├── validation-report.json
├── validation-report.md
└── *-xelatex.log
submission/ 是拟提交材料,audit/ 则保留源码选择、截图处理、构建过程和校验结果,便于内部复核与后续版本追踪。
五、安装方法
方法一:安装到 Codex Skills 目录
先克隆仓库:
git clone https://github.com/wangling-miao/generate-cn-software-copyright.git
Linux、macOS 或 WSL 可以复制到:
mkdir -p "${CODEX_HOME:-$HOME/.codex}/skills"
cp -r generate-cn-software-copyright \
"${CODEX_HOME:-$HOME/.codex}/skills/generate-cn-software-copyright"
Windows 默认可以放在:
%USERPROFILE%\.codex\skills\generate-cn-software-copyright\
安装后重新打开会话或重启 Codex,让 Agent 重新发现 Skill。
方法二:安装到其他兼容 Agent
只要 Agent 支持以目录形式加载 SKILL.md、脚本和资源文件,就可以安装整个仓库目录。
不要只复制 SKILL.md。如果缺少 assets/、references/ 和 scripts/,模板生成、规则参考和 Python 校验都会失效。
六、环境准备
基础生成需要 Python 3.10 或更高版本。完整生成 PDF 还需要:
- XeLaTeX;
- TeX Live 中文支持,通常由
ctex提供; - 推荐安装
pdfinfo和pdftotext,用于页数与文本密度辅助检查。
Ubuntu 或 WSL 可以执行:
sudo apt update
sudo apt install -y texlive-xetex texlive-lang-chinese poppler-utils
python -m pip install -r requirements.txt
Windows 可以安装完整或包含 XeLaTeX、CTeX 的 TeX Live,并确认 xelatex 已加入环境变量。
安装完成后建议先运行项目自检:
python scripts/validate_skill.py .
python scripts/smoke_test.py
仓库也内置了 GitHub Actions,每次推送和 Pull Request 都会自动执行结构校验与冒烟测试。
七、准备软件配置
首先复制示例文件:
cp examples/software-copyright.example.json \
/你的项目/software-copyright.json
配置中至少需要确认:
- 软件全称、简称和版本;
- 著作权人;
- 开发完成日期、文档日期和发表状态;
- 软件类型、目标用户和实际技术栈;
- 硬件环境、软件环境、网络环境和启动方式;
- 已经真正实现的主要功能;
- 主界面及各功能模块的真实截图;
- 需要纳入的源码扩展名、优先路径与排除路径。
下面是简化示例:
{
"software": {
"full_name": "云枢示例任务管理系统",
"short_name": "云枢任务",
"version": "V1.0",
"copyright_owner": "湘潭云枢科技有限责任公司",
"completion_date": "2026年8月3日",
"publication_status": "未发表",
"main_technology": "Go、TypeScript、Vue、PostgreSQL、Redis"
},
"source": {
"extensions": [".go", ".ts", ".tsx", ".vue", ".sql"],
"priority_globs": ["cmd/**", "internal/**", "web/src/**"],
"exclude_tests": true,
"exclude_generated": true,
"lines_per_page": 50,
"max_pages": 60
},
"output": {
"directory": "copyright-materials",
"grayscale_screenshots": true
}
}
示例中的公司、日期和软件信息只是演示数据。处理真实项目时,必须替换为能够确认的事实,不能让 Agent 根据 Git 用户名、网站域名或仓库名称自行推断权属信息。
八、一条命令生成并校验材料
在 Skill 根目录执行:
python scripts/build_materials.py \
--project /你的项目 \
--config /你的项目/software-copyright.json \
--mode final \
--compile \
--validate
参数含义:
--project:目标软件真实代码仓库;--config:软件著作权材料配置;--mode final:按最终材料标准执行;--compile:使用 XeLaTeX 编译 PDF;--validate:生成后立即运行校验器。
如果权属信息、日期或截图还没有准备完整,可以先使用:
--mode draft
draft 模式允许暂缺部分内容,但会在报告中明确给出警告;final 模式下,缺少截图、残留占位符、信息不一致、编译失败和页数错误会直接成为阻断问题。
九、生成完成后如何检查
不要只看到命令返回 0 就直接提交。至少还应完成以下复核:
- 阅读
audit/validation-report.md; - 查看
audit/source-manifest.json,确认源码选择符合预期; - 查看
audit/image-manifest.json,确认每张截图来源正确; - 逐页打开两份 PDF,检查乱码、截断、重复页和空白页;
- 检查界面截图中是否存在真实姓名、手机号、密钥或测试账号密码;
- 再次核对软件名称、版本和著作权人与申请表是否完全一致。
出现 error 时,校验器会以非零状态退出;存在 warning 时默认仍可通过。需要在 CI 中把警告也视为失败,可以增加:
--strict
十、常见问题
1. 为什么没有收集到源码?
检查扩展名是否在 source.extensions 中、文件是否被 Git 跟踪、include_globs 是否过窄,以及文件是否被识别为测试、生成代码或第三方依赖。
具体排除原因可以查看:
audit/source-manifest.json
2. 程序 PDF 为什么不足 60 页?
如果整个软件的有效原创源码不足规定页数,提交全部源码是正常情况。脚本不会为了凑页数加入第三方库和无关代码。
如果有效源码已经超过 3000 行,但最终程序 PDF 仍不是预期页数,则会被校验器标记为错误,需要检查字体、行距、模板或编译结果。
3. 截图必须是黑白的吗?
项目默认把副本转换为灰度 PNG,原图不会被修改。具体是否采用黑白形式,仍应以当前受理要求和实际提交方式为准。
4. 能直接修改生成后的 TeX 吗?
可以临时调整排版,但下一次生成时会被覆盖。内容性修改最好回写配置文件,或者改进生成脚本和模板,再重新构建。
5. 能处理涉密、军用或例外交存吗?
当前版本只面向普通交存流程。例外交存、封存、涉密、军用软件或复杂权属情形,应单独确认规则,不能直接套用本 Skill。
十一、项目适合哪些人
这个项目比较适合:
- 独立开发者和学生开发者;
- 需要批量整理多个软件版本材料的团队;
- 已经使用 Codex 或其他代码 Agent 的开发者;
- 希望把软著材料检查接入 CI 的企业;
- 需要保留源码选择、截图与构建审计记录的项目。
它尤其适合“软件本身已经开发完成,但材料整理工作重复、繁琐且容易出错”的场景。
十二、最后说明
generate-cn-software-copyright 采用 MIT License 开源,可以自由使用、修改和集成。
但它本质上是一个材料整理、排版和工程校验工具,不构成法律意见,也不能保证登记机构一定受理或发证。政策、在线系统和具体审查口径可能变化,提交前应以登记机构的最新要求为准。
项目内的法规与版式基线最后核验于 2026 年 8 月 3 日,并列出了以下公开依据:
项目主页:https://github.com/wangling-miao/generate-cn-software-copyright
欢迎提交 Issue、Pull Request,或者根据自己的材料流程扩展新的模板与校验规则。
generate-cn-software-copyright:用 AI 自动生成并校验软著材料
https://wangling.hauchet.cn/archives/generate-cn-software-copyright
评论