{
  "id": "bZnjAiMcg96zxQzM",
  "meta": {
    "builderVariant": "mcp",
    "aiBuilderAssisted": true
  },
  "name": "Generate AI videos for an auto service business and post them to social media",
  "tags": [],
  "nodes": [
    {
      "id": "80e78679-1456-4816-82b7-5e06dfe06286",
      "name": "Run manually",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        704,
        240
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "3d30ad63-8fe7-4b5b-afc1-ead8d37c864e",
      "name": "Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        976,
        544
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a1",
              "name": "business_name",
              "type": "string",
              "value": "Ace Auto Service"
            },
            {
              "id": "a2",
              "name": "content_topic",
              "type": "string",
              "value": "daily car maintenance tips and honest auto repair advice for everyday drivers"
            },
            {
              "id": "a3",
              "name": "business_cta",
              "type": "string",
              "value": "Book your next service with us"
            },
            {
              "id": "a4",
              "name": "content_language",
              "type": "string",
              "value": "English"
            },
            {
              "id": "a5",
              "name": "text_model",
              "type": "string",
              "value": "gpt-5.4"
            },
            {
              "id": "a6",
              "name": "atlas_model",
              "type": "string",
              "value": "bytedance/seedance-2.0/text-to-video"
            },
            {
              "id": "a7",
              "name": "video_duration",
              "type": "number",
              "value": 8
            },
            {
              "id": "a8",
              "name": "aspect_ratio",
              "type": "string",
              "value": "9:16"
            },
            {
              "id": "a9",
              "name": "generate_audio",
              "type": "boolean",
              "value": true
            },
            {
              "id": "a10",
              "name": "render_wait_seconds",
              "type": "number",
              "value": 15
            },
            {
              "id": "a11",
              "name": "telegram_chat_id",
              "type": "string",
              "value": ""
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "721cc1ec-8da1-472f-a004-87b585911bd8",
      "name": "Every morning",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        704,
        464
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "0148b1ae-a096-45e5-9429-058106cb8abe",
      "name": "Write caption and video prompt",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1328,
        352
      ],
      "parameters": {
        "text": "=Create today's social video content for {{ $('Configuration').item.json.business_name }}, an auto service business.\nTopic focus: {{ $('Configuration').item.json.content_topic }}.\nWrite in {{ $('Configuration').item.json.content_language }}.\nUse the Web research tool to ground the post in a current, accurate and useful angle. Then return a short scroll-stopping caption with a soft call to action ({{ $('Configuration').item.json.business_cta }}), a line of 3-6 relevant hashtags, and a vivid cinematic text-to-video prompt for an 8-second vertical clip that visually illustrates the topic.",
        "options": {
          "systemMessage": "You are the social media creative for an auto service / car repair brand. You write concise, engaging, on-brand short-video captions and matching cinematic video prompts. Tool available: 'Web research' (Perplexity) to fetch current, accurate facts and trends. Keep captions under 700 characters, friendly and professional, with no false claims. The video prompt must be safe-for-work, describe a realistic automotive scene (workshop, mechanic, car detail, road), include camera movement and lighting, and must NOT include on-screen text or logos. Always respond using the required structured format."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3.1
    },
    {
      "id": "175ddf20-3024-40bd-85b6-3b8cae3ad20f",
      "name": "OpenAI model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1184,
        608
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Configuration').item.json.text_model }}"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "b019e1de-9f14-4066-8e02-7b8f4aad0a88",
      "name": "Web research",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        1360,
        608
      ],
      "parameters": {
        "options": {
          "searchRecency": "month"
        },
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('query', 'A specific research question about current auto-service tips, seasonal car care or trends relevant to the topic') }}"
            }
          ]
        },
        "simplify": true,
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ac8f0630-5e39-4ebd-99c7-bff6ced24afe",
      "name": "Structured output",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1520,
        608
      ],
      "parameters": {
        "jsonSchemaExample": "{ \"caption\": \"Your engine deserves this 5-minute check before winter hits.\", \"hashtags\": \"#autorepair #carcare #mechanic #cartips\", \"video_prompt\": \"Cinematic vertical close-up of a professional mechanic inspecting a car engine in a clean modern workshop, warm light, slow dolly-in, shallow depth of field\" }"
      },
      "typeVersion": 1.3
    },
    {
      "id": "bca28300-0333-49c0-8cc9-c63c78e4a513",
      "name": "Generate video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1760,
        352
      ],
      "parameters": {
        "url": "https://api.atlascloud.ai/api/v1/model/generateVideo",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ { \"model\": $('Configuration').item.json.atlas_model, \"prompt\": $('Write caption and video prompt').item.json.output.video_prompt, \"duration\": $('Configuration').item.json.video_duration, \"aspect_ratio\": $('Configuration').item.json.aspect_ratio, \"generate_audio\": $('Configuration').item.json.generate_audio } }}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "c9c130ea-e601-471b-8b11-1ec31ab08f43",
      "name": "Wait for render",
      "type": "n8n-nodes-base.wait",
      "position": [
        2032,
        352
      ],
      "parameters": {
        "amount": "={{ $('Configuration').item.json.render_wait_seconds }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "de5c33dd-18cf-4610-9ee9-125b91e1421f",
      "name": "Get render status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2288,
        352
      ],
      "parameters": {
        "url": "=https://api.atlascloud.ai/api/v1/model/prediction/{{ $('Generate video').item.json.data.id }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "96450b5e-c540-43c7-a5de-7ece0640ca5d",
      "name": "Video ready?",
      "type": "n8n-nodes-base.if",
      "position": [
        2544,
        352
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "c1",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data.status }}",
              "rightValue": "completed"
            },
            {
              "id": "c2",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data.status }}",
              "rightValue": "succeeded"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "6f5af50d-d0a2-4c99-b02b-b5c6f2079442",
      "name": "Prepare post",
      "type": "n8n-nodes-base.set",
      "position": [
        2832,
        352
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "p1",
              "name": "video_url",
              "type": "string",
              "value": "={{ $('Get render status').item.json.data.outputs[0] }}"
            },
            {
              "id": "p2",
              "name": "full_caption",
              "type": "string",
              "value": "={{ $('Write caption and video prompt').item.json.output.caption }}\n\n{{ $('Write caption and video prompt').item.json.output.hashtags }}"
            },
            {
              "id": "p3",
              "name": "video_title",
              "type": "string",
              "value": "={{ $('Configuration').item.json.business_name }} | Auto service tip"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8a239ce4-6340-4522-92ca-6fd1981eaeef",
      "name": "Post to TikTok",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueRegularOutput",
      "position": [
        3168,
        192
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "9332",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/9332",
          "cachedResultName": "docteur.firas"
        },
        "postContentText": "={{ $('Prepare post').item.json.full_caption }}",
        "postContentMediaUrls": "={{ $('Prepare post').item.json.video_url }}",
        "postCreateTiktokOptionIsAiGenerated": true
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "398d98cf-180c-4b85-a6bd-7ee4d91ae715",
      "name": "Post to YouTube",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueRegularOutput",
      "position": [
        3168,
        400
      ],
      "parameters": {
        "options": {},
        "platform": "youtube",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "8047",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/8047",
          "cachedResultName": "DR FIRASS (Dr. Firas)"
        },
        "postContentText": "={{ $('Prepare post').item.json.full_caption }}",
        "postContentMediaUrls": "={{ $('Prepare post').item.json.video_url }}",
        "postCreateYoutubeOptionTitle": "={{ $('Prepare post').item.json.video_title }}",
        "postCreateYoutubeOptionContainsSyntheticMedia": true
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "717d7bde-fd4b-49da-bd52-7ad0e7a753c3",
      "name": "Post to Instagram",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueRegularOutput",
      "position": [
        3216,
        576
      ],
      "parameters": {
        "options": {
          "instagramMediaType": "reel"
        },
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "11892",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/11892",
          "cachedResultName": "doc.firass"
        },
        "postContentText": "={{ $('Prepare post').item.json.full_caption }}",
        "postContentMediaUrls": "={{ $('Prepare post').item.json.video_url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d4217e7b-d79c-450a-8d39-0f955cf8cce7",
      "name": "Post to Facebook",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "onError": "continueRegularOutput",
      "position": [
        3168,
        736
      ],
      "parameters": {
        "options": {
          "facebookMediaType": "reel"
        },
        "platform": "facebook",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1759",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759",
          "cachedResultName": "Firass Ben"
        },
        "facebookPageId": {
          "__rl": true,
          "mode": "list",
          "value": "101603614680195",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759/subaccounts/101603614680195",
          "cachedResultName": "Dr. Firas"
        },
        "postContentText": "={{ $('Prepare post').item.json.full_caption }}",
        "postContentMediaUrls": "={{ $('Prepare post').item.json.video_url }}"
      },
      "credentials": {
        "blotatoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "56cdef5a-9187-479a-a0e0-27630472582a",
      "name": "Send Telegram preview",
      "type": "n8n-nodes-base.telegram",
      "onError": "continueRegularOutput",
      "position": [
        2928,
        784
      ],
      "parameters": {
        "text": "=New auto-service video published.\n\n{{ $('Prepare post').item.json.full_caption }}\n\nVideo: {{ $('Prepare post').item.json.video_url }}",
        "chatId": "={{ $('Configuration').item.json.telegram_chat_id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "106b2657-1c28-4a44-9c0c-da3ff7f5ea2a",
      "name": "Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -448
      ],
      "parameters": {
        "width": 620,
        "height": 1952,
        "content": "# Generate AI videos for an auto service business and post them to social media\n\n# \ud83d\udce5  [Open full documentation on Notion](https://automatisation.notion.site/Course-Generate-AI-videos-for-an-auto-service-business-and-post-them-to-social-media-39b3d6550fd9811696fefa2ff1923c62)\n\n\u26a0\ufe0f Uses the community node [Blotato](https://blotato.com/?ref=firas) \u2192 **n8n self-hosted only** (or n8n Cloud with Verified Community Nodes enabled).\n\n## Who is this for\nAuto service shops, garages and car-repair businesses (and the creators/marketers running their socials) who want a steady stream of short videos without hiring an editor.\n\n## How it works\n1. A daily schedule (or a manual click) starts the run.\n2. The **Configuration** node holds every setting in one place.\n3. An AI agent researches a fresh, relevant angle, then writes a short caption + a cinematic video prompt.\n4. AtlasCloud Seedance 2.0 turns that prompt into a short vertical video (the workflow polls until it is ready).\n5. Blotato publishes the video to TikTok, YouTube, Instagram and Facebook, and a Telegram preview is sent to you.\n\nThe AI proposes, you stay in control: check the Telegram preview and keep quality high before scaling the schedule.\n\n## Setup\n1. Open **Configuration** and set your business name, topic, language, video length and aspect ratio.\n2. Connect your credentials: OpenAI, Perplexity, [AtlasCloud](https://www.atlascloud.ai/?ref=8QKPJE) and Blotato.\n3. On the two AtlasCloud HTTP nodes, select the **AtlasCloud API** credential manually (one click each).\n4. On each Blotato node, choose the social account to publish to.\n5. Add your Telegram chat ID in Configuration for the preview.\n\n## Requirements\n- n8n **self-hosted** (Blotato is a community node).\n- Accounts/keys: OpenAI, Perplexity, [AtlasCloud](https://www.atlascloud.ai/?ref=8QKPJE), [Blotato](https://blotato.com/?ref=firas), Telegram bot.\n- AI video pricing depends on the model and length you choose in Configuration.\n\n## Customization\n- Change the topic, language, tone or CTA in Configuration.\n- Swap the AI model, video duration or aspect ratio.\n- Add or remove a platform by duplicating a Blotato node.\n\n---\nNeed help customizing?\nContact me for consulting and support : [Linkedin](https://www.linkedin.com/in/doctor-firass/)\n\n# MY NEW YOUTUBE CHANNEL\n\ud83d\udc49 [Subscribe to my new YouTube channel](https://www.youtube.com/@DrFiras_AI). Here I'll share videos and Shorts with practical tutorials and FREE templates for n8n.\n\n[![The AI Doctor](https://www.dr-firas.com/the-ai-doctor.png)](https://www.youtube.com/@DrFiras_AI)"
      },
      "typeVersion": 1
    },
    {
      "id": "b552f250-6308-44b1-ad19-453b93a6c78d",
      "name": "Section 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        224
      ],
      "parameters": {
        "color": 7,
        "width": 200,
        "height": 580,
        "content": "## 1. Configure once\nSet every variable here \u2014 business, topic, language, video length, aspect ratio and your Telegram chat ID. No need to open the other nodes."
      },
      "typeVersion": 1
    },
    {
      "id": "e631f9cc-4e01-42d3-8b0e-074b18f62f98",
      "name": "Section 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1152,
        208
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 600,
        "content": "## 2. Research + write\nPerplexity finds a current, relevant angle and GPT writes the caption, hashtags and a cinematic video prompt (structured output)."
      },
      "typeVersion": 1
    },
    {
      "id": "e7ec0a08-b140-4b21-8fe7-13d6f838fd40",
      "name": "Section 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        224
      ],
      "parameters": {
        "color": 7,
        "width": 1060,
        "height": 360,
        "content": "## 3. Generate the video\nAtlasCloud Seedance 2.0 renders a short vertical clip. The Wait \u2192 status \u2192 IF loop polls until it is ready. Select the AtlasCloud API credential on both HTTP nodes."
      },
      "typeVersion": 1
    },
    {
      "id": "7589159e-f65e-45d0-8378-45a019dadc48",
      "name": "Section 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2784,
        48
      ],
      "parameters": {
        "color": 7,
        "width": 560,
        "height": 900,
        "content": "## 4. Publish everywhere\nBlotato posts the finished video to TikTok, YouTube, Instagram and Facebook. Pick your account on each node. A Telegram preview is sent to you."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": true,
    "executionOrder": "v1"
  },
  "versionId": "7153b72a-0f50-4fb0-9d60-ab1fe3798f2f",
  "nodeGroups": [],
  "connections": {
    "OpenAI model": {
      "ai_languageModel": [
        [
          {
            "node": "Write caption and video prompt",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Prepare post": {
      "main": [
        [
          {
            "node": "Post to TikTok",
            "type": "main",
            "index": 0
          },
          {
            "node": "Post to YouTube",
            "type": "main",
            "index": 0
          },
          {
            "node": "Post to Instagram",
            "type": "main",
            "index": 0
          },
          {
            "node": "Post to Facebook",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Telegram preview",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run manually": {
      "main": [
        [
          {
            "node": "Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Video ready?": {
      "main": [
        [
          {
            "node": "Prepare post",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait for render",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Web research": {
      "ai_tool": [
        [
          {
            "node": "Write caption and video prompt",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Configuration": {
      "main": [
        [
          {
            "node": "Write caption and video prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every morning": {
      "main": [
        [
          {
            "node": "Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate video": {
      "main": [
        [
          {
            "node": "Wait for render",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for render": {
      "main": [
        [
          {
            "node": "Get render status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get render status": {
      "main": [
        [
          {
            "node": "Video ready?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured output": {
      "ai_outputParser": [
        [
          {
            "node": "Write caption and video prompt",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Write caption and video prompt": {
      "main": [
        [
          {
            "node": "Generate video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}