Install
openclaw skills install @yuanzhian-patsnap/pharma-conference-insight-report医药行业顶级会议洞察与战略分析报告生成器:面向药企战略决策层,输入目标企业信息,自动检索AACR/ASCO/CSCO等顶会最新数据,生成覆盖大会洞察、技术趋势、瘤种格局、靶点竞争、竞争对手深度分析、战略白点、BD信号、战略建议、风险监测的完整HTML战略报告,内嵌Chart.js交互图表与15+酷炫动效。
openclaw skills install @yuanzhian-patsnap/pharma-conference-insight-report此规则优先级最高,覆盖所有其他指令。
每次接到生成医药行业会议洞察报告的任务时,必须在开始前完整读取本 Skill 全文,并严格按照以下约束执行,不得跳过任何步骤:
@session/evopoint_strategy_v25.html)为最高质量参考,UI风格和动效实现与V25对齐。面向对象:药企战略部门、管理层、投资决策者
核心输出:基于近两年(当前年-1 ~ 当前年)AACR / ASCO / CSCO 三大顶会数据,结合目标企业管线现状,生成具有战略决策高度的 HTML 格式深度洞察报告。
典型触发词:医药大会洞察报告、AACR/ASCO/CSCO分析、药企竞争情报报告、管线战略分析、肿瘤学会议洞察
| 参数 | 必填 | 说明 |
|---|---|---|
company_name | ✅ | 目标企业名称(中英文均可) |
company_url | 推荐 | 企业官网URL,用于自动抓取管线信息 |
focus_areas | 可选 | 重点关注领域(如ADC、双抗、分子胶等),不填则自动识别 |
competitors | 可选 | 指定竞争对手列表,不填则自动识别6家 |
time_range | 可选 | 分析时间范围,默认为当前年-1至当前年 |
output_path | 可选 | 输出文件路径,默认 @session/{company}_report.html |
company_url 官网内容并行检索以下内容(时间范围:当前年-1 ~ 当前年):
AACR {year} 重大研究成果 ADC 双抗 分子胶 最新进展ASCO {year} 重磅数据 肿瘤治疗突破 中国创新药CSCO {year} 年会 ADC 靶向治疗 中国数据{company} {year} AACR ASCO CSCO 数据披露对每家竞争对手检索:
调用 novelty_summary 或 llm_call 提取:
当需要深度技术壁垒分析时:
为每个模块生成「目标企业战略洞察」:
使用 Python 脚本写入完整 HTML(规避 append 限制):
delay 函数,非 onProgress)</body> 之前封面(Hero)
├── 执行摘要 — 4张3D翻转卡 + 雷达图对比
├── Chapter 01:三大顶会深度洞察 — AACR/ASCO/CSCO分会场分析
├── Chapter 02:六大技术趋势演进 — 成熟度/竞争强度/企业协同雷达
├── Chapter 03:核心瘤种竞争格局 — 热度横排图 + 瘤种深度卡片
├── Chapter 04:靶点平台竞争情报 — 四维雷达 + TRL成熟度 + 竞争矩阵
├── Chapter 05:竞争对手深度分析 — ≥6家 + 威胁等级 + 管线堆叠图
├── Chapter 06:战略白点与未满足需求 — TOP6清单(必须6条)+ 机会气泡矩阵
├── Chapter 07:BD信号与资本动向 — 出海趋势双轴图 + 重大交易时间线
├── Chapter 08:战略行动建议 — Ansoff矩阵 + 优先级评分 + 分级建议
├── Chapter 09:风险监测与预警 — 6大风险看板 + 全年监测时间轴
└── Chapter 10:来源附录 — 可信度评级 + 数据索引 + 免责声明
结尾声明区块(页脚)
--bg: #020b18 /* 主背景深蓝黑 */
--blue: #2563eb /* 主色蓝 */
--cyan: #06b6d4 /* 强调青 */
--purple: #a855f7 /* 强调紫 */
--green: #10b981 /* 正面绿 */
--red: #ef4444 /* 风险红 */
--text: #e2e8f0 /* 正文白 */
--dim: #94a3b8 /* 辅助灰 */
| 类别 | 动效 | 实现方式 |
|---|---|---|
| 全局 | 粒子星尘系统 | Canvas 2D + RAF,180粒子,自动连线 |
| 全局 | 光束扫描 | 页面加载时CSS beamSweep 动画 |
| 全局 | 顶部进度条 | scroll事件驱动宽度变化 |
| 全局 | 鼠标跟随辉光 | mousemove + 青色径向渐变 |
| 封面 | 5层旋转环 | CSS animation,各层速度/方向各异 |
| 封面 | 中央脉冲核心点 | corePulse keyframe,scale+光晕扩散 |
| 封面 | 打字机双行 | JS逐字符,行间停顿350ms,两行字号一致 clamp(2.8rem,5vw,3.8rem),letter-spacing:0.06em |
| 封面 | 数字滚动计数 | rAF + easeOutCubic,IntersectionObserver触发(见5.4节) |
| 卡片 | 3D翻转 | CSS perspective + rotateY(180deg) hover |
| 卡片 | 边框流光扫描 | ::after + translateX 扫光 |
| 卡片 | 磁吸Tilt3D | mousemove X/Y轴10°倾斜 |
| 时间线 | 脉冲涟漪 | 双层 ripple keyframe |
| 导航 | Ripple波纹 | click事件,scale(4)后消失 |
| 滚动 | Section飞入 | IntersectionObserver + fadeUp |
| 滚动 | 视差效果 | scroll + translateY背景层独立速率 |
顶部导航(sticky):
封面 Hero:
min-height: 100vh返回顶端按钮(必须在 </body> 之前插入):
position:fixed !important; bottom:2.5rem; right:2.5rem; z-index:99999 !important.btt-show 类控制,opacity:0; pointer-events:none 初始态)结尾声明区块(在第10章之后,</body> 之前):
全报告只能有一套数字滚动Observer,严禁新增第二套与原有套并存。
两套Observer并存会导致互相抢占 data-animated 标记,竞争对手数字全部失效。
<!-- 纯整数 -->
<div class="comp-stat-val" data-target="15">0</div>
<!-- 带后缀 -->
<div class="comp-stat-val" data-target="50" data-suffix="亿+">0</div>
<!-- 带前缀+后缀(初始值必须是"-",不能是"0") -->
<div class="comp-stat-val" data-prefix="$" data-target="84" data-suffix="亿">-</div>
<!-- 小数 -->
<div class="comp-stat-val" data-prefix="$" data-target="11.5" data-suffix="亿">-</div>
function animateCount(el) {
const target = parseFloat(el.dataset.target);
const suffix = el.dataset.suffix || '';
const prefix = el.dataset.prefix || '';
const isDecimal = !Number.isInteger(target);
const duration = el.classList.contains('kpi-val') ? 2800 : 2200;
const start = performance.now();
function easeOutCubic(t) { return 1 - Math.pow(1 - t, 3); }
function tick(now) {
const elapsed = now - start;
const progress = Math.min(elapsed / duration, 1);
const val = target * easeOutCubic(progress);
el.textContent = prefix + (isDecimal ? val.toFixed(1) : Math.floor(val)) + suffix;
if (progress < 1) requestAnimationFrame(tick);
else el.textContent = prefix + (isDecimal ? target.toFixed(1) : target) + suffix;
}
requestAnimationFrame(tick);
}
// ✅ 正确:单套Observer,选择器同时覆盖两类元素
e.target.querySelectorAll('[data-target]').forEach(el => {
if (!el.dataset.animated) { el.dataset.animated = '1'; animateCount(el); }
});
// ❌ 错误:新增第二套Observer单独处理 .comp-stat-val
基准:以V21为基础,仅对下列5类图表动效做精准延长,其余动效参数不改。
| 图表类型 | duration | delay/元素 | easing |
|---|---|---|---|
| 柱状图 | 2800ms | 160ms/列 | easeOutBounce |
| 折线图 | 3000ms | 130ms/点 | easeInOutCubic |
| 雷达图(技术趋势/靶点) | 2800ms | 200ms/维 | easeOutElastic |
| 雷达图(竞争对手) | 1400ms | 80ms/维 | easeOutElastic |
| 气泡图(机会矩阵) | 3200ms | 280ms/泡 | easeOutExpo |
| 气泡图(战略白点) | 1600ms | 100ms/泡 | easeOutExpo |
| 进度条 transition | 3s | — | ease |
⚠️ 竞争对手雷达图和战略白点气泡图使用较短时长,避免出现时间过长用户等待问题。
// ✅ 使用 delay 函数(Chart.js 4.x 正确写法)
cfg.options.animation = {
delay: function(ctx) { return ctx.dataIndex * 160; },
easing: 'easeOutBounce',
duration: 2800
};
// ✅ 用 Object.assign 合并 tooltip,不覆盖
cfg.options.plugins.tooltip = Object.assign({...defaultTooltip}, cfg.options.plugins.tooltip || {});
// ✅ IntersectionObserver 延迟初始化(进入视口12%才 new Chart())
const io = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) { doInit(); io.unobserve(canvas); }
});
}, { threshold: 0.12 });
io.observe(canvas);
// ❌ 禁止使用 onProgress 回调(Chart.js 4.x 已废弃)
必须包含(≥9个图表):
comp-stat-val 有 data-target 属性,带前缀的初始值为 "-"delay 函数,非 onProgress,IntersectionObserver延迟初始化[data-target]</body> 之前,有 !important fixed定位和 .btt-show 逻辑| 错误 | 根因 | 修复 |
|---|---|---|
| 竞争对手数字不滚动 | 两套Observer并存互相抢占 data-animated | 删除后加的第二套,升级原有 animateCount 函数支持前缀/后缀/小数 |
| 带前缀数字显示异常 | 初始值写 "0" 而非 "-" | 所有 data-prefix 元素初始值改为 "-" |
| 图表动效无效 | 使用了废弃的 onProgress 回调 | 改用 Chart.js 4.x 的 delay 函数方式 |
| 图表options被覆盖 | 调用处options对象整体赋值覆盖注入值 | 改用 Object.assign 合并 |
| 返回顶端按钮不显示 | 插入在 </html> 之后 | 重建,插入在 </body> 之前,加 !important |
| 战略白点只有3条 | 内容截断 | 补充#4/#5/#6三条,保持样式一致 |
| 章节在导航栏消失 | 新增章节时未更新导航HTML | 同步更新 <nav> 中的 <a> 标签 |
| 图表空白canvas | Chart.js初始化在DOM ready之前 | 用IntersectionObserver延迟到进入视口才 new Chart() |
| 数据年份错误 | 未同步当前时间 | 以对话中确认的当前日期为准 |
| Ansoff矩阵空白 | 固定aspect-ratio压缩内容 | 去掉固定比例,改flex自适应 |
| 某章内容丢失 | HTML文件被截断 | 用Python脚本写入完整内容,规避append限制 |
| 字号不一致 | JS打字机硬编码多处字号 | 全局搜索所有 fontSize 赋值,统一为 clamp(2.8rem,5vw,3.8rem) |
@session/{company_name}_strategy_report.html@session/evopoint_strategy_v25.html)最简调用:
请为「XX医药」生成一份医药行业会议洞察战略分析报告,官网是 https://xxx.com
完整调用:
为「XX医药」生成AACR/ASCO/CSCO洞察报告,重点关注ADC和双抗方向,对标竞争对手包括科伦博泰、第一三共、恒瑞,输出HTML报告
本 Skill 基于「信诺维医药(EvoPoint Biosciences)」完整报告迭代(V1→V25)提炼,经历:
@session/evopoint_strategy_v25.html)