Process Safety Infographic Generator.
输入一个化工安全关键词,自动输出一张可直接用于技术分享/培训的信息图 HTML。
以下表述均可触发本技能:
用户输入关键词
↓
① IMA 知识库搜索(主数据源)
↓ 结果不足
② Web 搜索补充(辅助数据源)
↓
③ 要点提炼(ljg-qa 逻辑结构)
↓
④ ljg-card -i 渲染信息图 HTML
↓
⑤ preview_url 预览 + 交付 HTML 文件
知识库配置(固定):
| 项目 | 值 |
|------|-----|
| 知识库名称 | 化工工艺数据库 |
| kb_id | ab9n_5rblYBTLWXftfs9AB5WAAfnCTixKA0FTYFNyVs= |
| API 路径 | openapi/wiki/v1/search_knowledge |
| 凭证路径 | ~/.config/ima/client_id + ~/.config/ima/api_key |
| 脚本路径 | C:/Users/rayzh/.workbuddy/skills/腾讯ima/ima_api.cjs |
调用命令:
node "C:/Users/rayzh/.workbuddy/skills/腾讯ima/ima_api.cjs" \
"openapi/wiki/v1/search_knowledge" \
'{"knowledge_base_id":"ab9n_5rblYBTLWXftfs9AB5WAAfnCTixKA0FTYFNyVs=","query":"KEYWORD","top_k":10,"search_mode":"hybrid"}'
关键经验:
media_type: 1 = PDF 文档,99 = 文件夹
info_list 为空,直接进入 Step 2
当知识库结果不足时,用 WebSearch + WebFetch 补充。
推荐搜索词模板:
{关键词} 安全 危险性 控制措施
{关键词} 重大隐患 判定 AQ 3067
{关键词} 事故分析 预防措施
AQ 3067 {关键词}(查找重大隐患判定中相关条款)
WebFetch 提取要点:
对搜索结果中政府网站(应急管理部、各省应急厅)、行业协会网站,用 WebFetch 提取正文,聚焦:
将检索内容结构化为故事链,适配信息图版面:
① 是什么(定义 + 核心特征)
② 为什么重要(危险性 / 事故后果 / 法规要求)
③ 怎么做(控制措施 / 设计要点 / 操作步骤)
④ 红线(重大隐患判定条款 / 禁止项)
信息密度判断:
读取规范文件(每次均读):
C:/Users/rayzh/.agents/skills/ljg-card/assets/infograph_template.html
C:/Users/rayzh/.agents/skills/ljg-card/references/mode-infograph.md
C:/Users/rayzh/.agents/skills/ljg-card/references/taste.md
化工安全类推荐配置:
| 参数 | 值 | 说明 |
|------|-----|------|
| 色调 | 浅色技术风(推荐) 或安全警示 | 浅色:--bg:#FFFFFF / --ink:#2C3E50 / --green:#3498DB / --pink:#E74C3C;技术:--bg:#F0F3F7 / --green:#8EAAB8 / --pink:#1A936F;警示:--bg:#F0F3F7 / --green:#3A7CA5 / --red:#C0392B |
| 密度 | 密 | 化工安全内容多,用密集排版 |
| 结构 | 层级 或 流程 | 按"危险→措施→法规"层级,或按操作步骤流程 |
| 情绪 | 技术 | mono 标注、网格底纹、数据密集 |
| 画布 | 1080px 宽 | 手机端缩放 2.8 倍后需可读 |
⚠️ 重要:默认使用浅色主题
参考用户反馈,深色背景虽然视觉冲击力强,但:
默认浅色配色方案(推荐):
--bg: #FFFFFF(纯白背景)
--ink: #2C3E50(深蓝灰文字)
--green: #3498DB(信息蓝,用于措施/流程)
--pink: #E74C3C(警示红,用于危险/禁止)
--accent: #F39C12(强调橙,用于标签/高亮)
替代浅色方案(暖灰):
--bg: #FAFBFC(暖灰白)
--ink: #1A252F(深墨蓝)
--green: #27AE60(安全绿)
--pink: #C0392B(深红)
--accent: #F39C12(琥珀)
化工安全类视觉增强规则(基于优秀信息图样本提炼):
核心特征:
Ray谈化工 · PS Inforgraphic,样式为半透明白色 rgba(255,255,255,0.55),字号 16px,字母间距 1px,与右侧参考信息风格一致
```
背景:#FFFFFF(纯白)
主文字:#1A3A5C(深海蓝)
标题栏蓝:#2E5C8A(准备/措施类)
标题栏绿:#4A9B5E(安全/通过类)
标题栏红:#C84B4B(危险/禁止类)
标题栏橙:#E8913A(注意/警告类)
标题栏紫:#7B68A6(设备/工具类)
底部条:#1A3A5C(深海蓝)
```
不同化工安全主题适合不同的布局模式。根据关键词自动判断并选择:
类型 A:事故分析类(关键词含"事故""调查""XX爆炸""XX泄漏"等)
类型 B:工艺安全类(关键词含"硝化""氯化""HAZOP""LOPA"等工艺或分析方法)
类型 C:制度标准类(关键词含"AQ""标准""规定""条例"等)
字体规范(手机端可读):
90/8/2 色彩法则:
反死亡清单(必须检查):
display:block; position:relative + 图标绝对定位,防止中文竖排
标签在窄空间被压成竖排 → 加 display:inline-block; white-space:nowrap
white-space:nowrap;4字以上标签用
手动断行(如"先兆flex + min-width + white-space:nowrap
根因分析:
中文没有空格分词,浏览器在窄容器中无法找到断行点,只能逐字折行 → 4个字变成4行竖条。
症状识别:
技术措施 渲染成"技/术/措/施"竖条
1fr 1fr 1fr 列内中文全部竖排
标准修复方案:
| 场景 | ❌ 错误写法 | ✅ 正确写法 |
|------|------------|------------|
| 图标列表 | li { display:flex } + 文字自然流 | li { display:block; position:relative; padding-left:48px } + .ico { position:absolute; left:0 } |
| 强调文字 | 技术措施: | 技术措施: |
| 彩色标签 | .label { width:80px } 自然折行 | .label { width:80px; white-space:nowrap } 或手动 断行(如"先兆
中暑") |
| grid 内标签 | grid: 1fr 1fr 1fr | display:flex; flex-wrap:wrap + min-width:100px; white-space:nowrap |
| 通用防护 | 无 | 所有中文标签/徽章/强调文字加 white-space:nowrap |
图标列表最佳实践(替换原 flex 方案):
.icon-list li {
display: block;
position: relative;
padding: 9px 0 9px 48px; /* 左侧留出图标空间 */
border-bottom: 1px solid #F0F0F0;
font-size: 22px;
line-height: 1.5;
}
.icon-list .ico {
position: absolute;
left: 0;
top: 9px;
font-size: 28px;
width: 40px;
text-align: center;
}
.icon-list strong {
display: inline-block;
white-space: nowrap;
}
手动断行规则(4字以上标签):
文件保存路径:
D:/RayClaw/{当前日期}-{任务标识}/{关键词}_infograph.html
预览:
preview_url(file:///D:/RayClaw/{路径}/{关键词}_infograph.html)
交付:
deliver_attachments(["D:/RayClaw/{路径}/{关键词}_infograph.html"], "交付{关键词}安全信息图 HTML")
PNG 截图(html2canvas 方案):
在 HTML 文件中集成 html2canvas 库,允许用户直接在浏览器中导出高清 PNG 图片。
1. 引入 html2canvas 库(head 区域):
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
2. 添加下载按钮(body 区域,固定定位):
<button id="downloadBtn" style="position:fixed;top:20px;right:20px;z-index:9999;
background:linear-gradient(135deg,#C84B4B,#E8913A);
color:#fff;border:none;padding:14px 28px;
font:700 18px/1 var(--sans);border-radius:8px;cursor:pointer;
box-shadow:0 4px 12px rgba(200,75,75,0.4);transition:all 0.3s;">
下载 PNG 图片
</button>
3. 添加截图脚本(script 标签):
document.getElementById('downloadBtn').onclick = function() {
const btn = this;
btn.disabled = true;
btn.innerHTML = '正在生成高清图片(3x)...';
html2canvas(document.querySelector('.page'), {
scale: 3, // 3倍分辨率,适配高DPI手机屏幕
backgroundColor: '#FFFFFF', // 白色背景
useCORS: true, // 允许跨域图片
logging: false, // 关闭控制台日志
allowTaint: false, // 不允许污染canvas
taintTest: true // 测试canvas是否会被污染
}).then(canvas => {
canvas.toBlob(function(blob) {
if (!blob) {
alert('图片生成失败,请重试!');
btn.disabled = false;
btn.innerHTML = '下载 PNG 图片';
return;
}
let link = document.createElement('a');
link.download = '{关键词}_信息图.png';
link.href = URL.createObjectURL(blob);
link.click();
setTimeout(() => URL.revokeObjectURL(link.href), 100);
btn.disabled = false;
btn.innerHTML = '✅ 下载完成 (3x高清)';
setTimeout(() => {
btn.innerHTML = '下载 PNG 图片';
}, 3000);
}, 'image/png');
}).catch(err => {
console.error('截图失败:', err);
alert('截图失败,请重试!\n错误: ' + err.message);
btn.disabled = false;
btn.innerHTML = '下载 PNG 图片';
});
};
4. 添加 viewport meta 标签(head 区域,charset 之后):
<meta name="viewport" content="width=1080, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
scale 参数选择:
| scale值 | 输出宽度 | 适用场景 | 文件大小 |
|---------|-----------|----------|----------|
| 1x | 1080px | 仅电脑端查看 | ~1-2MB |
| 2x | 2160px | 普通手机屏幕 | ~3-5MB |
| 3x(推荐) | 3240px | 高DPI手机(iPhone/Android旗舰) | ~5-8MB |
| 4x | 4320px | 印刷/超高清需求 | ~10-15MB |
关键经验:
toDataURL() 返回 base64 字符串,内存占用大
toBlob() 返回 Blob 对象,更适合大文件下载
toBlob() 生成的 PNG 质量更高,文件更小
width=1080 锁定页面宽度,避免响应式缩放
URL.createObjectURL() + URL.revokeObjectURL() 管理内存
常见问题排查:
| 问题 | 原因 | 解决方案 |
|------|------|----------|
| 截图空白 | 图片未加载完成 | 确保图片加载完成后再截图,或使用 window.onload |
| 跨域图片丢失 | CORS 限制 | 设置 useCORS: true,确保图片服务器允许跨域 |
| 文字模糊 | scale 太低 | 提高到 3x 或 4x |
| 文件太大 | scale 太高 | 降低到 2x,或压缩后再分发 |
| 手机端显示异常 | 缺少 viewport meta | 添加 |
HAZOP
hazop_infograph.html
硝化工艺安全
nitration_safety_infograph.html
| 问题 | 状态 | workaround |
|------|------|-------------|
| Playwright Chromium 下载失败(ECONNRESET) | 未解决 | 输出 HTML,用户手动截图 |
| IMA 知识库长查询返回空 | 已知限制 | 先用短关键词试探 |
| 知乎等平台反爬 | 已知 | 跳过,换政府/协会网站 |
| 日期 | 变更内容 |
|------|---------|
| 2026-05-09 | 初始版本,基于"硝化工艺安全"实战验证固化 |
| 2026-05-09 | v1.1:参考优秀信息图样本(受限空间作业安全、化学品分类),新增 6 条化工安全视觉增强规则(预警条、深色对比卡片、编号前置+短标题、标签化信息、色块分区、底部收尾);反死亡清单新增 4 条检查项 |
| 2026-05-09 | v1.2:参考事故调查分析信息图样本,新增 2 条视觉规则(SVG图标装饰、信息类型标签);新增"主题专项布局指引"(A事故分析=时间轴、B工艺安全=层级、C制度标准=并列);反死亡清单新增 3 条检查项 |
| 2026-05-09 | v1.3:根据用户反馈(参考信息图颜色太深),将默认主题改为浅色技术风;新增浅色配色方案(纯白底/暖灰白底);修正所有"深色底"推荐为浅色方案;新增规则 9-12(浅色卡片、渐变分隔线、口诀卡片、圆形徽章);修正类型 B/C 色彩方案为浅色主题;反死亡清单第7条修正为"不用大面积深色底" |
| 2026-05-09 | v1.4:基于用户喜欢的移动式起重机/高处作业信息图风格,全面优化视觉规则。新增11条核心规则(彩色标题栏卡片、图标化列表、十不吊清单、分级展示、中间示意图、口诀卡片、底部深色收尾条等);更新配色方案(蓝/绿/红/橙/紫 五色标题栏);更新"主题专项布局指引"A/B/C三类,均改为彩色标题栏卡片组布局;字体层级细化(主标题/标题栏/列表/标语) |
| 2026-05-09 | v1.5:集成 html2canvas 方案,实现浏览器端高清 PNG 导出。新增完整"html2canvas 集成与分辨率优化"指南:包含CDN引入、下载按钮样式、toBlob()截图脚本、viewport meta配置;分辨率优化(scale 2x/3x/4x对比与选择建议);常见问题排查表;替代原"Playwright 截图不可用"方案 |
| 2026-05-09 | v1.6:底部收尾条新增左下角署名规范——标语下方左侧固定显示 Ray谈化工 · PS Inforgraphic(半透明白色,16px,字母间距1px),确保每张信息图均有来源署名 |
| 2026-05-14 | v1.7:新增文字排版防坑指南(基于"预防中暑"信息图复盘)。反死亡清单新增 4 条检查项(图标列表flex布局、strong竖排、标签竖排、grid内中文竖排);新增完整"文字排版防坑指南"章节——包含根因分析(中文无空格分词)、5场景对比表(❌错误/✅正确写法)、图标列表最佳CSS实践、手动断行规则(2/4/6字标签) |
共 3 个版本