Vertical video platforms are currently pushing immersive first-person perspectives to millions of viewers.
You have probably seen these clips.
They place the viewer directly inside historical scenarios like a medieval siege or a 1920s jazz club.
The algorithm heavily favors this style because it hooks attention immediately.
One of my friend recently pushed out nearly one hundred and fifty of these clips over ninety days.
Two of those uploads broke eight million views resulting in a massive AdSense payout.
The impressive part is that the creator, my friend never recorded a single frame of footage.
This entire operation is running on an open source automation stack.
You: How can you engineer the exact same setup?
Well,
The Basic Pipeline Architecture
At a high level, this operates like a standard data pipeline.
You insert a concept into a Google Spreadsheet. The workflow detects the new row and drafts a segmented script.
It triggers image creation via Kling, converts those static frames into animations, pulls in environmental audio from ElevenLabs, compiles the assets in Creatomate, and pushes the final render to YouTube.
Once the infrastructure is live, you only provide the initial text.
The system handles the rest.
Okay, this wasn’t very helpful. Can you tell us the
Tech Stack?
Sure.
The components are mostly free to prototype and scale nicely once you establish product-market fit.
- n8n: The core orchestrator. You can run this locally or host it in the cloud.
- Google Sheets: Your primary database. The schema includes columns for the concept, video caption, environment context, processing state, publish state, and the final URL.
- PiAPI: The gateway for Kling image and video synthesis. They provide initial testing credits, and you can switch to crypto payments when you need to scale up.
- ElevenLabs: Responsible for generating realistic background sounds based on the scene text.
- Creatomate: The video rendering engine. You will want a paid tier eventually for high definition exports, but the testing tier works for validating your pipeline.
Cool, got more clarity.
But, what is the
Execution Flow?
The language model parses your initial concept and divides it into five distinct segments.
Each segment acts as a prompt for Kling.
Generating the static frames requires roughly two minutes per segment.
Next, the system converts those images into five-second animations.
This step is compute heavy and usually takes about ten minutes per segment.
Simultaneously, ElevenLabs processes the scene descriptions to output matching MP3 audio tracks.
These files are pushed directly to a connected Google Drive folder using OAuth.
Finally, Creatomate ingests the five video clips, the five audio tracks, and the corresponding text overlays.
It processes everything into a single twenty-five second vertical video optimized for a 9:16 aspect ratio.
The text overlays animate sequentially on screen.
Once rendering completes, the workflow updates the spreadsheet statuses to indicate the video is ready and logs the final YouTube link.
Wow! That’s nice. Aren’t there any
Integration Bottleneck
Yes, there are.
Configuring the video assembler is where most developers stall out.
You must start with a blank 9:16 canvas in Creatomate.
Open the browser developer tools, inject the necessary JSON configuration, and copy the resulting template identifier back into your n8n render node.
This JSON payload maps your generated assets to the timeline.
The default configuration handles five segments.
If you want to extend this to a twelve segment video, you have to modify the JSON structure.
You also need to update the sequence count in the n8n Item List Output Parser and adjust the custom JavaScript in the corresponding Code node.
It takes just a few minutes across three different nodes once you understand the data flow.
Both JSON versions are included in the source files.
Controlling the Output:
The core of this operation is the initial system prompt.
It dictates how the language model chops up your idea.
For an immersive historical video, the instructions must mandate sensory details and period-specific aesthetics.
If you rewrite that master prompt, the entire output shifts.
You can pivot from history to cyberpunk cities or nature documentaries by tweaking just ten lines of instruction.
I’ll give you a simple
Deployment Guide
- Create a n8n workflow file (or copy the one at the end)
- Add the tracking spreadsheet and add your first concept.
- Link your Google, PiAPI, ElevenLabs, and Creatomate accounts using your API keys.
- Insert your newly created Creatomate template identifier into the final render node.
- Execute a test run.
Your initial export should finish within fifteen minutes.
When you exhaust your initial API credits on testing, you can always rotate accounts to grab fresh tokens and keep validating.
Execution is the only differentiator here.
The engineers who actually deploy this pipeline today will have a massive catalog published before anyone else catches on.
techaiguild.aibucket.org
In case we are meeting for the first time, come over here, it’ll be worth the roller coaster of articles that are gonna come up in the next few weeks.
{
"name": "Video Generator POV 1.0",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-600,
60
],
"id": "3b18aa82-220e-41d0-a0b0-a8f41f8ad2c1",
"name": "Schedule Trigger"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "1SP_lUVvMlBY2mrN9zCjGgbDUCDioC3ZkSTS7FwZDk5s",
"mode": "list",
"cachedResultName": "ИСТОРИЧЕСКИЙ POV",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SP_lUVvMlBY2mrN9zCjGgbDUCDioC3ZkSTS7FwZDk5s/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SP_lUVvMlBY2mrN9zCjGgbDUCDioC3ZkSTS7FwZDk5s/edit#gid=0"
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
-600,
280
],
"id": "6acfc16e-96f3-40ac-948f-a477f7f37159",
"name": "Google Sheets",
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bHCyl3PYH1Z7qN9N",
"name": "Google Demo"
}
}
},
{
"parameters": {
"options": {
"numberOfItems": 2
}
},
"type": "@n8n/n8n-nodes-langchain.outputParserItemList",
"typeVersion": 1,
"position": [
-500,
660
],
"id": "6413805f-2b22-441b-a2c4-4a70d741bdac",
"name": "Item List Output Parser"
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-4o",
"mode": "list",
"cachedResultName": "gpt-4o"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
-680,
680
],
"id": "388a5541-7b58-492f-b9ff-8cf11e62b411",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"id": "qnqNGr4J1V43pQi6",
"name": "(ノ◕ヮ◕)ノ*:・゚✧ "
}
}
},
{
"parameters": {
"content": "## Промты для изображений",
"height": 220,
"width": 500,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-180,
-60
],
"id": "deb73d1e-f281-47d7-8844-7d5ba35d6f40",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## Создание изображений",
"height": 220,
"width": 500,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-180,
200
],
"id": "a6657bbe-5f30-4a62-b02d-554e9e94801b",
"name": "Sticky Note2"
},
{
"parameters": {
"url": "=https://api.piapi.ai/api/v1/task/{{ $json.data.task_id }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-Key",
"value": "SUDA"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
200,
260
],
"id": "287214b1-f339-4885-b9c1-5e199ba0d3d0",
"name": "Get Image",
"onError": "continueRegularOutput"
},
{
"parameters": {
"content": "## Создание видео",
"height": 220,
"width": 500,
"color": 5
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-180,
460
],
"id": "39980633-0cf6-4316-84cd-026b5825f31a",
"name": "Sticky Note3"
},
{
"parameters": {
"method": "POST",
"url": "https://api.piapi.ai/api/v1/task",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-Key",
"value": "SUDA"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json",
"body": "={\n \"model\": \"kling\",\n \"mode\": \"std\",\n \"task_type\": \"video_generation\",\n \"input\": {\n \"prompt\": \"{{ $json.data.input.prompt }}\",\n \"negative_prompt\": \"bad quality\",\n \"cfg_scale\": 0.65,\n \"duration\": 5,\n \"image_url\": \"{{ $json.data.output.image_url }}\",\n \"camera_control\": {\n \"type\": \"simple\",\n \"config\": {\n \"horizontal\": 0,\n \"vertical\": 0,\n \"pan\": 0,\n \"tilt\": 0,\n \"roll\": 0,\n \"zoom\": 0\n }\n }\n },\n \"config\": {}\n}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-160,
520
],
"id": "f97b158f-02f1-4ffd-a721-3ccb1f138ff1",
"name": "Image to video",
"retryOnFail": false
},
{
"parameters": {
"url": "=https://api.piapi.ai/api/v1/task/{{ $json.data.task_id }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-Key",
"value": "SUDA"
}
]
},
"options": {
"batching": {
"batch": {}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
200,
520
],
"id": "2b768009-ac50-4889-a87f-745f27102c54",
"name": "Get Video"
},
{
"parameters": {
"content": "## Создание звуков",
"height": 220,
"width": 500,
"color": 2
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-180,
720
],
"id": "0edb348e-20b8-4c53-8039-0178e4acae81",
"name": "Sticky Note4"
},
{
"parameters": {
"method": "POST",
"url": "https://api.elevenlabs.io/v1/sound-generation",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "xi-api-key",
"value": "SUDA"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json",
"body": "={\n \"text\": \"no voice: {{ $('OpenAI (промтовик)').item.json.message.content.substring(0, 440) }}\",\n\"duration_seconds\": 5,\n\"prompt_influence\": 0.8\n}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-160,
780
],
"id": "4779f300-90ff-4298-b993-19675bd46276",
"name": "Text to sound",
"executeOnce": false
},
{
"parameters": {
"name": "={{ $json.data.task_id }}.mp3",
"driveId": {
"__rl": true,
"value": "My Drive",
"mode": "list",
"cachedResultName": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive"
},
"folderId": {
"__rl": true,
"value": "1hbvDU4tPs6Bh8ssWfW5D_jnxCf6mRLoU",
"mode": "list",
"cachedResultName": "Аудио",
"cachedResultUrl": "https://drive.google.com/drive/folders/1hbvDU4tPs6Bh8ssWfW5D_jnxCf6mRLoU"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
20,
780
],
"id": "63f3d0fa-0672-4182-bbab-35433f156781",
"name": "Upload Mp3",
"credentials": {
"googleDriveOAuth2Api": {
"id": "VkhqitlKQr3SHQtu",
"name": "привет от ИИздец :)"
}
}
},
{
"parameters": {
"operation": "share",
"fileId": {
"__rl": true,
"value": "={{ $json.id }}",
"mode": "id"
},
"permissionsUi": {
"permissionsValues": {
"role": "writer",
"type": "anyone",
"allowFileDiscovery": true
}
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
200,
780
],
"id": "58d422b3-c54b-4077-b2cc-7cdfc268f697",
"name": "Grant Access",
"credentials": {
"googleDriveOAuth2Api": {
"id": "VkhqitlKQr3SHQtu",
"name": "Google Drive New"
}
}
},
{
"parameters": {
"content": "## ФИНАЛЬНЫЙ МОНТАЖ",
"height": 1020,
"width": 420,
"color": 5
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
480,
-60
],
"id": "9839ed7a-2120-484c-934c-1ea7d402201f",
"name": "Sticky Note5"
},
{
"parameters": {
"method": "POST",
"url": "https://api.creatomate.com/v1/renders",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SUDA"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json",
"body": "={\n \"template_id\": \"SUDA\",\n \"modifications\": {\n \"Audio-1.source\": \"{{ $json.sound_urls[0] }}\",\n \"Audio-2.source\": \"{{ $json.sound_urls[1] }}\",\n \"Audio-3.source\": \"{{ $json.sound_urls[2] }}\",\n \"Audio-4.source\": \"{{ $json.sound_urls[3] }}\",\n \"Audio-5.source\": \"{{ $json.sound_urls[4] }}\",\n\n \"Video-1.source\": \"{{ $json.video_urls[0] }}\",\n \"Video-2.source\": \"{{ $json.video_urls[1] }}\",\n \"Video-3.source\": \"{{ $json.video_urls[2] }}\",\n \"Video-4.source\": \"{{ $json.video_urls[3] }}\",\n \"Video-5.source\": \"{{ $json.video_urls[4] }}\",\n\n \"Text-1.text\": \"{{ $json.scene_titles[0] }}\",\n \"Text-2.text\": \"{{ $json.scene_titles[1] }}\",\n \"Text-3.text\": \"{{ $json.scene_titles[2] }}\",\n \"Text-4.text\": \"{{ $json.scene_titles[3] }}\",\n \"Text-5.text\": \"{{ $json.scene_titles[4] }}\"\n }\n}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
640,
540
],
"id": "f484dc40-e4b3-41ac-aea6-8fab6b8b78fb",
"name": "Render Video",
"executeOnce": false
},
{
"parameters": {
"content": "## ИДЕИ И ИСТОРИИ",
"height": 840,
"width": 400,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-760,
0
],
"id": "f2175bd2-aecc-4b8b-81e1-18df02bec4e6",
"name": "Sticky Note"
},
{
"parameters": {
"operation": "update",
"documentId": {
"__rl": true,
"value": "1SP_lUVvMlBY2mrN9zCjGgbDUCDioC3ZkSTS7FwZDk5s",
"mode": "list",
"cachedResultName": "ИСТОРИЧЕСКИЙ POV",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SP_lUVvMlBY2mrN9zCjGgbDUCDioC3ZkSTS7FwZDk5s/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SP_lUVvMlBY2mrN9zCjGgbDUCDioC3ZkSTS7FwZDk5s/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"id": "={{ $('Google Sheets').first().json.id }}",
"final_output": "={{ $json.url }}",
"production": "Done",
"publishing": "Ready"
},
"matchingColumns": [
"id"
],
"schema": [
{
"id": "id",
"displayName": "id",
"required": false,
"defaultMatch": true,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "idea",
"displayName": "idea",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "caption",
"displayName": "caption",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "production",
"displayName": "production",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "enviroment_prompt",
"displayName": "enviroment_prompt",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "publishing",
"displayName": "publishing",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "final_output",
"displayName": "final_output",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "rating",
"displayName": "rating",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "row_number",
"displayName": "row_number",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"readOnly": true,
"removed": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
640,
780
],
"id": "1c0cc585-38dd-4f0d-99cb-4ad00b46883c",
"name": "Update google sheet",
"credentials": {
"googleSheetsOAuth2Api": {
"id": "bHCyl3PYH1Z7qN9N",
"name": "привет от ИИздец :)"
}
}
},
{
"parameters": {
"url": "={{ $('Update google sheet').item.json.final_output }}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1160,
260
],
"id": "6c845147-d2c0-46d2-9fc0-88f3de076a4a",
"name": "HTTP Request",
"disabled": true
},
{
"parameters": {
"content": "## Публикация на YouTube",
"height": 780,
"width": 320,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1040,
-60
],
"id": "09240c96-d54b-4545-946e-4abf241d286e",
"name": "Sticky Note6"
},
{
"parameters": {
"resource": "video",
"operation": "upload",
"title": "={{ $('Google Sheets').first().json.idea }}",
"regionCode": "US",
"categoryId": "24",
"options": {
"description": "={{ $('OpenAI (промтовик)').first().json.message.content }}",
"privacyStatus": "public"
}
},
"type": "n8n-nodes-base.youTube",
"typeVersion": 1,
"position": [
1160,
520
],
"id": "2fbcb776-23a4-4ba1-9e90-432531f5b7de",
"name": "YouTube",
"credentials": {
"youTubeOAuth2Api": {
"id": "jPhv5KFxgMv7F6pJ",
"name": "YouTube account"
}
},
"disabled": true
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineByPosition",
"numberInputs": 4,
"options": {}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
640,
60
],
"id": "93a947db-8b20-4231-91bf-bc332bbcc742",
"name": "Merge1"
},
{
"parameters": {
"jsCode": "const getFallbackValue = (arr, index) => {\n const total = arr.length;\n\n for (let i = 0; i < total; i++) {\n if (arr[i] && i !== index && i !== index - 1 && i !== index + 1) {\n return arr[i];\n }\n }\n\n for (let i = 0; i < total; i++) {\n if (arr[i] && i !== index) return arr[i];\n }\n\n return null;\n};\n\nreturn [\n {\n scene_titles: items.map((item, index, arr) =>\n item?.json?.text ?? getFallbackValue(arr.map(it => it?.json?.text), index)\n ),\n video_urls: items.map((item, index, arr) =>\n item?.json?.data?.output?.video_url ?? getFallbackValue(arr.map(it => it?.json?.data?.output?.video_url), index)\n ),\n sound_urls: items.map((item, index, arr) =>\n item?.json?.webContentLink ?? getFallbackValue(arr.map(it => it?.json?.webContentLink), index)\n )\n }\n];\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
640,
300
],
"id": "3f4cd0b1-0e5c-4e97-891e-6597c051a3e6",
"name": "Code1",
"alwaysOutputData": false
},
{
"parameters": {
"amount": 2,
"unit": "minutes"
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
20,
260
],
"id": "6a6ea5e4-8339-4993-a85d-23cca3266280",
"name": "Ждем 2 мин",
"webhookId": "afb1958a-091e-4bad-aa25-680c5d5cdd17"
},
{
"parameters": {
"amount": 10,
"unit": "minutes"
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
20,
520
],
"id": "4737ee47-d3da-48d5-9ef8-2a8808039c2f",
"name": "Ждем 10 мин",
"webhookId": "afb1958a-091e-4bad-aa25-680c5d5cdd17"
},
{
"parameters": {
"method": "POST",
"url": "https://api.piapi.ai/api/v1/task",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-API-Key",
"value": "SUDA"
}
]
},
"sendBody": true,
"contentType": "raw",
"rawContentType": "application/json",
"body": "={\n \"model\": \"Qubico/flux1-dev\",\n \"task_type\": \"txt2img\",\n \"input\": {\n \"prompt\": \"{{ $json.message.content }}\",\n \"width\": 540,\n \"height\": 960\n }\n}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-160,
260
],
"id": "cd5b820e-9289-49ac-b54c-4059f81c1804",
"name": "Text to image",
"retryOnFail": true,
"onError": "continueRegularOutput"
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.idea }}",
"hasOutputParser": true,
"messages": {
"messageValues": [
{
"message": "=Ты - генератор коротких сцен от первого лица на русском. Каждая сцена - это часть дня человека в заданной обстановке (например: \"1870, Сибирь, каторга\"). Ты создаёшь 5–6 связанных сцен, где каждое новое действие логически продолжает предыдущее.\n\nПравила:\n- Пиши от первого лица, как будто зритель сам это переживает.\n- Только одно активное физическое действие в каждой сцене.\n- Используй максимум 16 слов.\n- Не используй кавычки.\n- Всегда показывай руки или ноги в действии (тяну, держу, вонзаю, бросаю, поднимаю и т.п.).\n- Не используй причастия (например: грея, стоя, глядя).\n- Не описывай одежду или мысли.\n- Сцена должна быть конкретной, визуальной и понятной.\n- Окружение - как фон: снег, лёд, дерево, цепи, грязь, пламя, звук, холод и т.п.\n- Стиль - кинематографичный, но без поэтизма, ближе к реализму.\n- В каждой следующей сцене упомяни то, что происходило в предыдущей.\n\n\nПримеры:\n- Вонзаю тупой топор в промёрзлое полено под взглядом надзирателя\n- Сбрасываю снег в деревянную телегу на фоне метели\n- Тяну тяжёлую цепь к колу на грязном полу\n- Держу миску, в неё капает горячая похлёбка\n- Грею ладони у коптящей свечи в каменной камере\n\n"
}
]
}
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.5,
"position": [
-680,
500
],
"id": "a36bb2c6-e567-4d39-943b-7b0deef57998",
"name": "Titles и идеи (сценарист)"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4o",
"mode": "list",
"cachedResultName": "GPT-4O"
},
"messages": {
"values": [
{
"content": "=You will receive a short Russian phrase describing a first-person physical action in a specific historical or fictional environment.\n\nYour task is to translate and expand this phrase into a single cinematic sentence in English, optimized for image and video generation models like Flux 1 and Kling. Focus only on one clear visual frame that can be animated.\n\nStructure:\n1. Begin with: \"First-person view POV GoPro shot of [relevant limb] doing [physical action]\".\n2. Use one clear action verb + one physical object (e.g., shovel, rope, pickaxe).\n3. Add a minimal background using: \"In the background, ...\", describing physical environment only.\n4. Use only one sentence. No inner thoughts, no narration, no storytelling.\n5. Do not add new objects, actions, characters, or tools unless they are explicitly mentioned in the original Russian phrase.\n6. Do not add any visual elements (objects, locations, props, or background context) unless they are explicitly mentioned in the original Russian phrase.\n7. Avoid poetic or metaphorical language. No literary tone.\n8. Limit length to max 70 words.\n9. Use physical sensations if relevant (cold, heavy, icy, foggy, dirty, smoky).\n10. No clothing details, emotional states, facial expressions, or invented scenes.\n\nEnvironment context: {{ $('Google Sheets').first().json.enviroment_prompt }} \nPhrase to expand: {{ $json.text }}\n\nExamples:\n\nInput: Рублю дрова в лесу \nOutput: First-person view POV GoPro shot of rough hands swinging a frost-covered axe into frozen birch wood; in the background, towering pine trees fade into a gray Siberian fog as icy wind scatters wood chips across the snow-covered ground.\n\nInput: Сбрасываю снег в деревянную телегу \nOutput: First-person view POV GoPro shot of gloved hands tossing heavy snow into a wooden cart; in the background, swirling snowflakes blur a snowy road stretching through a frozen forest.\n\nIMPORTANT:\n- The hands or feet must be actively performing a physical action. Avoid passive descriptions.\n- Do not use abstract framing like "standing", "looking", "watching".\n- Do not include multiple prompts. Return only one complete and animatable sentence.\n- Use action verbs such as: gripping, pulling, swinging, scraping, lifting, dragging, slamming, digging, chopping, throwing, pushing.\n- Do not add any visual elements (objects, locations, props, or background context - e.g., railways, hills, buildings) unless they are explicitly mentioned in the original Russian phrase."
}
]
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
-60,
0
],
"id": "8c22c1f6-7ba1-4d2a-9978-cb7806c206e4",
"name": "OpenAI (промтовик)",
"credentials": {
"openAiApi": {
"id": "qnqNGr4J1V43pQi6",
"name": "(ノ◕ヮ◕)ノ*:・゚✧ "
}
}
},
{
"parameters": {
"amount": 10,
"unit": "minutes"
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
1160,
20
],
"id": "c2b4c23e-42bf-46af-bb3c-16980078ef64",
"name": "Жди 10 min",
"webhookId": "b880e7c9-a094-4b60-9a46-091f59073f6a",
"disabled": true
}
],
"pinData": {},
"connections": {
"Schedule Trigger": {
"main": [
[
{
"node": "Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets": {
"main": [
[
{
"node": "Titles и идеи (сценарист)",
"type": "main",
"index": 0
}
]
]
},
"Item List Output Parser": {
"ai_outputParser": [
[
{
"node": "Titles и идеи (сценарист)",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Titles и идеи (сценарист)",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Get Image": {
"main": [
[
{
"node": "Image to video",
"type": "main",
"index": 0
}
]
]
},
"Image to video": {
"main": [
[
{
"node": "Ждем 10 мин",
"type": "main",
"index": 0
}
]
]
},
"Get Video": {
"main": [
[
{
"node": "Text to sound",
"type": "main",
"index": 0
},
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Text to sound": {
"main": [
[
{
"node": "Upload Mp3",
"type": "main",
"index": 0
}
]
]
},
"Upload Mp3": {
"main": [
[
{
"node": "Grant Access",
"type": "main",
"index": 0
},
{
"node": "Merge1",
"type": "main",
"index": 2
}
]
]
},
"Grant Access": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 3
}
]
]
},
"Render Video": {
"main": [
[
{
"node": "Update google sheet",
"type": "main",
"index": 0
}
]
]
},
"Update google sheet": {
"main": [
[
{
"node": "Жди 10 min",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "YouTube",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Code1",
"type": "main",
"index": 0
}
]
]
},
"Code1": {
"main": [
[
{
"node": "Render Video",
"type": "main",
"index": 0
}
]
]
},
"Ждем 2 мин": {
"main": [
[
{
"node": "Get Image",
"type": "main",
"index": 0
}
]
]
},
"Ждем 10 мин": {
"main": [
[
{
"node": "Get Video",
"type": "main",
"index": 0
}
]
]
},
"Text to image": {
"main": [
[
{
"node": "Ждем 2 мин",
"type": "main",
"index": 0
}
]
]
},
"Titles и идеи (сценарист)": {
"main": [
[
{
"node": "OpenAI (промтовик)",
"type": "main",
"index": 0
},
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"OpenAI (промтовик)": {
"main": [
[
{
"node": "Text to image",
"type": "main",
"index": 0
}
]
]
},
"Жди 10 min": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "210b5b33-6ab1-42a0-b48a-7567fca2afb6",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "03e94f23f7822a7463cef39c630d67241aefb5250efc640a947ddbf069e7bead"
},
"id": "Pr4p1yrwy5nc6vDh",
"tags": []
}