乐于分享
好东西不私藏

OpenClaw技能组合拳:多个技能协同完成复杂任务

OpenClaw技能组合拳:多个技能协同完成复杂任务

OpenClaw技能组合拳:多个技能协同完成复杂任务

核心问题:单靠一个技能不够用怎么办?详解OpenClaw工作流机制,教你将pdf、xlsx、pptx、browser等技能串联成自动化流水线,实现网页抓取、数据整理、报告生成等复杂任务,适用于需要多步骤协作的办公场景。

系列教程第 11 篇 | 阅读时长:10-12 分钟


从单兵作战到团队协作

前面的教程中,我们学习了许多独立技能:

  • • pdf:处理 PDF
  • • xlsx:操作 Excel
  • • pptx:制作 PPT
  • • browser:浏览器自动化

这些技能单独使用已经能解决不少问题,但真实场景往往更复杂:

场景举例:

  • • 从网页抓取数据 → 整理到 Excel → 制作成 PPT
  • • 从邮件附件提取 PDF → 提取关键信息 → 生成报告
  • • 监控竞品网站 → 对比历史数据 → 发送提醒

这些任务需要多个技能协同才能完成。

这一篇,我们学习如何组合技能,实现复杂工作流自动化。


一、技能组合的概念和原理

什么是技能组合?

技能组合是指将多个技能按照一定顺序串联起来,形成完整的自动化流程。

类似工厂流水线:

  • • 工序 1:原料加工
  • • 工序 2:质量检验
  • • 工序 3:包装输出

每个工序对应一个技能,前一个工序的输出是后一个工序的输入。


工作流架构

OpenClaw 的技能组合基于**工作流(Workflow)**机制:

输入数据 → 技能1 → 中间结果 → 技能2 → 中间结果 → 技能3 → 最终输出

核心概念:

概念
说明
示例
工作流
完整的自动化流程
"月度报告生成工作流"
步骤
工作流中的单个操作
"提取 PDF 数据"
技能
步骤使用的工具
pdf, xlsx
变量
步骤间传递的数据
{{extracted_data}}
条件
根据情况选择分支
if data.count > 100

配置文件格式

工作流配置使用 JSON 格式:

{  "name": "工作流名称",  "description": "工作流说明",  "trigger": "manual",  "inputs": {    "param1": "默认值"  },  "steps": [    {      "name": "步骤1",      "skill": "pdf",      "command": "extract-text",      "input": "{{inputs.pdf_file}}",      "output": "step1_result"    },    {      "name": "步骤2",      "skill": "xlsx",      "command": "create",      "data": "{{step1_result}}",      "output": "final_output.xlsx"    }  ]}

二、常见组合模式:输入 → 处理 → 输出

大多数工作流遵循一个通用模式:

输入 → 处理 → 输出

模式 1:数据收集 → 整理 → 展示

适用场景:从多个来源收集数据,整理后展示。

示例:竞品监控

[输入] 网站 URL 列表   ↓[步骤1] browser:抓取网页数据   ↓[步骤2] xlsx:整理成表格   ↓[步骤3] pptx:生成报告 PPT   ↓[输出] 竞品分析报告

模式 2:数据提取 → 转换 → 存储

适用场景:从非结构化数据中提取信息,结构化存储。

示例:合同信息提取

[输入] 合同 PDF 文件夹   ↓[步骤1] pdf:提取文字和表格   ↓[步骤2] 自定义:解析关键信息(甲方、金额、日期)   ↓[步骤3] xlsx:存入数据库表   ↓[输出] 合同信息汇总表

模式 3:监控 → 分析 → 通知

适用场景:定期监控某项内容,发现异常时通知。

示例:价格监控

[触发] 每天 10:00   ↓[步骤1] browser:访问商品页面,提取价格   ↓[步骤2] xlsx:对比历史价格   ↓[条件] 价格变化 > 10%?   ↓[步骤3] email:发送降价提醒   ↓[输出] 邮件通知

三、组合案例 1:网页数据 → Excel 整理 → PPT 展示

场景描述

需求:从电商网站抓取商品信息,整理到 Excel,最终生成 PPT 报告。


步骤 1:创建工作流配置

创建 product_report.json:

{  "name": "商品信息采集与报告生成",  "description": "从电商网站抓取商品信息,整理后生成 PPT 报告",  "trigger": "manual",  "inputs": {    "search_keyword": "智能手表",    "max_products": 20  },  "steps": [    {      "name": "抓取商品数据",      "skill": "browser",      "command": "crawl",      "params": {        "url": "https://shop.example.com/search?q={{inputs.search_keyword}}",        "fields": {          "title": ".product-title",          "price": ".product-price",          "rating": ".product-rating",          "sales": ".product-sales"        },        "max_items": "{{inputs.max_products}}"      },      "output": "products_raw"    },    {      "name": "整理数据到 Excel",      "skill": "xlsx",      "command": "create",      "params": {        "data": "{{products_raw}}",        "columns": ["商品名称", "价格", "评分", "销量"],        "sort_by": "销量",        "descending":true      },      "output": "products.xlsx"    },    {      "name": "生成数据图表",      "skill": "xlsx",      "command": "chart",      "params": {        "input": "products.xlsx",        "type": "bar",        "x_column": "商品名称",        "y_column": "销量",        "title": "商品销量排行"      },      "output": "sales_chart.xlsx"    },    {      "name": "生成 PPT 报告",      "skill": "pptx",      "command": "create",      "params": {        "outline": " autogenerated_outline.md",        "charts": ["sales_chart.xlsx"],        "template": "report_template.pptx"      },      "output": "product_report.pptx"    }  ],  "outputs": {    "excel": "products.xlsx",    "ppt": "product_report.pptx"  }}

步骤 2:执行工作流

openclaw workflow run product_report.json

输出:

执行工作流:商品信息采集与报告生成─────────────────────────────[1/4] 抓取商品数据...      ✓ 已抓取 20 条商品信息[2/4] 整理数据到 Excel...      ✓ 已生成 products.xlsx[3/4] 生成数据图表...      ✓ 已生成销量柱状图[4/4] 生成 PPT 报告...      ✓ 已生成 product_report.pptx─────────────────────────────工作流执行成功!输出文件:  - products.xlsx  - product_report.pptx

步骤 3:查看结果

Excel 文件:

商品名称
价格
评分
销量
智能手表 A
¥999
4.8
5000+
智能手表 B
¥799
4.6
3200+
...
...
...
...

PPT 报告:

  • • 封面:商品分析报告
  • • 第 1 页:市场概况
  • • 第 2 页:销量排行榜(含图表)
  • • 第 3 页:价格分布
  • • 第 4 页:总结建议

四、组合案例 2:邮件附件 → PDF 提取 → 数据入库

场景描述

需求:每天从邮件附件中提取 PDF 合同,解析关键信息,存入数据库。


工作流配置

创建 contract_process.json:

{  "name": "合同自动处理流程",  "description": "从邮件附件提取 PDF 合同,解析信息并存档",  "trigger": {    "type": "schedule",    "schedule": "FREQ=DAILY;BYHOUR=9"  },  "steps": [    {      "name": "获取邮件附件",      "skill": "email",      "command": "fetch-attachments",      "params": {        "folder": "INBOX",        "filter": {          "subject_contains": "合同",          "has_attachment":true,          "attachment_type": "pdf"        },        "since": "1 day"      },      "output": "attachments"    },    {      "name": "提取 PDF 文字",      "skill": "pdf",      "command": "extract-text",      "params": {        "input": "{{attachments}}",        "output_dir": "./temp/"      },      "output": "pdf_texts"    },    {      "name": "解析关键信息",      "skill": "llm",      "command": "extract",      "params": {        "input": "{{pdf_texts}}",        "fields": ["合同编号", "甲方", "乙方", "金额", "签订日期", "有效期"],        "output_format": "json"      },      "output": "contract_info"    },    {      "name": "存入数据库",      "skill": "xlsx",      "command": "append",      "params": {        "file": "contracts_db.xlsx",        "data": "{{contract_info}}",        "sheet": "合同记录"      },      "output": "db_result"    },    {      "name": "发送处理报告",      "skill": "email",      "command": "send",      "params": {        "to": "admin@company.com",        "subject": "合同处理报告 - {{date}}",        "body": "今日处理合同 {{contract_info.count}} 份,详情见附件",        "attachments": ["contracts_db.xlsx"]      }    }  ]}

执行工作流

openclaw workflow run contract_process.json

或设置定时自动执行:

openclaw workflow schedule contract_process.json

每天早上 9 点自动执行。


执行结果

邮件通知:

主题:合同处理报告 - 2026-03-11今日处理合同 5 份,详情见附件合同列表:1. HT-2026-001 | 公司A-公司B | ¥500,0002. HT-2026-002 | 公司C-公司D | ¥320,0003. HT-2026-003 | 公司E-公司F | ¥180,000...

Excel 数据库:

合同编号
甲方
乙方
金额
签订日期
有效期
HT-2026-001
公司A
公司B
¥500,000
2026-03-11
2027-03-11
HT-2026-002
公司C
公司D
¥320,000
2026-03-11
2027-03-11

五、如何设计自己的工作流

设计流程

1. 明确目标

问题:最终想要什么结果?

示例:

  • • "每周自动生成销售周报 PPT"
  • • "每天监控竞品价格变化"
  • • "批量处理客户合同,提取关键信息"

2. 拆解步骤

方法:将大目标拆解成小步骤。

示例:"自动生成销售周报 PPT"

拆解:

  1. 1. 获取本周销售数据(Excel)
  2. 2. 计算汇总指标(总销售额、增长率等)
  3. 3. 生成数据图表(柱状图、折线图)
  4. 4. 填充 PPT 模板
  5. 5. 导出最终文件

3. 选择技能

映射:每个步骤对应哪个技能?

步骤
技能
操作
获取销售数据
xlsx
read
计算汇总指标
xlsx
calculate
生成图表
xlsx
chart
填充 PPT
pptx
fill-template
导出文件
pptx
export

4. 设计数据流

梳理:步骤之间如何传递数据?

销售数据.xlsx   ↓ (传递给计算步骤)汇总数据.json   ↓ (传递给图表步骤)图表文件.png   ↓ (传递给 PPT 步骤)周报.pptx

5. 编写配置

将上述设计转化为 JSON 配置文件。


6. 测试与调试

测试流程:

  1. 1. 用小数据集测试
  2. 2. 逐个步骤验证
  3. 3. 检查中间结果
  4. 4. 修正问题

调试命令:

# 单步执行openclaw workflow run workflow.json --step 1# 查看中间结果openclaw workflow debug workflow.json --keep-temp# 详细日志openclaw workflow run workflow.json --verbose

设计原则

  1. 1. 单一职责:每个步骤只做一件事
  2. 2. 明确输入输出:步骤间数据传递要清晰
  3. 3. 错误处理:考虑异常情况,添加容错机制
  4. 4. 可重用性:设计通用步骤,方便复用
  5. 5. 可维护性:添加注释,便于后续修改

小结

这一篇,你学会了:

  1. 1. ✅ 技能组合的概念和原理
  2. 2. ✅ 常见组合模式:输入→处理→输出
  3. 3. ✅ 实战案例 1:网页数据→Excel→PPT
  4. 4. ✅ 实战案例 2:邮件附件→PDF提取→数据入库
  5. 5. ✅ 如何设计自己的工作流

技能组合是 OpenClaw 的核心能力,掌握后可以实现复杂场景的自动化。


下篇预告

任务执行过程中难免会遇到问题。下一篇,我们学习排错指南,快速定位和解决问题。

下一篇:排错指南:遇到问题怎么办?