Génération de contenu pour le marketing sur les médias sociaux

Avancé

Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 19 nœuds.Utilise principalement des nœuds comme If, Set, Code, GoogleDocs, GoogleSheets. Génération automatique de contenu marketing spécifique à la plateforme avec GPT-4, Google Sheets et Docs

Prérequis
  • Informations d'identification Google Sheets API
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "9wHCw6CrpD1hr2jR",
  "meta": {
    "instanceId": "0dce4a8577fc7818af4d5063da85aecc2e78c224380b158fcc7b79f366de29cf",
    "templateCredsSetupCompleted": true
  },
  "name": "Social Media Marketing Content Generation",
  "tags": [
    {
      "id": "uQd7FWi0SXP9QXfs",
      "name": "ConceptRecall",
      "createdAt": "2025-08-22T10:41:32.059Z",
      "updatedAt": "2025-08-22T10:41:32.059Z"
    }
  ],
  "nodes": [
    {
      "id": "36afa140-35c2-4431-87df-f4129a536b98",
      "name": "OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        2140,
        -820
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4",
          "cachedResultName": "GPT-4"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "={{ $json.prompt }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "",
          "name": "ChatGpt"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "2249c864-f1eb-4094-944b-e6244291e18d",
      "name": "Déclencheur de mise à jour de statut",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -820,
        -720
      ],
      "parameters": {
        "event": "rowUpdate",
        "options": {
          "columnsToWatch": [
            "Status"
          ]
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "",
          "cachedResultName": "Topics"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1R1QpTXinI8zLi5MqoiywTE5Kfr_Eb0i5N9kiJKnKn4w",
          "cachedResultUrl": "",
          "cachedResultName": "Marketing Content"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "id": "",
          "name": "Google Sheets"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b6cdcd63-1ceb-48e1-89e6-4fa81f7ad22e",
      "name": "Filtrer les lignes avec statut activé",
      "type": "n8n-nodes-base.if",
      "position": [
        -120,
        -720
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "52c7fefa-0582-4bab-9e9d-41ebacb8b2ab",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.Status }}",
              "rightValue": "Enabled"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "35a85739-721b-41db-8534-e600f2c5675c",
      "name": "Récupérer les limites des plateformes sociales",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        400,
        -740
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": false
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 106670834,
          "cachedResultUrl": "",
          "cachedResultName": "Platform Limits"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1R1QpTXinI8zLi5MqoiywTE5Kfr_Eb0i5N9kiJKnKn4w",
          "cachedResultUrl": "",
          "cachedResultName": "Marketing Content"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "zBY5kSBHNzMp7NUo",
          "name": "Google Sheets Read"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "e70be485-a1aa-4b79-9e3e-7466503861ba",
      "name": "Créer JSON pour les limites de plateforme",
      "type": "n8n-nodes-base.code",
      "position": [
        1020,
        -740
      ],
      "parameters": {
        "jsCode": "let obj = {};\n\nfor (const item of $input.all()) {\n  const platform = item.json.Platform;\n  const min = item.json.Min_Limit;\n  const max = item.json.Max_Limit;\n\n  obj[platform] = {\n    platform,\n    min: min,\n    max: max\n  };\n}\n\n// Return the object inside an array with `json` key (required by n8n)\nreturn [\n  {\n    json: obj\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "95b5e43f-8533-4ef6-8511-637df9ac04e2",
      "name": "Créer un prompt",
      "type": "n8n-nodes-base.set",
      "position": [
        1680,
        -1200
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0c6acd31-1c0b-4b3b-bd5f-9f61a93fa29a",
              "name": "prompt",
              "type": "string",
              "value": "=You are a marketing content creation AI.\nBased on the provided details, create the requested content in the correct format.\n\nDetails:\nTopic: {{ $('Filter out Enabled Status Row').first().json.Topic }}\nKeywords: {{ $('Filter out Enabled Status Row').first().json.Keyword }}\nTone: {{ $('Filter out Enabled Status Row').first().json.Tone }}\nSocial Platforms: {{ $('Filter out Enabled Status Row').first().json['Social Platform'] }}\n\nCharacter Limits by Platform:\n\nFacebook: {{ $json.Facebook.min }}–{{ $json.Facebook.max }} characters (aim for engaging and concise posts within this range)\n\nInstagram: {{ $json.Instagram.min }}–{{ $json.Instagram.max }} characters (write captivating captions, include hashtags)\n\nTwitter (X): {{ $json.Twitter.min }}–{{ $json.Twitter.max }} characters (strict limit, concise and impactful)\n\nOutput Requirements:\n\nEnsure the post fits within the respective platform's character range (min to max) and follows platform-specific best practices.\n"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "dd2e9db6-353c-4cce-b529-d1011bb5ccfe",
      "name": "Créer un nouveau document",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        2960,
        -1240
      ],
      "parameters": {
        "title": "={{ $('Update Status Trigger').first().json.Topic }} - {{ $now }}",
        "folderId": "default"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "2540c189-db5b-4565-b9e1-9449d4410100",
      "name": "Mettre à jour le document nouvellement créé",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        3620,
        -1240
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('OpenAI').first().json.message.content }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id}}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "8d4d09f7-fdaa-4be5-b6b9-c60cbf9790b4",
      "name": "Mettre à jour le statut en 'Terminé' dans la feuille",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4520,
        -460
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $('Filter out Enabled Status Row').first().json.ID }}",
            "Status": "Completed"
          },
          "schema": [
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Topic",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Topic",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Keyword",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Keyword",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tone",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Tone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Social Platform",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Social Platform",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "",
          "cachedResultName": "Topics"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1R1QpTXinI8zLi5MqoiywTE5Kfr_Eb0i5N9kiJKnKn4w",
          "cachedResultUrl": "",
          "cachedResultName": "Marketing Content"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "",
          "name": "Google Sheets Read"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "4cf64e42-2a59-4c7f-9859-042d7bde3e24",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1020,
        -1880
      ],
      "parameters": {
        "width": 940,
        "height": 760,
        "content": "# Try It Out!\n\nThis n8n workflow automates marketing content creation by generating high-quality, platform-specific posts for social media, blogs, and ad campaigns. It uses AI-driven content generation combined with dynamic templates to produce engaging, SEO-optimized content aligned with your brand voice.\n\n## How it works\n\nThe workflow triggers when the Status column is updated in the Topics Google Sheet.\n\nIt fetches platform-specific character limits to ensure compliance across channels.\n\nA custom AI prompt is created using topic details and platform rules.\n\nOpenAI GPT model generates SEO-friendly content for all selected platforms.\n\nA new Google Document is created to store the content, and the sheet is updated to mark the topic as completed.\n\n## Use cases\n\nAutomate social media copywriting for platforms like Facebook, Instagram, Twitter.\n\nGenerate SEO-optimized blog snippets or ad headlines with minimal effort.\n\nSave time and maintain brand consistency across multiple channels.\n\n## Requirements\n\nOpenAI API (for AI content generation)\n\nGoogle Sheets & Google Docs (for input and storage)"
      },
      "typeVersion": 1
    },
    {
      "id": "9a8b1fd5-8a5b-4ae7-a325-132117c96d5e",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -900,
        -540
      ],
      "parameters": {
        "width": 320,
        "height": 220,
        "content": "## Update Status Trigger\n\nThis node triggers the automation whenever a row update occurs in the Topics Google Sheet, specifically when the Status column is changed. It initiates the workflow for content generation, making it an essential part of Google Sheets automation and status-based workflow triggers."
      },
      "typeVersion": 1
    },
    {
      "id": "ec82bc9c-157b-44fa-8a64-bcf1c9604fd3",
      "name": "Note adhésive2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -220,
        -540
      ],
      "parameters": {
        "width": 320,
        "height": 240,
        "content": "## Filter Out Enabled Status Row\n\nThis step ensures only rows with the Enabled status proceed, filtering out unnecessary data to optimize workflow automation. By applying conditional logic, it keeps the process efficient and relevant for content creation tasks."
      },
      "typeVersion": 1
    },
    {
      "id": "6adcdfe0-92ca-4595-a30f-2ac065be7887",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        300,
        -540
      ],
      "parameters": {
        "width": 320,
        "height": 260,
        "content": "## Fetch Social Platform Limits\n\nThis node reads platform-specific content limits such as character count for Twitter, LinkedIn, and Instagram from a Google Sheet. It enables social media content automation by ensuring your marketing posts comply with platform rules before generation."
      },
      "typeVersion": 1
    },
    {
      "id": "427346e1-9c72-4e50-8517-051a413e43ae",
      "name": "Note adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        900,
        -540
      ],
      "parameters": {
        "width": 320,
        "height": 240,
        "content": "## Create JSON for Platform Limits\n\nHere, the platform limits are converted into structured JSON format for seamless processing in later steps. This transformation is key for accurate workflow automation, making it easy for the AI to reference platform-specific guidelines."
      },
      "typeVersion": 1
    },
    {
      "id": "0391a8ba-3f0b-49e3-8ca6-dc072850cb44",
      "name": "Note adhésive5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1560,
        -1440
      ],
      "parameters": {
        "width": 340,
        "height": 200,
        "content": "## Create Prompt\n\nThis step builds a custom AI prompt using topic details and platform rules. It lays the foundation for effective AI prompt engineering, enabling OpenAI to generate content that is both engaging and platform-ready."
      },
      "typeVersion": 1
    },
    {
      "id": "5741f277-9e76-40c6-a2a5-9f1392d0214e",
      "name": "Note adhésive6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2100,
        -560
      ],
      "parameters": {
        "width": 340,
        "height": 200,
        "content": "## OpenAI (Message Model)\n\nThe OpenAI node uses advanced GPT models to produce SEO-friendly, platform-specific marketing content. This step powers the AI copywriting automation, ensuring the output aligns with brand tone, platform limits, and campaign objectives."
      },
      "typeVersion": 1
    },
    {
      "id": "23acbbe6-bf71-4780-95d4-001aa818c4bf",
      "name": "Note adhésive7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2840,
        -1000
      ],
      "parameters": {
        "width": 340,
        "height": 220,
        "content": "## Create New Document\n\nThis node creates a new Google Document to store all generated marketing content. It streamlines Google Docs automation, offering an organized, centralized space for reviewing and managing your AI-powered marketing assets."
      },
      "typeVersion": 1
    },
    {
      "id": "53ae7f55-e557-4e07-b2b8-ee6a3c347073",
      "name": "Note adhésive8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3500,
        -1000
      ],
      "parameters": {
        "width": 360,
        "height": 220,
        "content": "## Update Newly Created Document\n\nAfter creating the document, this node updates it with the finalized AI-generated content for each platform. It ensures the document is complete and properly formatted, making it ready for marketing campaigns and team collaboration."
      },
      "typeVersion": 1
    },
    {
      "id": "c6954d57-c8fa-49ff-93b7-cb953e52f414",
      "name": "Note adhésive9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4400,
        -780
      ],
      "parameters": {
        "width": 360,
        "height": 220,
        "content": "## Update Status to Completed in Sheet\n\nThe final step updates the Status column in the Google Sheet to Completed, signaling that the topic has been successfully processed. This keeps your content pipeline transparent and supports accurate tracking of marketing workflows."
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "fef355ed-99a3-4539-b179-25316c72d8a3",
  "connections": {
    "36afa140-35c2-4431-87df-f4129a536b98": {
      "main": [
        [
          {
            "node": "dd2e9db6-353c-4cce-b529-d1011bb5ccfe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "95b5e43f-8533-4ef6-8511-637df9ac04e2": {
      "main": [
        [
          {
            "node": "36afa140-35c2-4431-87df-f4129a536b98",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dd2e9db6-353c-4cce-b529-d1011bb5ccfe": {
      "main": [
        [
          {
            "node": "2540c189-db5b-4565-b9e1-9449d4410100",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2249c864-f1eb-4094-944b-e6244291e18d": {
      "main": [
        [
          {
            "node": "b6cdcd63-1ceb-48e1-89e6-4fa81f7ad22e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "35a85739-721b-41db-8534-e600f2c5675c": {
      "main": [
        [
          {
            "node": "e70be485-a1aa-4b79-9e3e-7466503861ba",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b6cdcd63-1ceb-48e1-89e6-4fa81f7ad22e": {
      "main": [
        [
          {
            "node": "35a85739-721b-41db-8534-e600f2c5675c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2540c189-db5b-4565-b9e1-9449d4410100": {
      "main": [
        [
          {
            "node": "8d4d09f7-fdaa-4be5-b6b9-c60cbf9790b4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e70be485-a1aa-4b79-9e3e-7466503861ba": {
      "main": [
        [
          {
            "node": "95b5e43f-8533-4ef6-8511-637df9ac04e2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Création de contenu, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds19
Catégorie2
Types de nœuds8
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
ConceptRecall

ConceptRecall

@conceptrecall

Concept Recall is a software development and automation company specializing in AI-driven solutions. We help businesses of all sizes streamline processes and enhance efficiency with custom software, intelligent automation, and powerful AI tools. We have a proven track record of helping Sales & Marketing teams optimize their workflows and achieve their goals. Our expertise lies in leveraging cutting-edge technology to build scalable and sustainable solutions.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34