AutomationFlowsMarketing & Ads › GoBot - Scheduled Content Posting

GoBot - Scheduled Content Posting

GoBot - Scheduled Content Posting. Uses scheduleTrigger, airtable, splitInBatches, httpRequest. Scheduled trigger; 6 nodes.

Cron / scheduled trigger★★★★☆ complexity6 nodesAirtableHttp Request
Marketing & Ads Trigger: Cron / scheduled Nodes: 6 Complexity: ★★★★☆

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
{
  "name": "GoBot - Scheduled Content Posting",
  "nodes": [
    {
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        250,
        300
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 30 7,30 16,0 21 * * *"
            }
          ]
        }
      },
      "notes": "Triggers at 07:30, 16:30, and 21:00 daily"
    },
    {
      "name": "Get Scheduled Posts from Airtable",
      "type": "n8n-nodes-base.airtable",
      "position": [
        470,
        300
      ],
      "parameters": {
        "operation": "list",
        "application": "{{ $env.AIRTABLE_BASE_ID }}",
        "table": "Content Calendar",
        "filterByFormula": "AND({Status}='Scheduled', {Scheduled Date}=TODAY(), {Scheduled Time}=DATETIME_FORMAT(NOW(), 'HH:mm'))"
      },
      "notes": "Fetches posts scheduled for right now"
    },
    {
      "name": "Loop Through Posts",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        690,
        300
      ],
      "parameters": {
        "batchSize": 1,
        "options": {
          "reset": false
        }
      }
    },
    {
      "name": "Parse Platforms",
      "type": "n8n-nodes-base.set",
      "position": [
        910,
        300
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "text",
              "value": "={{ $json.fields.Caption }}"
            },
            {
              "name": "platforms",
              "value": "={{ $json.fields.Platforms }}"
            },
            {
              "name": "mediaUrls",
              "value": "={{ $json.fields['Media URLs'] || '[]' }}"
            },
            {
              "name": "recordId",
              "value": "={{ $json.id }}"
            }
          ]
        }
      }
    },
    {
      "name": "Post via Blotato",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1130,
        300
      ],
      "parameters": {
        "method": "POST",
        "url": "={{ $env.APP_URL }}/api/blotato/post",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "text",
              "value": "={{ $json.text }}"
            },
            {
              "name": "mediaUrls",
              "value": "={{ JSON.parse($json.mediaUrls) }}"
            },
            {
              "name": "platforms",
              "value": "={{ $json.platforms.split(',').map(p => p.trim()) }}"
            },
            {
              "name": "airtableRecordId",
              "value": "={{ $json.recordId }}"
            }
          ]
        }
      },
      "notes": "Posts to all platforms via GoBot API \u2192 Blotato"
    },
    {
      "name": "Log to Airtable",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1350,
        300
      ],
      "parameters": {
        "operation": "create",
        "application": "{{ $env.AIRTABLE_BASE_ID }}",
        "table": "Automation Log",
        "fields": {
          "Action Type": "Scheduled Post",
          "Action Details": "Posted content via n8n schedule trigger",
          "Status": "Success",
          "Triggered By": "n8n Scheduler",
          "Triggered At": "={{ new Date().toISOString() }}",
          "Content Record ID": "={{ $json.recordId }}"
        }
      }
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Scheduled Posts from Airtable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Scheduled Posts from Airtable": {
      "main": [
        [
          {
            "node": "Loop Through Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Through Posts": {
      "main": [
        [
          {
            "node": "Parse Platforms",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Platforms": {
      "main": [
        [
          {
            "node": "Post via Blotato",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post via Blotato": {
      "main": [
        [
          {
            "node": "Log to Airtable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

About this workflow

GoBot - Scheduled Content Posting. Uses scheduleTrigger, airtable, splitInBatches, httpRequest. Scheduled trigger; 6 nodes.

Source: https://github.com/TumeloRamaphosa/Larry-Marketing-Brain-/blob/372b1ee169e6eae583a5ded26cb1f65ef47ba927/n8n-workflows/scheduled-posting.json — original creator credit. Request a take-down →

More Marketing & Ads workflows → · Browse all categories →