20 Workflows n8n Que Ahorran 15 Horas/Semana (Con Código Para Copiar)
Corro 20+ workflows n8n en producción. 8,000+ ejecuciones/mes.
Tiempo ahorrado: 15 horas/semana.
Costo: $20/mes (vs $99/mes Zapier equivalente).
No son workflows teóricos de tutorial. Son workflows que publican blog posts, sincronizan datos, generan imágenes, envían newsletters, crean tareas — automáticamente, 24/7.
Te muestro los 5 workflows más útiles (con código JSON para importar directo).
El Problema: Zapier es Caro, Make es Limitado
Zapier pricing (2026):
- 8,000 tasks/mes → Team plan $99/mes
Make pricing:
- 10,000 operations/mes → Pro plan $79/mes
Problema adicional:
- Vendor lock-in (workflows viven en su plataforma)
- Limited logic (branching, loops, complex transformations)
- No code inspection (can’t see what’s happening under the hood)
La Solución: n8n (Self-Hosted + Cloud Hybrid)
n8n = Open source Zapier/Make alternative.
Mi setup:
- Dev instance: n8n.nyx.yourdomain.com (Docker, VPS)
- Prod instance: n8n.yourdomain.com (Docker, VPS)
- Cloud instance: yourdomain.app.n8n.cloud (webhooks externos)
Por qué 3 instancias:
- Dev: Testing sin romper prod
- Prod: Workflows críticos self-hosted (costo $0)
- Cloud: Webhooks externos (Stripe, etc.) que necesitan uptime SLA
Costo:
- Dev + Prod: $0 (self-hosted en VPS que ya tengo)
- Cloud: $20/mes (Starter plan)
- Total: $20/mes (vs $99 Zapier)
Ahorro annual: $948/año
Workflow 1: Blog Post → Multi-Channel Distribution
Trigger: WordPress post publicado
Flow:
WordPress Webhook
↓
Extract post data (title, excerpt, featured image, URL)
↓
IF featured image exists:
├─ Yes → Use it
└─ No → Generate with Replicate API (Synthwave style)
↓
Create LinkedIn post (Late API)
├─ Text: Excerpt + CTA
└─ Image: Featured image
↓
Create Twitter thread (Late API)
├─ Text: Title + 3 key points
└─ Image: Featured image
↓
Create newsletter (Listmonk)
├─ Subject: Post title
└─ Body: Excerpt + "Read more" link
↓
Track in NocoDB (Content Calendar table)
├─ Platform: LinkedIn, Twitter, Newsletter
└─ Status: Scheduled
↓
Notify Telegram: "Post distributed to 3 channels ✅"
Ejecución time: 30-45 segundos
Manual equivalent: 30-45 minutos
Ahorro: 44 minutos per post × 8 posts/mes = 6 horas/mes
Código (n8n JSON)
Ver workflow completo (click para expandir)
{
"nodes": [
{
"name": "WordPress Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "wordpress-post-published",
"responseMode": "onReceived",
"options": {}
},
"position": [250, 300]
},
{
"name": "Extract Post Data",
"type": "n8n-nodes-base.set",
"parameters": {
"values": {
"string": [
{"name": "title", "value": "={{$json.title}}"},
{"name": "excerpt", "value": "={{$json.excerpt}}"},
{"name": "url", "value": "={{$json.link}}"},
{"name": "featuredImage", "value": "={{$json.featured_media_url}}"}
]
}
},
"position": [450, 300]
},
{
"name": "Check Featured Image",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json.featuredImage}}",
"operation": "notEmpty"
}
]
}
},
"position": [650, 300]
},
{
"name": "Generate Image (Replicate)",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "https://api.replicate.com/v1/predictions",
"method": "POST",
"authentication": "headerAuth",
"jsonParameters": true,
"bodyParametersJson": "{\"version\": \"flux-schnell\", \"input\": {\"prompt\": \"{{$json.title}} synthwave cyberpunk neon\", \"width\": 1216, \"height\": 640}}"
},
"position": [850, 400]
},
{
"name": "Create LinkedIn Post",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "https://api.getlate.dev/v1/posts",
"method": "POST",
"authentication": "headerAuth",
"jsonParameters": true,
"bodyParametersJson": "{\"accountId\": \"YOUR_LINKEDIN_ID\", \"scheduledAt\": \"{{DateTime.now().plus({days: 1}).set({hour: 9}).toISO()}}\", \"post\": {\"text\": \"{{$json.excerpt}}\\n\\nLee más: {{$json.url}}\", \"media\": [{\"url\": \"{{$json.featuredImage}}\"}]}}"
},
"position": [1050, 300]
},
{
"name": "Notify Telegram",
"type": "n8n-nodes-base.telegram",
"parameters": {
"chatId": "YOUR_CHAT_ID",
"text": "✅ Post distributed:\\n- LinkedIn\\n- Twitter\\n- Newsletter"
},
"position": [1450, 300]
}
],
"connections": {
"WordPress Webhook": {
"main": [[{"node": "Extract Post Data"}]]
},
"Extract Post Data": {
"main": [[{"node": "Check Featured Image"}]]
},
"Check Featured Image": {
"main": [
[{"node": "Create LinkedIn Post"}],
[{"node": "Generate Image (Replicate)"}]
]
}
}
}
Importar: n8n dashboard → Workflows → Import from File → Paste JSON
Workflow 2: Stripe → NocoDB Revenue Tracking
Trigger: Stripe webhook (payment successful)
Flow:
Stripe Webhook (charge.succeeded)
↓
Extract payment data (amount, customer, product)
↓
Create NocoDB record (Revenue Tracker table)
├─ Amount: {{amount / 100}} USD
├─ Customer: {{customer_email}}
├─ Product: {{product_name}}
├─ Date: {{created_timestamp}}
└─ Source: Stripe
↓
IF amount > $100:
↓
Notify Telegram: "🎉 New sale: ${{amount}} from {{customer_email}}"
Frequency: ~10-20 executions/month
Value: Automatic revenue tracking (no manual spreadsheet updates)
Function Node (Transform Stripe Data)
// Input: Stripe charge object
const charge = $input.item.json;
// Transform to NocoDB format
const record = {
"Amount": charge.amount / 100, // Cents to dollars
"Currency": charge.currency.toUpperCase(),
"Customer": charge.billing_details.email,
"Product": charge.description,
"Date": new Date(charge.created * 1000).toISOString(),
"Source": "Stripe",
"Status": charge.status
};
return { json: record };
Workflow 3: SEO Auto-Indexing
Trigger: New WordPress post published
Flow:
WordPress Webhook
↓
Extract post URL
↓
Submit to IndexNow
├─ Endpoint: https://api.indexnow.org/indexnow
├─ Key: YOUR_INDEX_NOW_KEY
├─ URL: {{post_url}}
↓
Submit to Google Search Console
├─ Endpoint: https://searchconsole.googleapis.com/v1/urlInspection
├─ Auth: Service Account
├─ URL: {{post_url}}
↓
Wait 48 hours (delay node)
↓
Check indexing status (Google API)
↓
IF not indexed:
↓
Notify Telegram: "⚠️ Post not indexed: {{post_url}}"
Value: Posts indexados automáticamente (no manual submission)
Indexing time: Reduced from 7 days → 1-2 days
Workflow 4: Daily Task Backup (NocoDB → Git)
Trigger: Cron (daily 2 AM)
Flow:
Cron Trigger (daily 2 AM)
↓
Fetch all active tasks from NocoDB
↓
Transform to JSON
↓
Write to file: tasks-YYYY-MM-DD.json
↓
Git add + commit + push
↓
Notify: "✅ Daily backup completed"
Value: Task history preserved (even if NocoDB breaks)
Recovery: Can restore tasks from git
Git Commit Node (Execute Command)
#!/bin/bash
cd /home/user/backups
echo '$json.tasks' > tasks-$(date +%Y-%m-%d).json
git add tasks-$(date +%Y-%m-%d).json
git commit -m "Daily backup $(date +%Y-%m-%d)"
git push origin main
Workflow 5: Listmonk Campaign Stats → NocoDB
Trigger: Cron (daily 12 PM, 3 hours after typical send time)
Flow:
Cron Trigger
↓
Fetch recent campaigns from Listmonk API
↓
FOR EACH campaign:
├─ Get stats (opens, clicks, bounces)
├─ Find corresponding NocoDB record (by Listmonk ID)
├─ Update record:
├─ Status: Sent
├─ Sent At: {{sent_at}}
├─ Subscribers: {{total}}
├─ Opens: {{opens}}
├─ Open Rate: {{opens / total * 100}}%
├─ Clicks: {{clicks}}
├─ Click Rate: {{clicks / total * 100}}%
↓
Notify: "✅ Newsletter stats updated"
Value: Centralized metrics (don’t have to check Listmonk manually)
Frequency: Daily
OpenClaw ↔ n8n Integration Patterns
Pattern 1: n8n Triggers OpenClaw
Use case: External event needs AI processing
Example: Stripe payment → notify OpenClaw → generate thank-you email
// n8n HTTP Request node
POST https://gateway.openclaw.local/api/session/send
{
"message": "New customer: {{$json.customer_email}}. Generate personalized thank-you email.",
"sessionKey": "main"
}
Pattern 2: OpenClaw Calls n8n Webhook
Use case: OpenClaw needs external API orchestration
Example: OpenClaw generates image → n8n uploads to CDN
## OpenClaw skill
import requests
webhook_url = "https://n8n.yourdomain.com/webhook/upload-to-cdn"
response = requests.post(webhook_url, json={
"image_data": base64_image,
"filename": "synthwave-featured.jpg"
})
cdn_url = response.json()['cdn_url']
Pattern 3: n8n as Middleware
Use case: Complex workflow with multiple steps
Example: Blog post → generate image → publish 3 platforms → track
OpenClaw: "Publish blog post X"
↓
OpenClaw calls n8n webhook: /webhook/publish-blog-post
↓
n8n orchestrates:
├─ Generate image (Replicate)
├─ Publish LinkedIn (Late API)
├─ Publish Twitter (Late API)
├─ Create newsletter (Listmonk)
├─ Track in NocoDB
└─ Return summary to OpenClaw
↓
OpenClaw announces: "Post published to 3 platforms ✅"
Lecciones Aprendidas
1. Self-Hosted Dev + Cloud Prod = Best of Both
All self-hosted:
- ✅ Free
- ❌ Public webhooks break (VPS IP changes, firewall)
- ❌ No uptime SLA
All cloud:
- ✅ Reliable webhooks
- ✅ Uptime SLA
- ❌ $99/month for >10K executions
Hybrid:
- ✅ Test locally, deploy to cloud
- ✅ Cloud only for external webhooks (80% self-hosted)
- Cost: $20/month (vs $99 all-cloud)
2. Code Nodes = Unlimited Flexibility
When to use Function node:
- Data transformation (WordPress → LinkedIn format)
- Complex logic (if X and Y, then Z)
- API payload construction
When NOT to use:
- Simple field mapping (use Set node)
- API calls (use HTTP Request node)
Example:
// Transform WordPress post to LinkedIn format
const post = $input.item.json;
const linkedinPost = {
text: `${post.title}\n\n${post.excerpt}\n\nLee más: ${post.url}`,
image_url: post.featured_image,
scheduled_at: new Date(Date.now() + 86400000).toISO()
};
return { json: linkedinPost };
3. Error Handling = Production-Ready
Bad workflow:
Trigger → API Call → Done
If API fails: workflow stops, no notification, no retry.
Production workflow:
Trigger
↓
TRY:
├─ API Call
└─ Success → Log to NocoDB
CATCH:
├─ Log error
├─ Retry 3x (exponential backoff)
└─ IF still fails:
└─ Notify Telegram: "Workflow failed: {{error}}"
Implementation: Error Trigger node + retry logic
4. Sub-Workflows = Reusable Patterns
Problem: «Generate Synthwave image» logic duplicated in 5 workflows.
Solution: Create sub-workflow:
Main workflow:
Trigger
↓
Call sub-workflow: "generate-synthwave-image"
├─ Input: prompt, style, format
└─ Output: image_url
↓
Use image_url in Late API post
Sub-workflow:
Webhook Trigger (internal)
↓
Replicate API (synthwave model)
↓
Poll for completion (max 60s)
↓
Download image
↓
Upload to CDN
↓
Return CDN URL
5. Execution Limits = Monitor Before Hit
n8n Cloud Starter limits:
- 2,500 executions/month
- Overage: $1 per 500
My usage:
- Month 1: 8,000 executions → $11 overage fees
Solution:
- Self-host high-frequency workflows (daily crons)
- Keep cloud for low-frequency webhooks (Stripe)
- Monitor dashboard (alert at 80%)
Result: $20/month (no overages) vs $32 before
Resultados (12 Meses)
Stats:
- Workflows active: 20+
- Monthly executions: 8,000+
- Success rate: 97.2%
- Failed executions: 224 (mostly API rate limits, handled by retry)
Tiempo ahorrado:
- Blog distribution: 30 min → 30 sec (60x faster)
- SEO indexing: 15 min → 0 min
- Revenue tracking: 10 min/week → 0 min
- Social scheduling: 2 hours/week → 0 min
- Total: ~15 hours/week
Costos
| Instance | Hosting | Monthly Cost |
|---|---|---|
| Dev | Docker (VPS) | $0 |
| Prod | Docker (VPS) | $0 |
| Cloud | n8n Cloud Starter | $20 |
| Total | $20/month |
vs equivalents:
- Zapier (8K tasks): $99/month
- Make (10K ops): $79/month
Savings: $79-99/month = $948-1,188/year
Setup n8n (Self-Hosted)
docker-compose.yml:
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n-prod
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.yourdomain.com/
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${N8N_USER}
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
networks:
- internal
volumes:
n8n_data:
networks:
internal:
driver: bridge
Levantar:
docker-compose up -d
Acceder: https://n8n.yourdomain.com (via Caddy reverse proxy)
Workflows Para Importar (Repo)
GitHub: openclaw-production-guide
Case 8: n8n Workflow Automation
Included workflows:
- Blog → Multi-Channel Distribution
- Stripe → NocoDB Tracking
- SEO Auto-Indexing
- Daily Task Backup
- Listmonk Stats Sync
Format: JSON (import directo en n8n)
Conclusión: 15 Hours/Week Saved
Setup time: 1-2 días (one-time).
Ahorro mensual: 60 horas (15h/week × 4).
Costo: $20/mes.
ROI: 60 horas × $100/hora = $6,000 value / $20 cost = 300x ROI.
Cuándo usar n8n:
-
1,000 tasks/mes (Zapier/Make expensive)
- Want code control (inspect + customize)
- Value flexibility (Function nodes)
Cuándo NO:
- <500 tasks/mes (free tiers sufficient)
- Team no-code only (Zapier simpler)
Si automatizas workflows y pagas >$50/mes en Zapier/Make, n8n self-hosted paga su peso en oro.
¿Usas n8n? ¿Qué workflows corres? Comparte en comentarios.


