使用 Claude Skills 自动化文档工作流
使用 Skills 构建完整的文档处理管道。本教程展示真实世界的自动化模式。
工作流 1: 发票处理
目标: 从 PDF 发票提取数据 → 验证 → 存储到数据库
markdown1# 发票处理工作流 2 3## 所需技能 41. pdf-extractor: 从 PDF 提取文本 52. invoice-parser: 解析发票字段 63. data-validator: 验证提取的数据 74. database-writer: 存储结果 8 9## 工作流步骤 101. 接收 PDF 发票 112. 使用 pdf-extractor 提取文本内容 123. 使用 invoice-parser 解析发票字段 134. 使用 data-validator 验证数据 145. 使用 database-writer 存储到数据库 156. 发送确认邮件1# 发票处理工作流 2 3## 所需技能 41. pdf-extractor: 从 PDF 提取文本 52. invoice-parser: 解析发票字段 63. data-validator: 验证提取的数据 74. database-writer: 存储结果 8 9## 工作流步骤 101. 接收 PDF 发票 112. 使用 pdf-extractor 提取文本内容 123. 使用 invoice-parser 解析发票字段 134. 使用 data-validator 验证数据 145. 使用 database-writer 存储到数据库 156. 发送确认邮件
实现
python1# workflow.py 2from skills import pdf_extractor, invoice_parser, data_validator, database_writer 3 4def process_invoice(invoice_path): 5 # 步骤 1: 提取文本 6 text = pdf_extractor.extract(invoice_path) 7 8 # 步骤 2: 解析字段 9 data = invoice_parser.parse(text) 10 11 # 步骤 3: 验证 12 if not data_validator.validate(data): 13 return {"status": "error", "message": "Invalid data"} 14 15 # 步骤 4: 存储 16 database_writer.insert("invoices", data) 17 18 return {"status": "success", "invoice_id": data['id']}1# workflow.py 2from skills import pdf_extractor, invoice_parser, data_validator, database_writer 3 4def process_invoice(invoice_path): 5 # 步骤 1: 提取文本 6 text = pdf_extractor.extract(invoice_path) 7 8 # 步骤 2: 解析字段 9 data = invoice_parser.parse(text) 10 11 # 步骤 3: 验证 12 if not data_validator.validate(data): 13 return {"status": "error", "message": "Invalid data"} 14 15 # 步骤 4: 存储 16 database_writer.insert("invoices", data) 17 18 return {"status": "success", "invoice_id": data['id']}
工作流 2: 报告生成
目标: 收集数据 → 分析 → 生成 PDF 报告 → 分发
markdown1# 报告生成工作流 2 3## 所需技能 41. data-collector: 从数据源收集数据 52. data-analyzer: 执行分析 63. chart-generator: 创建可视化 74. pdf-generator: 构建 PDF 报告 85. email-sender: 分发报告 9 10## 计划 11使用任务调度程序每天上午 9 点运行1# 报告生成工作流 2 3## 所需技能 41. data-collector: 从数据源收集数据 52. data-analyzer: 执行分析 63. chart-generator: 创建可视化 74. pdf-generator: 构建 PDF 报告 85. email-sender: 分发报告 9 10## 计划 11使用任务调度程序每天上午 9 点运行
实现
python1def generate_daily_report(): 2 # 收集数据 3 data = data_collector.fetch_yesterday_metrics() 4 5 # 分析 6 insights = data_analyzer.analyze(data) 7 8 # 生成图表 9 charts = chart_generator.create_charts(data) 10 11 # 构建 PDF 12 pdf = pdf_generator.create_report({ 13 "data": data, 14 "insights": insights, 15 "charts": charts 16 }) 17 18 # 发送邮件 19 email_sender.send( 20 to=["[email protected]"], 21 subject="每日报告", 22 attachment=pdf 23 )1def generate_daily_report(): 2 # 收集数据 3 data = data_collector.fetch_yesterday_metrics() 4 5 # 分析 6 insights = data_analyzer.analyze(data) 7 8 # 生成图表 9 charts = chart_generator.create_charts(data) 10 11 # 构建 PDF 12 pdf = pdf_generator.create_report({ 13 "data": data, 14 "insights": insights, 15 "charts": charts 16 }) 17 18 # 发送邮件 19 email_sender.send( 20 to=["[email protected]"], 21 subject="每日报告", 22 attachment=pdf 23 )
工作流 3: 文档转换管道
目标: 转换多种格式 → 标准化 → 归档
markdown1# 文档转换工作流 2 3## 所需技能 41. format-detector: 识别文件格式 52. word-converter: 将 Word 转换为 PDF 63. excel-converter: 将 Excel 转换为 PDF 74. ppt-converter: 将 PowerPoint 转换为 PDF 85. document-archiver: 存储在归档中1# 文档转换工作流 2 3## 所需技能 41. format-detector: 识别文件格式 52. word-converter: 将 Word 转换为 PDF 63. excel-converter: 将 Excel 转换为 PDF 74. ppt-converter: 将 PowerPoint 转换为 PDF 85. document-archiver: 存储在归档中
实现
python1def convert_and_archive(document_path): 2 # 检测格式 3 format = format_detector.detect(document_path) 4 5 # 转换为 PDF 6 converters = { 7 "docx": word_converter, 8 "xlsx": excel_converter, 9 "pptx": ppt_converter 10 } 11 12 if format in converters: 13 pdf = converters[format].to_pdf(document_path) 14 else: 15 pdf = document_path # 已经是 PDF 16 17 # 归档 18 document_archiver.store(pdf, metadata={ 19 "original_format": format, 20 "converted_at": datetime.now() 21 })1def convert_and_archive(document_path): 2 # 检测格式 3 format = format_detector.detect(document_path) 4 5 # 转换为 PDF 6 converters = { 7 "docx": word_converter, 8 "xlsx": excel_converter, 9 "pptx": ppt_converter 10 } 11 12 if format in converters: 13 pdf = converters[format].to_pdf(document_path) 14 else: 15 pdf = document_path # 已经是 PDF 16 17 # 归档 18 document_archiver.store(pdf, metadata={ 19 "original_format": format, 20 "converted_at": datetime.now() 21 })
最佳实践
1. 错误处理
在每个步骤添加 try-catch 块:
python1def process_with_error_handling(doc): 2 try: 3 result = extractor.extract(doc) 4 except Exception as e: 5 log_error(f"Extraction failed: {e}") 6 send_alert("Extraction error", doc) 7 return None1def process_with_error_handling(doc): 2 try: 3 result = extractor.extract(doc) 4 except Exception as e: 5 log_error(f"Extraction failed: {e}") 6 send_alert("Extraction error", doc) 7 return None
2. 日志记录
跟踪工作流进度:
pythonimport logging logger.info(f"Starting workflow for {doc_id}") logger.debug(f"Extracted {len(text)} characters") logger.error(f"Validation failed: {errors}")import logging logger.info(f"Starting workflow for {doc_id}") logger.debug(f"Extracted {len(text)} characters") logger.error(f"Validation failed: {errors}")
3. 监控
监控工作流健康:
python1from prometheus_client import Counter, Histogram 2 3processed = Counter('docs_processed', 'Documents processed') 4duration = Histogram('processing_duration', 'Processing time') 5 6@duration.time() 7def process_document(doc): 8 result = workflow(doc) 9 processed.inc() 10 return result1from prometheus_client import Counter, Histogram 2 3processed = Counter('docs_processed', 'Documents processed') 4duration = Histogram('processing_duration', 'Processing time') 5 6@duration.time() 7def process_document(doc): 8 result = workflow(doc) 9 processed.inc() 10 return result
真实案例:Box 集成
Box 使用 Claude Skills 自动化文档工作流:
- 将存储的文件转换为 PowerPoint、Excel、Word
- 在整个组织中标准化格式
- 显著节省时间
来源: 53AI - 真实案例
资源
阅读时间:5分钟
作者: ClaudeSkills 团队