Claude Skills でドキュメントワークフローを自動化
Skills を使用して完全なドキュメント処理パイプラインを構築。このチュートリアルは実世界の自動化パターンを示す。
ワークフロー 1: 請求書処理
目標: PDF 請求書からデータを抽出 → 検証 → データベースに保存
markdown1# 請求書処理ワークフロー 2 3## 必要な Skills 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## 必要な Skills 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": "無効なデータ"} 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": "無効なデータ"} 14 15 # ステップ 4: 保存 16 database_writer.insert("invoices", data) 17 18 return {"status": "success", "invoice_id": data['id']}
ワークフロー 2: レポート生成
目標: データを収集 → 分析 → PDF レポートを生成 → 配布
markdown1# レポート生成ワークフロー 2 3## 必要な Skills 41. data-collector: ソースからデータを収集 52. data-analyzer: 分析を実行 63. chart-generator: 可視化を作成 74. pdf-generator: PDF レポートを構築 85. email-sender: レポートを配布 9 10## スケジュール 11タスクスケジューラを使用して毎日午前 9 時に実行1# レポート生成ワークフロー 2 3## 必要な Skills 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## 必要な Skills 41. format-detector: ファイル形式を識別 52. word-converter: Word を PDF に変換 63. excel-converter: Excel を PDF に変換 74. ppt-converter: PowerPoint を PDF に変換 85. document-archiver: アーカイブに保存1# ドキュメント変換ワークフロー 2 3## 必要な Skills 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"抽出失敗: {e}") 6 send_alert("抽出エラー", 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"抽出失敗: {e}") 6 send_alert("抽出エラー", doc) 7 return None
2. ログ記録
ワークフローの進行を追跡:
pythonimport logging logger.info(f"{doc_id} のワークフローを開始") logger.debug(f"{len(text)} 文字を抽出") logger.error(f"検証失敗: {errors}")import logging logger.info(f"{doc_id} のワークフローを開始") logger.debug(f"{len(text)} 文字を抽出") logger.error(f"検証失敗: {errors}")
3. 監視
ワークフローの健全性を監視:
python1from prometheus_client import Counter, Histogram 2 3processed = Counter('docs_processed', '処理されたドキュメント') 4duration = Histogram('processing_duration', '処理時間') 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', '処理されたドキュメント') 4duration = Histogram('processing_duration', '処理時間') 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 Team