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 → 最终输出核心概念:
{{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 文件:
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 数据库:
五、如何设计自己的工作流
设计流程
1. 明确目标
问题:最终想要什么结果?
示例:
• "每周自动生成销售周报 PPT" • "每天监控竞品价格变化" • "批量处理客户合同,提取关键信息"
2. 拆解步骤
方法:将大目标拆解成小步骤。
示例:"自动生成销售周报 PPT"
拆解:
1. 获取本周销售数据(Excel) 2. 计算汇总指标(总销售额、增长率等) 3. 生成数据图表(柱状图、折线图) 4. 填充 PPT 模板 5. 导出最终文件
3. 选择技能
映射:每个步骤对应哪个技能?
4. 设计数据流
梳理:步骤之间如何传递数据?
销售数据.xlsx ↓ (传递给计算步骤)汇总数据.json ↓ (传递给图表步骤)图表文件.png ↓ (传递给 PPT 步骤)周报.pptx5. 编写配置
将上述设计转化为 JSON 配置文件。
6. 测试与调试
测试流程:
1. 用小数据集测试 2. 逐个步骤验证 3. 检查中间结果 4. 修正问题
调试命令:
# 单步执行openclaw workflow run workflow.json --step 1# 查看中间结果openclaw workflow debug workflow.json --keep-temp# 详细日志openclaw workflow run workflow.json --verbose设计原则
1. 单一职责:每个步骤只做一件事 2. 明确输入输出:步骤间数据传递要清晰 3. 错误处理:考虑异常情况,添加容错机制 4. 可重用性:设计通用步骤,方便复用 5. 可维护性:添加注释,便于后续修改
小结
这一篇,你学会了:
1. ✅ 技能组合的概念和原理 2. ✅ 常见组合模式:输入→处理→输出 3. ✅ 实战案例 1:网页数据→Excel→PPT 4. ✅ 实战案例 2:邮件附件→PDF提取→数据入库 5. ✅ 如何设计自己的工作流
技能组合是 OpenClaw 的核心能力,掌握后可以实现复杂场景的自动化。
下篇预告
任务执行过程中难免会遇到问题。下一篇,我们学习排错指南,快速定位和解决问题。
下一篇:排错指南:遇到问题怎么办?
夜雨聆风