This workflow corresponds to n8n.io template #14758 — we link there as the canonical source.
This workflow follows the Agent → Google Docs 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": "e7c92721-edcf-4704-b452-c53599332072",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
144
],
"parameters": {
"width": 480,
"height": 896,
"content": "##Publish Post from YouTube transcripts to WordPress & Telegram\n\n### How it works\n\n1. Triggers schedule to fetch YouTube playlist items via API.\n2. Parses items to identify new videos and append them to a Google Sheet.\n3. Fetches transcripts, processes, and stores them in Google Docs.\n4. Generates blog content from YouTube videos using AI, saving updates to Google Sheets.\n5. Publishes processed blog content to WordPress, including featured image creation and uploading.\n\n### Setup steps\n\n- [ ] Ensure Google Sheets API credentials are configured.\n- [ ] Set up Telegram credentials for notifications.\n- [ ] Configure YouTube API access for fetching playlist items.\n- [ ] Set up access to the AI service for content and image generation.\n- [ ] Set WordPress credentials for post publishing.\n"
},
"typeVersion": 1
},
{
"id": "5b82425f-8fb2-410b-90a8-91f59021eff4",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
240
],
"parameters": {
"color": 7,
"width": 416,
"height": 304,
"content": "## Schedule and fetch YouTube\n\nThis group triggers the workflow and fetches YouTube playlist items."
},
"typeVersion": 1
},
{
"id": "bd87965b-bd39-4ce1-b369-d16ddb9a8134",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
976,
144
],
"parameters": {
"color": 7,
"width": 640,
"height": 496,
"content": "## Process YouTube videos\n\nSplits playlist items, extracts video IDs, and filters new videos against existing data."
},
"typeVersion": 1
},
{
"id": "fd3156ee-60cd-4d47-9d8a-03a745037a08",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1648,
240
],
"parameters": {
"color": 7,
"height": 304,
"content": "## Log new videos\n\nAppends new video information to a Google Sheet."
},
"typeVersion": 1
},
{
"id": "1f878c82-cd4f-4e8e-a53d-357433d64142",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1920,
240
],
"parameters": {
"color": 7,
"width": 640,
"height": 304,
"content": "## Fetch and aggregate transcript\n\nFetches YouTube transcript using an API and aggregates lines for processing."
},
"typeVersion": 1
},
{
"id": "645aa71f-b12e-4071-9dfc-bf40ad1b2e4f",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2592,
256
],
"parameters": {
"color": 7,
"width": 640,
"height": 272,
"content": "## Process transcript text\n\nCleans and combines transcript lines before saving them to Google Docs."
},
"typeVersion": 1
},
{
"id": "bcaad3a5-a26c-4049-ad0a-37f78bafc6b8",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
3264,
240
],
"parameters": {
"color": 7,
"width": 448,
"height": 304,
"content": "## Save and notify transcript\n\nSaves the transcript link to Google Sheets and sends a notification."
},
"typeVersion": 1
},
{
"id": "3f9b9d46-73d3-4f7b-9d46-59b18f736dd2",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
496,
736
],
"parameters": {
"color": 7,
"width": 416,
"height": 304,
"content": "## Schedule and get videos\n\nSchedules the blog content generation and retrieves video data from Google Sheets."
},
"typeVersion": 1
},
{
"id": "40682625-3ab4-4bed-ad52-3e391b6d6dbf",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
944,
736
],
"parameters": {
"color": 7,
"width": 416,
"height": 304,
"content": "## Filter and update video state\n\nFilters unprocessed videos and marks them as processing in Google Sheets."
},
"typeVersion": 1
},
{
"id": "21ca9050-c384-47c8-ad6a-58bad89a94c9",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1392,
736
],
"parameters": {
"color": 7,
"width": 608,
"height": 640,
"content": "## AI content generation\n\nGenerates blog content from transcripts using AI and reads required references."
},
"typeVersion": 1
},
{
"id": "fb7f52a5-2ca3-4d3f-8b25-5d0e245eddb4",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
2032,
752
],
"parameters": {
"color": 7,
"width": 640,
"height": 272,
"content": "## Process AI output\n\nParses AI output and saves the blog content to Google Sheets."
},
"typeVersion": 1
},
{
"id": "4d77643e-a475-4976-b5c5-13a1ce3f64d0",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
2704,
688
],
"parameters": {
"color": 7,
"height": 336,
"content": "## Notify content generation\n\nNotifies via Telegram when content is generated."
},
"typeVersion": 1
},
{
"id": "b80e9516-34bc-428d-9e7e-a7bd4312c497",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
1296
],
"parameters": {
"color": 7,
"width": 416,
"height": 304,
"content": "## Schedule and get posts\n\nSchedules publishing to WordPress and fetches pending posts."
},
"typeVersion": 1
},
{
"id": "5ace584b-efeb-4886-acc1-f6bbc781f54b",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
1296
],
"parameters": {
"color": 7,
"width": 416,
"height": 304,
"content": "## Select and publish post\n\nSelects the post for publishing and submits it to WordPress."
},
"typeVersion": 1
},
{
"id": "92542d7b-00eb-4235-8186-93ee9d897e76",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"position": [
1376,
1408
],
"parameters": {
"color": 7,
"width": 640,
"height": 272,
"content": "## Generate and process image\n\nGenerates, downloads, and processes the featured image for posts."
},
"typeVersion": 1
},
{
"id": "cd707613-6f20-4f08-93e2-0c5be4181ca7",
"name": "Sticky Note15",
"type": "n8n-nodes-base.stickyNote",
"position": [
2048,
1296
],
"parameters": {
"color": 7,
"width": 416,
"height": 304,
"content": "## Upload and attach image\n\nUploads the processed image to WordPress and attaches it to the post."
},
"typeVersion": 1
},
{
"id": "33629428-c341-4793-b541-a235bb773e41",
"name": "Sticky Note16",
"type": "n8n-nodes-base.stickyNote",
"position": [
2496,
1296
],
"parameters": {
"color": 7,
"width": 416,
"height": 304,
"content": "## Publish and notify post\n\nPosts the final content on Telegram and marks it as published in Google Sheets."
},
"typeVersion": 1
},
{
"id": "da3187c9-db56-47f0-bdcc-bcb22ee39e74",
"name": "When Fetch Playlist Scheduled",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
576,
368
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.3
},
{
"id": "4eabce27-3597-4fb9-a389-c40d1ad97e37",
"name": "Fetch Playlist Items",
"type": "n8n-nodes-base.httpRequest",
"position": [
800,
368
],
"parameters": {
"url": "https://www.googleapis.com/youtube/v3/playlistItems",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "playlistId",
"value": "YOUR_YOUTUBE_PLAYLIST_ID"
},
{
"name": "part",
"value": "snippet,contentDetails"
},
{
"name": "maxResults",
"value": "10"
},
{
"name": "key",
"value": "YOUR_YOUTUBE_API_KEY"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "be3036fe-38a3-4e40-ab05-00494e2458cc",
"name": "Split Playlist Items",
"type": "n8n-nodes-base.splitOut",
"position": [
1024,
272
],
"parameters": {
"options": {},
"fieldToSplitOut": "items"
},
"typeVersion": 1
},
{
"id": "a6320086-9330-4ce4-ad86-260036e17ffa",
"name": "Set Video ID",
"type": "n8n-nodes-base.set",
"position": [
1248,
272
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d6aa222a-2af9-440c-b0df-58b5d42c7c15",
"name": "videoID",
"type": "string",
"value": "={{ $json.contentDetails.videoId }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "795ca56e-1279-4fcc-b763-d60620bbf0cc",
"name": "Read Existing Videos from Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1248,
464
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "youtubeVideos"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "a7ddaad1-3ccf-4b4e-85a0-d9380b8bb088",
"name": "Filter New Videos Only",
"type": "n8n-nodes-base.merge",
"position": [
1472,
368
],
"parameters": {
"mode": "combine",
"options": {},
"joinMode": "keepNonMatches",
"outputDataFrom": "input1",
"fieldsToMatchString": "videoID"
},
"typeVersion": 3.2
},
{
"id": "0da536c0-19c0-4d9f-8e90-1dcfd36a3b85",
"name": "Append New Videos to Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1696,
368
],
"parameters": {
"columns": {
"value": {
"title": "={{ $json.snippet.title }}",
"status": "N",
"videoID": "={{ $json.videoID }}",
"description": "={{ $json.snippet.description }}",
"videoPublishedAt": "={{ $json.contentDetails.videoPublishedAt }}",
"videoOwnerChannelTitle": "={{ $json.snippet.videoOwnerChannelTitle }}"
},
"schema": [
{
"id": "videoID",
"type": "string",
"display": true,
"required": false,
"displayName": "videoID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "description",
"type": "string",
"display": true,
"required": false,
"displayName": "description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoPublishedAt",
"type": "string",
"display": true,
"required": false,
"displayName": "videoPublishedAt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoOwnerChannelTitle",
"type": "string",
"display": true,
"required": false,
"displayName": "videoOwnerChannelTitle",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "youtubeVideos"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "7396e7b7-54fb-4181-a2c3-aa2202b6ee4c",
"name": "Fetch Transcript via RapidAPI",
"type": "n8n-nodes-base.httpRequest",
"position": [
1968,
368
],
"parameters": {
"url": "https://youtube-transcript3.p.rapidapi.com/api/transcript",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "videoId",
"value": "={{ $json.videoID }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "youtube-transcript3.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "YOUR_RAPIDAPI_KEY"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "7cd30dd9-90ab-458f-9da4-dc3ca5471af3",
"name": "Split Transcript Lines",
"type": "n8n-nodes-base.splitOut",
"position": [
2192,
368
],
"parameters": {
"options": {},
"fieldToSplitOut": "transcript"
},
"typeVersion": 1
},
{
"id": "7928f63a-b8d6-4c81-b177-d8165b88d70c",
"name": "Join Transcript Lines",
"type": "n8n-nodes-base.aggregate",
"position": [
2416,
368
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "text"
}
]
}
},
"typeVersion": 1
},
{
"id": "64d7f42b-05ab-45e2-b0c1-a6a9aed87305",
"name": "Clean and Aggregate Transcript",
"type": "n8n-nodes-base.code",
"position": [
2640,
368
],
"parameters": {
"jsCode": "const items = $input.all();\n\nreturn items.map((item, index) => {\n const textArray = item.json.text || [];\n const fullTranscript = textArray\n .join(' ')\n .replace(/\\s+/g, ' ')\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .trim();\n\n return {\n json: {\n ...item.json,\n transcript: fullTranscript\n },\n pairedItem: { item: index }\n };\n});"
},
"typeVersion": 2
},
{
"id": "117fb59e-752e-4f41-a5db-318d839181c9",
"name": "Create Transcript Google Doc",
"type": "n8n-nodes-base.googleDocs",
"position": [
2864,
368
],
"parameters": {
"title": "={{ $('Filter New Videos Only').item.json.snippet.title }}\npublished at: {{ $('Filter New Videos Only').item.json.snippet.publishedAt }}",
"folderId": "YOUR_GOOGLE_DRIVE_FOLDER_ID"
},
"typeVersion": 2
},
{
"id": "f8b0cd2d-7a13-4f52-8169-6b346418f0c6",
"name": "Write to Transcript Google Doc",
"type": "n8n-nodes-base.googleDocs",
"position": [
3088,
368
],
"parameters": {
"actionsUi": {
"actionFields": [
{
"text": "={{ $('Clean and Aggregate Transcript').item.json.transcript }}",
"action": "insert"
}
]
},
"operation": "update",
"documentURL": "={{ $json.id }}"
},
"typeVersion": 2
},
{
"id": "621e8d4c-ba22-41e3-9032-f8551535325b",
"name": "Update Doc Link in Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
3312,
368
],
"parameters": {
"columns": {
"value": {
"videoID": "={{ $('Append New Videos to Sheets').item.json.videoID }}",
"transcriptDOCLink": "={{ $json.documentId }}"
},
"schema": [
{
"id": "videoID",
"type": "string",
"display": true,
"required": false,
"displayName": "videoID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "transcriptDOCLink",
"type": "string",
"display": true,
"required": false,
"displayName": "transcriptDOCLink",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"videoID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "youtubeVideos"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "719db3b1-b07d-4c86-a3c3-d581013f9b83",
"name": "Notify Transcript Saved",
"type": "n8n-nodes-base.telegram",
"position": [
3568,
368
],
"parameters": {
"text": "=\u2705 New video transcript saved:\nvideoid: {{ $json.videoID }}",
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "68b4cd29-1550-4ce8-97b5-a9440102505c",
"name": "When Blog Generation Scheduled",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
544,
864
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtMinute": 5
}
]
}
},
"typeVersion": 1.3
},
{
"id": "523d1a21-3205-46f6-b7b6-4709a2ebafbf",
"name": "Fetch All Videos from Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
768,
864
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "youtubeVideos"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "42c90563-f807-4c68-9f10-afce9a015e82",
"name": "Filter Unprocessed Videos",
"type": "n8n-nodes-base.filter",
"position": [
992,
864
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1ea0246d-80eb-47f9-90a4-feea3ca010c8",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "N"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "6c38998c-057e-41e2-ba93-fe772da56023",
"name": "Update Video as Processing",
"type": "n8n-nodes-base.googleSheets",
"position": [
1216,
864
],
"parameters": {
"columns": {
"value": {
"status": "processing",
"videoID": "={{ $('Filter Unprocessed Videos').item.json.videoID }}"
},
"schema": [
{
"id": "videoID",
"type": "string",
"display": true,
"required": false,
"displayName": "videoID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"videoID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "youtubeVideos"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "19273a63-44be-4c8d-9767-8f4f648137e2",
"name": "Blog Post Generator Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1696,
864
],
"parameters": {
"text": "Call your available tools, analyze the content, and produce a JSON output. The output must be ONLY a JSON array \u2014 nothing else.",
"options": {
"systemMessage": "You are a professional AI content analyst and writer for a Persian-language media outlet. You have access to two tools:\n1. **Google Docs Tool** \u2014 read the YouTube video transcript\n2. **blogsAndNewsUploaded_Read** \u2014 read previously published articles for internal linking\n\nCall both tools, then produce structured JSON blog posts from the transcript. Output must be ONLY a valid JSON array."
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "0ffe8f36-e948-4449-a417-fd301d797944",
"name": "Google Gemini Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1440,
1216
],
"parameters": {
"options": {},
"modelName": "gemini-2.5-flash"
},
"typeVersion": 1
},
{
"id": "e7830e00-388c-4748-baff-b60f5bfeaf45",
"name": "Fetch Internal Links Tool",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
1600,
1088
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "blogsAndNewsUploaded"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "df0ae656-ce47-4734-914a-5bd755a0628c",
"name": "Fetch Transcript from Google Docs",
"type": "n8n-nodes-base.googleDocsTool",
"position": [
1728,
1088
],
"parameters": {
"operation": "get",
"documentURL": "={{ $('Filter Unprocessed Videos').item.json.transcriptDOCLink }}"
},
"typeVersion": 2
},
{
"id": "d55e4222-eb24-4316-b6bd-3d23c6173c09",
"name": "Parse AI Output",
"type": "n8n-nodes-base.code",
"position": [
2080,
864
],
"parameters": {
"jsCode": "let raw = $input.first().json.output || \n $input.first().json.text || \n $input.first().json.content;\n\nif (Array.isArray(raw)) {\n raw = raw.map(b => b.text || '').join('');\n}\n\nraw = raw.trim();\nconst startIndex = raw.indexOf('[');\nconst endIndex = raw.lastIndexOf(']');\n\nif (startIndex === -1 || endIndex === -1) {\n throw new Error('No JSON array found. Preview: ' + raw.substring(0, 100));\n}\n\nraw = raw.substring(startIndex, endIndex + 1);\n\nlet newsArray;\ntry {\n newsArray = JSON.parse(raw);\n} catch(e) {\n try {\n let repaired = raw\n .replace(/[\\u0000-\\u001F\\u007F-\\u009F]/g, ' ')\n .replace(/,\\s*}/g, '}')\n .replace(/,\\s*]/g, ']');\n newsArray = JSON.parse(repaired);\n } catch(e2) {\n throw new Error('Parse failed: ' + e.message);\n }\n}\n\nconst inputItem = $input.first();\n\nreturn newsArray.map((item) => ({\n json: {\n ...inputItem.json,\n title: item.title || '',\n summary: item.summary || '',\n body: item.body || '',\n telegram_body: item.telegram_body || '',\n tags: item.tags || '',\n image_prompt: item.image_prompt || '',\n publish_priority: item.publish_priority || 'normal'\n },\n pairedItem: { item: 0 }\n}));"
},
"typeVersion": 2
},
{
"id": "8778e4c5-242b-4967-94c3-762bfdc9ac17",
"name": "Append Blog Post to Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2304,
864
],
"parameters": {
"columns": {
"value": {
"url": "=",
"body": "={{ $json.body }}",
"tags": "={{ $json.tags }}",
"title": "={{ $json.title }}",
"status": "pending",
"post_id": "=",
"summary": "={{ $json.summary }}",
"category": "news",
"image_prompt": "={{ $json.image_prompt }}",
"telegram_body": "={{ $json.telegram_body }}",
"publish_priority": "={{ $json.publish_priority }}"
},
"schema": [
{
"id": "post_id",
"type": "string",
"display": true,
"required": false,
"displayName": "post_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "summary",
"type": "string",
"display": true,
"required": false,
"displayName": "summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tags",
"type": "string",
"display": true,
"required": false,
"displayName": "tags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "category",
"type": "string",
"display": true,
"required": false,
"displayName": "category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "body",
"type": "string",
"display": true,
"required": false,
"displayName": "body",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "telegram_body",
"type": "string",
"display": true,
"required": false,
"displayName": "telegram_body",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "image_prompt",
"type": "string",
"display": true,
"required": false,
"displayName": "image_prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "publish_priority",
"type": "string",
"display": true,
"required": false,
"displayName": "publish_priority",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "blogsAndNewsUploaded"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "7ffad4cc-35f3-4c44-8141-71e6dcad4b97",
"name": "Update Video as Completed",
"type": "n8n-nodes-base.googleSheets",
"position": [
2528,
864
],
"parameters": {
"columns": {
"value": {
"status": "Y",
"videoID": "={{ $('Filter Unprocessed Videos').item.json.videoID }}"
},
"schema": [
{
"id": "videoID",
"type": "string",
"display": true,
"required": false,
"displayName": "videoID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"videoID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "youtubeVideos"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "70ba169a-9200-4763-8fd8-357760a609f7",
"name": "Notify Content Generation",
"type": "n8n-nodes-base.telegram",
"position": [
2752,
864
],
"parameters": {
"text": "\u2705 Blog content generation complete for video transcript.",
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "1e26d045-4974-4b00-b5d9-471fa4a0627a",
"name": "When Publish Scheduled",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
528,
1424
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 3
}
]
}
},
"typeVersion": 1.3
},
{
"id": "6c7053d8-bcf1-4879-8ba5-bdeceba7e8d3",
"name": "Fetch Pending Posts from Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
752,
1424
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "blogsAndNewsUploaded"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
},
{
"id": "934549d9-ab96-4aa1-ab50-8930e85bdfc6",
"name": "Choose Priority Post",
"type": "n8n-nodes-base.code",
"position": [
976,
1424
],
"parameters": {
"jsCode": "const items = $input.all();\n\nconst pending = items.filter(i => \n i.json.status === 'pending' || i.json.status === 'N'\n);\n\nif (pending.length === 0) {\n return [{ json: { found: false } }];\n}\n\nconst priority = { urgent: 1, normal: 2, evergreen: 3 };\n\nconst sorted = pending.sort((a, b) => {\n const pa = priority[a.json.publish_priority] || 99;\n const pb = priority[b.json.publish_priority] || 99;\n if (pa !== pb) return pa - pb;\n return new Date(a.json.publish_date) - new Date(b.json.publish_date);\n});\n\nconst selected = sorted[0];\n\nreturn [{\n json: {\n found: true,\n ...selected.json\n },\n pairedItem: { item: 0 }\n}];"
},
"typeVersion": 2
},
{
"id": "15d23218-29c0-492c-bf51-9ca81e8ade7d",
"name": "Publish to WordPress",
"type": "n8n-nodes-base.wordpress",
"position": [
1200,
1424
],
"parameters": {
"title": "={{ $json.title }}",
"additionalFields": {
"slug": "={{ $json.title }}",
"status": "publish",
"content": "={{ $json.body }}",
"categories": [
1
],
"commentStatus": "open"
}
},
"typeVersion": 1
},
{
"id": "a138026e-de56-415c-b35e-0fa2d90df014",
"name": "Create AI Featured Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
1424,
1520
],
"parameters": {
"url": "https://YOUR_AI_IMAGE_API/v1/images/generations",
"method": "POST",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "model",
"value": "YOUR_IMAGE_MODEL_NAME"
},
{
"name": "prompt",
"value": "={{ $('Choose Priority Post').item.json.image_prompt }}"
},
{
"name": "size",
"value": "1792x1024"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "7b74d687-2f30-43ff-895d-422f70e1a1cd",
"name": "Download AI Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
1648,
1520
],
"parameters": {
"url": "={{ $json.body.data[0].url }}",
"options": {}
},
"typeVersion": 4.3
},
{
"id": "4970d535-48f3-4263-91c2-6c4b1b4588ea",
"name": "Transform Image to WebP",
"type": "n8n-nodes-base.editImage",
"position": [
1872,
1520
],
"parameters": {
"options": {
"format": "webp"
},
"operation": "resize"
},
"typeVersion": 1
},
{
"id": "e39e6520-d3f3-4f1a-994e-1b0a8d180aa9",
"name": "Upload Image to WordPress",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
2096,
1424
],
"parameters": {
"url": "=https://YOUR_WORDPRESS_SITE/wp-json/wp/v2/media",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "content-type",
"value": "={{ $binary.data.mimeType}}"
},
{
"name": "content-disposition",
"value": "=attachment; filename={{ $binary.data.fileName}}.webp"
}
]
},
"inputDataFieldName": "data"
},
"typeVersion": 4.2
},
{
"id": "ee3290ca-e030-40b5-9574-e40f6a4cc90a",
"name": "Associate Image with Post",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
2320,
1424
],
"parameters": {
"url": "=https://YOUR_WORDPRESS_SITE/wp-json/wp/v2/posts/{{ $('Publish to WordPress').item.json.id }}",
"method": "POST",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "featured_media",
"value": "={{ $json.id }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "b03e92ef-1fd1-4c35-80ca-d238efa7b848",
"name": "Send to Telegram Channel",
"type": "n8n-nodes-base.telegram",
"position": [
2544,
1424
],
"parameters": {
"file": "={{ $('Upload Image to WordPress').item.json.guid.rendered }}",
"chatId": "YOUR_TELEGRAM_CHANNEL_ID",
"operation": "sendPhoto",
"additionalFields": {
"caption": "=**{{ $('Choose Priority Post').item.json.title }}**\n\n{{ $('Choose Priority Post').item.json.telegram_body }}\n\n{{ $('Choose Priority Post').item.json.tags }}\n\nRead more:\n{{ $('Publish to WordPress').item.json.guid.rendered }}\n\n\ud83d\udd17 Website:\n\ud83c\udf10 https://YOUR_WEBSITE_URL\n\n\ud83d\udce2 Telegram:\n\ud83d\udc49 @YOUR_CHANNEL"
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "e0ac2d15-0e11-4c4a-a2fc-6df41967065e",
"name": "Update Post as Published",
"type": "n8n-nodes-base.googleSheets",
"position": [
2768,
1424
],
"parameters": {
"columns": {
"value": {
"url": "={{ $('Publish to WordPress').item.json.link }}",
"status": "published",
"row_number": "={{ $('Choose Priority Post').item.json.row_number }}",
"publish_date": "={{ $('Publish to WordPress').item.json.date }}"
},
"schema": [
{
"id": "url",
"type": "string",
"display": true,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "publish_date",
"type": "string",
"display": true,
"required": false,
"displayName": "publish_date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "blogsAndNewsUploaded"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4.7
}
],
"connections": {
"Set Video ID": {
"main": [
[
{
"node": "Filter New Videos Only",
"type": "main",
"index": 0
}
]
]
},
"Parse AI Output": {
"main": [
[
{
"node": "Append Blog Post to Sheets",
"type": "main",
"index": 0
}
]
]
},
"Download AI Image": {
"main": [
[
{
"node": "Transform Image to WebP",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Model": {
"ai_languageModel": [
[
{
"node": "Blog Post Generator Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Choose Priority Post": {
"main": [
[
{
"node": "Publish to WordPress",
"type": "main",
"index": 0
}
]
]
},
"Fetch Playlist Items": {
"main": [
[
{
"node": "Split Playlist Items",
"type": "main",
"index": 0
},
{
"node": "Read Existing Videos from Sheets",
"type": "main",
"index": 0
}
]
]
},
"Publish to WordPress": {
"main": [
[
{
"node": "Create AI Featured Image",
"type": "main",
"index": 0
}
]
]
},
"Split Playlist Items": {
"main": [
[
{
"node": "Set Video ID",
"type": "main",
"index": 0
}
]
]
},
"Join Transcript Lines": {
"main": [
[
{
"node": "Clean and Aggregate Transcript",
"type": "main",
"index": 0
}
]
]
},
"Filter New Videos Only": {
"main": [
[
{
"node": "Append New Videos to Sheets",
"type": "main",
"index": 0
}
]
]
},
"Split Transcript Lines": {
"main": [
[
{
"node": "Join Transcript Lines",
"type": "main",
"index": 0
}
]
]
},
"When Publish Scheduled": {
"main": [
[
{
"node": "Fetch Pending Posts from Sheets",
"type": "main",
"index": 0
}
]
]
},
"Transform Image to WebP": {
"main": [
[
{
"node": "Upload Image to WordPress",
"type": "main",
"index": 0
}
]
]
},
"Create AI Featured Image": {
"main": [
[
{
"node": "Download AI Image",
"type": "main",
"index": 0
}
]
]
},
"Send to Telegram Channel": {
"main": [
[
{
"node": "Update Post as Published",
"type": "main",
"index": 0
}
]
]
},
"Associate Image with Post": {
"main": [
[
{
"node": "Send to Telegram Channel",
"type": "main",
"index": 0
}
]
]
},
"Blog Post Generator Agent": {
"main": [
[
{
"node": "Parse AI Output",
"type": "main",
"index": 0
}
]
]
},
"Fetch Internal Links Tool": {
"ai_tool": [
[
{
"node": "Blog Post Generator Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Filter Unprocessed Videos": {
"main": [
[
{
"node": "Update Video as Processing",
"type": "main",
"index": 0
}
]
]
},
"Update Doc Link in Sheets": {
"main": [
[
{
"node": "Notify Transcript Saved",
"type": "main",
"index": 0
}
]
]
},
"Update Video as Completed": {
"main": [
[
{
"node": "Notify Content Generation",
"type": "main",
"index": 0
}
]
]
},
"Upload Image to WordPress": {
"main": [
[
{
"node": "Associate Image with Post",
"type": "main",
"index": 0
}
]
]
},
"Append Blog Post to Sheets": {
"main": [
[
{
"node": "Update Video as Completed",
"type": "main",
"index": 0
}
]
]
},
"Update Video as Processing": {
"main": [
[
{
"node": "Blog Post Generator Agent",
"type": "main",
"index": 0
}
]
]
},
"Append New Videos to Sheets": {
"main": [
[
{
"node": "Fetch Transcript via RapidAPI",
"type": "main",
"index": 0
}
]
]
},
"Create Transcript Google Doc": {
"main": [
[
{
"node": "Write to Transcript Google Doc",
"type": "main",
"index": 0
}
]
]
},
"Fetch All Videos from Sheets": {
"main": [
[
{
"node": "Filter Unprocessed Videos",
"type": "main",
"index": 0
}
]
]
},
"Fetch Transcript via RapidAPI": {
"main": [
[
{
"node": "Split Transcript Lines",
"type": "main",
"index": 0
}
]
]
},
"When Fetch Playlist Scheduled": {
"main": [
[
{
"node": "Fetch Playlist Items",
"type": "main",
"index": 0
}
]
]
},
"Clean and Aggregate Transcript": {
"main": [
[
{
"node": "Create Transcript Google Doc",
"type": "main",
"index": 0
}
]
]
},
"When Blog Generation Scheduled": {
"main": [
[
{
"node": "Fetch All Videos from Sheets",
"type": "main",
"index": 0
}
]
]
},
"Write to Transcript Google Doc": {
"main": [
[
{
"node": "Update Doc Link in Sheets",
"type": "main",
"index": 0
}
]
]
},
"Fetch Pending Posts from Sheets": {
"main": [
[
{
"node": "Choose Priority Post",
"type": "main",
"index": 0
}
]
]
},
"Read Existing Videos from Sheets": {
"main": [
[
{
"node": "Filter New Videos Only",
"type": "main",
"index": 1
}
]
]
},
"Fetch Transcript from Google Docs": {
"ai_tool": [
[
{
"node": "Blog Post Generator Agent",
"type": "ai_tool",
"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.
telegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Content creators, media teams, and bloggers who run a YouTube channel and want to automatically repurpose video content into SEO-ready blog posts — without manual writing. Ideal for anyone publishing news or educational content in any language.
Source: https://n8n.io/workflows/14758/ — 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.
100% autonomous workflow that transforms YouTube videos into unique, high-quality, SEO-optimized blog articles and automatically publishes them to WordPress. No human intervention required: it uses Yo
Description: This workflow fully automates your blog publishing process using n8n, AI, and WordPress. It pulls blog data from Google Sheets, generates SEO-optimized content with AI, creates feature im
The best content automation in the market! This advanced workflow not only creates and publishes SEO-optimized blog posts to your WordPress website but also backs up all content and images to a design
✍️🌄 Your First Wordpress Content Creator - Quick Start. Uses manualTrigger, lmChatOpenAi, outputParserStructured, agent. Event-driven trigger; 39 nodes.
Automatically convert your WordPress articles into multilingual voiceovers with professional-quality audio. Want to add audio versions of your WordPress posts? Looking for a workflow that is fully aut