AutomationFlowsWeb Scraping › Content Master Flow V2

Content Master Flow V2

40_450_CONTENT_MASTER_FLOW_v2. Uses httpRequest. Webhook trigger; 8 nodes.

Webhook trigger★★★★☆ complexity8 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 8 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
{
  "name": "40_450_CONTENT_MASTER_FLOW_v2",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "content-master",
        "responseMode": "lastNode",
        "options": {}
      },
      "id": "webhook-trigger",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "const body = $input.first().json.body ?? $input.first().json;\nconst pipelineJobId = body.pipeline_job_id ?? '';\nconst topic         = body.topic ?? '';\nconst category      = body.category ?? 'Allgemein';\nconst platforms     = body.target_platforms ?? 'blog';\n\nif (!topic) throw new Error('topic fehlt');\n\nreturn [{ json: { pipeline_job_id: pipelineJobId, topic, category, target_platforms: platforms } }];"
      },
      "id": "parse-input",
      "name": "Input parsen",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        460,
        380
      ]
    },
    {
      "parameters": {
        "method": "PATCH",
        "url": "https://directus.automation-plus-ki.de/items/400_content_pipeline",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.DIRECTUS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "specifyBody": "keypair",
        "bodyParameters": {
          "parameters": [
            {
              "name": "Id",
              "value": "={{ $json.pipeline_job_id }}"
            },
            {
              "name": "stage",
              "value": "text"
            },
            {
              "name": "status",
              "value": "running"
            }
          ]
        }
      },
      "id": "update-running",
      "name": "Pipeline auf Running setzen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        680,
        380
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://s0k444ck0w4cgc400skwkos0.<HETZNER_HOST>.sslip.io/crews/content_generation_crew/run",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "specifyBody": "json",
        "jsonBody": "{ \"inputs\": { \"topic\": \"{{ $('Input parsen').item.json.topic }}\", \"category\": \"{{ $('Input parsen').item.json.category }}\", \"target_platforms\": \"{{ $('Input parsen').item.json.target_platforms }}\", \"pipeline_job_id\": \"{{ $('Input parsen').item.json.pipeline_job_id }}\" } }",
        "options": {
          "timeout": 180000
        }
      },
      "id": "call-crew-api",
      "name": "Crew API: Text generieren",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        900,
        380
      ]
    },
    {
      "parameters": {
        "jsCode": "// Crew-API Ergebnis parsen \u2014 Writer-Agent soll JSON liefern\nconst res = $input.first().json;\nconst rawResult = res.result ?? '';\n\nlet title = '';\nlet excerpt = '';\nlet seoKeywords = '';\nlet contentText = rawResult;\n\n// Versuche JSON zu parsen (Writer-Agent liefert idealerweise valides JSON)\ntry {\n  const match = rawResult.match(/\\{[\\s\\S]*\\}/);\n  if (match) {\n    const parsed = JSON.parse(match[0]);\n    title       = parsed.title       ?? '';\n    excerpt     = parsed.excerpt     ?? '';\n    seoKeywords = parsed.seo_keywords ?? '';\n    contentText = parsed.content     ?? rawResult;\n  }\n} catch (_) {\n  // Fallback: rohen Text als Content verwenden\n}\n\n// Titel aus erstem H1 extrahieren falls leer\nif (!title) {\n  const h1Match = contentText.match(/^#\\s+(.+)$/m);\n  title = h1Match ? h1Match[1].trim() : 'Generierter Artikel';\n}\n\nreturn [{ json: {\n  execution_id:    res.execution_id,\n  pipeline_job_id: $('Input parsen').item.json.pipeline_job_id,\n  topic:           $('Input parsen').item.json.topic,\n  category:        $('Input parsen').item.json.category,\n  target_platforms: $('Input parsen').item.json.target_platforms,\n  title,\n  excerpt,\n  seo_keywords:    seoKeywords,\n  content_text:    contentText,\n} }];"
      },
      "id": "parse-result",
      "name": "Ergebnis parsen",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1120,
        380
      ]
    },
    {
      "parameters": {
        "method": "PATCH",
        "url": "https://directus.automation-plus-ki.de/items/400_content_pipeline",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.DIRECTUS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "specifyBody": "keypair",
        "bodyParameters": {
          "parameters": [
            {
              "name": "Id",
              "value": "={{ $(\"Input parsen\").item.json.pipeline_job_id }}"
            },
            {
              "name": "stage",
              "value": "image"
            },
            {
              "name": "title",
              "value": "={{ $json.title }}"
            },
            {
              "name": "excerpt",
              "value": "={{ $json.excerpt }}"
            },
            {
              "name": "seo_keywords",
              "value": "={{ $json.seo_keywords }}"
            }
          ]
        }
      },
      "id": "update-text-done",
      "name": "Pipeline: Text fertig",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1340,
        380
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://n8n.automation-plus-ki.de/webhook/pixart-image",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "specifyBody": "json",
        "jsonBody": "{ \"pipeline_job_id\": \"{{ $json.pipeline_job_id }}\", \"topic\": \"{{ $json.topic }}\", \"category\": \"{{ $json.category }}\" }",
        "options": {
          "timeout": 5000
        }
      },
      "id": "trigger-image",
      "name": "Bild generieren (async)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1560,
        260
      ],
      "onError": "continueRegularOutput"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://n8n.automation-plus-ki.de/webhook/fish-audio",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "specifyBody": "json",
        "jsonBody": "{ \"pipeline_job_id\": \"{{ $json.pipeline_job_id }}\", \"text_content\": \"{{ $json.excerpt || $json.content_text.substring(0, 800) }}\" }",
        "options": {
          "timeout": 5000
        }
      },
      "id": "trigger-audio",
      "name": "Audio generieren (async)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1560,
        500
      ],
      "onError": "continueRegularOutput"
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Input parsen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Input parsen": {
      "main": [
        [
          {
            "node": "Pipeline auf Running setzen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pipeline auf Running setzen": {
      "main": [
        [
          {
            "node": "Crew API: Text generieren",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Crew API: Text generieren": {
      "main": [
        [
          {
            "node": "Ergebnis parsen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Ergebnis parsen": {
      "main": [
        [
          {
            "node": "Pipeline: Text fertig",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pipeline: Text fertig": {
      "main": [
        [
          {
            "node": "Bild generieren (async)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Audio generieren (async)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "callerPolicy": "workflowsFromSameOwner",
    "availableInMCP": false
  },
  "tags": [
    "content-pipeline"
  ]
}
Pro

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

About this workflow

40_450_CONTENT_MASTER_FLOW_v2. Uses httpRequest. Webhook trigger; 8 nodes.

Source: https://github.com/timo-goetz-ai/apki-core-platform/blob/5cd9c9d9ed0ed464da995af94683e9301965a3bc/automations/n8n-workflows/content-pipeline/40_450_CONTENT_MASTER_FLOW_v2.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

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request