AutomationFlowsSocial Media › Aban — Publish Fanout

Aban — Publish Fanout

aban — Publish Fanout. Uses linkedIn, twitter, httpRequest. Webhook trigger; 6 nodes.

Webhook trigger★★★★☆ complexity6 nodesLinkedInTwitterHTTP Request
Social Media Trigger: Webhook Nodes: 6 Complexity: ★★★★☆ Added:

This workflow follows the HTTP Request → LinkedIn recipe pattern — see all workflows that pair these two integrations.

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": "aban \u2014 Publish Fanout",
  "nodes": [
    {
      "parameters": {
        "content": "## aban Publish-Fanout\n\nEmpf\u00e4ngt den Webhook von `social/post.py` (Feld `PUBLISH_WEBHOOK_URL`) und postet an\nLinkedIn, X und Mastodon.\n\n**Einrichten:**\n1. Workflow importieren.\n2. In jedem Post-Node deine **Credential** verbinden (LinkedIn / X OAuth, Mastodon-Token).\n3. Workflow **aktivieren**.\n4. Im Webhook-Node die **Production-URL** kopieren \u2192 als GitHub-Secret `PUBLISH_WEBHOOK_URL` setzen.\n\nFelder unter `{{ $json.body }}`: `text`, `url`, `id`, `tags`.\n`Text bauen` liefert `text` (voll, f\u00fcr LinkedIn/Mastodon) und `text_x` (\u2264280 Zeichen, f\u00fcr X).\nNicht gebrauchte Plattform-Nodes einfach l\u00f6schen oder deaktivieren.",
        "height": 340,
        "width": 380
      },
      "id": "note1",
      "name": "Anleitung",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -40,
        0
      ]
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "aban-publish",
        "responseMode": "onReceived",
        "options": {}
      },
      "id": "webhook1",
      "name": "Webhook (von post.py)",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        420,
        200
      ]
    },
    {
      "parameters": {
        "jsCode": "// Baut Post-Texte aus dem Webhook-Body.\n// text   = voll (LinkedIn/Mastodon)\n// text_x = auf 280 Zeichen gekuerzt (X/Twitter): bei Ueberlaenge erste Zeile + Link.\nconst b = ($input.first().json.body) || $input.first().json || {};\nconst body = (b.text || '').trim();\nconst link = b.url ? String(b.url) : '';\nconst full = (body + (link ? '\\n' + link : '')).trim();\n\nfunction forX(){\n  if (full.length <= 280) return full;\n  const firstLine = body.split('\\n')[0].trim();\n  let t = link ? (firstLine + ' ' + link) : firstLine;\n  if (t.length > 280) t = t.slice(0, 279) + '\\u2026';\n  return t;\n}\n\nreturn [{ json: { text: full, text_x: forX(), raw: b } }];"
      },
      "id": "format1",
      "name": "Text bauen",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        200
      ]
    },
    {
      "parameters": {
        "text": "={{ $json.text }}",
        "additionalFields": {}
      },
      "id": "linkedin1",
      "name": "LinkedIn posten",
      "type": "n8n-nodes-base.linkedIn",
      "typeVersion": 1,
      "position": [
        920,
        40
      ],
      "notesInFlow": true,
      "notes": "LinkedIn-Credential (OAuth2) hier verbinden. Nutzt den vollen Text."
    },
    {
      "parameters": {
        "text": "={{ $json.text_x }}",
        "additionalFields": {}
      },
      "id": "twitter1",
      "name": "X / Twitter posten",
      "type": "n8n-nodes-base.twitter",
      "typeVersion": 2,
      "position": [
        920,
        200
      ],
      "notesInFlow": true,
      "notes": "X/Twitter-Credential (OAuth2) hier verbinden. Nutzt text_x (automatisch auf 280 Zeichen gekuerzt)."
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{ $env.MASTODON_INSTANCE }}/api/v1/statuses",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "status",
              "value": "={{ $json.text }}"
            },
            {
              "name": "visibility",
              "value": "public"
            }
          ]
        },
        "options": {}
      },
      "id": "mastodon1",
      "name": "Mastodon posten",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        920,
        360
      ],
      "notesInFlow": true,
      "notes": "Header-Auth-Credential anlegen: Name 'Authorization', Wert 'Bearer DEIN_TOKEN'. MASTODON_INSTANCE als n8n-Env setzen oder URL fest eintragen."
    }
  ],
  "connections": {
    "Webhook (von post.py)": {
      "main": [
        [
          {
            "node": "Text bauen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Text bauen": {
      "main": [
        [
          {
            "node": "LinkedIn posten",
            "type": "main",
            "index": 0
          },
          {
            "node": "X / Twitter posten",
            "type": "main",
            "index": 0
          },
          {
            "node": "Mastodon posten",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  }
}
Pro

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

About this workflow

aban — Publish Fanout. Uses linkedIn, twitter, httpRequest. Webhook trigger; 6 nodes.

Source: https://github.com/allengchour-glitch/aban-news-landing/blob/85bdc765a583efb1d858bf3dd90761c3d3c82c86/social/n8n-publish-workflow.json — original creator credit. Request a take-down →

More Social Media workflows → · Browse all categories →

Related workflows

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

Social Media

This workflow automates the post-publish process for YouTube videos, combining advanced SEO optimization, cross-platform promotion, and analytics reporting. It is designed for creators, marketers, and

YouTube, HTTP Request, LinkedIn +6
Social Media

Every time you publish a blog post on WordPress, this workflow automatically creates unique, platform-optimised captions for Facebook, Instagram, Twitter and LinkedIn — and publishes them all simultan

Agent, Output Parser Structured, OpenRouter Chat +3
Social Media

This n8n workflow automatically shares content from a Telegram Channel to multiple platforms like WordPress, Facebook, X/Twitter, and LinkedIn. It uses a Switch node to detect the type of content—text

Telegram Trigger, Telegram, WordPress +5
Social Media

This workflow listens to messages in a designated Telegram channel and automatically posts them to X (Twitter), Threads, and LinkedIn based on simple @mention tags. Write your content once, tag which

Twitter, LinkedIn, Telegram +2
Social Media

This workflow leverages n8n to automate LinkedIn content creation from start to finish. Upload an image and quote through a web form, and get a professionally designed post with AI-generated captions,

HTTP Request, LinkedIn, Edit Image