AutomationFlowsAI & RAG › Auto-generate & Post Social Media Content with Gpt-4, Notion & Instagram API

Auto-generate & Post Social Media Content with Gpt-4, Notion & Instagram API

BySupira Inc. @supira on n8n.io

How It Works

Webhook trigger★★★★☆ complexityAI-powered17 nodesNotionOpenAIHTTP Request
AI & RAG Trigger: Webhook Nodes: 17 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8553 — we link there as the canonical source.

This workflow follows the HTTP Request → Notion 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
{
  "id": "A90U504fcvjJqgF5",
  "name": "SNS Auto-Poster with Notion & GPT-4 (Instagram Auto + Threads/X/Blog Drafts)",
  "tags": [],
  "nodes": [
    {
      "id": "feef23dc-de7b-426f-9e86-26e3ba755c16",
      "name": "Step 1: Input",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        -64
      ],
      "parameters": {
        "width": 464,
        "height": 448,
        "content": "# Step 1: Input\n\n- Receive raw text via Webhook (e.g., LINE Bot)\n- Save input automatically into Notion database"
      },
      "typeVersion": 1
    },
    {
      "id": "a58fb4c9-73e7-486b-aaa4-8bb537c63117",
      "name": "Step 2: Generate Captions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        -64
      ],
      "parameters": {
        "color": 3,
        "width": 2224,
        "height": 448,
        "content": "# Step 2: Generate Captions\n\n- Use GPT-4o to create captions for multiple platforms\n- Instagram (for auto-post), Threads, X/Twitter, Blog (draft only)\n- Save all drafts back into Notion for tracking and reuse"
      },
      "typeVersion": 1
    },
    {
      "id": "60353fc8-ea55-46a6-af74-744ff9bc99cf",
      "name": "Step 3: Image Handling",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2416,
        -64
      ],
      "parameters": {
        "color": 4,
        "width": 416,
        "height": 448,
        "content": "# Step 3: Image Handling\n\n- Fetch book cover image from external APIs (Google Books, OpenBD, OpenLibrary)\n- Upload selected image to Cloudinary\n- Generate final optimized URL for Instagram posting"
      },
      "typeVersion": 1
    },
    {
      "id": "d6e2fe83-ee28-4917-962b-7d3eff5e3be7",
      "name": "Step 4: Instagram Publish",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2864,
        -64
      ],
      "parameters": {
        "color": 6,
        "width": 384,
        "height": 448,
        "content": "# Step 4: Instagram Publish\n\n- Create a media container via Instagram Graph API\n- Publish automatically with the generated caption + image\n- Verify post status before final publishing"
      },
      "typeVersion": 1
    },
    {
      "id": "77eac861-c22d-46b9-b321-91f275c7e2a9",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "notes": "Receive text input (from LINE or other source).",
      "position": [
        -288,
        160
      ],
      "parameters": {
        "path": "line-book-output",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "=onReceived"
      },
      "typeVersion": 2
    },
    {
      "id": "d9caab24-f532-455a-b19d-d9cff6dc1fe1",
      "name": "Notion Page Create",
      "type": "n8n-nodes-base.notion",
      "notes": "Create a new Notion page with input text.",
      "position": [
        -64,
        160
      ],
      "parameters": {
        "options": {},
        "resource": "databasePage",
        "databaseId": "<your_database_id>",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Title|title",
              "textContent": "={{ $json.body.events[0].message.text }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "bf244b57-2dcf-4232-9460-e77c882d5982",
      "name": "Instagram Caption Generate",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "Generate Instagram caption using GPT-4.",
      "position": [
        160,
        160
      ],
      "parameters": {
        "modelId": {
          "mode": "list",
          "value": "chatgpt-4o-latest"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Summarize for Instagram (<=1000 chars, include hashtags):\n{{ $json.name }}"
            }
          ]
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "f10bfbfa-031b-4299-b4d4-f91707ced60c",
      "name": "Instagram Caption Save",
      "type": "n8n-nodes-base.notion",
      "position": [
        512,
        160
      ],
      "parameters": {
        "pageId": {
          "mode": "url",
          "value": "={{ $('Notion Page Create').item.json.url }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Instagram Caption|rich_text",
              "textContent": "={{ $json.message.content }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "2f1034e6-61fc-4c78-adfd-dd4d02b8dbe5",
      "name": "Threads Caption Generate",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        736,
        160
      ],
      "parameters": {
        "modelId": {
          "mode": "list",
          "value": "chatgpt-4o-latest"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Summarize for Threads (<=500 chars, include hashtags):\n{{ $json.name }}"
            }
          ]
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "7d9b7435-1580-40fb-8b4d-e3e9fa1364fe",
      "name": "Threads Caption Save",
      "type": "n8n-nodes-base.notion",
      "position": [
        1088,
        160
      ],
      "parameters": {
        "pageId": {
          "mode": "url",
          "value": "={{ $('Notion Page Create').item.json.url }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Threads Caption|rich_text",
              "textContent": "={{ $json.message.content }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e71cc3dd-4c56-46f5-b590-8a6bab4c33b7",
      "name": "X Caption Generate",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1312,
        160
      ],
      "parameters": {
        "modelId": {
          "mode": "list",
          "value": "chatgpt-4o-latest"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Summarize for X/Twitter (<=280 chars, include hashtags):\n{{ $json.name }}"
            }
          ]
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "d9ed8fd0-cfa5-4e3f-84b8-b4c45d5ada00",
      "name": "X Caption Save",
      "type": "n8n-nodes-base.notion",
      "position": [
        1664,
        160
      ],
      "parameters": {
        "pageId": {
          "mode": "url",
          "value": "={{ $('Notion Page Create').item.json.url }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "X Caption|rich_text",
              "textContent": "={{ $json.message.content }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "bb04cea6-8bfe-4167-a688-74f0b56bdef8",
      "name": "Blog Draft Generate",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1888,
        160
      ],
      "parameters": {
        "modelId": {
          "mode": "list",
          "value": "chatgpt-4o-latest"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Rewrite into blog article (<=1800 chars, include Title, TOC, Body):\n{{ $json.name }}"
            }
          ]
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "ba0f53a5-ac72-4fc6-925e-8bee44e32b32",
      "name": "Blog Draft Save",
      "type": "n8n-nodes-base.notion",
      "position": [
        2240,
        160
      ],
      "parameters": {
        "pageId": {
          "mode": "url",
          "value": "={{ $('Notion Page Create').item.json.url }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Blog Draft|rich_text",
              "textContent": "={{ $json.message.content }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "813fdc45-f135-4f91-a35a-7711f86de3f4",
      "name": "Upload to Cloudinary",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2464,
        160
      ],
      "parameters": {
        "url": "https://api.cloudinary.com/v1_1/<your_cloud_name>/image/upload",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data1"
            },
            {
              "name": "folder",
              "value": "ig/books"
            },
            {
              "name": "public_id",
              "value": "=ig_books_{{ $json.isbn13 || Date.now() }}_cover"
            },
            {
              "name": "upload_preset",
              "value": "<your_upload_preset>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "74721ffb-a236-4fdf-b4c0-23745f357c65",
      "name": "Instagram Media Container",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2688,
        160
      ],
      "parameters": {
        "url": "https://graph.facebook.com/v23.0/17841458946648987/media",
        "method": "POST",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "access_token",
              "value": "={{$env.IG_ACCESS_TOKEN}}"
            },
            {
              "name": "image_url",
              "value": "={{$('Upload to Cloudinary').item.json.secure_url}}"
            },
            {
              "name": "caption",
              "value": "={{ $('Instagram Caption Save').item.json[\"Instagram Caption|rich_text\"][0].plain_text }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9e25da48-1164-4b10-94c7-2108cdbd67ff",
      "name": "Instagram Publish",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2992,
        160
      ],
      "parameters": {
        "url": "https://graph.facebook.com/v23.0/17841458946648987/media_publish",
        "method": "POST",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "creation_id",
              "value": "={{ $('Instagram Media Container').item.json.id }}"
            },
            {
              "name": "access_token",
              "value": "={{$env.IG_ACCESS_TOKEN}}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "840dc1ba-d065-490f-85da-563e46ebe80d",
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Notion Page Create",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "X Caption Save": {
      "main": [
        [
          {
            "node": "Blog Draft Generate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Blog Draft Save": {
      "main": [
        [
          {
            "node": "Upload to Cloudinary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion Page Create": {
      "main": [
        [
          {
            "node": "Instagram Caption Generate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "X Caption Generate": {
      "main": [
        [
          {
            "node": "X Caption Save",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Blog Draft Generate": {
      "main": [
        [
          {
            "node": "Blog Draft Save",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Threads Caption Save": {
      "main": [
        [
          {
            "node": "X Caption Generate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to Cloudinary": {
      "main": [
        [
          {
            "node": "Instagram Media Container",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Instagram Caption Save": {
      "main": [
        [
          {
            "node": "Threads Caption Generate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Threads Caption Generate": {
      "main": [
        [
          {
            "node": "Threads Caption Save",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Instagram Media Container": {
      "main": [
        [
          {
            "node": "Instagram Publish",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Instagram Caption Generate": {
      "main": [
        [
          {
            "node": "Instagram Caption Save",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

How It Works

Source: https://n8n.io/workflows/8553/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

📦 n8n Template Submission – “7-Day Content Bloom” by Shelly-Ann Davy, The Workflow Muse

Notion Trigger, HTTP Request, OpenAI +1
AI & RAG

This powerful n8n automation workflow is designed to execute advanced B2B lead enrichment and hyper-personalization for cold email outreach. By orchestrating a complex chain of data scraping, AI analy

OpenAI, HTTP Request, Airtable
AI & RAG

Eu Clara – Funil Kiwify Completo. Uses postgres, openAi, httpRequest, gmail. Webhook trigger; 70 nodes.

Postgres, OpenAI, HTTP Request +1
AI & RAG

This workflow bridges the gap between raw product data and revenue sales tools. It automates the entire Product Qualified Lead (PQL) lifecycle—from real-time intent routing to churn prevention—reducin

HTTP Request, Anthropic, OpenAI
AI & RAG

Lua Nova - Sistema Completo. Uses postgres, httpRequest, openAi. Webhook trigger; 55 nodes.

Postgres, HTTP Request, OpenAI