This workflow corresponds to n8n.io template #8349 — we link there as the canonical source.
This workflow follows the Agent → Google Calendar 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 →
{
"nodes": [
{
"id": "sticky_main_001",
"name": "Sticky Note - Main Description",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-300
],
"parameters": {
"color": 4,
"width": 1000,
"height": 900,
"content": "## \ud83d\udccc Karaage Pops - Messenger Order Automation\n\nThis workflow automates **Facebook Messenger order management** by connecting Messenger \u2192 Google Sheets \u2192 Google Calendar. It parses customer messages, logs orders, and schedules fulfillment.\n\n### \ud83e\uddfe What it does\n- Listens to incoming customer messages on Facebook Messenger.\n- Sends greeting + order form.\n- Uses AI to parse customer responses.\n- Saves details to Google Sheets.\n- Creates calendar events for delivery/pickup.\n- Sends confirmation + upsell message.\n\n### \ud83d\udee0 Requirements\n- **Facebook Page** + Page Access Token from Meta.\n- **Google Sheets** with columns: `Date`, `Time`, `Order`, `Full Name`, `Contact Number`, `Delivery Address`.\n- **Google Calendar** for scheduling.\n- **n8n instance** (self-hosted or cloud).\n\n### \ud83d\udd11 Environment variables (place these as n8n credentials or env vars)\n| Variable | Purpose | Example |\n|---|---:|---|\n| `FB_PAGE_ID` | Facebook Page ID | `123456789` |\n| `FB_PAGE_ACCESS_TOKEN` | Long-lived Page token | `EAAG...` |\n| `FB_VERIFY_TOKEN` | For webhook validation | `random-string` |\n| `YOUR_GOOGLE_SHEET_ID` | Google Sheet document ID | `1AbCdEfG...` |\n| `YOUR_SHEET_GID_OR_NAME` | Sheet name or GID | `Sheet1` |\n| `YOUR_GOOGLE_CALENDAR_EMAIL` | Calendar where events are added | `you@email.com` |\n\n### \u26a0\ufe0f Troubleshooting\n- **Webhook not triggering?** Ensure Facebook App is in Live Mode, webhook URL is reachable, and the verify token matches.\n- **No Sheet rows after import?** Share the sheet with the connected Google account and verify headers match exactly.\n- **AI not parsing orders?** Check the OpenRouter model credentials and that model name is valid. Also test with simple messages.\n- **403 / permission errors?** Confirm tokens and credentials are correctly set in n8n Credentials, not in node JSON.\n\n---\n\u2705 **Next steps:** Clone this workflow, connect credentials, add a screenshot/loom video (recommended), then resubmit to n8n.\n"
},
"typeVersion": 1
},
{
"id": "sticky_webhook_002",
"name": "Sticky Note - Webhook",
"type": "n8n-nodes-base.stickyNote",
"position": [
-300,
-100
],
"parameters": {
"color": 1,
"width": 360,
"height": 220,
"content": "### Webhook & Validation\n- This area handles Facebook verification (hub.challenge) and incoming messenger events.\n- Set `FB_VERIFY_TOKEN` in Facebook Developer Dashboard to match the placeholder.\n- `path`: `fb-messenger-webhook` (copy the full webhook URL and add to your FB App webhook settings)."
},
"typeVersion": 1
},
{
"id": "sticky_ai_003",
"name": "Sticky Note - AI Agent",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
520
],
"parameters": {
"color": 1,
"width": 340,
"height": 220,
"content": "### AI Agent & Memory Buffer\n- The AI Agent (LangChain) reads the raw message and returns a friendly conversational reply or structured order prompt.\n- Memory Buffer keeps a session per customer (`sessionKey` uses sender.id) so the agent can maintain context during the conversation.\n- Adjust the system prompt inside the AI Agent node to customize behavior."
},
"typeVersion": 1
},
{
"id": "sticky_parse_004",
"name": "Sticky Note - Parsing",
"type": "n8n-nodes-base.stickyNote",
"position": [
1800,
520
],
"parameters": {
"color": 1,
"width": 380,
"height": 200,
"content": "### Order Parsing & Validation\n- `Parse Order Text` converts free-form text (lines like `Full Name: ...`) into structured JSON.\n- `Validate Parsed Order` makes sure required fields (Full Name, Date, Order, Delivery Address) exist before saving."
},
"typeVersion": 1
},
{
"id": "sticky_sheets_005",
"name": "Sticky Note - Google Sheets",
"type": "n8n-nodes-base.stickyNote",
"position": [
1600,
260
],
"parameters": {
"color": 1,
"width": 380,
"height": 180,
"content": "### Google Sheets Node\n- `Append or Update Orders Sheet` appends or updates rows in your sheet.\n- Ensure the `documentId` is set to `{{YOUR_GOOGLE_SHEET_ID}}` and sheet name/GID matches `{{YOUR_SHEET_GID_OR_NAME}}`.\n- Share sheet with the Google account used in n8n credentials."
},
"typeVersion": 1
},
{
"id": "sticky_calendar_006",
"name": "Sticky Note - Google Calendar",
"type": "n8n-nodes-base.stickyNote",
"position": [
1960,
180
],
"parameters": {
"color": 1,
"width": 320,
"height": 160,
"content": "### Google Calendar\n- `Create Calendar Event` will create an event using `{{YOUR_GOOGLE_CALENDAR_EMAIL}}`.\n- Make sure the calendar email used is accessible by the connected Google account."
},
"typeVersion": 1
},
{
"id": "sticky_message_007",
"name": "Sticky Note - Confirmation Message",
"type": "n8n-nodes-base.stickyNote",
"position": [
2120,
40
],
"parameters": {
"color": 1,
"width": 360,
"height": 170,
"content": "### Messenger Confirmation\n- `Send Message to FB (Text)` and `Send Message to FB (Image)` deliver confirmation and menu images.\n- Edit payloads in HTTP nodes to customize text, images, or quick-replies."
},
"typeVersion": 1
},
{
"id": "1b74aa53-b1aa-47ed-be39-49845e2aad96",
"name": "AI Agent (Order Assistant)",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
352,
464
],
"parameters": {
"text": "={{ $json.body.entry[0].messaging[0].message.text }}",
"options": {
"systemMessage": "=### OPENING MESSAGE:\n\ud83d\udc4b Hi po! Welcome to Karaage Pops \u2013 PureGold Carmona! \ud83c\udf57\nThanks for messaging us! Here\u2019s everything you need to know:\n\n\ud83d\udccd Location: https://maps.app.goo.gl/cpbXL1vHJqtdaGyP7 (PureGold Carmona)\n\ud83d\udd59 Operating Hours: Monday to Saturday, 10AM to 7PM\n\ud83d\ude9a Delivery: Saturday\u2013Sunday only in Carmona (Min. 3 orders, \u20b130 fee)\n\n\ud83d\udd25 Our Flavors \u2013 9 Crispy Options!\nSMALL: PHP 69\nMEDIUM: PHP 99\nLARGE: PHP 129\n\nSalt & Pepper\nSpicy Buffalo \ud83c\udf36\ufe0f\nGarlic Parmesan \u2b50\nYangnyeom (Korean-style)\nSweet & Spicy\nHoney Garlic \ud83c\udf6f\nSweet Teriyaki\nLemon Pepper\nCreamy Cheese \ud83e\uddc0\n\n\ud83c\udf89 Promo Alert! Large Karaage + Rice is now just \u20b1129 (from \u20b1139)! \ud83d\udcaf\n----------------------------------------------------------------\n### Customer order - please fill out all required fields (send as a separate message):\n1. Full Name:\n2. Contact Number:\n3. Delivery Address:\n4. Time:\n5. Date:\n6. Order:\n----------------------------------------------------------------\n### UPSELL (Sent after order is received)\nWould you like to upsize or add any of the following?\n- Upgrade to Large Karaage + Rice \u2013 \u20b1129\n- Extra Rice \u2013 \u20b115\n- Coke (can) \u2013 \u20b125\n- Bottled Water \u2013 \u20b115\n\nReply with \"Add: [item]\" or \"No, thank you!\""
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.9
},
{
"id": "a5ee9486-5c65-43d8-bc4a-209d4549451d",
"name": "Memory Buffer (Customer Session)",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"notes": "Order price list and product sizing stored for quick reference.",
"position": [
272,
672
],
"parameters": {
"sessionKey": "={{ $json.body.entry[0].messaging[0].sender.id }}",
"sessionIdType": "customKey",
"contextWindowLength": 50
},
"typeVersion": 1.3
},
{
"id": "ccf97b51-a7d1-43ab-8d58-4e5f74171d99",
"name": "OpenRouter Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
128,
672
],
"parameters": {
"model": "deepseek/deepseek-chat:free",
"options": {}
},
"typeVersion": 1
},
{
"id": "5476fda6-eb40-4047-b425-b61ffbdb1176",
"name": "Respond 200 OK",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
720,
464
],
"parameters": {
"options": {
"responseCode": 200
},
"respondWith": "noData"
},
"typeVersion": 1.1
},
{
"id": "61b85284-4114-4354-b94f-0a7221399b26",
"name": "Webhook - FB Messenger",
"type": "n8n-nodes-base.webhook",
"position": [
48,
352
],
"parameters": {
"path": "fb-messenger-webhook",
"options": {},
"responseMode": "responseNode",
"multipleMethods": true
},
"typeVersion": 2
},
{
"id": "ef557297-ba25-4997-9fb9-26e3e89ea3e9",
"name": "Respond Challenge",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
720,
32
],
"parameters": {
"options": {},
"respondWith": "text",
"responseBody": "={{ $('Webhook - FB Messenger').item.json.query['hub.challenge'] }}"
},
"typeVersion": 1.1
},
{
"id": "5fdc09bb-5f86-4802-8df8-f028da9b7dac",
"name": "Validate Webhook Subscription",
"type": "n8n-nodes-base.if",
"position": [
432,
128
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1c58f754-c63f-4744-98d9-0bebaef30c9b",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.query['hub.mode'] }}",
"rightValue": "subscribe"
},
{
"id": "12ba435c-90c1-450f-8801-0aaafbcf7808",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.query['hub.verify_token'] }}",
"rightValue": "{{YOUR_FB_VERIFY_TOKEN}}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "send-text-http-001",
"name": "Send Message to FB (Text)",
"type": "n8n-nodes-base.httpRequest",
"position": [
2000,
96
],
"parameters": {
"url": "=https://graph.facebook.com/v13.0/{{FB_PAGE_ID}}/messages",
"method": "POST",
"options": {},
"jsonBody": "={\n \"recipient\": { \"id\": \"{{ $('Webhook - FB Messenger').item.json.body.entry[0].messaging[0].sender.id }}\" },\n \"message\": { \"text\": {{JSON.stringify($('AI Agent (Order Assistant)').item.json.output)}} },\n \"messaging_type\": \"RESPONSE\",\n \"notification_type\": \"REGULAR\"\n}\n",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "access_token",
"value": "{{FB_PAGE_ACCESS_TOKEN}}"
}
]
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"alwaysOutputData": false
},
{
"id": "28330bd3-2fbc-4cc9-9373-305ddde8205e",
"name": "Sticky Note - Setup & Description (Original)",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 4,
"width": 880,
"height": 420,
"content": "## Karaage Pops - Messenger Order Automation\n\nThis workflow captures Facebook Messenger orders, parses customer input, saves orders to Google Sheets, and schedules fulfillment in Google Calendar. Replace placeholders (FB_PAGE_ID, FB_PAGE_ACCESS_TOKEN, YOUR_GOOGLE_SHEET_ID, YOUR_GOOGLE_CALENDAR_EMAIL, YOUR_FB_VERIFY_TOKEN) with environment variables or n8n credentials. Do not hardcode secrets.\n\nSetup steps are included in the template description. Rename nodes as needed and provide proper credentials in n8n."
},
"typeVersion": 1
},
{
"id": "cf4e10f5-941b-4673-bee5-a9ccc4fc309f",
"name": "Sticky Note - Usage (Original)",
"type": "n8n-nodes-base.stickyNote",
"position": [
1200,
80
],
"parameters": {
"width": 1100,
"height": 368,
"content": "## How to use\n1. Create FB app & Page, set webhook to this workflow URL.\n2. Store tokens as environment variables or credentials.\n3. Create Google Sheet with columns: Date, Time, Order, Full Name, Contact Number, Delivery Address.\n4. Connect Google Sheets and Google Calendar credentials in n8n.\n5. Test the flow by messaging the FB Page."
},
"typeVersion": 1
},
{
"id": "e97638ca-146e-4470-b8ff-037db276ba07",
"name": "Respond 202 (Error fallback)",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
720,
224
],
"parameters": {
"options": {
"responseCode": 202
},
"respondWith": "noData"
},
"typeVersion": 1.1
},
{
"id": "send-image-http-001",
"name": "Send Message to FB (Image)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1280,
368
],
"parameters": {
"url": "=https://graph.facebook.com/v13.0/{{FB_PAGE_ID}}/messages",
"method": "POST",
"options": {},
"jsonBody": "={\n \"recipient\": { \"id\": \"{{ $('Webhook - FB Messenger').item.json.body.entry[0].messaging[0].sender.id }}\" },\n \"message\": { \"attachment\": { \"type\": \"image\", \"payload\": { \"url\": \"https://i.imgur.com/M4cryeH.jpg\", \"is_reusable\": true } } },\n \"messaging_type\": \"RESPONSE\",\n \"notification_type\": \"REGULAR\"\n}\n",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "access_token",
"value": "{{FB_PAGE_ACCESS_TOKEN}}"
}
]
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"alwaysOutputData": false
},
{
"id": "53ff0cdc-a4ad-4b08-a46f-11e99d6a2e93",
"name": "Check for Menu Trigger",
"type": "n8n-nodes-base.if",
"position": [
976,
464
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c1f7edad-f67c-454f-a768-eae3a28f684b",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.output }}",
"rightValue": "Here\u2019s our FULL MENU OF FLAVORS and options for you to choose from"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c0ae83fc-68ec-4ef8-8200-2d0097c56a90",
"name": "Send Generic Text (HTTP)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1312,
560
],
"parameters": {
"url": "=https://graph.facebook.com/v13.0/{{FB_PAGE_ID}}/messages",
"method": "POST",
"options": {},
"jsonBody": "={\n \"recipient\": { \"id\": \"{{ $('Webhook - FB Messenger').item.json.body.entry[0].messaging[0].sender.id }}\" },\n \"message\": { \"text\": {{JSON.stringify($('AI Agent (Order Assistant)').item.json.output)}} },\n \"messaging_type\": \"RESPONSE\",\n \"notification_type\": \"REGULAR\"\n}\n",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "access_token",
"value": "{{FB_PAGE_ACCESS_TOKEN}}"
}
]
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"alwaysOutputData": false
},
{
"id": "8e4ff0ef-c175-4af7-9dd2-17f34d4588d9",
"name": "Parse Order Text",
"type": "n8n-nodes-base.code",
"position": [
2016,
544
],
"parameters": {
"jsCode": "const text = $('Webhook - FB Messenger').first().json.body.entry[0].messaging[0].message.text;\nconst lines = text.split(/\\r?\\n/);\nconst result = {};\nlines.forEach(line => {\n const [key, ...rest] = line.split(':');\n if (key && rest.length) {\n result[key.trim().replace(/^[^a-zA-Z0-9]+/g, '')] = rest.join(':').trim();\n }\n});\nreturn [{ json: result }];\n"
},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "8599060b-82e6-423a-b840-4072f73f75c7",
"name": "Validate Parsed Order",
"type": "n8n-nodes-base.if",
"position": [
1712,
560
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c1f7edad-f67c-454f-a768-eae3a28f684b",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Send Message to FB (Text)').item.json.output }}",
"rightValue": "Full Name"
},
{
"id": "f269fa0c-7291-454e-9738-e24979a82c8e",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Send Message to FB (Text)').item.json.output }}",
"rightValue": "Date"
},
{
"id": "818104ae-1325-4e6c-a109-378923f58104",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Send Message to FB (Text)').item.json.output }}",
"rightValue": "Order"
},
{
"id": "8b6790de-8552-4a1f-af86-324e72739c28",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Send Message to FB (Text)').item.json.output }}",
"rightValue": "Delivery Address"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "7319266e-8bb6-4ce4-9cbb-bb5983a3938a",
"name": "Respond Raw Items (Debug)",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2032,
784
],
"parameters": {
"options": {
"responseCode": 100
},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.1
},
{
"id": "20b91f65-03f6-4503-9126-64b7cb170c96",
"name": "Create Calendar Event",
"type": "n8n-nodes-base.googleCalendar",
"position": [
2000,
336
],
"parameters": {
"calendar": {
"__rl": true,
"mode": "list",
"value": "{{YOUR_GOOGLE_CALENDAR_EMAIL}}",
"cachedResultName": "{{YOUR_GOOGLE_CALENDAR_EMAIL}}"
},
"additionalFields": {
"summary": "={{ $json.Order }} ORDERED BY {{ $json['Full Name'] }}"
}
},
"typeVersion": 1.3
},
{
"id": "fe286031-e032-44ae-bc45-303dac0f8c56",
"name": "Append or Update Orders Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1648,
336
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $json['Date'] }}",
"Time": "={{ $json['Time'] }}",
"Order": "={{ $json['Order'] }}",
"Full Name": "={{ $json['Full Name'] }}",
"Contact Number": "={{ $json['Contact Number'] }}",
"Delivery Address": "={{ $json['Delivery Address'] }}"
},
"schema": [
{
"id": "Full Name",
"type": "string",
"displayName": "Full Name"
},
{
"id": "Contact Number",
"type": "string",
"displayName": "Contact Number"
},
{
"id": "Delivery Address",
"type": "string",
"displayName": "Delivery Address"
},
{
"id": "Time",
"type": "string",
"displayName": "Time"
},
{
"id": "Date",
"type": "string",
"displayName": "Date"
},
{
"id": "Order",
"type": "string",
"displayName": "Order"
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Full Name"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "{{YOUR_SHEET_GID_OR_NAME}}",
"cachedResultName": "{{YOUR_SHEET_GID_OR_NAME}}"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "{{YOUR_GOOGLE_SHEET_ID}}",
"cachedResultName": "{{YOUR_GOOGLE_SHEET_NAME}}"
}
},
"typeVersion": 4.6
}
],
"connections": {
"OpenRouter Model": {
"ai_languageModel": [
[
{
"node": "AI Agent (Order Assistant)",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Parse Order Text": {
"main": [
[
{
"node": "Append or Update Orders Sheet",
"type": "main",
"index": 0
}
]
]
},
"Validate Parsed Order": {
"main": [
[
{
"node": "Parse Order Text",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond Raw Items (Debug)",
"type": "main",
"index": 0
}
]
]
},
"Check for Menu Trigger": {
"main": [
[
{
"node": "Send Message to FB (Image)",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Generic Text (HTTP)",
"type": "main",
"index": 0
}
]
]
},
"Webhook - FB Messenger": {
"main": [
[
{
"node": "Validate Webhook Subscription",
"type": "main",
"index": 0
}
],
[
{
"node": "AI Agent (Order Assistant)",
"type": "main",
"index": 0
}
]
]
},
"Send Generic Text (HTTP)": {
"main": [
[
{
"node": "Validate Parsed Order",
"type": "main",
"index": 0
}
]
]
},
"Send Message to FB (Text)": {
"main": [
[
{
"node": "Check for Menu Trigger",
"type": "main",
"index": 0
}
]
]
},
"AI Agent (Order Assistant)": {
"main": [
[
{
"node": "Respond 200 OK",
"type": "main",
"index": 0
}
]
]
},
"Append or Update Orders Sheet": {
"main": [
[
{
"node": "Create Calendar Event",
"type": "main",
"index": 0
},
{
"node": "Send Message to FB (Text)",
"type": "main",
"index": 0
}
]
]
},
"Validate Webhook Subscription": {
"main": [
[
{
"node": "Respond Challenge",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond 202 (Error fallback)",
"type": "main",
"index": 0
}
]
]
},
"Memory Buffer (Customer Session)": {
"ai_memory": [
[
{
"node": "AI Agent (Order Assistant)",
"type": "ai_memory",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automate Facebook Messenger orders to Google Sheets and Google Calendar
Source: https://n8n.io/workflows/8349/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Automate your cross-platform publishing workflow by automatically uploading Instagram videos to YouTube with AI-optimized titles and tags. 🚀🎬 This workflow runs every six hours, fetches newly posted I
Nova AI Content Marketing Agent - LinkedIn & Facebook Automation This n8n template demonstrates how to create a complete AI-powered social media content creation and scheduling system that generates p
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This template is ideal for creators, content marketers, social media managers, and AI enthusiasts who want to automate the production of short-form, visually captivating videos for platforms like TikT
This n8n workflow is a fully automated pipeline that takes a creative concept and transforms it into a polished, platform-ready short-form video. It ideates, generates video and audio using AI, merges