用于从软件开发源代码文件夹自动生成计算机软件著作权登记申请的全部材料。 当用户说"我要申请软件著作权"、"帮我生成软著材料"、"制作计算机软件著作权申请文档"、 "写软著源代码文档"、"出软著申请材料"、或上传/指定了源代码文件夹时触发调用。 提供完整的三个产出物:源代码程序文档(60页)、用户操作手册(10页+)、软著申请表Word文档。 系统简介部分会自动联网检索相关政策、标准和业务背景资料补充说明。
计算机软件著作权申请材料生成
功能概述
计算机软件著作权申请材料生成是一项面向实际任务的技能,主要用于在开始前,确保安装了所需的 Python 库:;配套脚本(skill 内置);
核心要点
- 本技能在 scripts/ 目录下提供了两个关键脚本:;
- scripts/scan_source.py;
- 扫描源代码目录,排除依赖目录,识别语言,分类代码类型,统计行数;
使用与执行
scripts/generate_all.py;根据扫描结果和用户信息,一键生成全部三个 Word 文档。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
计算机软件著作权申请材料生成
依赖安装
在开始前,确保安装了所需的 Python 库:
pip install python-docx
配套脚本(skill 内置)
本技能在 scripts/ 目录下提供了两个关键脚本:
| 脚本 | 用途 |
|---|---|
scripts/scan_source.py |
扫描源代码目录,排除依赖目录,识别语言,分类代码类型,统计行数 |
scripts/generate_all.py |
根据扫描结果和用户信息,一键生成全部三个 Word 文档 |
核心产出物(三个文档)
用户选择含有软件源代码的文件夹后,本技能依次生成以下三份材料:
| # | 文档 | 格式 | 关键要求 |
|---|---|---|---|
| 1 | 源代码程序文档(源程序文档) | Word (.docx) | 前后各连续30页共60页;不足3000行则全部提交;A4满排每页≥50行 |
| 2 | 用户操作手册 | Word (.docx) | ≥10页,图文结合,彩色截图;标题三号宋体加粗,正文四号宋体 |
| 3 | 软著登记申请表 / 申请材料 | Word (.docx) | 含软件全称、版本号、分类号、开发完成日期、申请人信息等 |
第一阶段:收集信息
1.1 用户选择文件夹
用户已提供或指定源代码所在的文件夹路径。如果用户仅口头描述,先确认路径;如果已作为附件上传,记录路径。
1.2 询问用户基本信息
使用 question 工具收集以下信息(建议一次收集):
软件基本信息:
- 软件全称(必须带版本号,如 XX数据统计平台 V1.0)
- 软件简称(可选,无简称可不填)
- 版本号(首次登记统一 V1.0)
- 发表状态:未发表 / 已发表
- 如已发表,发表日期
- 开发完成日期(任意早于申请日的日期)
申请人信息:
- 申请主体类型:企业 / 个人
- 如为企业:企业全称、统一社会信用代码、法人姓名、联系人、联系电话、邮箱、地址
- 如为个人:姓名、身份证号、联系电话、邮箱、地址
其他信息:
- 权利取得方式:原始取得(默认) / 其他
- 权利范围:全部权利(默认)
- 软件用途描述(如企业内部数据管理、办公辅助等,用于申请表软件用途字段)
第二阶段:扫描与分析源代码
2.1 分析代码目录结构
使用 scripts/scan_source.py 脚本扫描源代码文件夹:
python scripts/scan_source.py <源代码目录> --output <输出JSON路径>
该脚本自动排除以下目录和文件:
| 排除目录/模式 | 说明 |
|---|---|
node_modules/ |
Node.js 依赖 |
vendor/ |
PHP Composer / Go 依赖 |
venv/, env/, .venv/, __pycache__/ |
Python 虚拟环境/缓存 |
dist/, build/, .next/, out/ |
打包构建产物 |
.git/, .svn/ |
版本控制目录 |
target/, bin/, obj/ |
Java/C# 编译输出 |
lib/, libs/ (非源码) |
类库目录 |
packages/, bower_components/ |
包管理器目录 |
*.min.js, *.bundle.js |
压缩/打包文件 |
third_party/, thirdparty/ |
第三方代码 |
assets/, static/ (纯资源) |
仅排除纯静态资源目录 |
*.db, *.db-shm, *.db-wal, *.sqlite |
二进制数据库文件(必须排除!) |
*.log |
日志文件 |
⚠️ 实测经验:SQLite 数据库文件(.db, .db-wal)可能包含可读文本,容易被误识别为源代码。脚本已内置排除这些扩展名。
使用 glob 或 bash 命令列出目录树中所有未被排除的源代码文件。
2.2 识别主开发语言和分类号
根据扫描到的文件扩展名自动识别:
| 语言 | 扩展名 | 分类号建议 |
|---|---|---|
| Java | .java | 30000-0000-000(数据处理-通用) |
| Python | .py | 30000-0000-000 |
| JavaScript/TypeScript | .js, .ts, .jsx, .tsx | 30000-0000-000 |
| Vue | .vue | 30000-0000-000 |
| C# | .cs | 30000-0000-000 |
| C/C++ | .c, .cpp, .h, .hpp | 30000-0000-000 |
| PHP | .php | 30000-0000-000 |
| Go | .go | 30000-0000-000 |
| 微信小程序 | .wxml, .wxss, .js, .json | 30000-0000-000 |
| 安卓 APP | .java, .kt, .xml | 30000-0000-000 |
| iOS APP | .swift, .h, .m | 30000-0000-000 |
2.3 识别核心代码类型
通过文件内容分析,识别源代码中属于以下类别的文件:
- 主页/入口代码:前端入口(main.js, app.js, index.html 等)或后端启动文件
- 数据库表结构代码:包含 CREATE TABLE、model/schema 定义、实体类等
- 后端程序源代码:API 接口、Service、Controller 等业务逻辑代码
- 前端界面代码:UI 组件、页面模板等
2.4 统计代码行数
统计所有有效代码文件的总行数(去除空行和纯注释行),按以下规则:
- 严格取前 60 页:每页 50 行 = 3000 行。如果总代码超过 3000 行,直接截断,不取"前30页+后30页",只取前 60 页的代码量。
- 不足 60 页:不足 3000 行的全部提交,用空行填充到整数页。
- 确保每页满排:每页严格 50 行,不足行用空行填充。
扫描完成后分析结果,重点关注:
- 总有效代码行数:决定是截取前3000行还是全部提交
- 主要语言:用于申请表分类号和软件用途描述
- 入口/后端/前端代码分类:用于组织源代码文档排列顺序
⚠️ 实测经验:对于单页应用(SPA),一个 HTML 文件可能包含上万行代码(含 CSS/JS 内联),这会被检测为 HTML 语言为主。生成代码文档时,应按"主页→数据库→后端→前端"的顺序组织代码,而非按文件大小排序。
第三阶段:生成源代码程序文档
使用 scripts/generate_all.py 脚本可一键生成所有文档。也可分步生成。
一键生成全部文档
python scripts/generate_all.py \
--scan <扫描结果.json> \
--source <源代码根目录> \
--name "软件全称" \
--version "1.0" \
--applicant "申请人姓名" \
--id "身份证号" \
--phone "联系电话" \
--email "邮箱" \
--output <输出目录>
分步:手动生成说明
如果手动编写 Python 生成脚本,请注意以下关键点:
⚠️ Python 字符串中的中文引号陷阱
在 Python f-string 中使用中文双引号("")会导致 SyntaxError,因为 Python 会将其识别为字符串结束。必须使用 unicode 转义:
# ❌ 错误写法(会报 SyntaxError)
desc = f"系统依据关于"推动数字技术"的要求"
# ✅ 正确写法
lq = 'u201c' # "
rq = 'u201d' # "
desc = f'系统依据关于{lq}推动数字技术{rq}的要求'
格式要求
格式要求
- 页眉:软件全称 + 版本号 + "第 X 页 共 Y 页",如:XX数据统计平台 V1.0 第 1 页 共 60 页
关键:页眉中的总页数必须使用 Word 动态域
NUMPAGES,而不是写死一个数字。因为 Word 在生成文档后才能确定实际页数,写死数字会导致页数不对。实现方式:PAGE域显示当前页码,NUMPAGES域显示总页数。 - 字体:宋体(SimSun),小四号(12pt)
- 页面:A4 纵向(21cm × 29.7cm)
- 行数:严格每页 50 行(包括元信息行和空行),不足填充
- 总页数:严格输出 60 页,超出的代码截断不写入文档;总代码不足 3000 行时全部提交并填充到整数页
- 版式:A4 满排,上下边距 2cm,左右边距 2.5cm
- 元信息:⚠️ 仅第一页显示软件名称、开发日期、登记号、开发语言、运行环境、主要功能简介;其他页不显示元信息
python-docx 注意:创建 Document() 后立即调用
apply_chinese_fonts(doc, 'SimSun')否则中文会显示为 MS 明朝。每个 run 都需要set_run_font(run, 'SimSun', Pt(12))。
代码过滤规则
- 过滤掉 AI 自动生成的描述性注释
- 大量删减空行,保证每页有效代码达标
- 过滤掉大段第三方开源代码(如 Vue/SpringBoot 原生框架代码、node_modules 中的代码)
- 过滤掉纯框架脚手架代码
- 保留有效业务逻辑代码
内容排版顺序
每个文件内容按以下顺序排版:
软件名称:<软件全称> 开发日期:<开发完成日期> 登记号:[留空,待版权中心登记时生成] 开发语言:<识别到的开发语言> 运行环境:<操作系统/浏览器/内存要求> 主要功能简介:<软件功能简述> ======================================== [代码正文从这里开始] ========================================
代码文件排列顺序
排列顺序:
- 主页功能源代码(前端入口 index.html、后端启动 app.js 等)
- 数据库表结构数据源代码(实体、Model、建表 SQL、Schema 定义)
- 后端程序源代码(Controller、Service、API 接口、db.js 等业务逻辑)
- 前端界面源代码(UI 组件、页面模板等)
去重规则:同一文件可能被多个分类匹配(如 app.js 既是入口也是后端代码),只保留在最先出现的分类中。
文件标题与接续规则
- 每个源代码文件开始前,插入一行标题注释
// ===== 文件名 ===== - 标题注释后不换页,代码直接接续在标题之后
- 不同文件之间的代码在同一页上连续排列,直至满 50 行才分页
分页策略(严格60页精确计算)
每页固定 50 行,第一页有 7 行元信息(6 行软件信息 + 1 行分隔线),因此:
| 页次 | 元信息行 | 代码行 | 合计 |
|---|---|---|---|
| 第 1 页 | 7 行 | 43 行 | 50 行 |
| 第 2~60 页 | 无 | 50 行/页 | 50 × 59 = 2950 行 |
| 总计 | 7 行 | 2993 行 | 3000 行 = 60 页 |
实际执行:
- 如果总代码行 > 2993:严格截取前 2993 行,超出的代码不写入文档
- 如果总代码行 ≤ 2993:全部提交,用空行填充到 2993 行
- 不留多余空行:连续空行最多保留 1 个,页面间仅靠分页符分隔
- 不留额外换页:文件标题(
// ===== filename =====)后代码直接接续在同一页,不插入额外分页符
页面模板
第一页模板(含元信息):
┌─────────────────────────────────────┐
│ 智能表单管理系统 V1.0 第 1 页 共 60 页 │ ← 页眉(PAGE+NUMPAGES动态域)
├─────────────────────────────────────┤
│ 软件名称:智能表单管理系统 V1.0 │
│ 开发日期:2026-01-15 │
│ 登记号: │
│ 开发语言:JavaScript + HTML + CSS │
│ 运行环境:Windows 10/11, Chrome │
│ 主要功能简介:表单管理与审核系统 │
│ ─────────────────────────────────── │
│ // ===== server/app.js ===== │ ← 文件标题
│ const express = require('express'); │
│ ... (第1页第7~50行) ... │
└─────────────────────────────────────┘
第二页及以后模板(无元信息,直接代码):
┌─────────────────────────────────────┐ │ 智能表单管理系统 V1.0 第 2 页 共 60 页 │ ├─────────────────────────────────────┤ │ ... (第2页第1~50行) ... │ │ // ===== server/db.js ===== │ ← 文件标题不换页 │ const Database = require(...) │ │ ... │ └─────────────────────────────────────┘
python-docx 页眉实现要点
生成页眉时,使用 add_field() 辅助函数插入 Word 域代码:
def add_field(paragraph, field_code, font_name, font_size):
"""在段落中插入一个 Word 域代码"""
run = paragraph.add_run()
set_run_font(run, font_name, font_size)
fld_begin = OxmlElement('w:fldChar')
fld_begin.set(qn('w:fldCharType'), 'begin')
run._element.append(fld_begin)
run2 = paragraph.add_run()
set_run_font(run2, font_name, font_size)
instr = OxmlElement('w:instrText')
instr.set(qn('xml:space'), 'preserve')
instr.text = f' {field_code} '
run2._element.append(instr)
run3 = paragraph.add_run()
set_run_font(run3, font_name, font_size)
fld_end = OxmlElement('w:fldChar')
fld_end.set(qn('w:fldCharType'), 'end')
run3._element.append(fld_end)
然后在页眉中依次插入:
run = p.add_run(f"{软件全称} 第 ")
add_field(p, 'PAGE') # 当前页码
run2 = p.add_run(" 页 共 ")
add_field(p, 'NUMPAGES') # 总页数
run3 = p.add_run(" 页")
不要写死
共 60 页,文档的实际页数可能因排版而变动,NUMPAGES域会在 Word 打开时自动计算。
第四阶段:生成用户操作手册
格式要求
- 最小页数:≥ 10 页
- 标题:三号宋体加粗(16pt, SimSun, Bold)
- 正文:四号宋体(14pt, SimSun)
- 页眉:同源代码文档格式,软件全称 + 页码(使用 PAGE + NUMPAGES 动态域)
- 须包含:软件运行截图 + 文字说明,体现核心功能
- 输出:Word (.docx) 格式,截图使用占位符标注【此处插入XXX截图】
内容大纲(严格按此顺序)
[封面页] XX数据统计平台 V1.0 用户操作手册 [目录] 1 软件概述 1.1 软件简介(联网检索补充政策、标准、行业背景) 1.2 开发环境 1.3 运行软硬件环境 2 软件功能模块说明 2.1 用户登录模块 2.2 数据录入模块 2.3 数据查询统计模块 2.4 报表导出模块 (根据实际代码分析结果调整模块列表) 3 详细操作步骤 根据系统代码逻辑以HTML生成系统功能操作流程图另存为系统操作流程图 3.1 登录操作流程(附图表截图预留插入图表位置) 3.2 新增数据操作(附图表截图预留插入图表位置) 3.3 筛选、图表查看操作(附图表截图预留插入图表位置) 3.4 Excel导出操作 (根据实际功能增删调整) 4 接口说明 5 故障处理 6 界面说明 7 总结
1.1 软件简介 — 联网搜索要求
撰写 软件概述 > 软件简介 时,必须使用 loomy_websearch 联网检索相关资料:
搜索关键词策略(根据代码分析结果动态构建):
- 纪检监察/政务类系统:"数字纪检监察 信息化 政策 标准"、"二十届中央纪委 数字技术 深度融合"
- 医疗/医院类系统:"医疗信息化 政策法规 标准规范"、"医院信息管理系统 国家标准"
- 企业管理系统:"企业信息化 数字化转型 政策"、"数据管理 国家标准"
- 教育类系统:"教育信息化 智慧校园 标准"、"教育管理 数据安全"
- 所有系统都应搜索:所属行业的国家标准、行业标准、数据安全法相关、等保2.0相关
如何使用检索结果:
- 在软件简介中自然融入检索到的政策背景,说明软件的设计参考了哪些规范
- 引用相关标准、政策时标注来源
- 如搜索结果显示有相关法规或指南,在"设计依据"部分列出
示例写法:
XX数据统计平台 V1.0 由 XX 公司独立开发,依据《数据安全法》《信息安全技术 数据安全能力成熟度模型》(GB/T 37988-2019)等政策标准设计,为企业内部业务数据管理工具,支持业务数据录入、多条件筛选、可视化图表展示、Excel 报表自动导出,提升数据统计效率。软件为独立研发,未借鉴第三方同类软件核心逻辑。
操作流程图
根据系统代码逻辑,使用 Mermaid 语法生成系统功能操作流程图,并以 HTML 方式呈现,保存为 <软件名>-操作流程图.html 文件。
附加生成 Mermaid 源码 TXT 文件:将纯 Mermaid 代码(不含 HTML 包裹)单独保存为 <软件名>-流程图mermaid源码.txt 文件,方便用户直接复制到其他 Mermaid 编辑器中使用。
段落缩进要求
用户手册中所有正文段落(非标题、非列表项、非封面/目录元素)必须设置首行缩进 2 个字。在 python-docx 中实现:
p.paragraph_format.first_line_indent = Cm(0.74) # 约2个中文字符宽度
截图占位
在需要截图的位置添加标注:
【此处插入登录界面完整截图】 截图说明:页面包含账号输入框、密码输入框、登录按钮,用于身份验证。
第五阶段:生成软著申请表 Word 文档
内容格式
按以下结构撰写申请表(Word 文档):
计算机软件著作权登记申请表 软件全称:<填写的软件全称> 软件简称:<填写的软件简称> 版本号:<填写的版本号> 分类号:<根据开发语言识别> 软件分类:<应用软件/嵌入式软件/中间件等> 发表状态:<未发表/已发表> 发表日期:<如有> 开发完成日期:<填写的日期> 权利取得方式:原始取得 权利范围:全部权利 软件用途:<根据源代码功能描述的简洁说明> 技术特点: 开发语言:<识别到的语言> 软件环境:<操作系统/浏览器> 硬件环境:编程语言:<具体语言及版本> 申请人信息: 名称:<企业全称 或 个人姓名> 证件类型:<统一社会信用代码 或 身份证> 证件号码:<证件号> 联系人:<联系人姓名> 联系电话:<电话> 邮箱:<邮箱> 地址:<地址> [落款] 申请日期:<当前日期>
第六阶段:文件输出与验证
输出文件清单
<软件简称>-源代码文档.docx— 源代码程序文档<软件简称>-用户操作手册.docx— 用户操作手册<软件简称>-软著申请表.docx— 登记申请表
所有文件保存到工作区目录。
验证清单
每个文件生成后验证:
- 文件已生成且路径正确
- Word 文档可正常打开(使用 validate.py 验证)
- 源代码文档页码格式正确(第 X 页 共 Y 页,使用 NUMPAGES 动态域)
- 源代码文档严格 60 页,每页 50 行
- 元信息仅出现在第一页,其他页没有
- 文件标题用
// ===== filename =====标注,代码不换页接续 - 用户操作手册页数 ≥ 10 页
- 用户操作手册含截图占位标记
- 申请表信息完整,无遗留的空字段
依赖与要求
- python-docx: 用于生成 Word 文档(pip install python-docx)
- loomy_websearch: 用于联网检索政策和行业背景资料
- 宋体字体(SimSun):系统应支持宋体,确保 Word 文档正确渲染
注意事项
- 生成的 Word 文档中的中文字体使用宋体(SimSun),使用 Word 文档处理技能的 python-docx 字体设置函数
- 源代码中遇到 AI 生成的注释(特征:以"以下是"/"这是"/"请确保"等开头)需过滤
- 严格 60 页,超出的代码一律截断不写入,每页固定 50 行,不足填充空行
- 用户操作手册的截图位置使用占位符标注,提示用户自行截图补充
- 操作流程图使用 Mermaid 生成 HTML 流程图文件
- 如果用户没有提供足够的代码(如只有简单脚手架),应提示用户补充有效业务代码
- 申请表中"登记号"字段留空,由版权中心登记时生成
- Python 字符串中的中文引号:在 f-string 或普通字符串中包含中文双引号""时,必须改用 unicode 转义
u201c和u201d,否则会触发 SyntaxError - 生成脚本超时:生成 60 页 Word 文档可能需要较长时间(2-3 分钟),设置合理的工具超时时间(≥180秒)
- 验证文件:生成后应检查文件大小,源代码文档应 ≥ 50KB,用户手册应 ≥ 30KB
热门AI工具
相关专题
本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。
0
2026.11.12
本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。
0
2026.11.12
本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。
0
2026.11.12
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章