--- name: n8n description: "通过API管理n8n工作流和自动化。" metadata: {"openclaw":{"emoji":"\u2699\ufe0f","requires":{"env":["N8N_API_KEY","N8N_BASE_URL"]},"primaryEnv":"N8N_API_KEY"}} --- # n8n Workflow Management Comprehensive workflow automation management for n8n platform with creation, testing, execution monitoring, and performance optimization capabilities. ## ⚠️ CRITICAL: Workflow Creation Rules **When creating n8n workflows, ALWAYS:** 1. ✅ **Generate COMPLETE workflows** with all functional nodes 2. ✅ **Include actual HTTP Request nodes** for API calls (ImageFX, Gemini, Veo, Suno, etc.) 3. ✅ **Add Code nodes** for data transformation and logic 4. ✅ **Create proper connections** between all nodes 5. ✅ **Use real node types** (n8n-nodes-base.httpRequest, n8n-nodes-base.code, n8n-nodes-base.set) **NEVER:** - ❌ Create "Setup Instructions" placeholder nodes - ❌ Generate workflows with only TODO comments - ❌ Make incomplete workflows requiring manual node addition - ❌ Use text-only nodes as substitutes for real functionality **Example GOOD workflow:** ``` Manual Trigger → Set Config → HTTP Request (API call) → Code (parse) → Response ``` **Example BAD workflow:** ``` Manual Trigger → Code ("Add HTTP nodes here, configure APIs...") ``` Always build the complete, functional workflow with all necessary nodes configured and connected. ## Setup **Required environment variables:** - `N8N_API_KEY` — Your n8n API key (Settings → API in the n8n UI) - `N8N_BASE_URL` — Your n8n instance URL **Configure credentials via OpenClaw settings:** Add to `~/.config/openclaw/settings.json`: ```json { "skills": { "n8n": { "env": { "N8N_API_KEY": "your-api-key-here", "N8N_BASE_URL": "your-n8n-url-here" } } } } ``` Or set per-session (do **not** persist secrets in shell rc files): ```bash export N8N_API_KEY="your-api-key-here" export N8N_BASE_URL="your-n8n-url-here" ``` **Verify connection:** ```bash python3 scripts/n8n_api.py list-workflows --pretty ``` > **Security note:** Never store API keys in plaintext shell config files (`~/.bashrc`, `~/.zshrc`). Use the OpenClaw settings file or a secure secret manager. ## Quick Reference ### Workflow Management #### List Workflows ```bash python3 scripts/n8n_api.py list-workflows --pretty python3 scripts/n8n_api.py list-workflows --active true --pretty ``` #### Get Workflow Details ```bash python3 scripts/n8n_api.py get-workflow --id --pretty ``` #### Create Workflows ```bash # From JSON file python3 scripts/n8n_api.py create --from-file workflow.json ``` #### Activate/Deactivate ```bash python3 scripts/n8n_api.py activate --id python3 scripts/n8n_api.py deactivate --id ``` ### Testing & Validation #### Validate Workflow Structure ```bash # Validate existing workflow python3 scripts/n8n_tester.py validate --id # Validate from file python3 scripts/n8n_tester.py validate --file workflow.json --pretty # Generate validation report python3 scripts/n8n_tester.py report --id ``` #### Dry Run Testing ```bash # Test with data python3 scripts/n8n_tester.py dry-run --id --data '{"email": "test@example.com"}' # Test with data file python3 scripts/n8n_tester.py dry-run --id --data-file test-data.json # Full test report (validation + dry run) python3 scripts/n8n_tester.py dry-run --id --data-file test.json --report ``` #### Test Suite ```bash # Run multiple test cases python3 scripts/n8n_tester.py test-suite --id --test-suite test-cases.json ``` ### Execution Monitoring #### List Executions ```bash # Recent executions (all workflows) python3 scripts/n8n_api.py list-executions --limit 10 --pretty # Specific workflow executions python3 scripts/n8n_api.py list-executions --id --limit 20 --pretty ``` #### Get Execution Details ```bash python3 scripts/n8n_api.py get-execution --id --pretty ``` #### Manual Execution ```bash # Trigger workflow python3 scripts/n8n_api.py execute --id # Execute with data python3 scripts/n8n_api.py execute --id --data '{"key": "value"}' ``` ### Performance Optimization #### Analyze Performance ```bash # Full performance analysis python3 scripts/n8n_optimizer.py analyze --id --pretty # Analyze specific period python3 scripts/n8n_optimizer.py analyze --id --days 30 --pretty ``` #### Get Optimization Suggestions ```bash # Priority-ranked suggestions python3 scripts/n8n_optimizer.py suggest --id --pretty ``` #### Generate Optimization Report ```bash # Human-readable report with metrics, bottlenecks, and suggestions python3 scripts/n8n_optimizer.py report --id ``` #### Get Workflow Statistics ```bash # Execution statistics python3 scripts/n8n_api.py stats --id --days 7 --pretty ``` ## Python API ### Basic Usage ```python from scripts.n8n_api import N8nClient client = N8nClient() # List workflows workflows = client.list_workflows(active=True) # Get workflow workflow = client.get_workflow('workflow-id') # Create workflow new_workflow = client.create_workflow({ 'name': 'My Workflow', 'nodes': [...], 'connections': {...} }) # Activate/deactivate client.activate_workflow('workflow-id') client.deactivate_workflow('workflow-id') # Executions executions = client.list_executions(workflow_id='workflow-id', limit=10) execution = client.get_execution('execution-id') # Execute workflow result = client.execute_workflow('workflow-id', data={'key': 'value'}) ``` ### Validation & Testing ```python from scripts.n8n_api import N8nClient from scripts.n8n_tester import WorkflowTester client = N8nClient() tester = WorkflowTester(client) # Validate workflow validation = tester.validate_workflow(workflow_id='123') print(f"Valid: {validation['valid']}") print(f"Errors: {validation['errors']}") print(f"Warnings: {validation['warnings']}") # Dry run result = tester.dry_run( workflow_id='123', test_data={'email': 'test@example.com'} ) print(f"Status: {result['status']}") # Test suite test_cases = [ {'name': 'Test 1', 'input': {...}, 'expected': {...}}, {'name': 'Test 2', 'input': {...}, 'expected': {...}} ] results = tester.test_suite('123', test_cases) print(f"Passed: {results['passed']}/{results['total_tests']}") # Generate report report = tester.generate_test_report(validation, result) print(report) ``` ### Performance Optimization ```python from scripts.n8n_optimizer import WorkflowOptimizer optimizer = WorkflowOptimizer() # Analyze performance analysis = optimizer.analyze_performance('workflow-id', days=7) print(f"Performance Score: {analysis['performance_score']}/100") print(f"Health: {analysis['execution_metrics']['health']}") # Get suggestions suggestions = optimizer.suggest_optimizations('workflow-id') print(f"Priority Actions: {len(suggestions['priority_actions'])}") print(f"Quick Wins: {len(suggestions['quick_wins'])}") # Generate report report = optimizer.generate_optimization_report(analysis) print(report) ``` ## Common Workflows ### 1. Validate and Test Workflow ```bash # Validate workflow structure python3 scripts/n8n_tester.py validate --id --pretty # Test with sample data python3 scripts/n8n_tester.py dry-run --id \ --data '{"email": "test@example.com", "name": "Test User"}' # If tests pass, activate python3 scripts/n8n_api.py activate --id ``` ### 2. Debug Failed Workflow ```bash # Check recent executions python3 scripts/n8n_api.py list-executions --id --limit 10 --pretty # Get specific execution details python3 scripts/n8n_api.py get-execution --id --pretty # Validate workflow structure python3 scripts/n8n_tester.py validate --id # Generate test report python3 scripts/n8n_tester.py report --id # Check for optimization issues python3 scripts/n8n_optimizer.py report --id ``` ### 3. Optimize Workflow Performance ```bash # Analyze current performance python3 scripts/n8n_optimizer.py analyze --id --days 30 --pretty # Get actionable suggestions python3 scripts/n8n_optimizer.py suggest --id --pretty # Generate comprehensive report python3 scripts/n8n_optimizer.py report --id # Review execution statistics python3 scripts/n8n_api.py stats --id --days 30 --pretty # Test optimizations with dry run python3 scripts/n8n_tester.py dry-run --id --data-file test-data.json ``` ### 4. Monitor Workflow Health ```bash # Check active workflows python3 scripts/n8n_api.py list-workflows --active true --pretty # Review recent execution status python3 scripts/n8n_api.py list-executions --limit 20 --pretty # Get statistics for each critical workflow python3 scripts/n8n_api.py stats --id --pretty # Generate health reports python3 scripts/n8n_optimizer.py report --id ``` ## Validation Checks The testing module performs comprehensive validation: ### Structure Validation - ✓ Required fields present (nodes, connections) - ✓ All nodes have names and types - ✓ Connection targets exist - ✓ No disconnected nodes (warning) ### Configuration Validation - ✓ Nodes requiring credentials are configured - ✓ Required parameters are set - ✓ HTTP nodes have URLs - ✓ Webhook nodes have paths - ✓ Email nodes have content ### Flow Validation - ✓ Workflow has trigger nodes - ✓ Proper execution flow - ✓ No circular dependencies - ✓ End nodes identified ## Optimization Analysis The optimizer analyzes multiple dimensions: ### Execution Metrics - Total executions - Success/failure rates - Health status (excellent/good/fair/poor) - Error patterns ### Performance Metrics - Node count and complexity - Connection patterns - Expensive operations (API calls, database queries) - Parallel execution opportunities ### Bottleneck Detection - Sequential expensive operations - High failure rates - Missing error handling - Rate limit issues ### Optimization Opportunities - **Parallel Execution:** Identify nodes that can run concurrently - **Caching:** Suggest caching for repeated API calls - **Batch Processing:** Recommend batching for large datasets - **Error Handling:** Add error recovery mechanisms - **Complexity Reduction:** Split complex workflows - **Timeout Settings:** Configure execution limits ## Performance Scoring Workflows receive a performance score (0-100) based on: - **Success Rate:** Higher is better (50% weight) - **Complexity:** Lower is better (30% weight) - **Bottlenecks:** Fewer is better (critical: -20, high: -10, medium: -5) - **Optimizations:** Implemented best practices (+5 each) Score interpretation: - **90-100:** Excellent - Well-optimized - **70-89:** Good - Minor improvements possible - **50-69:** Fair - Optimization recommended - **0-49:** Poor - Significant issues ## Best Practices ### Development 1. **Plan Structure:** Design workflow nodes and connections before building 2. **Validate First:** Always validate before deployment 3. **Test Thoroughly:** Use dry-run with multiple test cases 4. **Error Handling:** Add error nodes for reliability 5. **Documentation:** Comment complex logic in Code nodes ### Testing 1. **Sample Data:** Create realistic test data files 2. **Edge Cases:** Test boundary conditions and errors 3. **Incremental:** Test each node addition 4. **Regression:** Retest after changes 5. **Production-like:** Use staging environment that mirrors production ### Deployment 1. **Inactive First:** Deploy workflows in inactive state 2. **Gradual Rollout:** Test with limited traffic initially 3. **Monitor Closely:** Watch first executions carefully 4. **Quick Rollback:** Be ready to deactivate if issues arise 5. **Document Changes:** Keep changelog of modifications ### Optimization 1. **Baseline Metrics:** Capture performance before changes 2. **One Change at a Time:** Isolate optimization impacts 3. **Measure Results:** Compare before/after metrics 4. **Regular Reviews:** Schedule monthly optimization reviews 5. **Cost Awareness:** Monitor API usage and execution costs ### Maintenance 1. **Health Checks:** Weekly execution statistics review 2. **Error Analysis:** Investigate failure patterns 3. **Performance Monitoring:** Track execution times 4. **Credential Rotation:** Update credentials regularly 5. **Cleanup:** Archive or delete unused workflows ## Troubleshooting ### Authentication Error ``` Error: N8N_API_KEY not found in environment ``` **Solution:** Set environment variable: ```bash export N8N_API_KEY="your-api-key" ``` ### Connection Error ``` Error: HTTP 401: Unauthorized ``` **Solution:** 1. Verify API key is correct 2. Check N8N_BASE_URL is set correctly 3. Confirm API access is enabled in n8n ### Validation Errors ``` Validation failed: Node missing 'name' field ``` **Solution:** Check workflow JSON structure, ensure all required fields present ### Execution Timeout ``` Status: timeout - Execution did not complete ``` **Solution:** 1. Check workflow for infinite loops 2. Reduce dataset size for testing 3. Optimize expensive operations 4. Set execution timeout in workflow settings ### Rate Limiting ``` Error: HTTP 429: Too Many Requests ``` **Solution:** 1. Add Wait nodes between API calls 2. Implement exponential backoff 3. Use batch processing 4. Check API rate limits ### Missing Credentials ``` Warning: Node 'HTTP_Request' may require credentials ``` **Solution:** 1. Configure credentials in n8n UI 2. Assign credentials to node 3. Test connection before activating ## File Structure ``` ~/clawd/skills/n8n/ ├── SKILL.md # This file ├── scripts/ │ ├── n8n_api.py # Core API client (extended) │ ├── n8n_tester.py # Testing & validation │ └── n8n_optimizer.py # Performance optimization └── references/ └── api.md # n8n API reference ``` ## API Reference For detailed n8n REST API documentation, see [references/api.md](references/api.md) or visit: https://docs.n8n.io/api/ ## Support **Documentation:** - n8n Official Docs: https://docs.n8n.io - n8n Community Forum: https://community.n8n.io - n8n API Reference: https://docs.n8n.io/api/ **Debugging:** 1. Use validation: `python3 scripts/n8n_tester.py validate --id ` 2. Check execution logs: `python3 scripts/n8n_api.py get-execution --id ` 3. Review optimization report: `python3 scripts/n8n_optimizer.py report --id ` 4. Test with dry-run: `python3 scripts/n8n_tester.py dry-run --id --data-file test.json`