{
  "name": "Create & track LinkedIn posts with Google Sheets, GPT-5.1, Unsplash, and Sona",
  "nodes": [
    {
      "id": "22fd2b45-cc9c-480f-afa7-ba6d1f414f3b",
      "name": "Get Image in Unsplash",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1040,
        896
      ]
    },
    {
      "id": "63a51ad9-6aef-4c51-bea7-1776a5e5d2ae",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -896,
        -64
      ],
      "parameters": {
        "width": 592,
        "height": 1344,
        "content": "# Create & track LinkedIn posts with Google Sheets, GPT-5.1, Unsplash, and Sona\n\nThis workflow generates professional LinkedIn posts using AI, intelligently selects relevant images from Unsplash, send"
      }
    },
    {
      "id": "4471baae-6042-4fcf-b6a9-210a754802f9",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        560,
        336
      ]
    },
    {
      "id": "d31d35f6-fc11-473c-9eec-6b150abb38a2",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        752,
        336
      ]
    },
    {
      "id": "079b8cd0-f4fd-43fc-9ba5-546e6640945f",
      "name": "Post Formatter",
      "type": "n8n-nodes-base.code",
      "position": [
        1024,
        176
      ]
    },
    {
      "id": "bc13050c-aed5-4456-8bb5-ffce41b73ca5",
      "name": "AI Content Generation",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        560,
        176
      ]
    },
    {
      "id": "585276c1-d063-4e46-ad71-afcbdf492533",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -224,
        944
      ]
    },
    {
      "id": "608b97ae-afa8-4e89-bbb5-c0a1ad0c50c2",
      "name": "Format Content to HTML",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -224,
        768
      ]
    },
    {
      "id": "f02f8c32-f6d8-45a9-b678-015bd016f23d",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -224,
        240
      ]
    },
    {
      "id": "d1625e58-8812-485e-8714-ecb8de38b4d7",
      "name": "Get Post Idea",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -48,
        240
      ]
    },
    {
      "id": "a49bc318-5049-41ba-bbc4-b1a7431ed57e",
      "name": "Update Post Status",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        320,
        240
      ]
    },
    {
      "id": "c29becdf-526f-4e96-8868-066470f30db8",
      "name": "Download Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1984,
        688
      ]
    },
    {
      "id": "46f5a525-92be-4b88-832f-29451f6e7d3a",
      "name": "Convert Share Link to Download Link",
      "type": "n8n-nodes-base.code",
      "position": [
        1040,
        688
      ]
    },
    {
      "id": "760556b3-f907-45a4-8bfb-847c10f743d6",
      "name": "Create a post with image",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        2256,
        784
      ]
    },
    {
      "id": "722cb079-aab0-4ca7-86aa-8548cc188b32",
      "name": "Update Post Status to Posted",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2576,
        896
      ]
    },
    {
      "id": "4a8889f3-a1d4-4112-92b6-c75ad62913d2",
      "name": "Create a post",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        2256,
        1040
      ]
    },
    {
      "id": "eaafa7f9-a98e-4149-9c38-0612345c25de",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        -64
      ],
      "parameters": {
        "width": 784,
        "height": 592,
        "content": "## Input & Scheduling\n\nRuns daily at midnight, fetches one \"Ready\" post from Google Sheet, updates status to \"In Progress\"\n\n## Why This Matters:\n\n**Daily schedule means:**\n- ✅ More sustainable API usa"
      }
    },
    {
      "id": "1e88dd4d-1332-4d89-a3b1-793886cd64f2",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        -64
      ],
      "parameters": {
        "width": 992,
        "height": 592,
        "content": "## AI Content Generation\n\nGenerates LinkedIn post with GPT-5.1, performs quality checks (3000 char limit, min 3 hashtags). Loops back if quality check fails."
      }
    },
    {
      "id": "7285c507-af35-41d8-859c-8c657712feef",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        544
      ],
      "parameters": {
        "width": 784,
        "height": 736,
        "content": "## Approval Workflow\n\nFormats post as HTML email, sends for approval, waits for response. If approved → proceeds to publishing. If rejected → updates sheet status to \"Rejected\"."
      }
    },
    {
      "id": "8a0be26f-e653-4058-90a7-4fb7b4a23030",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        544
      ],
      "parameters": {
        "width": 1616,
        "height": 736,
        "content": "## Image Handling\n\nChecks if image link exists → converts share links to direct downloads OR generates image using Unsplash and AI to select the images."
      }
    },
    {
      "id": "69a4b4d4-12dc-42e1-a6fb-d40f725ba990",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        544
      ],
      "parameters": {
        "width": 640,
        "height": 736,
        "content": "## Publishing\n\nPosts to LinkedIn (with/without image based on previous steps), updates sheet status to \"Posted\""
      }
    },
    {
      "id": "e5527213-3c23-4496-b086-e44c1c39b401",
      "name": "Limit to One Post",
      "type": "n8n-nodes-base.limit",
      "position": [
        128,
        240
      ]
    },
    {
      "id": "18f93f44-88a9-4cfd-abc9-c15661d266c5",
      "name": "Validate Post Quality",
      "type": "n8n-nodes-base.if",
      "position": [
        1360,
        336
      ]
    },
    {
      "id": "cd18825c-d8f3-4500-b4ac-1dc6e4517c76",
      "name": "Check Email Approval",
      "type": "n8n-nodes-base.if",
      "position": [
        320,
        880
      ]
    },
    {
      "id": "97ff9b36-3420-4921-8b82-7006bf573786",
      "name": "Check Image Preference",
      "type": "n8n-nodes-base.if",
      "position": [
        592,
        1024
      ]
    },
    {
      "id": "da0c133f-c6d4-40c6-8564-f57610d55b85",
      "name": "Validate Image URL",
      "type": "n8n-nodes-base.if",
      "position": [
        768,
        704
      ]
    },
    {
      "id": "b25dec4d-2763-4cdf-9c8e-a5538c478d96",
      "name": "Update Post Status to Rejected",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        320,
        1120
      ]
    },
    {
      "id": "cc4ce5bb-f451-46f4-9ffd-d46e552aa5de",
      "name": "Choose Image",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1536,
        816
      ]
    },
    {
      "id": "150430e3-4574-42e2-8276-a1f58d4c6803",
      "name": "Get Result Descriptions and Links",
      "type": "n8n-nodes-base.code",
      "position": [
        1280,
        896
      ]
    },
    {
      "id": "98ec5394-04b7-42c1-8c55-e936228aedfc",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1728,
        960
      ]
    },
    {
      "id": "f434603d-8e51-4a26-a621-6af49a0f98d5",
      "name": "GPT-4.1-mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1536,
        960
      ]
    },
    {
      "id": "3850f990-d0c1-447d-824d-9e3324277a00",
      "name": "Send Post Preview",
      "type": "n8n-nodes-base.gmail",
      "position": [
        112,
        752
      ]
    },
    {
      "id": "9383f613-0d06-4213-9047-7b80a9c1d28b",
      "name": "Send email for confirmation",
      "type": "n8n-nodes-base.gmail",
      "position": [
        112,
        960
      ]
    }
  ],
  "connections": {
    "Choose Image": {
      "main": [
        [
          {
            "node": "Download Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4.1-mini": {
      "ai_languageModel": [
        [
          {
            "node": "Choose Image",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Create a post": {
      "main": [
        [
          {
            "node": "Update Post Status to Posted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Post Idea": {
      "main": [
        [
          {
            "node": "Limit to One Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Image": {
      "main": [
        [
          {
            "node": "Create a post with image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post Formatter": {
      "main": [
        [
          {
            "node": "Validate Post Quality",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Post Idea",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit to One Post": {
      "main": [
        [
          {
            "node": "Update Post Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Content Generation",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Send Post Preview": {
      "main": [
        [
          {
            "node": "Send email for confirmation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Format Content to HTML",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Update Post Status": {
      "main": [
        [
          {
            "node": "AI Content Generation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Image URL": {
      "main": [
        [
          {
            "node": "Convert Share Link to Download Link",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get Image in Unsplash",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Email Approval": {
      "main": [
        [
          {
            "node": "Check Image Preference",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update Post Status to Rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Content Generation": {
      "main": [
        [
          {
            "node": "Post Formatter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Image in Unsplash": {
      "main": [
        [
          {
            "node": "Get Result Descriptions and Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Post Quality": {
      "main": [
        [
          {
            "node": "Format Content to HTML",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI Content Generation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Image Preference": {
      "main": [
        [
          {
            "node": "Validate Image URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create a post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Content to HTML": {
      "main": [
        [
          {
            "node": "Send Post Preview",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a post with image": {
      "main": [
        [
          {
            "node": "Update Post Status to Posted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Content Generation",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Choose Image",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Send email for confirmation": {
      "main": [
        [
          {
            "node": "Check Email Approval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Result Descriptions and Links": {
      "main": [
        [
          {
            "node": "Choose Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert Share Link to Download Link": {
      "main": [
        [
          {
            "node": "Download Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}