{
  "name": "Auto-publish new WordPress posts to Pinterest with PinBridge",
  "nodes": [
    {
      "id": "c4e5be13-21a3-4801-8999-a5b04c4e7aa8",
      "name": "Get Latest WordPress Posts",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        928,
        576
      ]
    },
    {
      "id": "046ba645-ed8e-429d-968f-2f6dabab655b",
      "name": "Build Pin Payload from Post",
      "type": "n8n-nodes-base.set",
      "position": [
        1888,
        560
      ]
    },
    {
      "id": "6714ee0a-89ae-4ee9-8b6e-2357c44ed602",
      "name": "Validate Required Fields",
      "type": "n8n-nodes-base.if",
      "position": [
        2128,
        560
      ]
    },
    {
      "id": "8ab13a76-8445-42a3-a602-027df76f5fa3",
      "name": "Upload Image to PinBridge",
      "type": "n8n-nodes-pinbridge.pinBridge",
      "position": [
        2880,
        544
      ]
    },
    {
      "id": "42ead53d-de04-4d88-bc04-1080291f5fca",
      "name": "Publish to Pinterest",
      "type": "n8n-nodes-pinbridge.pinBridge",
      "position": [
        3120,
        544
      ]
    },
    {
      "id": "58122451-ba1c-4575-902f-b4b717b4ea5e",
      "name": "Build Success Result",
      "type": "n8n-nodes-base.set",
      "position": [
        3360,
        544
      ]
    },
    {
      "id": "a0e1e84b-821c-4ac7-b9ac-b571d4e54e6e",
      "name": "Build Invalid Result",
      "type": "n8n-nodes-base.code",
      "position": [
        2096,
        1024
      ]
    },
    {
      "id": "4c8987bd-ae1b-4411-88d9-f3aef5584385",
      "name": "Download Featured Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2640,
        544
      ]
    },
    {
      "id": "fa7c50c3-819f-4e23-aa6e-ecd617ebd868",
      "name": "List pins",
      "type": "n8n-nodes-pinbridge.pinBridge",
      "position": [
        448,
        576
      ]
    },
    {
      "id": "c3f82872-68df-4c11-a4f7-c930fdf46f74",
      "name": "Published Titles",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        688,
        576
      ]
    },
    {
      "id": "1cfc59cd-f39c-45a1-8ce3-248f1564ac67",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        208,
        576
      ]
    },
    {
      "id": "56ed507b-a60a-4520-a8f5-4f8cced117ce",
      "name": "Skip Posts Invalid Posts",
      "type": "n8n-nodes-base.if",
      "position": [
        1344,
        576
      ]
    },
    {
      "id": "f7185abb-5066-4cf7-9a1d-3326d6e996a4",
      "name": "Sticky Note - Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -256
      ],
      "parameters": {
        "width": 860,
        "height": 448,
        "content": "# Publish WordPress posts to Pinterest with duplicate protection\n\nThis template uses **WordPress as the content source**, **n8n as the orchestration layer**, and **PinBridge as the publishing layer**."
      }
    },
    {
      "id": "4d9b6869-e0ad-4a6e-b211-c82d0eb418c2",
      "name": "Sticky Note - Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        -256
      ],
      "parameters": {
        "width": 760,
        "height": 440,
        "content": "## Setup checklist\n\nBefore running this workflow, replace placeholders and connect credentials:\n\n- Add a **WordPress** credential\n- Add a **PinBridge** credential\n- Replace `https://www.mywordpresssit"
      }
    },
    {
      "id": "8cf28038-8ece-4e54-9436-0c6a72a1dd6d",
      "name": "Sticky Note - Existing pins and source posts",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        304
      ],
      "parameters": {
        "width": 904,
        "height": 448,
        "content": "## Build the reference set and fetch source posts\n\n`List pins` loads existing PinBridge pins.\n\n`Published Titles` aggregates existing titles into a single list that the workflow uses as a lightweight "
      }
    },
    {
      "id": "8d76d1fe-ebc7-4e20-96d4-092ae32410eb",
      "name": "Sticky Note - Skip invalid posts",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        304
      ],
      "parameters": {
        "width": 588,
        "height": 448,
        "content": "## Skip invalid posts early\n\n`Skip Posts Invalid Posts` is the first protection layer.\n\nA post continues only when:\n- featured media exists with a usable source URL\n- the cleaned WordPress title is **"
      }
    },
    {
      "id": "39b9567d-7b04-40d5-a103-5557900056af",
      "name": "Sticky Note - Build and validate payload",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1760,
        304
      ],
      "parameters": {
        "width": 668,
        "height": 456,
        "content": "## Build a publish-ready payload\n\n`Build Pin Payload from Post` maps WordPress data into:\n- `post_id` | `title` | `description` | `link_url` | `image_url` | `alt_text`\n\n\n`Validate Required Fields` the"
      }
    },
    {
      "id": "0c074d13-fce2-4db0-8441-9823ac2aafb5",
      "name": "Sticky Note - Publish path",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2512,
        304
      ],
      "parameters": {
        "width": 1048,
        "height": 452,
        "content": "## Valid posts: download, upload, submit\n\nFor valid posts, the workflow:\n1. Downloads the full-size featured image\n2. Uploads the image asset to PinBridge\n3. Submits the Pinterest publish job\n4. Build"
      }
    },
    {
      "id": "0a3e6072-9786-481f-9b7f-f5f8cd5007e3",
      "name": "Sticky Note - Invalid result branch",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2064,
        816
      ],
      "parameters": {
        "width": 540,
        "height": 376,
        "content": "## Invalid result branch\n\nIf required fields are missing after payload construction, `Build Invalid Result` returns a structured object instead of attempting submission.\n\nThis keeps incomplete content"
      }
    },
    {
      "id": "13067a5d-9d30-402c-88c1-ef41a182feb1",
      "name": "Sticky Note - Scope",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1872,
        -256
      ],
      "parameters": {
        "width": 708,
        "height": 448,
        "content": "## What this template covers\n\nThis template is intentionally scoped to:\n- list existing pins\n- fetch WordPress posts\n- skip invalid or already-published posts\n- submit new publish jobs\n- return struct"
      }
    }
  ],
  "connections": {
    "List pins": {
      "main": [
        [
          {
            "node": "Published Titles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Trigger": {
      "main": [
        [
          {
            "node": "List pins",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Published Titles": {
      "main": [
        [
          {
            "node": "Get Latest WordPress Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish to Pinterest": {
      "main": [
        [
          {
            "node": "Build Success Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Featured Image": {
      "main": [
        [
          {
            "node": "Upload Image to PinBridge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Skip Posts Invalid Posts": {
      "main": [
        [
          {
            "node": "Build Pin Payload from Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Required Fields": {
      "main": [
        [
          {
            "node": "Download Featured Image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Invalid Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Image to PinBridge": {
      "main": [
        [
          {
            "node": "Publish to Pinterest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Latest WordPress Posts": {
      "main": [
        [
          {
            "node": "Skip Posts Invalid Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Pin Payload from Post": {
      "main": [
        [
          {
            "node": "Validate Required Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}