This workflow corresponds to n8n.io template #3776 — we link there as the canonical source.
This workflow follows the Airtable → HTTP Request 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 →
{
"id": "Idv3YrtHuN8pEkbi",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Repurpose YouTube videos to social media posts with RSS, Dumpling AI, Airtable",
"tags": [
{
"id": "TlcNkmb96fUfZ2eA",
"name": "Tutorials",
"createdAt": "2025-04-15T17:02:00.249Z",
"updatedAt": "2025-04-15T17:02:00.249Z"
}
],
"nodes": [
{
"id": "9f1aae06-32fd-4880-a960-67b322d6ff47",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1900,
-1100
],
"parameters": {
"width": 880,
"height": 800,
"content": "## \ud83c\udfaf Goal\nRepurpose YouTube videos to social media posts with RSS, Dumpling AI, Airtable\n\n---\n\n## \ud83d\udd04 Workflow Steps\n\n### 1. RSS Trigger\n- Triggers when a new video appears in the YouTube feed.\n\n### 2. Dumpling AI - YouTube Transcript\n- Extracts the transcript from the YouTube video link.\n\n### 3. OpenAI - Generate Social Media Content + Image Prompts\n- Based on the transcript, creates posts for Instagram, Facebook, and LinkedIn.\n- Also generates image prompts for each platform.\n\n### 4. Edit field Node - Structure Fields\n- Extracts and organizes content:\n - Posts for each platform\n - Image prompts for each platform\n\n---\n\n## \ud83d\uddbc\ufe0f Image Generation (Dumpling AI)\n- **IG_Image:** Uses Instagram image prompt\n- **Facebook_Image:** Uses Facebook image prompt\n- **LinkedIn_Images:** Uses LinkedIn image prompt\n\n---\n\n## \ud83d\udce5 Save to Airtable (Content)\n- Saves each platform\u2019s post and platform label into Airtable.\n\n## \ud83d\udcce Upload Image to Airtable (Attachment)\n- PATCH requests update the corresponding record in Airtable with the generated image URL for each platform.\n\n---\n\n## \ud83d\udd01 Notes\n- Image prompt and post must match by platform.\n- Make sure the record IDs are tracked correctly to attach images to the right row.\n\n"
},
"typeVersion": 1
},
{
"id": "ef41e143-4f0b-4ec1-9725-970b76b86bf6",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-260,
-1160
],
"parameters": {
"color": 3,
"width": 900,
"height": 680,
"content": "### \ud83d\uddbc\ufe0f Generate & Upload Platform-Specific Content\n\nEach branch in this section handles one platform (Instagram, Facebook, or LinkedIn). Here's how they work:\n\n1. **AI Image Generation (Dumpling AI)** \n - Each branch uses a specific image prompt (from earlier GPT output) to generate a custom AI image using Dumpling AI's `generate-ai-image` endpoint.\n\n2. **Save Content to Airtable** \n - Posts generated for each platform are saved in Airtable using their respective nodes (`Instagram`, `Facebook`, `LinkedIn`). Platform labels and post text are included.\n\n3. **Attach Image to Airtable Record** \n - Once the image is generated, the matching image URL is patched into the correct Airtable row (as an attachment), keeping content and media organized under one record.\n\n\ud83d\udca1 *All three branches follow the same flow structure, ensuring consistent results across platforms.*\n"
},
"typeVersion": 1
},
{
"id": "3c276ae5-2805-4798-bf58-9ba30be10af8",
"name": "Get YouTube Transcript",
"type": "n8n-nodes-base.httpRequest",
"notes": "HTTP REQUEST",
"position": [
-900,
-520
],
"parameters": {
"url": "https://app.dumplingai.com/api/v1/get-youtube-transcript",
"method": "POST",
"options": {},
"jsonBody": "={\n \"videoUrl\": \"{{ $json.link }}\", \n \"includeTimestamps\": \"true\",\n \"preferredLanguage\": \"en\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"notesInFlow": false,
"typeVersion": 4.2
},
{
"id": "fc352059-0027-4727-9836-0b4ee7761aa4",
"name": "Generate Social Posts + Image Prompts",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-680,
-520
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "=You are a content marketer and creative strategist. I will paste the transcript of a YouTube video. Your job is to generate engaging social media content and image generation prompts from it.\n\nHere\u2019s what I need you to do:\n\n1. Read the transcript and identify the core message.\n2. Generate 3 platform-specific social media posts using the core message:\n - Instagram: short, casual, friendly tone, can include emojis.\n - Facebook: conversational and storytelling tone, slightly longer.\n - LinkedIn: professional, insightful, and value-driven.\n3. For each platform, also create an image prompt that could be used to generate a relevant image using an AI image generator.\n - The image prompt should reflect the post content and message.\n - Be specific and descriptive enough for an AI to understand what to generate.\n\n\ud83c\udfaf All output must be returned in the following **JSON format**:\n\n```json\n{\n \"instagram\": {\n \"post\": \"[Instagram-style caption]\",\n \"image_prompt\": \"[Image generation prompt for Instagram]\"\n },\n \"facebook\": {\n \"post\": \"[Facebook-style caption]\",\n \"image_prompt\": \"[Image generation prompt for Facebook]\"\n },\n \"linkedin\": {\n \"post\": \"[LinkedIn-style caption]\",\n \"image_prompt\": \"[Image generation prompt for LinkedIn]\"\n }\n}\n\n"
},
{
"content": "=Here is the transcript:{{ $json.transcript }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "2fd29a20-e47e-4d4b-88c3-92b9fcee53e7",
"name": "Structure Posts & Prompts by Platform",
"type": "n8n-nodes-base.set",
"position": [
-300,
-520
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "46d587df-2be4-43f1-a83f-829077d6e926",
"name": "Instagram",
"type": "string",
"value": "={{ $json.message.content.instagram.post }}"
},
{
"id": "b35c63a3-ecd9-4db5-a602-30d657e06f6a",
"name": "Facebook",
"type": "string",
"value": "={{ $json.message.content.facebook.post }}"
},
{
"id": "e10d0a60-0c87-4e46-b4d5-89325a84a923",
"name": "Linkedin",
"type": "string",
"value": "={{ $json.message.content.linkedin.post }}"
},
{
"id": "00900a41-b5a7-47cb-a448-3020e8c711f8",
"name": "IG Image Prompt",
"type": "string",
"value": "={{ $json.message.content.instagram.image_prompt }}"
},
{
"id": "35cf902a-40d0-4484-adeb-808438f42327",
"name": "Facebook Image prompt",
"type": "string",
"value": "={{ $json.message.content.facebook.image_prompt }}"
},
{
"id": "c2377411-8b32-4974-b7cb-c6d2c79f584f",
"name": "LinkedIn Image prompt",
"type": "string",
"value": "={{ $json.message.content.linkedin.image_prompt }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "2a911a93-4295-45bd-817d-6ab90a8a9d53",
"name": "Generate Instagram Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
-80,
-720
],
"parameters": {
"url": "https://app.dumplingai.com/api/v1/generate-ai-image",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"FLUX.1-schnell\",\n \"input\": {\n \"prompt\": \"{{ $json['IG Image Prompt'] }}\",\n \"num_outputs\": 1,\n \"aspect_ratio\": \"1:1\",\n \"output_quality\": 80,\n \"num_inference_steps\": 4,\n \"disable_safety_checker\": false,\n \"go_fast\": true,\n \"megapixels\": \"1\"\n }\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "858ffccc-d16d-4706-82db-a8cdc50c814e",
"name": "Generate Facebook Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
-80,
-520
],
"parameters": {
"url": "https://app.dumplingai.com/api/v1/generate-ai-image",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"FLUX.1-schnell\",\n \"input\": {\n \"prompt\": \"{{ $json['Facebook Image prompt'] }}\",\n \"num_outputs\": 1,\n \"aspect_ratio\": \"1:1\",\n \"output_quality\": 80,\n \"num_inference_steps\": 4,\n \"disable_safety_checker\": false,\n \"go_fast\": true,\n \"megapixels\": \"1\"\n }\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "Authorization"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "cc8795e2-ceed-4bc1-ab87-2855fbc05001",
"name": "Generate LinkedIn Image (Dumpling AI)",
"type": "n8n-nodes-base.httpRequest",
"position": [
-80,
-320
],
"parameters": {
"url": "https://app.dumplingai.com/api/v1/generate-ai-image",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"FLUX.1-schnell\",\n \"input\": {\n \"prompt\": \"{{ $json['LinkedIn Image prompt'] }}\",\n \"num_outputs\": 1,\n \"aspect_ratio\": \"1:1\",\n \"output_quality\": 80,\n \"num_inference_steps\": 4,\n \"disable_safety_checker\": false,\n \"go_fast\": true,\n \"megapixels\": \"1\"\n }\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "4952fae2-452b-4ef9-91fe-99cc32257f6d",
"name": "Upload Instagram Image to Airtable",
"type": "n8n-nodes-base.httpRequest",
"position": [
360,
-720
],
"parameters": {
"url": "=https://api.airtable.com/v0/appPSvSKdA6075xJC/tblmqgjEwgIR6rpUZ/{{ $json.id }}",
"method": "PATCH",
"options": {},
"jsonBody": "={\n \"fields\": {\n \"Attachments\": [\n {\n \"url\": \"{{ $('Generate Instagram Image').item.json.images[0].url }}\"\n }\n ]\n }\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "f9e19874-d41d-46fd-b5b6-56f38c10ec00",
"name": "Upload Facebook Image to Airtable",
"type": "n8n-nodes-base.httpRequest",
"position": [
360,
-520
],
"parameters": {
"url": "=https://api.airtable.com/v0/appPSvSKdA6075xJC/tblmqgjEwgIR6rpUZ/{{ $json.id }}",
"method": "PATCH",
"options": {},
"jsonBody": "={\n \"fields\": {\n \"Attachments\": [\n {\n \"url\": \"{{ $('Generate Facebook Image').item.json.images[0].url }}\"\n }\n ]\n }\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "d20478e3-cdcb-46da-ad16-6b37e45dfb31",
"name": "Upload LinkedIn Image to Airtable",
"type": "n8n-nodes-base.httpRequest",
"position": [
360,
-320
],
"parameters": {
"url": "=https://api.airtable.com/v0/appPSvSKdA6075xJC/tblmqgjEwgIR6rpUZ/{{ $json.id }}",
"method": "PATCH",
"options": {},
"jsonBody": "={\n \"fields\": {\n \"Attachments\": [\n {\n \"url\": \"{{ $('Generate LinkedIn Image (Dumpling AI)').item.json.images[0].url }}\"\n }\n ]\n }\n}\n\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "56ecd56e-29c2-400b-8d54-b3cf43550fe6",
"name": "Save Instagram Caption to Airtable",
"type": "n8n-nodes-base.airtable",
"position": [
140,
-720
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://airtable.com/appPSvSKdA6075xJC",
"cachedResultName": "Testing n8n"
},
"table": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://airtable.com/appPSvSKdA6075xJC/tblmqgjEwgIR6rpUZ",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"Content": "={{ $('Structure Posts & Prompts by Platform').item.json.Instagram }}",
"Platform": "Instagram"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Platform",
"type": "options",
"display": true,
"options": [
{
"name": "Instagram",
"value": "Instagram"
},
{
"name": "Facebook",
"value": "Facebook"
},
{
"name": "Linkdin",
"value": "Linkdin"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Platform",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Attachments",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Attachments",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Content",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "6159ec29-6cd6-42fe-8ed7-b21c1d51052a",
"name": "Save Facebook Caption to Airtable",
"type": "n8n-nodes-base.airtable",
"position": [
140,
-520
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://airtable.com/appPSvSKdA6075xJC",
"cachedResultName": "Testing n8n"
},
"table": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://airtable.com/appPSvSKdA6075xJC/tblmqgjEwgIR6rpUZ",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"Content": "={{ $('Structure Posts & Prompts by Platform').item.json.Facebook }}",
"Platform": "Facebook"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Platform",
"type": "options",
"display": true,
"options": [
{
"name": "Instagram",
"value": "Instagram"
},
{
"name": "Facebook",
"value": "Facebook"
},
{
"name": "Linkdin",
"value": "Linkdin"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Platform",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Attachments",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Attachments",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Content",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "ee533597-a43d-42e9-88a2-1516cb23561c",
"name": "Save LinkedIn Caption to Airtable",
"type": "n8n-nodes-base.airtable",
"position": [
140,
-320
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://airtable.com/appPSvSKdA6075xJC",
"cachedResultName": "Testing n8n"
},
"table": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://airtable.com/appPSvSKdA6075xJC/tblmqgjEwgIR6rpUZ",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"Content": "={{ $('Structure Posts & Prompts by Platform').item.json.Linkedin }}",
"Platform": "Linkdin"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Platform",
"type": "options",
"display": true,
"options": [
{
"name": "Instagram",
"value": "Instagram"
},
{
"name": "Facebook",
"value": "Facebook"
},
{
"name": "Linkdin",
"value": "Linkdin"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Platform",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Attachments",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Attachments",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Content",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "6b7d7bc3-796a-4da4-a204-a96bae305507",
"name": "Get YouTube Uploads",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"notes": "\n\n",
"position": [
-1180,
-520
],
"parameters": {
"feedUrl": "https://rss.app/feeds/FmN1GIARUeCC6ELF.xml",
"pollTimes": {
"item": [
{}
]
}
},
"notesInFlow": true,
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "c02e5325-5f0c-42f4-86fc-5ba8b14e2f6d",
"connections": {
"Get YouTube Uploads": {
"main": [
[
{
"node": "Get YouTube Transcript",
"type": "main",
"index": 0
}
]
]
},
"Get YouTube Transcript": {
"main": [
[
{
"node": "Generate Social Posts + Image Prompts",
"type": "main",
"index": 0
}
]
]
},
"Generate Facebook Image": {
"main": [
[
{
"node": "Save Facebook Caption to Airtable",
"type": "main",
"index": 0
}
]
]
},
"Generate Instagram Image": {
"main": [
[
{
"node": "Save Instagram Caption to Airtable",
"type": "main",
"index": 0
}
]
]
},
"Save Facebook Caption to Airtable": {
"main": [
[
{
"node": "Upload Facebook Image to Airtable",
"type": "main",
"index": 0
}
]
]
},
"Save LinkedIn Caption to Airtable": {
"main": [
[
{
"node": "Upload LinkedIn Image to Airtable",
"type": "main",
"index": 0
}
]
]
},
"Save Instagram Caption to Airtable": {
"main": [
[
{
"node": "Upload Instagram Image to Airtable",
"type": "main",
"index": 0
}
]
]
},
"Upload Instagram Image to Airtable": {
"main": [
[]
]
},
"Generate LinkedIn Image (Dumpling AI)": {
"main": [
[
{
"node": "Save LinkedIn Caption to Airtable",
"type": "main",
"index": 0
}
]
]
},
"Generate Social Posts + Image Prompts": {
"main": [
[
{
"node": "Structure Posts & Prompts by Platform",
"type": "main",
"index": 0
}
]
]
},
"Structure Posts & Prompts by Platform": {
"main": [
[
{
"node": "Generate Facebook Image",
"type": "main",
"index": 0
},
{
"node": "Generate Instagram Image",
"type": "main",
"index": 0
},
{
"node": "Generate LinkedIn Image (Dumpling AI)",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
airtableTokenApihttpHeaderAuthopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow is for content creators, social media managers, marketing teams, and virtual assistants who want to automatically repurpose YouTube videos into ready-to-post social media content. If you need to quickly turn long-form videos into short posts for platforms like…
Source: https://n8n.io/workflows/3776/ — 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.
inoreader_AI->196267257. Uses httpRequest, openAi, telegram, airtable. Event-driven trigger; 28 nodes.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Voice Note -> Veo 3 AD. Uses telegramTrigger, telegram, openAi, httpRequest. Event-driven trigger; 49 nodes.
This n8n workflow automates the creation of 9:16 aspect ratio images optimized for short-form video content and thumbnails. It integrates multiple tools to retrieve content, generate scripts, and crea
This workflow automatically turns any audio file uploaded to Google Drive into a complete podcast episode. It handles transcription, content generation, blog drafting, social copy creation, thumbnail