Skip to content
Back to skills

Generating N8n Workflows

ASecurity

Generates n8n workflow JSON files from user prompts for download and import. Use when user wants to create n8n automation, mentions workflow generation, or needs a .json file for n8n import.

  • 57 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 17, 2026
toolspythonbashsqlnodeapidatabase

Works with

  • api

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill generating-n8n-workflows --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Generating N8n Workflows?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Generating N8n Workflows
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-generating-n8n-workflows/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-generating-n8n-workflows)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: generating-n8n-workflows
description: Generates n8n workflow JSON files from user prompts for download and import. Use when user wants to create n8n automation, mentions workflow generation, or needs a .json file for n8n import.
---

# n8n Workflow Generator

Generates clean, minimal n8n workflow JSON files based on user requirements.

## When to use this skill

- User wants to create an n8n workflow
- User provides a prompt describing automation needs
- User needs a downloadable .json file for n8n import
- User mentions specific integrations (Slack, Email, HTTP, etc.)

## Workflow

- [ ] Parse user prompt for workflow requirements
- [ ] Identify trigger type and action nodes needed
- [ ] Generate minimal workflow JSON (no extra nodes)
- [ ] Validate JSON structure against n8n schema
- [ ] Provide download-ready .json file

## Instructions

### Step 1: Parse User Prompt

Extract from the user's description:
- **Trigger**: What starts the workflow? (webhook, schedule, manual, trigger-node)
- **Actions**: What should happen? (send email, HTTP request, database operation)
- **Integrations**: Which services? (Slack, Gmail, PostgreSQL, etc.)
- **Data flow**: How does data move between nodes?

### Step 2: Node Selection Rules

**CRITICAL: Generate ONLY necessary nodes. No extras.**

| User Needs | Minimal Nodes |
|------------|---------------|
| "Send Slack message daily" | Schedule Trigger → Slack |
| "HTTP webhook to save data" | Webhook → HTTP Request |
| "Email on form submit" | Webhook → Send Email |
| "Database backup weekly" | Schedule → Postgres → FTP |

**Forbidden extras:**
- No debug nodes
- No unnecessary Set nodes
- No extra HTTP requests
- No duplicate triggers
- No unused credentials placeholders

### Step 3: Generate Workflow JSON

Required structure:
```json
{
  "name": "Workflow Name",
  "nodes": [
    {
      "id": "uuid",
      "name": "Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [250, 300],
      "parameters": {}
    },
    {
      "id": "uuid",
      "name": "Action",
      "type": "n8n-nodes-base.slack",
      "position": [450, 300],
      "parameters": {}
    }
  ],
  "connections": {
    "Trigger": {
      "main": [[{"node": "Action", "type": "main", "index": 0}]]
    }
  }
}
```

### Step 4: Position Guidelines

- Start trigger at `[250, 300]`
- Each subsequent node: `+200` on X axis
- Keep Y at `300` for simple flows
- Use `[250, 200]` and `[250, 400]` for branches

### Step 5: Common Node Templates

**Webhook Trigger:**
```json
{
  "id": "{{uuid}}",
  "name": "Webhook",
  "type": "n8n-nodes-base.webhook",
  "typeVersion": 1,
  "position": [250, 300],
  "webhookId": "{{random-id}}",
  "parameters": {
    "httpMethod": "POST",
    "path": "{{unique-path}}",
    "responseMode": "responseNode"
  }
}
```

**HTTP Request:**
```json
{
  "id": "{{uuid}}",
  "name": "HTTP Request",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.1,
  "position": [450, 300],
  "parameters": {
    "method": "GET",
    "url": "",
    "sendBody": false
  }
}
```

**Slack:**
```json
{
  "id": "{{uuid}}",
  "name": "Slack",
  "type": "n8n-nodes-base.slack",
  "typeVersion": 2,
  "position": [450, 300],
  "parameters": {
    "operation": "post",
    "channel": "",
    "text": ""
  }
}
```

**Send Email:**
```json
{
  "id": "{{uuid}}",
  "name": "Send Email",
  "type": "n8n-nodes-base.emailSend",
  "typeVersion": 2,
  "position": [450, 300],
  "parameters": {
    "toEmail": "",
    "subject": "",
    "text": ""
  }
}
```

**Schedule Trigger:**
```json
{
  "id": "{{uuid}}",
  "name": "Schedule Trigger",
  "type": "n8n-nodes-base.scheduleTrigger",
  "typeVersion": 1.1,
  "position": [250, 300],
  "parameters": {
    "rule": {
      "interval": [
        {
          "field": "hours",
          "hoursInterval": 1
        }
      ]
    }
  }
}
```

**Code Node:**
```json
{
  "id": "{{uuid}}",
  "name": "Code",
  "type": "n8n-nodes-base.code",
  "typeVersion": 2,
  "position": [450, 300],
  "parameters": {
    "jsCode": "// Add your code here\nreturn items;"
  }
}
```

### Step 6: Connection Rules

Format connections array:
```json
{
  "connections": {
    "SourceNodeName": {
      "main": [
        [
          {
            "node": "TargetNodeName",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
```

For multiple outputs, increment the inner array index.

## Scripts

Generate workflow using the helper:

```bash
python .agent/skills/generating-n8n-workflows/scripts/n8n_generator.py \
  --prompt "Send Slack message when webhook received" \
  --output workflow.json
```

## Examples

### Example 1: Simple Webhook to Slack

**User Prompt:** "When I send a webhook, post to Slack"

**Generated Nodes:** 2 (Webhook → Slack)

See: [examples/webhook-slack-example.json](examples/webhook-slack-example.json)

### Example 2: Daily Email Report

**User Prompt:** "Send daily email at 9 AM"

**Generated Nodes:** 2 (Schedule → Email)

See: [examples/schedule-email-example.json](examples/schedule-email-example.json)

### Example 3: HTTP API Call

**User Prompt:** "Call an API every hour and save response"

**Generated Nodes:** 2 (Schedule → HTTP Request)

See: [examples/schedule-http-example.json](examples/schedule-http-example.json)

## Validation Checklist

Before returning JSON:
- [ ] Only necessary nodes included
- [ ] All nodes have unique UUIDs
- [ ] All nodes have unique names
- [ ] Connections reference existing node names
- [ ] Positions are reasonable (no overlaps)
- [ ] JSON is valid (no trailing commas)
- [ ] No credential values hardcoded
- [ ] Workflow name is descriptive

## Resources

- [scripts/n8n_generator.py](scripts/n8n_generator.py) - Workflow generator script
- [examples/](examples/) - Sample workflow JSON files
- [Node Type Reference](https://docs.n8n.io/integrations/builtin/)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.