| name | n8n |
| description | N8N Documentation - Workflow automation platform with AI capabilities |
N8N Skill
Comprehensive assistance with n8n development, generated from official documentation. n8n is a fair-code licensed workflow automation tool that combines AI capabilities with business process automation.
When to Use This Skill
This skill should be triggered when:
- Building or debugging n8n workflows
- Working with the Code node (JavaScript or Python)
- Using expressions and data transformations
- Implementing AI agents, chains, or RAG workflows
- Configuring n8n deployments (Docker, npm, self-hosted)
- Setting up webhooks, credentials, or integrations
- Handling errors in workflows
- Scaling n8n with queue mode
- Creating custom nodes or white labeling n8n
- Using the n8n API programmatically
- Working with LangChain in n8n
- Migrating to n8n v1.0
Key Concepts
Core Components
- Workflows: Visual automation flows with nodes connected together
- Nodes: Individual operations in a workflow (trigger, action, logic, etc.)
- Expressions: Code snippets using
{{ }}syntax to access and transform data - Credentials: Secure storage for API keys and authentication
- Executions: Individual workflow runs with their data and status
Data Structure
- n8n passes data between nodes as items (array of JSON objects)
- Each item has a
jsonproperty containing the main data - Binary data is stored separately in the
binaryproperty - Use
$jsonto access current item's data in expressions
AI Capabilities
- Agents: AI that can use tools and make decisions
- Chains: Predefined sequences of AI operations
- Memory: Store conversation history for context
- Tools: Functions that AI agents can call
- Vector Databases: Store and retrieve embeddings for RAG
Quick Reference
Example 1: Basic Expression to Access Data
// Access data from the current item
{{ $json.name }}
// Access data from a specific node
{{ $node["HTTP Request"].json.response }}
// Access all items from a node
{{ $("HTTP Request").all() }}
Example 2: HTTP Request with Authentication
When working with the HTTP Request node, handle errors and rate limits:
// In HTTP Request node settings:
// - Enable "Retry on Fail"
// - Set Max Tries to 3
// - Set Wait Between Tries (ms) to 1000
// For rate limiting, use Batching:
// - Items per Batch: 10
// - Batch Interval (ms): 1000
Example 3: Code Node - Transform Data (JavaScript)
// Access input data
const items = $input.all();
// Transform each item
return items.map(item => {
return {
json: {
fullName: `${item.json.firstName} ${item.json.lastName}`,
email: item.json.email.toLowerCase(),
timestamp: new Date().toISOString()
}
};
});
Example 4: Code Node - Filter Data (Python)
# Filter items based on a condition
output = []
for item in items:
if item['json']['status'] == 'active':
output.append({
'json': {
'id': item['json']['id'],
'name': item['json']['name']
}
})
return output
Example 5: Expression - Date Handling with Luxon
// Current date
{{ $now }}
// Format date
{{ $now.toFormat('yyyy-MM-dd') }}
// Add 7 days
{{ $now.plus({ days: 7 }) }}
// Parse and format custom date
{{ DateTime.fromISO($json.dateString).toFormat('LLL dd, yyyy') }}
Example 6: JWT Authentication Credential
For APIs requiring JWT authentication:
// Use JWT credential with:
// - Key Type: Passphrase (for HMAC) or PEM Key (for RSA/ECDSA)
// - Secret: Your secret key
// - Algorithm: HS256, RS256, ES256, etc.
// The JWT credential automatically generates tokens
// Use it in HTTP Request node > Authentication > JWT
Example 7: Handle Errors in Workflow
// In Code node, use try-catch:
try {
const result = $json.data.someField.toUpperCase();
return [{ json: { result } }];
} catch (error) {
// Return error information
return [{
json: {
error: error.message,
originalData: $json
}
}];
}
// Or set up Error Workflow in Workflow Settings
// to catch all failures and send notifications
Example 8: Pagination in HTTP Request
// Use pagination to fetch all pages
// In HTTP Request node > Pagination:
// Type: Generic Pagination
// Request URL: {{ $url }}&page={{ $pageNumber }}
// Complete When: {{ $response.body.hasMore === false }}
// Next Page URL: Automatic
Example 9: AI Agent with Tools
// In AI Agent node:
// 1. Connect a Chat Model (OpenAI, etc.)
// 2. Add tools (Calculator, HTTP Request, etc.)
// 3. Configure memory if needed
// The agent can:
// - Analyze user input
// - Decide which tools to use
// - Execute tools and process results
// - Return final answer
Example 10: Environment Variables and Static Data
// Access environment variables
{{ $env.MY_API_KEY }}
// Store workflow static data (persists across executions)
const staticData = getWorkflowStaticData('global');
staticData.lastRun = new Date().toISOString();
staticData.counter = (staticData.counter || 0) + 1;
// Retrieve static data
{{ $workflow.staticData.counter }}
Reference Files
This skill includes comprehensive documentation in references/:
llms-txt.md - Complete n8n documentation formatted for LLMs
- Installation and setup guides
- Node reference documentation
- API documentation
- Code examples and patterns
- Configuration options
- Troubleshooting guides
llms-full.md - Extended documentation with deep technical details
- Advanced configuration
- Scaling and performance
- Security and authentication
- Custom node development
- White labeling and embed options
Use view to read specific reference files when detailed information is needed.
Working with This Skill
For Beginners
Start with basic workflow creation:
- Trigger nodes (Webhook, Schedule, Manual)
- Action nodes (HTTP Request, Set, Edit Fields)
- Learn expression syntax with simple
{{ $json.field }}access
Understand data structure:
- Each node outputs an array of items
- Use the data inspector to see item structure
- Practice with the Edit Fields node for data transformation
Common patterns:
- Webhook → HTTP Request → Set → Respond to Webhook
- Schedule → Code → HTTP Request → Conditional
- Manual → Loop Over Items → Process Each
For Intermediate Users
Master the Code node:
- JavaScript mode for complex transformations
- Access
$input.all()for all items - Return properly formatted items with
jsonproperty
Work with expressions:
- Use built-in methods:
.first(),.last(),.item - Date manipulation with Luxon
- JMESPath for complex JSON queries
- Use built-in methods:
Error handling:
- Use Try-Catch in Code nodes
- Set up Error Workflows
- Configure Retry on Fail for API calls
Data operations:
- Merge data from multiple sources
- Split and filter items
- Loop over items for batch processing
For Advanced Users
AI and LangChain:
- Build AI agents with custom tools
- Implement RAG with vector databases
- Use memory for conversational workflows
- Chain multiple AI operations
Scaling and performance:
- Configure queue mode for distributed execution
- Optimize database settings
- Use execution data pruning
- Configure task runners
Custom development:
- Create custom nodes
- White label n8n for embedding
- Use the n8n API for workflow management
- Implement external secrets with AWS/Azure/GCP
Advanced patterns:
- Sub-workflows for reusability
- Webhook authentication and validation
- Complex data transformations with JMESPath
- Real-time data processing with SSE/WebSockets
Common Issues and Solutions
HTTP Request Errors
- 400 Bad Request: Check query parameters and array formatting
- 403 Forbidden: Verify credentials and API permissions
- 429 Rate Limit: Use Batching or Retry on Fail options
- 404 Not Found: Verify endpoint URL is correct
Expression Errors
- Workflows now fail on expression errors in v1.0+
- Set up Error Workflows to catch failures
- Test expressions in the expression editor
- Check for undefined values before accessing properties
Data Type Issues
- Use
.toString(),.toNumber()for type conversion - Handle null/undefined with
{{ $json.field || 'default' }} - Binary data requires special handling with buffers
Migration to v1.0
- New execution order (depth-first instead of breadth-first)
- Python support in Code node (Pyodide)
- Mandatory user management (no more BasicAuth)
- WebSocket push backend is now default
- Node 18.17.0 or higher required
Environment Configuration
Docker Setup
# Basic n8n with Docker
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
# With environment variables
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=admin \
-e N8N_BASIC_AUTH_PASSWORD=password \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
Key Environment Variables
N8N_HOST: Hostname (default: localhost)N8N_PORT: Port (default: 5678)N8N_PROTOCOL: http or httpsWEBHOOK_URL: External webhook URLN8N_ENCRYPTION_KEY: Encryption key for credentialsDB_TYPE: Database type (sqlite, postgres)EXECUTIONS_MODE: queue or main (queue for scaling)
Resources
Official Resources
Learning Paths
- Level One Course: Basic workflow building
- Level Two Course: Advanced data handling and error management
- Video Courses: Visual learning resources
- AI Tutorial: Build AI workflows from scratch
API and Development
Notes
- This skill was automatically generated from official n8n documentation
- Code examples use proper language tags for syntax highlighting
- Examples are extracted from real-world patterns in the docs
- Focus on practical, actionable patterns for immediate use
Updating
To refresh this skill with updated documentation:
- Re-run the scraper with the same configuration
- The skill will be rebuilt with the latest information
- Review Quick Reference section for new examples