Install
openclaw skills install @yuanzhian-patsnap/patent-panorama-analysis专利技术全景分析报告自动生成。用户上传专利数据Excel表格(含标题、申请人、申请日、法律状态、受理局、被引次数等字段)和技术拆解Excel表格后,自动分析专利数据并生成可编辑的HTML全景分析报告。 报告包含5大模块:技术概况分析、重点技术分支分析、竞争对手分析、专利风险分析、企业专利布局建议。 触发条件:当用户提及"专利分析""技术全景分析""专利全景报告""专利布局分析""CMC专利分析""专利竞争分析""专利风险""FTO分析""技术分解""专利趋势"等关键词时自动触发。也适用于用户上传专利数据Excel并要求生成分析报告的场景。
openclaw skills install @yuanzhian-patsnap/patent-panorama-analysisscripts/patent_analyzer.py 进行核心统计分析1. 用pandas读取专利数据Excel,检查列名
2. 用pandas读取技术拆解Excel,理解技术分支结构
3. 调用scripts/patent_analyzer.py进行核心分析,或内联执行分析逻辑
分析维度清单(必须全部执行):
| # | 分析项 | 方法 |
|---|---|---|
| 1 | 申请年趋势 | 按申请年分组计数 |
| 2 | 法律状态分布 | 简化状态后统计 |
| 3 | 受理局/地域分布 | 按受理局分组,中美欧对比 |
| 4 | 技术构成分布 | 关键词匹配分类后统计 |
| 5 | 申请人排名 | 清理名称后统计Top15 |
| 6 | 技术分支趋势 | 按年×分支二维统计 |
| 7 | 增长率计算 | 2020→2024增长百分比 |
| 8 | 申请人技术布局 | 每个申请人各分支专利数 |
| 9 | 高被引专利 | 按被引用次数排序Top10 |
| 10 | 多同族专利 | 同族国家数>=3的专利 |
基于分析结果自动生成以下洞察(融入HTML文案中):
报告必须包含5个模块,每个模块有固定结构。参照 references/ui_style_guide.md 的配色和布局规范。
所有文字内容必须添加 contenteditable="true" 属性,使用对应的hover/focus样式。
图表使用ECharts(通过CDN引入),至少包含8个图表:
规范1 — CDN加载时序(必须使用双保险写法)
禁止使用 window.addEventListener('load', initCharts),因为CDN脚本可能在load事件后才执行。
必须使用以下标准模板:
<script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
<script>
function initCharts() {
// 在此初始化所有图表
}
function tryInit() {
if (typeof echarts !== 'undefined') {
initCharts();
} else {
document.querySelector('script[src*="echarts"]')
.addEventListener('load', initCharts);
}
}
document.addEventListener('DOMContentLoaded', tryInit);
</script>
规范2 — JS字符串内禁止裸换行(饼图label formatter高危区)
<script> 块内所有字符串必须在同一行或用 + 拼接,换行必须用 \n 转义序列。
❌ 错误写法(真实换行符会破坏整个script块解析,导致所有图表白屏):
label: { formatter: '{b}
{d}%' }
✅ 正确写法:
label: { formatter: '{b}\n{d}%' }
规范3 — markLine/markArea必须嵌套在series内
markLine 和 markArea 是 series 的子属性,不能写在 option 根级。
❌ 错误写法:
option = {
series: [...],
markLine: { ... } // 根级无效,且会引发解析错误
};
✅ 正确写法:
option = {
series: [{
type: 'scatter',
data: [...],
markLine: { ... } // 必须在series元素内
}]
};
在输出HTML之前,必须逐条核查以下项目:
<script> 标签存在且使用 tryInit 双保险初始化<script> 块内无裸换行字符串(重点检查所有 formatter、label、tooltip 字段)markLine / markArea 均在 series[] 元素内,不在 option 根级<div> 有明确的像素高度(不能仅靠CSS类,须有 style="height:360px")id 唯一,且 initCharts 函数中 echarts.init(document.getElementById('xxx')) 的id与之匹配contenteditable="true" 属性见 references/report_structure.md 中的 TECH_KEYWORDS 映射表。根据用户技术领域可调整关键词。
见 scripts/patent_analyzer.py 中的 clean_applicant 函数。根据实际数据中出现的申请人名称动态调整匹配规则。
见 references/report_structure.md 了解5大模块的完整分析维度。
专利数据Excel的列名可能有多种变体,标准映射关系见 references/report_structure.md 的列名映射表。
本 Skill 依赖智慧芽开放平台 MCP 服务: