---
name: n8n-workflows-3688493b51ed
description: "n8n otomasyon workflow'lari. Webhook, cron trigger, API entegrasyon, CI/CD otomasyon."
---

# n8n Workflows

## n8n MCP Server Kurulumu

### NPM Kurulum

```bash
npm install -g n8n
n8n start  # http://localhost:5678
```

### Docker Kurulum

```bash
docker run -d \
  --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  -e N8N_BASIC_AUTH_ACTIVE=true \
  -e N8N_BASIC_AUTH_USER=admin \
  -e N8N_BASIC_AUTH_PASSWORD=<strong-password> \
  n8nio/n8n
```

### MCP Server Config

```json
{
  "mcpServers": {
    "n8n": {
      "command": "npx",
      "args": ["-y", "@anthropic/n8n-mcp-server"],
      "env": {
        "N8N_API_URL": "http://localhost:5678/api/v1",
        "N8N_API_KEY": "<n8n-api-key>"
      }
    }
  }
}
```

### API Key Olusturma

```
n8n UI > Settings > API > Create API Key
Scope: workflow:read, workflow:write, execution:read
```

## Workflow Olusturma

### Temel Yapi

```json
{
  "name": "My Workflow",
  "nodes": [
    {
      "name": "Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [250, 300],
      "parameters": {
        "path": "my-webhook",
        "httpMethod": "POST"
      }
    },
    {
      "name": "Process",
      "type": "n8n-nodes-base.function",
      "position": [450, 300],
      "parameters": {
        "functionCode": "return items.map(item => ({ json: { processed: true, ...item.json } }));"
      }
    }
  ],
  "connections": {
    "Trigger": {
      "main": [[{ "node": "Process", "type": "main", "index": 0 }]]
    }
  }
}
```

### MCP ile Workflow Olustur

```
n8n.create_workflow({
  name: "Deploy Notification",
  nodes: [...],
  connections: {...},
  active: true
})
```

### Workflow Listele

```
n8n.list_workflows({
  active: true,
  tags: ["production"]
})
```

### Workflow Calistir

```
n8n.execute_workflow({
  workflow_id: "123",
  data: {
    environment: "production",
    version: "v1.2.3"
  }
})
```

## Trigger Tipleri

### Webhook Trigger

```json
{
  "type": "n8n-nodes-base.webhook",
  "parameters": {
    "path": "deploy-hook",
    "httpMethod": "POST",
    "authentication": "headerAuth",
    "options": {
      "responseMode": "responseNode",
      "responseCode": 200
    }
  }
}
```

### Cron Trigger

```json
{
  "type": "n8n-nodes-base.cron",
  "parameters": {
    "triggerTimes": {
      "item": [
        { "mode": "everyDay", "hour": 9, "minute": 0 },
        { "mode": "custom", "cronExpression": "0 */6 * * *" }
      ]
    }
  }
}
```

### Event Trigger'lar

| Trigger | Kaynak | Kullanim |
|---------|--------|----------|
| Webhook | Dis sistem | GitHub push, Stripe payment |
| Cron | Zamanlama | Gunluk rapor, cleanup |
| Email (IMAP) | Email | Support ticket olusturma |
| RSS | Feed | Icerik izleme |
| Telegram | Bot mesaj | Komut isleme |
| GitHub | Repo event | CI/CD tetikleme |
| Slack | Mesaj/mention | Team notification |
| Database | Row change | Data sync |

### Poll Trigger

```json
{
  "type": "n8n-nodes-base.pollTrigger",
  "parameters": {
    "pollTimes": {
      "item": [{ "mode": "everyMinute", "minute": 5 }]
    },
    "url": "https://api.example.com/status"
  }
}
```

## Node Tipleri ve Kullanimi

### HTTP Request

```json
{
  "type": "n8n-nodes-base.httpRequest",
  "parameters": {
    "url": "https://api.example.com/data",
    "method": "POST",
    "authentication": "predefinedCredentialType",
    "nodeCredentialType": "httpHeaderAuth",
    "sendBody": true,
    "bodyParameters": {
      "parameters": [
        { "name": "key", "value": "={{ $json.value }}" }
      ]
    },
    "options": {
      "timeout": 10000,
      "retry": { "maxRetries": 3, "retryInterval": 1000 }
    }
  }
}
```

### Function Node (JavaScript)

```json
{
  "type": "n8n-nodes-base.function",
  "parameters": {
    "functionCode": "const results = [];\nfor (const item of items) {\n  const data = item.json;\n  results.push({\n    json: {\n      name: data.name.toUpperCase(),\n      processed_at: new Date().toISOString()\n    }\n  });\n}\nreturn results;"
  }
}
```

### IF Node (Kosul)

```json
{
  "type": "n8n-nodes-base.if",
  "parameters": {
    "conditions": {
      "string": [
        {
          "value1": "={{ $json.status }}",
          "operation": "equal",
          "value2": "success"
        }
      ]
    }
  }
}
```

### Switch Node

```json
{
  "type": "n8n-nodes-base.switch",
  "parameters": {
    "dataType": "string",
    "value1": "={{ $json.priority }}",
    "rules": {
      "rules": [
        { "value2": "critical", "output": 0 },
        { "value2": "high", "output": 1 },
        { "value2": "low", "output": 2 }
      ]
    }
  }
}
```

### Merge Node

```json
{
  "type": "n8n-nodes-base.merge",
  "parameters": {
    "mode": "mergeByKey",
    "propertyName1": "id",
    "propertyName2": "userId"
  }
}
```

### Yaygin Node'lar

| Node | Amac | Ornek |
|------|------|-------|
| HTTP Request | API cagir | REST endpoint |
| Function | Kod calistir | Data transform |
| IF/Switch | Dallanma | Kosula gore yonlendir |
| Set | Data ata | Field ekle/degistir |
| Merge | Birlestir | Iki kaynak birlestir |
| Split In Batches | Parcala | Rate limiting |
| Wait | Bekle | Delay/approval |
| Error Trigger | Hata yakala | Hata notification |
| Slack | Mesaj gonder | Team bildirim |
| Gmail | Email gonder | Notification |
| Postgres/MySQL | DB islem | CRUD |
| Redis | Cache | Key-value store |

## API Entegrasyonu

### Credential Yonetimi

```
n8n UI > Settings > Credentials > New Credential
Tipler: API Key, OAuth2, Basic Auth, Header Auth

// Workflow'da kullanim
"authentication": "predefinedCredentialType",
"nodeCredentialType": "slackApi"
```

### REST API Cagirma

```json
{
  "type": "n8n-nodes-base.httpRequest",
  "parameters": {
    "url": "https://api.github.com/repos/{{ $json.owner }}/{{ $json.repo }}/pulls",
    "method": "GET",
    "authentication": "predefinedCredentialType",
    "nodeCredentialType": "githubApi",
    "options": {
      "response": { "response": { "fullResponse": true } }
    }
  }
}
```

### Pagination Handling

```javascript
// Function node: paginated API cagirma
const allResults = [];
let page = 1;
let hasMore = true;

while (hasMore) {
  const response = await this.helpers.httpRequest({
    url: `https://api.example.com/items?page=${page}&per_page=100`,
    method: 'GET',
  });
  allResults.push(...response.data);
  hasMore = response.data.length === 100;
  page++;
}

return allResults.map(item => ({ json: item }));
```

## Error Handling

### Try/Catch Pattern

```json
{
  "nodes": [
    {
      "name": "Try",
      "type": "n8n-nodes-base.httpRequest",
      "continueOnFail": true,
      "parameters": { "url": "https://api.example.com/data" }
    },
    {
      "name": "Check Error",
      "type": "n8n-nodes-base.if",
      "parameters": {
        "conditions": {
          "boolean": [
            { "value1": "={{ $json.error }}", "value2": true }
          ]
        }
      }
    },
    {
      "name": "Error Handler",
      "type": "n8n-nodes-base.slack",
      "parameters": {
        "channel": "#alerts",
        "text": "Workflow error: {{ $json.error.message }}"
      }
    }
  ]
}
```

### Error Workflow

```
n8n UI > Workflow Settings > Error Workflow
Global error handler: her basarisiz workflow bu workflow'u tetikler

Error workflow node'lari:
1. Error Trigger → hata bilgisini al
2. Function → hatayi formatla
3. Slack/Email → bildirim gonder
4. HTTP Request → incident sisteme kaydet
```

### Retry Stratejisi

```json
{
  "parameters": {
    "options": {
      "retry": {
        "maxRetries": 3,
        "retryInterval": 2000,
        "retryOnTimeout": true
      }
    }
  }
}
```

## Workflow Debugging

### Execution Log

```
n8n.list_executions({
  workflow_id: "123",
  status: "error",
  limit: 10
})
```

### Execution Detayi

```
n8n.get_execution({
  execution_id: "456",
  include_data: true
})
// Her node'un input/output data'sini gosterir
```

### Debug Teknikleri

```
1. Manual execution: UI'da "Execute Workflow" tikla
2. Node output: Her node'un ciktisini incele
3. Expression editor: {{ $json.field }} ifadelerini test et
4. Console log: Function node'da console.log() kullan
5. Test webhook: Postman/curl ile webhook'u test et
6. Pin data: Test data'yi node'a sabitle (development icin)
```

## CI/CD Entegrasyonu

### GitHub Actions ile n8n

```yaml
# .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy
        run: ./deploy.sh
      - name: Notify n8n
        run: |
          curl -X POST https://n8n.example.com/webhook/deploy-complete \
            -H "Content-Type: application/json" \
            -H "Authorization: Bearer ${{ secrets.N8N_WEBHOOK_TOKEN }}" \
            -d '{
              "repo": "${{ github.repository }}",
              "branch": "${{ github.ref_name }}",
              "commit": "${{ github.sha }}",
              "actor": "${{ github.actor }}"
            }'
```

### Claude Code'dan Workflow Tetikleme

```bash
# Webhook ile tetikle
curl -X POST http://localhost:5678/webhook/my-workflow \
  -H "Content-Type: application/json" \
  -d '{"action": "deploy", "version": "v1.2.3"}'

# API ile tetikle
curl -X POST http://localhost:5678/api/v1/workflows/123/execute \
  -H "X-N8N-API-KEY: <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"data": {"key": "value"}}'
```

### Workflow Export/Import (GitOps)

```bash
# Export (backup)
curl -s http://localhost:5678/api/v1/workflows \
  -H "X-N8N-API-KEY: <key>" | jq '.' > workflows-backup.json

# Import
curl -X POST http://localhost:5678/api/v1/workflows \
  -H "X-N8N-API-KEY: <key>" \
  -H "Content-Type: application/json" \
  -d @workflow.json
```

## Ornek Workflow'lar

### 1. Deploy Notification

```
Trigger: Webhook (GitHub Actions'dan)
  → Function: Deploy bilgisini formatla
  → Slack: #deployments kanalina bildir
  → IF: Production deploy mi?
    → YES: Telegram'a da bildir
    → NO: Sadece Slack
```

```json
{
  "name": "Deploy Notification",
  "nodes": [
    {
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "parameters": { "path": "deploy-notify", "httpMethod": "POST" }
    },
    {
      "name": "Format",
      "type": "n8n-nodes-base.function",
      "parameters": {
        "functionCode": "const d = items[0].json;\nreturn [{ json: { text: `Deploy: ${d.repo} (${d.branch}) by ${d.actor}\\nCommit: ${d.commit.substring(0,7)}` } }];"
      }
    },
    {
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "parameters": { "channel": "#deployments", "text": "={{ $json.text }}" }
    }
  ]
}
```

### 2. Issue Triage

```
Trigger: GitHub (issue opened)
  → Function: Label belirle (title/body analizi)
  → GitHub: Label ata
  → IF: Bug mu?
    → YES: Slack #bugs kanalina bildir, P1 ise mention
    → NO: Backlog'a ekle
```

### 3. PR Review Reminder

```
Trigger: Cron (her gun 10:00)
  → GitHub: Acik PR'lari listele
  → IF: 24+ saat review bekleyen var mi?
    → YES: Slack'te reviewer'a mention at
    → NO: Bos geç
```

### 4. Daily Standup Collector

```
Trigger: Cron (her gun 09:00)
  → Slack: #standup kanalina soru gonder
  → Wait: 2 saat
  → Slack: Cevaplari topla
  → Function: Ozet olustur
  → Notion: Standup sayfasina kaydet
```

### 5. Error Alert Pipeline

```
Trigger: Webhook (app error handler'dan)
  → Function: Error dedup (son 5dk ayni hata var mi)
  → IF: Yeni hata mi?
    → YES:
      → Switch (severity):
        → Critical: PagerDuty + Slack + Telegram
        → High: Slack + Email
        → Low: Slack only
    → NO: Counter artir, sessiz kal
```

## Best Practices

### Workflow Tasarimi

| Kural | Aciklama |
|-------|----------|
| Tek sorumluluk | Her workflow tek bir is yapsin |
| Error handling | Her dis API call'da continueOnFail |
| Idempotent | Ayni input, ayni output (retry-safe) |
| Timeout | HTTP request'lere timeout koy |
| Rate limit | Split In Batches ile API limit'e uy |
| Credential | Hardcode yapma, n8n credential store kullan |
| Naming | Node isimlerini aciklayici yap |
| Testing | Pin data ile test et, sonra production'a al |

### Guvenlik

```
1. Webhook'lara authentication ekle (header auth veya HMAC)
2. Credential'lari n8n credential store'da tut
3. Sensitive data'yi log'lama
4. Network: n8n'i public internet'e ACMA (reverse proxy kullan)
5. API key'leri environment variable'dan al
6. Workflow export'larinda credential'lar OLMAZ (import sonrasi set et)
```

### Performans

```
1. Batch processing: Split In Batches node kullan
2. Parallel execution: baska node'lara dallan
3. Caching: Redis node ile sik kullanilan data'yi cache'le
4. Pagination: Buyuk data set'lerde sayfalama yap
5. Timeout: Uzun workflow'lara timeout koy (workflow settings)
6. Cleanup: Eski execution log'larini sil (Settings > Pruning)
```

## Anti-Patterns

| Anti-Pattern | Dogru Yol |
|-------------|-----------|
| Monolithic workflow | Kucuk, tek sorumluluk workflow'lar |
| No error handling | continueOnFail + error workflow |
| Hardcoded credentials | n8n credential store |
| No retry | Retry config ekle |
| Polling every second | Webhook kullan veya 5min+ interval |
| No dedup | Duplicate event kontrolu ekle |
| No monitoring | Execution log + error alert workflow |


---
Source attribution: vibeeval
Original project: https://github.com/vibeeval/vibecosystem/blob/3b763b1fb288f57bfa3cce76ef18184b96461a78/skills/n8n-workflows/SKILL.md
License: MIT
License information: https://opensource.org/license/mit
Original upstream instructions; downloaded from Mega AI Hub.

## Upstream license notice

MIT License

Copyright (c) 2026 vibeeval

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



# Mega AI Hub resource metadata

Creator / publisher: vibeeval
Original project: https://github.com/vibeeval/vibecosystem/blob/3b763b1fb288f57bfa3cce76ef18184b96461a78/skills/n8n-workflows/SKILL.md
Attribution basis: Source repository record

Fields of work: Marketing, Operations, Product Management, Sales
Roles: Business Development, Growth Marketer, Marketing Analyst, Operations Manager, Product Manager
Specialties: API, Backend
Tools: N8N
Country applicability: Country not specified
Classification basis: Source catalog labels
Instruction SHA-256: 997b83a37683bb32e50d105fb949a58e78dce9ad49cd5b8f1237ff61931054f0
