Planification des Reels Instagram avec Google Sheets, Drive et Cloudinary (fuseau horaire local)

Intermédiaire

Ceci est unSocial Mediaworkflow d'automatisation du domainecontenant 14 nœuds.Utilise principalement des nœuds comme Set, Wait, GoogleDrive, HttpRequest, GoogleSheets. Publication automatique des Reels Instagram avec Google Drive, Cloudinary et Sheets

Prérequis
  • Informations d'identification Google Drive API
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Informations d'identification Google Sheets API
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": "JEi8YuD1uPNaoepv",
  "meta": {
    "instanceId": "2df08f928998d4e5d8b5a6b8a989bb8e91873e1415dd987955b920ab774cea97",
    "templateCredsSetupCompleted": true
  },
  "name": "N0006_Schedule Instagram Reels (local timezone) with Google Sheets, Drive & Cloudinary",
  "tags": [],
  "nodes": [
    {
      "id": "0357178e-fb26-4964-8228-921f83aaef06",
      "name": "Déclencheur de planification",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -660,
        200
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8b542a21-1ee8-45d7-adbb-d1708b349355",
      "name": "Obtenir l'exécution pour les contenus Instagram",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -420,
        200
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "Reel",
              "lookupColumn": "Type"
            },
            {
              "lookupValue": "Scheduled to post",
              "lookupColumn": "Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1315784118,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TjZL_eWbs01DdRYs8pJNDr5UMXzYe8u311o6rVUwjdg/edit#gid=1315784118",
          "cachedResultName": "Execute "
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1TjZL_eWbs01DdRYs8pJNDr5UMXzYe8u311o6rVUwjdg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TjZL_eWbs01DdRYs8pJNDr5UMXzYe8u311o6rVUwjdg/edit?usp=drivesdk",
          "cachedResultName": "0006_Master"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "fYJtZaGhyPBxT6ua",
          "name": "Google Drive/Sheet account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "f83b5a42-73b6-452a-998e-d7f47e73feb7",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -180,
        60
      ],
      "parameters": {
        "width": 284,
        "height": 354,
        "content": "### Note: \nThe Google Drive folder needs to be shared publicly (Anyone with the link can view)"
      },
      "typeVersion": 1
    },
    {
      "id": "32dc3be3-b6ba-41f4-af15-ac9e5f36ff58",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        340,
        60
      ],
      "parameters": {
        "width": 304,
        "height": 354,
        "content": "After creating account and folder on Cloudinary, make sure to update the following:\n<your-cloud-name>\n<your_upload_preset>\nto match your settings"
      },
      "typeVersion": 1
    },
    {
      "id": "288d81c8-3f6c-4404-9ad5-c70f28fae05f",
      "name": "Configuration pour Instagram (access token, ig_business_id)",
      "type": "n8n-nodes-base.set",
      "position": [
        780,
        200
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5b2dad43-2ec9-4bc0-8427-c9bab6a5fc2c",
              "name": "access_token",
              "type": "string",
              "value": "<your-instagram-access-token>"
            },
            {
              "id": "55b08009-fd62-44b8-b21e-6dde6aa9594f",
              "name": "ig_user_id",
              "type": "string",
              "value": "<your-ig_user_id>"
            },
            {
              "id": "53127a63-5583-4a5b-84bf-d2efd439af2b",
              "name": "image_url",
              "type": "string",
              "value": "={{ $json.url }}"
            },
            {
              "id": "90a680ca-49c2-4b83-bbf4-45614e882c01",
              "name": "caption",
              "type": "string",
              "value": "={{ $('Get video list from a Google Drive folder').item.json['Expected content'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "68f4f02d-011b-42cd-937f-6f2aa55d5f04",
      "name": "Mettre à jour l'exécution en \"Traité\"",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1620,
        200
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Processed",
            "ExecuteId": "={{ $json.ExecuteId }}"
          },
          "schema": [
            {
              "id": "ExecuteId",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ExecuteId",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Folder",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Folder",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Expected content",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Expected content",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Language",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Language",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Type",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "schedule_at",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "schedule_at",
              "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": [
            "ExecuteId"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1315784118,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WEUHeQXFMYsWVAW3DykWwpANxxD3DxH-S6c0i06dW1g/edit#gid=1315784118",
          "cachedResultName": "Execute "
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1vkawOzltRju_g313gM6ysbn-n2TkMrMtvwCfTizQU4Y",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vkawOzltRju_g313gM6ysbn-n2TkMrMtvwCfTizQU4Y/edit?usp=drivesdk",
          "cachedResultName": "0005_Master"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "fYJtZaGhyPBxT6ua",
          "name": "Google Drive/Sheet account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "ccad3cfd-4158-4ba7-bfb9-0855c5286e6e",
      "name": "Télécharger la vidéo (Reel) depuis Drive Google (Carrousel)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        180,
        200
      ],
      "parameters": {
        "url": "=https://drive.google.com/uc?export=download&id={{ $json.id }}",
        "options": {
          "response": {
            "response": {
              "fullResponse": true,
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "988c111d-38c8-4e97-b962-db65d9731f39",
      "name": "Téléverser les vidéos sur Cloudinary",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        440,
        200
      ],
      "parameters": {
        "url": "https://api.cloudinary.com/v1_1/<your-cloud-name>/video/upload",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "file",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "=data"
            },
            {
              "name": "upload_preset",
              "value": "<your_upload_preset>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "fed72c81-9760-4349-ad6d-7571083ec69a",
      "name": "Créer un conteneur média (Reels)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1040,
        200
      ],
      "parameters": {
        "url": "=https://graph.instagram.com/v23.0/{{ $json.ig_user_id }}/media",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "sendBody": true,
        "contentType": "form-urlencoded",
        "bodyParameters": {
          "parameters": [
            {
              "name": "video_url",
              "value": "={{ $json.video_url }}"
            },
            {
              "name": "caption",
              "value": "={{ $json.caption }}"
            },
            {
              "name": "access_token",
              "value": "={{ $json.access_token }}"
            },
            {
              "name": "media_type",
              "value": "REELS"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ec04e6e4-b2ec-4d0b-9642-ac016778b711",
      "name": "Publier les Reels Instagram",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1400,
        200
      ],
      "parameters": {
        "url": "=https://graph.instagram.com/v23.0/{{ $('Setup for Instagram (access token, ig_business_id)').first().json.ig_user_id }}/media_publish",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "creation_id",
              "value": "={{ $json.body.id }}"
            },
            {
              "name": "access_token",
              "value": "={{ $('Setup for Instagram (access token, ig_business_id)').first().json.access_token }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8dec47fa-58a6-43c3-89da-769acc7818dc",
      "name": "Attente",
      "type": "n8n-nodes-base.wait",
      "position": [
        1220,
        200
      ],
      "webhookId": "6756ecda-85e9-4fb7-8871-86fd12b1fa3c",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "4d87caa0-01fd-45b0-a1fc-b0cfda42278c",
      "name": "Obtenir la liste des vidéos depuis un dossier Drive Google",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -80,
        200
      ],
      "parameters": {
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "url",
            "value": "={{ $json.Folder }}"
          }
        },
        "options": {
          "fields": [
            "id",
            "name",
            "thumbnailLink",
            "webViewLink"
          ]
        },
        "resource": "fileFolder",
        "returnAll": true,
        "queryString": "="
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "4TPyxdrYHCrliUg8",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "781d5f70-566f-4389-bac1-717fc41d3f14",
      "name": "Note adhésive2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1620,
        -220
      ],
      "parameters": {
        "width": 884,
        "height": 1114,
        "content": "# 📹 Instagram Reels Auto-Posting Workflow\n\nThis n8n workflow automates the process of downloading a video from Google Drive, uploading it to Cloudinary, and posting it as a Reel to Instagram.\n\n## 🧭 Flow Overview\n\n1. **Schedule Trigger**  \n   - Runs the workflow at regular intervals (e.g., hourly, daily).\n\n2. **Google Sheet: Get Scheduled Content**  \n   - Retrieves rows with Reel that are Scheduled to post. ([Sample link](https://docs.google.com/spreadsheets/d/1TjZL_eWbs01DdRYs8pJNDr5UMXzYe8u311o6rVUwjdg/edit?usp=sharing))\n\n3. **Google Drive: Get Video Info**  \n   - Note: The video folders need to be set as \"Anyone with the link can view\"\n\n4. **HTTP Request: Download Video**  \n\n5. **HTTP Request: Upload to Cloudinary**  \n\n6. **Set Instagram Post Data**  \n   - Prepares the following parameters:\n     - `video_url`: from Cloudinary response\n     - `caption`: from Google Sheet content\n     - `access_token`, `ig_user_id`: from credentials or variables\n\n7. **HTTP Request: Create Media Container**  \n\n8. **Wait**  \n   - Adds a short delay (e.g., 5 seconds) for media processing.\n\n9. **HTTP Request: Publish Reels**  \n\n10. **Google Sheet: Update Status**  \n    - Marks the content as `Posted` or `Processed` in your spreadsheet.\n\n---\n\n## ⚙️ Example Setup\n\n- Google Drive: A shared folder with `.mp4` videos (The folders need to be set as \"Anyone with the link can view\"\n- Cloudinary: Active account with video upload preset\n- Instagram: Business account connected to Facebook Page\n- Sheets: A list of planned posts with columns like:\n  - `Video Name`, `Type`, `Caption`, `Status`\n"
      },
      "typeVersion": 1
    },
    {
      "id": "63c5ef3e-d582-4bc4-8ce5-d44d8cf57256",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        680,
        60
      ],
      "parameters": {
        "width": 304,
        "height": 354,
        "content": "Update your Instagram's access token and user_id:\n<your-instagram-access-token>\n<your-ig_user_id>\nto match your settings"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "ce4fedad-e92f-4352-875e-6ca7044106ed",
  "connections": {
    "8dec47fa-58a6-43c3-89da-769acc7818dc": {
      "main": [
        [
          {
            "node": "ec04e6e4-b2ec-4d0b-9642-ac016778b711",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0357178e-fb26-4964-8228-921f83aaef06": {
      "main": [
        [
          {
            "node": "8b542a21-1ee8-45d7-adbb-d1708b349355",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ec04e6e4-b2ec-4d0b-9642-ac016778b711": {
      "main": [
        [
          {
            "node": "68f4f02d-011b-42cd-937f-6f2aa55d5f04",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "988c111d-38c8-4e97-b962-db65d9731f39": {
      "main": [
        [
          {
            "node": "288d81c8-3f6c-4404-9ad5-c70f28fae05f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fed72c81-9760-4349-ad6d-7571083ec69a": {
      "main": [
        [
          {
            "node": "8dec47fa-58a6-43c3-89da-769acc7818dc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8b542a21-1ee8-45d7-adbb-d1708b349355": {
      "main": [
        [
          {
            "node": "4d87caa0-01fd-45b0-a1fc-b0cfda42278c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4d87caa0-01fd-45b0-a1fc-b0cfda42278c": {
      "main": [
        [
          {
            "node": "ccad3cfd-4158-4ba7-bfb9-0855c5286e6e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ccad3cfd-4158-4ba7-bfb9-0855c5286e6e": {
      "main": [
        [
          {
            "node": "988c111d-38c8-4e97-b962-db65d9731f39",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "288d81c8-3f6c-4404-9ad5-c70f28fae05f": {
      "main": [
        [
          {
            "node": "fed72c81-9760-4349-ad6d-7571083ec69a",
            "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é ?

Intermédiaire - Réseaux sociaux

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.

Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds14
Catégorie1
Types de nœuds7
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34