Install
openclaw skills install @kakahilda/ecolink-batch-searchEcoLink碳足迹数据库批量搜索(本地模式)。内置ecoinvent/CPCD/GHG因子库CSV数据,本地模糊匹配搜索,利用Agent自身LLM能力做翻译/分解/替代品推荐,生成HTML预览页面让用户勾选后导出CSV。当用户需要"批量搜索碳足迹"、"批量查因子"、"批量查CPCD"、"批量查碳足迹数据"时触发。
openclaw skills install @kakahilda/ecolink-batch-search内置三个碳足迹数据库 CSV,本地模糊匹配搜索,利用 Agent 自身 LLM 能力做智能分析,零额外费用。
用户输入产品名称列表
→ Agent 用自身 LLM 做翻译/别名/复合材料判断
→ 脚本本地 CSV 模糊匹配(ecoinvent + CPCD + GHG因子库)
→ 无结果时 Agent 用 LLM 做化学品分解 → 重新搜索各组分
→ 仍无结果时 Agent 用 LLM 推荐替代品 → 搜索替代品
→ 生成 HTML 预览页面 → 用户在浏览器勾选 → 导出 CSV
| 数据库 | 文件路径(相对 skill/) | 行数 | 说明 |
|---|---|---|---|
| ecoinvent v3.12 | data/ecoinvent.csv | ~26,500 | Cut-Off AO,列: activity_name, product_name, geography, time_period, sector, unit, cas_number |
| CPCD 产品碳足迹 | data/cpcd.csv | ~4,875 | 列: product_name, product_name_en, model, cf_value, cf_unit, quality_score, data_year, functional_unit |
| GHG 排放因子库 | data/ghg_factor.csv | ~3,025 | 列: category_path, emission_type, fuel_type, factor_value, unit_cn, source |
支持三种方式:
如用户提供文件,先读取确认列名。
对每个产品名称,按以下顺序执行:
Agent 用自身 LLM 能力分析产品名称,输出 JSON:
Prompt:
你是一个碳足迹LCA数据库匹配专家。请对以下原材料/产品名称进行分析:
1. 翻译成准确的英文名称(多个常用英文名全部列出)
2. 判断是否为复合材料/组合产品
3. 如果是复合产品,拆解出各组分材料的英文名称和百分比
严格按以下JSON格式返回:
{"translation": "主要英文名", "alt_names": ["别名1"], "is_composite": false, "components": [], "reason": "分析说明(中文)"}
复合材料示例:
{"translation": "concrete", "alt_names": [], "is_composite": true, "components": [{"name": "cement", "percentage": 30}, {"name": "sand", "percentage": 40}, {"name": "gravel", "percentage": 30}], "reason": "混凝土是由水泥、砂和石子按比例混合的复合材料"}
用户输入: {产品名称}
用中文名 + 英文翻译 + 别名分别搜索三个数据库,结果合并去重。
ecoinvent 匹配逻辑:
CPCD 匹配逻辑:
GHG 因子库匹配逻辑:
如果匹配到结果,且 LLM 判断为复合材料,则拆解各组分分别搜索。
Prompt:
你是一个化学专家。以下化学品在碳足迹LCA数据库中没有直接数据。
请将其分解为可以通过化学反应方程式组合得到的基础组分,并计算质量比例。
分解规则:
1. 优先分解为数据库中最可能存在的简单化学品/元素
2. 无机化合物分解为氧化物或单质(如 CaCO3 → CaO + CO2)
3. 有机化合物分解为常见有机原料
4. 合金/混合物分解为各组分金属
5. 组分必须是具体的化学品,不能是宽泛类别
严格按以下JSON格式返回:
{"molecular_formula": "分子式", "molar_mass": 分子量, "is_chemical": true,
"components": [{"name": "组分英文名", "formula": "分子式", "molar_mass": 分子量,
"mass_fraction": 0.5, "search_terms": ["搜索词1"]}],
"reaction": "化学反应方程式", "reason": "分解说明(中文)"}
如果不是化学品,设 is_chemical 为 false 并返回空 components
化学品名称: {产品名称} ({英文翻译})
对每个组分用 search_terms 搜索,找到结果后标记为 decomposition 类型。
Prompt:
你是一个碳足迹LCA数据库匹配专家。以下原材料/产品在数据库中找不到精确匹配。
请推荐在LCA数据库中可能存在的**具体**替代品或相近产品。
严格按以下JSON格式返回:
{"alternatives": [{"name": "替代品英文名", "reason": "推荐理由(中文)"}]}
推荐规则:
1. 替代品必须是**具体的产品/化学品**,不能是宽泛的类别
禁止:chemical, inorganic / metal / plastic / polymer / material 等
2. 化学品推荐同族/同类具体化学品
3. 工业产品推荐功能/用途最接近的具体产品
4. 金属/合金推荐成分最接近的具体合金
5. 最多推荐3个替代品
6. 如果确实找不到任何具体的替代品,返回空数组
用户在碳足迹数据库中找不到: {产品名称}
对每个替代品搜索数据库,找到结果后标记为 alternative 类型。
所有产品搜索完成后,Agent 先汇总全部匹配结果,然后询问用户选择导出方式:
搜索完成!共 X 个产品,Y 个有匹配结果。 请选择导出方式:
- 快速导出:每个产品自动取前 3 条最匹配结果,直接生成 CSV
- 优点:速度快,一步到位,适合产品数量多或对精度要求不高的场景
- 缺点:无法查看和筛选每条结果,可能包含不太相关的条目
- 手动筛选:生成交互式 HTML 预览页面,在浏览器中逐条勾选后导出 CSV
- 优点:可逐条查看所有匹配结果,人工把关质量,导出结果更精准
- 缺点:需要打开浏览器操作,产品数量多时较耗时
方式一:快速导出
方式二:手动筛选
python skill/scripts/batch_search.py \
--input "产品1,产品2,产品3" \
--output results.csv --no-llm --preview
注意:脚本使用 --no-llm 模式(不调远程LLM API),LLM 分析由 Agent 自身完成。
Agent 将 LLM 分析结果(翻译、别名、分解组分、替代品)通过脚本参数或直接在脚本输出后补充到结果中。
Agent 生成 HTML 预览页面时,应包含:
| 列名 | 说明 |
|---|---|
| 搜索词 | 用户输入的原始产品名称 |
| 结果类型 | direct / composite / decomposition / alternative |
| AI翻译 | 翻译的英文名 |
| 数据来源 | ecoinvent / CPCD / GHG因子库 |
| 产品名称 | 匹配到的产品名 |
| Activity名称 | ecoinvent 专属 |
| 型号 | CPCD 专属 |
| 地理区域 | ecoinvent 专属 |
| 碳足迹/因子值 | 核心数值 |
| 单位 | 因子单位 |
| 质量评分 | 数据质量评分 |
| 功能单元 | CPCD 专属 |
| 数据年份 | CPCD / ecoinvent |
| 匹配原因 | 匹配/推荐原因 |
| 说明 | 分类路径 / 数据说明 |
| 类型 | 含义 | 触发条件 |
|---|---|---|
direct | 直接匹配 | 中文名/英文名/别名在数据库中找到匹配 |
composite | 复合材料 | 判断为复合材料,拆解各组分分别搜索 |
decomposition | 化学分解 | 直接匹配无结果,分解为化学组分并搜索 |
alternative | 替代品推荐 | 分解也无结果,推荐同类具体产品 |
如需更新数据库 CSV 文件,运行:
python skill/convert_db.py
该脚本从原始 Excel 文件重新生成 skill/data/ 下的三个 CSV。
skill/data/ 目录下,CSV 格式,UTF-8 编码--no-llm 模式表示脚本本身不调 LLM,LLM 分析由 Agent 完成