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 →
{
"name": "Blogger Auto Post - Scheduled",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 */3 * * *"
}
]
}
},
"id": "schedule-trigger",
"name": "Every 3 Hours Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
240,
300
]
},
{
"parameters": {
"method": "GET",
"url": "https://newsapi.org/v2/top-headlines",
"authentication": "none",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "country",
"value": "kr"
},
{
"name": "category",
"value": "technology"
},
{
"name": "pageSize",
"value": "5"
},
{
"name": "apiKey",
"value": "={{ $env.NEWS_API_KEY || 'YOUR_NEWS_API_KEY' }}"
}
]
},
"options": {}
},
"id": "fetch-news",
"name": "Fetch News (Optional)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
200
],
"disabled": true
},
{
"parameters": {
"method": "GET",
"url": "=https://www.googleapis.com/blogger/v3/blogs/{{ $env.BLOGGER_BLOG_ID }}/posts",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleOAuth2Api",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "maxResults",
"value": "1"
},
{
"name": "orderBy",
"value": "UPDATED"
}
]
},
"options": {}
},
"id": "check-recent-posts",
"name": "Check Recent Posts",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
400
],
"credentials": {
"googleOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// \uc790\ub3d9 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud2b8 \uc0dd\uc131\n// \uc774 \ub178\ub4dc\ub97c \uc218\uc815\ud558\uc5ec \uc6d0\ud558\ub294 \ucf58\ud150\uce20\ub97c \uc0dd\uc131\ud558\uc138\uc694\n\nconst today = new Date();\nconst dateStr = today.toISOString().split('T')[0];\nconst dayNames = ['\uc77c', '\uc6d4', '\ud654', '\uc218', '\ubaa9', '\uae08', '\ud1a0'];\nconst dayName = dayNames[today.getDay()];\n\n// --- \ucf58\ud150\uce20 \ud15c\ud50c\ub9bf ---\n// \uc5ec\uae30\ub97c \uc218\uc815\ud558\uc5ec \uc6d0\ud558\ub294 \ud3ec\uc2a4\ud2b8 \ub0b4\uc6a9\uc744 \uc124\uc815\ud558\uc138\uc694\nconst templates = [\n {\n title: `[${dateStr}] \uc624\ub298\uc758 \uae30\uc220 \ud2b8\ub80c\ub4dc`,\n content: `<h2>\ud83d\udcc5 ${dateStr} (${dayName}\uc694\uc77c) \uae30\uc220 \ud2b8\ub80c\ub4dc</h2>\n<p>\uc624\ub298\uc758 \uc8fc\uc694 \uae30\uc220 \ub3d9\ud5a5\uc744 \uc815\ub9ac\ud569\ub2c8\ub2e4.</p>\n<h3>\ud83d\udd25 \uc8fc\uc694 \ub274\uc2a4</h3>\n<ul>\n<li>AI \uae30\uc220 \ubc1c\uc804 \ub3d9\ud5a5</li>\n<li>\ud074\ub77c\uc6b0\ub4dc \ucef4\ud4e8\ud305 \ud2b8\ub80c\ub4dc</li>\n<li>\uc624\ud508\uc18c\uc2a4 \ud504\ub85c\uc81d\ud2b8 \uc5c5\ub370\uc774\ud2b8</li>\n</ul>\n<h3>\ud83d\udca1 \uc778\uc0ac\uc774\ud2b8</h3>\n<p>\uae30\uc220 \ud2b8\ub80c\ub4dc\uc5d0 \ub300\ud55c \ubd84\uc11d\uacfc \uc758\uacac\uc744 \uacf5\uc720\ud569\ub2c8\ub2e4.</p>\n<hr>\n<p><em>\uc774 \ud3ec\uc2a4\ud2b8\ub294 n8n \uc790\ub3d9\ud654\ub97c \ud1b5\ud574 \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</em></p>`,\n labels: ['\uae30\uc220', '\ud2b8\ub80c\ub4dc', '\uc790\ub3d9\ud654', dateStr]\n },\n {\n title: `[${dateStr}] AI & \ud504\ub85c\uadf8\ub798\ubc0d \uc778\uc0ac\uc774\ud2b8`,\n content: `<h2>\ud83e\udd16 ${dateStr} AI & \ud504\ub85c\uadf8\ub798\ubc0d</h2>\n<p>\uc778\uacf5\uc9c0\ub2a5\uacfc \ud504\ub85c\uadf8\ub798\ubc0d\uc5d0 \ub300\ud55c \uc624\ub298\uc758 \uc778\uc0ac\uc774\ud2b8\uc785\ub2c8\ub2e4.</p>\n<h3>\ud83d\udcca AI \ub3d9\ud5a5</h3>\n<ul>\n<li>\ub300\ud615 \uc5b8\uc5b4 \ubaa8\ub378(LLM) \uc5c5\ub370\uc774\ud2b8</li>\n<li>AI \ucf54\ub529 \uc5b4\uc2dc\uc2a4\ud134\ud2b8 \ud65c\uc6a9\ubc95</li>\n<li>\uba38\uc2e0\ub7ec\ub2dd \uc2e4\uc804 \ud301</li>\n</ul>\n<h3>\ud83d\udcbb \uac1c\ubc1c \ud301</h3>\n<p>\uc2e4\ubb34\uc5d0\uc11c \uc720\uc6a9\ud55c \uac1c\ubc1c \ud301\uc744 \uacf5\uc720\ud569\ub2c8\ub2e4.</p>\n<hr>\n<p><em>\uc774 \ud3ec\uc2a4\ud2b8\ub294 n8n \uc790\ub3d9\ud654\ub97c \ud1b5\ud574 \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</em></p>`,\n labels: ['AI', '\ud504\ub85c\uadf8\ub798\ubc0d', '\uc790\ub3d9\ud654', dateStr]\n },\n {\n title: `[${dateStr}] \uc0dd\uc0b0\uc131 & \uc790\ub3d9\ud654 \uac00\uc774\ub4dc`,\n content: `<h2>\u26a1 ${dateStr} \uc0dd\uc0b0\uc131 \uac00\uc774\ub4dc</h2>\n<p>\uc5c5\ubb34 \ud6a8\uc728\uc744 \ub192\uc774\ub294 \uc790\ub3d9\ud654 \ud301\uc744 \uacf5\uc720\ud569\ub2c8\ub2e4.</p>\n<h3>\ud83d\udee0 \uc790\ub3d9\ud654 \ub3c4\uad6c</h3>\n<ul>\n<li>n8n \uc6cc\ud06c\ud50c\ub85c\uc6b0 \ud65c\uc6a9</li>\n<li>API \ud1b5\ud569 \uc790\ub3d9\ud654</li>\n<li>\uc2a4\ucf00\uc904\ub9c1 \ucd5c\uc801\ud654</li>\n</ul>\n<h3>\ud83d\udcc8 \uc0dd\uc0b0\uc131 \ud5a5\uc0c1</h3>\n<p>\ub354 \uc801\uc740 \uc2dc\uac04\uc73c\ub85c \ub354 \ub9ce\uc740 \uacb0\uacfc\ub97c \ub9cc\ub4dc\ub294 \ubc29\ubc95\uc785\ub2c8\ub2e4.</p>\n<hr>\n<p><em>\uc774 \ud3ec\uc2a4\ud2b8\ub294 n8n \uc790\ub3d9\ud654\ub97c \ud1b5\ud574 \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.</em></p>`,\n labels: ['\uc0dd\uc0b0\uc131', '\uc790\ub3d9\ud654', '\uac00\uc774\ub4dc', dateStr]\n }\n];\n\n// \uc694\uc77c\uc5d0 \ub530\ub77c \ub2e4\ub978 \ud15c\ud50c\ub9bf \uc120\ud0dd\nconst templateIndex = today.getDay() % templates.length;\nconst selectedTemplate = templates[templateIndex];\n\nreturn [{\n json: {\n title: selectedTemplate.title,\n content: selectedTemplate.content,\n labels: selectedTemplate.labels,\n generatedAt: today.toISOString()\n }\n}];"
},
"id": "generate-content",
"name": "Generate Blog Content",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
700,
300
]
},
{
"parameters": {
"method": "POST",
"url": "=https://www.googleapis.com/blogger/v3/blogs/{{ $env.BLOGGER_BLOG_ID }}/posts",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleOAuth2Api",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"kind\": \"blogger#post\",\n \"title\": {{ JSON.stringify($json.title) }},\n \"content\": {{ JSON.stringify($json.content) }},\n \"labels\": {{ JSON.stringify($json.labels) }}\n}",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
}
},
"id": "publish-to-blogger",
"name": "Publish to Blogger",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
940,
300
],
"credentials": {
"googleOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "log-status",
"name": "status",
"value": "published",
"type": "string"
},
{
"id": "log-post-id",
"name": "postId",
"value": "={{ $json.body.id || $json.id }}",
"type": "string"
},
{
"id": "log-post-url",
"name": "postUrl",
"value": "={{ $json.body.url || $json.url }}",
"type": "string"
},
{
"id": "log-title",
"name": "title",
"value": "={{ $json.body.title || $json.title }}",
"type": "string"
},
{
"id": "log-time",
"name": "publishedAt",
"value": "={{ $now.toISO() }}",
"type": "string"
}
]
},
"options": {}
},
"id": "log-result",
"name": "Log Result",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1160,
300
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "check-success",
"leftValue": "={{ $json.statusCode }}",
"rightValue": 200,
"operator": {
"type": "number",
"operation": "equals"
}
}
],
"combinator": "or"
},
"options": {}
},
"id": "check-success",
"name": "Published OK?",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
940,
500
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "error-msg",
"name": "error",
"value": "={{ $json.body.error.message || $json.error || 'Blogger API \ud638\ucd9c \uc2e4\ud328' }}",
"type": "string"
},
{
"id": "error-code",
"name": "statusCode",
"value": "={{ $json.statusCode || 500 }}",
"type": "number"
}
]
},
"options": {}
},
"id": "handle-error",
"name": "Handle Error",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1160,
500
]
}
],
"connections": {
"Daily 9AM Trigger": {
"main": [
[
{
"node": "Check Recent Posts",
"type": "main",
"index": 0
}
]
]
},
"Check Recent Posts": {
"main": [
[
{
"node": "Generate Blog Content",
"type": "main",
"index": 0
}
]
]
},
"Generate Blog Content": {
"main": [
[
{
"node": "Publish to Blogger",
"type": "main",
"index": 0
}
]
]
},
"Publish to Blogger": {
"main": [
[
{
"node": "Published OK?",
"type": "main",
"index": 0
}
]
]
},
"Published OK?": {
"main": [
[
{
"node": "Log Result",
"type": "main",
"index": 0
}
],
[
{
"node": "Handle Error",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true,
"callerPolicy": "workflowsFromSameOwner"
},
"staticData": null,
"tags": [
{
"name": "blogger",
"id": "1"
},
{
"name": "scheduled",
"id": "2"
},
{
"name": "automation",
"id": "3"
}
],
"triggerCount": 1
}
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.
googleOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Blogger Auto Post - Scheduled. Uses httpRequest. Scheduled trigger; 8 nodes.
Source: https://github.com/dh914/Agent/blob/3ac876e6be29a19f188c0a9a359f5fc125739ede/x-automation/n8n-workflows/blogger-auto-post-schedule.json — 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.
Master Agent - Orchestrator. Uses httpRequest, telegram, telegramTrigger. Scheduled trigger; 46 nodes.
Reputation Engine — Content Research Agent. Uses httpRequest. Scheduled trigger; 45 nodes.
Master Agent - Orchestrator. Uses httpRequest, telegram, telegramTrigger. Scheduled trigger; 43 nodes.
Linkedin Workflow. Uses httpRequest, googleSheets. Scheduled trigger; 39 nodes.
I prepared a detailed guide that shows the whole process of building an AI tool to analyze Instagram Reels using n8n.