用于从软件开发源代码文件夹自动生成计算机软件著作权登记申请的全部材料。 当用户说"我要申请软件著作权"、"帮我生成软著材料"、"制作计算机软件著作权申请文档"、 "写软著源代码文档"、"出软著申请材料"、或上传/指定了源代码文件夹时触发调用。 提供完整的三个产出物:源代码程序文档(60页)、用户操作手册(10页+)、软著申请表Word文档。 系统简介部分会自动联网检索相关政策、标准和业务背景资料补充说明。
计算机软件著作权申请材料生成是一项面向实际任务的技能,主要用于在开始前,确保安装了所需的 Python 库:;配套脚本(skill 内置);
scripts/generate_all.py;根据扫描结果和用户信息,一键生成全部三个 Word 文档。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
在开始前,确保安装了所需的 Python 库:
pip install python-docx
本技能在 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) | 含软件全称、版本号、分类号、开发完成日期、申请人信息等 |
用户已提供或指定源代码所在的文件夹路径。如果用户仅口头描述,先确认路径;如果已作为附件上传,记录路径。
使用 question 工具收集以下信息(建议一次收集):
软件基本信息:
申请人信息:
其他信息:
使用 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 命令列出目录树中所有未被排除的源代码文件。
根据扫描到的文件扩展名自动识别:
| 语言 | 扩展名 | 分类号建议 |
|---|---|---|
| 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 |
通过文件内容分析,识别源代码中属于以下类别的文件:
统计所有有效代码文件的总行数(去除空行和纯注释行),按以下规则:
扫描完成后分析结果,重点关注:
⚠️ 实测经验:对于单页应用(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 f-string 中使用中文双引号("")会导致 SyntaxError,因为 Python 会将其识别为字符串结束。必须使用 unicode 转义:
# ❌ 错误写法(会报 SyntaxError)
desc = f"系统依据关于"推动数字技术"的要求"
# ✅ 正确写法
lq = 'u201c' # "
rq = 'u201d' # "
desc = f'系统依据关于{lq}推动数字技术{rq}的要求'
关键:页眉中的总页数必须使用 Word 动态域
NUMPAGES,而不是写死一个数字。因为 Word 在生成文档后才能确定实际页数,写死数字会导致页数不对。实现方式:PAGE域显示当前页码,NUMPAGES域显示总页数。
python-docx 注意:创建 Document() 后立即调用
apply_chinese_fonts(doc, 'SimSun')否则中文会显示为 MS 明朝。每个 run 都需要set_run_font(run, 'SimSun', Pt(12))。
每个文件内容按以下顺序排版:
软件名称:<软件全称> 开发日期:<开发完成日期> 登记号:[留空,待版权中心登记时生成] 开发语言:<识别到的开发语言> 运行环境:<操作系统/浏览器/内存要求> 主要功能简介:<软件功能简述> ======================================== [代码正文从这里开始] ========================================
排列顺序:
去重规则:同一文件可能被多个分类匹配(如 app.js 既是入口也是后端代码),只保留在最先出现的分类中。
// ===== 文件名 =====每页固定 50 行,第一页有 7 行元信息(6 行软件信息 + 1 行分隔线),因此:
| 页次 | 元信息行 | 代码行 | 合计 |
|---|---|---|---|
| 第 1 页 | 7 行 | 43 行 | 50 行 |
| 第 2~60 页 | 无 | 50 行/页 | 50 × 59 = 2950 行 |
| 总计 | 7 行 | 2993 行 | 3000 行 = 60 页 |
实际执行:
// ===== 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(...) │ │ ... │ └─────────────────────────────────────┘
生成页眉时,使用 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 打开时自动计算。
[封面页] 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 总结
撰写 软件概述 > 软件简介 时,必须使用 loomy_websearch 联网检索相关资料:
搜索关键词策略(根据代码分析结果动态构建):
如何使用检索结果:
示例写法:
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 文档):
计算机软件著作权登记申请表 软件全称:<填写的软件全称> 软件简称:<填写的软件简称> 版本号:<填写的版本号> 分类号:<根据开发语言识别> 软件分类:<应用软件/嵌入式软件/中间件等> 发表状态:<未发表/已发表> 发表日期:<如有> 开发完成日期:<填写的日期> 权利取得方式:原始取得 权利范围:全部权利 软件用途:<根据源代码功能描述的简洁说明> 技术特点: 开发语言:<识别到的语言> 软件环境:<操作系统/浏览器> 硬件环境:编程语言:<具体语言及版本> 申请人信息: 名称:<企业全称 或 个人姓名> 证件类型:<统一社会信用代码 或 身份证> 证件号码:<证件号> 联系人:<联系人姓名> 联系电话:<电话> 邮箱:<邮箱> 地址:<地址> [落款] 申请日期:<当前日期>
<软件简称>-源代码文档.docx — 源代码程序文档<软件简称>-用户操作手册.docx — 用户操作手册<软件简称>-软著申请表.docx — 登记申请表所有文件保存到工作区目录。
每个文件生成后验证:
// ===== filename ===== 标注,代码不换页接续u201c 和 u201d,否则会触发 SyntaxError相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章