AutomationFlows › Web Scraping › F2g De-sloppify

F2g De-sloppify

Original n8n title: 🧹 F2g De-sloppify

🧹 F2G De-Sloppify. Uses httpRequest. Scheduled trigger; 6 nodes.

Cron / scheduled trigger★★★★☆ complexity6 nodesHTTP Request
Web Scraping Trigger: Cron / scheduled Nodes: 6 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "updatedAt": "2026-04-13T19:25:24.249Z",
  "createdAt": "2026-04-13T19:25:24.249Z",
  "id": "dFJP7lBXhEkBrw58",
  "name": "\ud83e\uddf9 F2G De-Sloppify",
  "description": null,
  "active": true,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 23
            }
          ]
        }
      },
      "name": "Daily 11pm",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        100,
        300
      ],
      "id": "cf5e82b5-241b-4e92-aa27-ab05adf54e13"
    },
    {
      "parameters": {
        "url": "http://host.docker.internal:5678/api/v1/executions?limit=20",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-N8N-API-KEY",
              "value": "<REDACTED>"
            }
          ]
        },
        "options": {}
      },
      "name": "1. Fetch Executions",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        350,
        300
      ],
      "id": "cfc24308-ee08-415f-af58-c5bdeea1e789"
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "\nconst execs = .data || [];\nconst today = new Date().toISOString().slice(0,10);\nlet successes = 0, errors = 0, workflows = {};\nfor (const e of execs) {\n  if (!e.stoppedAt || !e.stoppedAt.startsWith(today)) continue;\n  if (e.status === 'success') successes++;\n  else if (e.status === 'error') errors++;\n  const wfId = e.workflowId || '?';\n  if (!workflows[wfId]) workflows[wfId] = {success: 0, error: 0};\n  workflows[wfId][e.status === 'success' ? 'success' : 'error']++;\n}\nconst nl = String.fromCharCode(10);\nlet summary = 'DAILY EXECUTION REVIEW \u2014 ' + today + nl;\nsummary += 'Total: ' + (successes+errors) + ' | Success: ' + successes + ' | Errors: ' + errors + nl;\nfor (const [wf, stats] of Object.entries(workflows)) {\n  summary += '  WF ' + wf + ': ' + stats.success + ' ok, ' + stats.error + ' err' + nl;\n}\nreturn [{json: {summary, successes, errors, errorRate: errors/(successes+errors||1)}}];\n"
      },
      "name": "2. Analyze",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        600,
        300
      ],
      "id": "00c5692b-73b1-4c4d-8988-ee15ed523334"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://host.docker.internal:8100/reflect",
        "sendBody": true,
        "contentType": "json",
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({\"workflow\": \"de-sloppify\", \"findings\": [{\"text\": .summary, \"type\": \"review\"}]}) }}",
        "options": {}
      },
      "name": "3. Reflect",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        850,
        300
      ],
      "id": "2b2ecdbd-1290-423f-9844-5716aac06850"
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "\nconst errorRate = .first().json.errorRate || 0;\nconst summary = .first().json.summary || '';\nif (errorRate > 0.3) {\n  return [{json: {alert: true, content: '\u26a0\ufe0f **De-Sloppify Alert**\nError rate: ' + Math.round(errorRate*100) + '%\n' + summary}}];\n}\nreturn [{json: {alert: false}}];\n"
      },
      "name": "4. Check Threshold",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1100,
        300
      ],
      "id": "6024b572-b726-4ba6-ba21-e8c11c2ee120"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://discord.com/api/webhooks/1493012313136173178/v5kIckHlgdjvSPe4y0v0Q-tFitWEef76rNGrYDIIsKTB_FC81u0ZiaF1606sxQBUOyCk",
        "sendBody": true,
        "contentType": "json",
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({\"content\": $json.content || \"De-sloppify: all clear\"}) }}",
        "options": {}
      },
      "name": "5. Alert OPS",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1350,
        300
      ],
      "id": "42a9d62c-4522-4264-8a76-610c12bbce0a"
    }
  ],
  "connections": {
    "Daily 11pm": {
      "main": [
        [
          {
            "node": "1. Fetch Executions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1. Fetch Executions": {
      "main": [
        [
          {
            "node": "2. Analyze",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2. Analyze": {
      "main": [
        [
          {
            "node": "3. Reflect",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3. Reflect": {
      "main": [
        [
          {
            "node": "4. Check Threshold",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4. Check Threshold": {
      "main": [
        [
          {
            "node": "5. Alert OPS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "callerPolicy": "workflowsFromSameOwner",
    "availableInMCP": false
  },
  "staticData": {
    "node:Daily 11pm": {
      "recurrenceRules": []
    }
  },
  "meta": null,
  "versionId": "9c6c16c7-2431-4989-ad8e-f11f1f52823d",
  "activeVersionId": "9c6c16c7-2431-4989-ad8e-f11f1f52823d",
  "versionCounter": 4,
  "triggerCount": 1,
  "shared": [
    {
      "updatedAt": "2026-04-13T19:25:24.254Z",
      "createdAt": "2026-04-13T19:25:24.254Z",
      "role": "workflow:owner",
      "workflowId": "dFJP7lBXhEkBrw58",
      "projectId": "vB3IpiULx2Yon8YS",
      "project": {
        "updatedAt": "2026-04-12T13:04:13.020Z",
        "createdAt": "2026-04-12T13:02:01.729Z",
        "id": "vB3IpiULx2Yon8YS",
        "name": "Boutchouang NATHAN <boutchouangelija@gmail.com>",
        "type": "personal",
        "icon": null,
        "description": null,
        "creatorId": "876988b2-cfb7-489a-b244-b36cdcf76150"
      }
    }
  ],
  "tags": [],
  "activeVersion": {
    "updatedAt": "2026-04-13T19:25:24.264Z",
    "createdAt": "2026-04-13T19:25:24.264Z",
    "versionId": "9c6c16c7-2431-4989-ad8e-f11f1f52823d",
    "workflowId": "dFJP7lBXhEkBrw58",
    "nodes": [
      {
        "parameters": {
          "rule": {
            "interval": [
              {
                "triggerAtHour": 23
              }
            ]
          }
        },
        "name": "Daily 11pm",
        "type": "n8n-nodes-base.scheduleTrigger",
        "typeVersion": 1.2,
        "position": [
          100,
          300
        ],
        "id": "cf5e82b5-241b-4e92-aa27-ab05adf54e13"
      },
      {
        "parameters": {
          "url": "http://host.docker.internal:5678/api/v1/executions?limit=20",
          "sendHeaders": true,
          "headerParameters": {
            "parameters": [
              {
                "name": "X-N8N-API-KEY",
                "value": "<REDACTED>"
              }
            ]
          },
          "options": {}
        },
        "name": "1. Fetch Executions",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          350,
          300
        ],
        "id": "cfc24308-ee08-415f-af58-c5bdeea1e789"
      },
      {
        "parameters": {
          "mode": "runOnceForAllItems",
          "jsCode": "\nconst execs = .data || [];\nconst today = new Date().toISOString().slice(0,10);\nlet successes = 0, errors = 0, workflows = {};\nfor (const e of execs) {\n  if (!e.stoppedAt || !e.stoppedAt.startsWith(today)) continue;\n  if (e.status === 'success') successes++;\n  else if (e.status === 'error') errors++;\n  const wfId = e.workflowId || '?';\n  if (!workflows[wfId]) workflows[wfId] = {success: 0, error: 0};\n  workflows[wfId][e.status === 'success' ? 'success' : 'error']++;\n}\nconst nl = String.fromCharCode(10);\nlet summary = 'DAILY EXECUTION REVIEW \u2014 ' + today + nl;\nsummary += 'Total: ' + (successes+errors) + ' | Success: ' + successes + ' | Errors: ' + errors + nl;\nfor (const [wf, stats] of Object.entries(workflows)) {\n  summary += '  WF ' + wf + ': ' + stats.success + ' ok, ' + stats.error + ' err' + nl;\n}\nreturn [{json: {summary, successes, errors, errorRate: errors/(successes+errors||1)}}];\n"
        },
        "name": "2. Analyze",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          600,
          300
        ],
        "id": "00c5692b-73b1-4c4d-8988-ee15ed523334"
      },
      {
        "parameters": {
          "method": "POST",
          "url": "http://host.docker.internal:8100/reflect",
          "sendBody": true,
          "contentType": "json",
          "specifyBody": "json",
          "jsonBody": "={{ JSON.stringify({\"workflow\": \"de-sloppify\", \"findings\": [{\"text\": .summary, \"type\": \"review\"}]}) }}",
          "options": {}
        },
        "name": "3. Reflect",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          850,
          300
        ],
        "id": "2b2ecdbd-1290-423f-9844-5716aac06850"
      },
      {
        "parameters": {
          "mode": "runOnceForAllItems",
          "jsCode": "\nconst errorRate = .first().json.errorRate || 0;\nconst summary = .first().json.summary || '';\nif (errorRate > 0.3) {\n  return [{json: {alert: true, content: '\u26a0\ufe0f **De-Sloppify Alert**\nError rate: ' + Math.round(errorRate*100) + '%\n' + summary}}];\n}\nreturn [{json: {alert: false}}];\n"
        },
        "name": "4. Check Threshold",
        "type": "n8n-nodes-base.code",
        "typeVersion": 2,
        "position": [
          1100,
          300
        ],
        "id": "6024b572-b726-4ba6-ba21-e8c11c2ee120"
      },
      {
        "parameters": {
          "method": "POST",
          "url": "https://discord.com/api/webhooks/1493012313136173178/v5kIckHlgdjvSPe4y0v0Q-tFitWEef76rNGrYDIIsKTB_FC81u0ZiaF1606sxQBUOyCk",
          "sendBody": true,
          "contentType": "json",
          "specifyBody": "json",
          "jsonBody": "={{ JSON.stringify({\"content\": $json.content || \"De-sloppify: all clear\"}) }}",
          "options": {}
        },
        "name": "5. Alert OPS",
        "type": "n8n-nodes-base.httpRequest",
        "typeVersion": 4.2,
        "position": [
          1350,
          300
        ],
        "id": "42a9d62c-4522-4264-8a76-610c12bbce0a"
      }
    ],
    "connections": {
      "Daily 11pm": {
        "main": [
          [
            {
              "node": "1. Fetch Executions",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "1. Fetch Executions": {
        "main": [
          [
            {
              "node": "2. Analyze",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "2. Analyze": {
        "main": [
          [
            {
              "node": "3. Reflect",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "3. Reflect": {
        "main": [
          [
            {
              "node": "4. Check Threshold",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "4. Check Threshold": {
        "main": [
          [
            {
              "node": "5. Alert OPS",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    },
    "authors": "Boutchouang NATHAN",
    "name": null,
    "description": null,
    "autosaved": false,
    "workflowPublishHistory": [
      {
        "createdAt": "2026-04-13T19:25:24.394Z",
        "id": 157,
        "workflowId": "dFJP7lBXhEkBrw58",
        "versionId": "9c6c16c7-2431-4989-ad8e-f11f1f52823d",
        "event": "activated",
        "userId": "876988b2-cfb7-489a-b244-b36cdcf76150"
      }
    ]
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

🧹 F2G De-Sloppify. Uses httpRequest. Scheduled trigger; 6 nodes.

Source: https://github.com/BOUTCHOUANG1/n8n-workflow/blob/619f3562fcbdf23d05d3e3fe3588e73a80c0aa31/n8n-workflows/f2g-de-sloppify.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

Birthday Automation - Production (Fixed). Uses stopAndError, httpRequest, emailSend, bannerbear. Scheduled trigger; 86 nodes.

Stop And Error, HTTP Request, Email Send +1
Web Scraping

This template runs two scheduled workflows to govern Microsoft Entra ID (Azure AD) guest accounts by detecting stale users via Microsoft Graph, staging deletions in SharePoint with a 72-hour window, n

Microsoft SharePoint, Microsoft Teams, Microsoft Entra +1
Web Scraping

Jira-Allure-Auto-Qa. Uses httpRequest, jira. Scheduled trigger; 68 nodes.

HTTP Request, Jira
Web Scraping

Spotify-Sync-Surrealdb-V1. Uses httpRequest, n8n-nodes-surrealdb, spotify. Scheduled trigger; 62 nodes.

HTTP Request, N8N Nodes Surrealdb, Spotify
Web Scraping

As n8n instances scale, teams often lose track of sub-workflows—who uses them, where they are referenced, and whether they can be safely updated. This leads to inefficiencies like unnecessary copies o

HTTP Request, n8n, N8N Trigger +1