내 블로그
고급
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 22개의 노드를 포함합니다.주로 Set, Code, Github, GoogleSheets, Agent 등의 노드를 사용하며. Gemini AI, GitHub 및 Jekyll 게시 기반 자동화된 블로그 생성
사전 요구사항
- •GitHub Personal Access Token
- •Google Sheets API 인증 정보
- •Google Gemini API Key
사용된 노드 (22)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "YOUR_WORKFLOW_ID",
"meta": {
"instanceId": "YOUR_INSTANCE_ID",
"templateCredsSetupCompleted": true
},
"name": "My blog",
"tags": [],
"nodes": [
{
"id": "2108f067-2829-4b5c-8ed5-23400753b134",
"name": "Gemini로 블로그 생성",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-208,
144
],
"parameters": {
"text": "=Write a technical blog post in Markdown using the context and topic below.\n\n## Topic:\n\"{{$json[\"Topic\"]}}\"\n\n## Context:\n{{$json[\"Context\"]}}",
"options": {
"systemMessage": "=You are a blogging assistant. Your job is to generate a complete, high-quality technical blog post in Markdown (`.md`) format. Follow these strict formatting and structure rules so the post can be directly used in a static site generator like Jekyll.\n\n---\n\n## 🔹 Front Matter Block\n\nAt the top of the file, include the following YAML front matter:\n\n---\ntitle: \"BLOG_TITLE\"\ndate: \"{{$now.toFormat('yyyy-MM-dd')}}\"\ncategories: [<blog categories with separtaed by comma>]\ntags: [<comma separated tags for the blog>]\nexcerpt: \"SHORT_EXCERPT_SUMMARIZING_THE_POST\"\nauthor: \"YOUR_NAME\"\n---\n\n## 🧱 Blog Content Structure\n\nAfter the front matter, structure the blog with clear, scannable sections using proper Markdown heading levels.\n\n## Table of Contents\n\nAdd a clickable table of contents using Markdown anchor links:\n## Table of Contents\n- [Introduction](#introduction)\n- [Main Section 1](#main-section-1)\n- [Main Section 2](#main-section-2)\n- ...\n- [Conclusion](#conclusion)\n\n## Introduction\nWrite 1–2 short paragraphs introducing the topic and its relevance to developers or the tech industry.\n\n## Main Content\nBreak down the main body using:\n# for top-level sections\n## for subsections\n### include:\n#### Code snippets using fenced code blocks with language tags (e.g. dart, yaml, bash)\n#### Bullet points and numbered lists\n#### Images using \n#### Links with [Link Text](https://url.com)\n#### Quotes with >\n\n## Conclusion\nSummarize the key takeaways from the blog. You may also include:\nA call to action (e.g. \"Try it yourself!\")\nSuggested reading or resources.\n\n## Markdown Formatting Guidelines\nUse proper heading levels (#, ##, ###)\n\n# Use **bold** and *italic* for emphasis\n# Always format code using triple backticks and the correct language\n# Avoid raw HTML unless absolutely required\n# Keep the writing technical but friendly and easy to follow\n\n## Output Requirements\n\n# Output only the Markdown content\n# Start with the YAML front matter\n# Do not include any explanation, metadata, or extra comments\n# The output must be ready to save as a .md file and publish directly\n\nYou have the access of multiple tools.\n\n## Wikipedia\nuse this tool to search about the blog topic . Also if possiable use the wikipedia image for the blog.\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "2f9e8ada-a1c2-4ff7-ab77-473fdcd5904d",
"name": "Wikipedia 컨텍스트 가져오기",
"type": "@n8n/n8n-nodes-langchain.toolWikipedia",
"position": [
-32,
384
],
"parameters": {},
"typeVersion": 1
},
{
"id": "cdf3b5fb-31f5-4584-bc74-0cf4f3a8d025",
"name": "블로그 제목 추출",
"type": "n8n-nodes-base.set",
"position": [
-1216,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "303ff84c-3343-4ac5-8e4d-4b12c36bdb4f",
"name": "topic",
"type": "string",
"value": "={{ $json.Title }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e9a37489-7d3f-43d0-aca3-f449ff032b07",
"name": "Google Gemini 채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-224,
352
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-pro"
},
"credentials": {
"googlePalmApi": {
"id": "YOUR_GEMINI_CREDENTIAL_ID",
"name": "Your Gemini Account"
}
},
"typeVersion": 1
},
{
"id": "44ff6820-0d5d-449f-94f8-1a5b9166b35b",
"name": "검색 결과 요약",
"type": "n8n-nodes-base.code",
"position": [
-592,
144
],
"parameters": {
"jsCode": "const topic = $json[\"query\"];\nconst results = $json[\"results\"];\n\nconst context = results.slice(0, 3).map(r => {\n return `### ${r.title}\\n${r.content}\\n[Source](${r.url})\\n`;\n}).join('\\n\\n');\n\nreturn [\n {\n json: {\n Topic: topic,\n Context: context\n }\n }\n];\n\n"
},
"typeVersion": 2
},
{
"id": "6e072fdd-4a78-4105-b443-3eb0e7ae79de",
"name": "GitHub에 블로그 포스트 커밋",
"type": "n8n-nodes-base.github",
"position": [
704,
176
],
"webhookId": "YOUR_WEBHOOK_ID",
"parameters": {
"owner": {
"__rl": true,
"mode": "list",
"value": "YOUR_GITHUB_USERNAME",
"cachedResultUrl": "https://github.com/YOUR_GITHUB_USERNAME",
"cachedResultName": "YOUR_GITHUB_USERNAME"
},
"filePath": "=_posts/{{ $json.filePath }}",
"resource": "file",
"repository": {
"__rl": true,
"mode": "list",
"value": "YOUR_REPOSITORY_NAME",
"cachedResultUrl": "https://github.com/YOUR_GITHUB_USERNAME/YOUR_REPOSITORY_NAME",
"cachedResultName": "YOUR_REPOSITORY_NAME"
},
"fileContent": "={{ $json.fileContent }}",
"commitMessage": "={{ $json.commitMessage }}",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": {
"id": "YOUR_GITHUB_CREDENTIAL_ID",
"name": "GitHub account"
}
},
"typeVersion": 1.1
},
{
"id": "30e90692-ca16-43f3-beeb-32c113da36a6",
"name": "커밋용 파일 준비",
"type": "n8n-nodes-base.set",
"position": [
384,
192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a6800e46-165a-4713-b789-e0047a2196af",
"name": "filePath",
"type": "string",
"value": "={{ $now.format('yyyy-MM-dd') }}-{{ $('Extract Topic').item.json.topic.toLowerCase().replace(/ /g, '-') }}.md"
},
{
"id": "e8672360-e389-498d-8b79-8cccc1a7f918",
"name": "fileContent",
"type": "string",
"value": "={{$json[\"output\"]}}"
},
{
"id": "9794aa09-d0a0-4333-97a6-76364c0f14b1",
"name": "commitMessage",
"type": "string",
"value": "=Add blog post: {{ $('get topic').item.json.Title }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9a2cac57-7930-48ee-a493-8ca39580a660",
"name": "Tavily 웹 검색",
"type": "@tavily/n8n-nodes-tavily.tavily",
"position": [
-928,
144
],
"parameters": {
"query": "={{ $json.topic }}",
"options": {
"search_depth": "advanced"
}
},
"credentials": {
"tavilyApi": {
"id": "YOUR_TAVILY_CREDENTIAL_ID",
"name": "Tavily account"
}
},
"typeVersion": 1
},
{
"id": "453f3a77-15c5-41a0-bb67-c5a50369079c",
"name": "일정 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1776,
144
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "fa2c8c82-6590-45b1-9727-fff9954dd1c0",
"name": "Google 시트에서 주제 가져오기",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1488,
144
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "=",
"lookupColumn": "status"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_DOCUMENT_ID/edit#gid=0",
"cachedResultName": "blog list"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEETS_DOCUMENT_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_DOCUMENT_ID/edit?usp=drivesdk",
"cachedResultName": "My blogs"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "YOUR_GOOGLE_SHEETS_CREDENTIAL_ID",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "00c15394-315b-4038-a0c9-203439935c90",
"name": "시트에서 주제 완료로 표시",
"type": "n8n-nodes-base.googleSheets",
"position": [
1184,
176
],
"parameters": {
"columns": {
"value": {
"status": "done",
"row_number": "={{ $json.row_number }}"
},
"schema": [
{
"id": "Title",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"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": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_DOCUMENT_ID/edit#gid=0",
"cachedResultName": "blog list"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEETS_DOCUMENT_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_DOCUMENT_ID/edit?usp=drivesdk",
"cachedResultName": "My blogs"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "YOUR_GOOGLE_SHEETS_CREDENTIAL_ID",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "3ece85bb-0962-40e9-b16e-c6a7f42b8072",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2656,
-784
],
"parameters": {
"width": 752,
"height": 640,
"content": "## Automated Blog Creation \n\n**Description:**\nThis workflow automatically generates a complete blog post from a user-provided topic using an LLM (e.g., OpenAI, Gemini). It formats the content as Markdown, commits it directly to a specified GitHub repository, and triggers a Jekyll build—so your blog is live in minutes.\n\n**Features:**\n- User inputs a topic or prompts the workflow.\n- LLM generates and formats the blog post in Markdown.\n- The generated file is committed/pushed to GitHub.\n- (Optional) Triggers GitHub Pages + Jekyll build to update your site.\n- Fully automated, customizable, and end-to-end.\n\n**Required Integrations:**\n- LLM (OpenAI or similar; set API key in credentials)\n- GitHub (personal access token, target repository)\n- Jekyll static site (hosted on GitHub Pages)\n\n**Instructions/Setup:**\n1. Import the attached workflow JSON in your n8n instance.\n2. Set up credentials for Gemini (or chosen LLM provider).\n3. Set up GitHub credentials and specify repository path.\n4. (Optional) Adjust prompt/parameters for the LLM as desired.\n5. Deploy. On run, your blog will be generated and published automatically."
},
"typeVersion": 1
},
{
"id": "4acd5668-eab7-4883-b531-729a7c2b6a1c",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1840,
16
],
"parameters": {
"width": 256,
"height": 288,
"content": "## Trigger node\n##### Configure the node for your preference or else you can use other option as well."
},
"typeVersion": 1
},
{
"id": "ac9b8a20-36dc-4231-9317-6c026325ce35",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1552,
16
],
"parameters": {
"height": 288,
"content": "## Get Topic from spreadsheet\n##### This will capture the topic which is not done yet."
},
"typeVersion": 1
},
{
"id": "1be2f024-a34d-4b0c-980f-74b1ebd520b5",
"name": "스티커 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1280,
16
],
"parameters": {
"height": 288,
"content": "## Extract topic\n##### This will extract topic text from the sheet node."
},
"typeVersion": 1
},
{
"id": "0d800dd4-0e8d-4558-b5bd-f632026a144c",
"name": "스티커 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1024,
-32
],
"parameters": {
"width": 320,
"height": 336,
"content": "## Deep Search about topic\n##### We have a system node that gathers information about a given topic from the web, providing relevant links and concise summaries."
},
"typeVersion": 1
},
{
"id": "7cffee89-e9aa-474b-83d9-08081767c575",
"name": "스티커 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-688,
-32
],
"parameters": {
"width": 320,
"height": 336,
"content": "## Format the result\n##### We have a system that receives input containing details about a topic along with associated links from a prior node. This new node extracts those details and formats them in a predefined sequence or structure.."
},
"typeVersion": 1
},
{
"id": "8524831c-4db2-4124-9eb9-a404d9e9fcbb",
"name": "스티커 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
16
],
"parameters": {
"width": 496,
"height": 528,
"content": "## Ai agent\n##### We have a standardized system prompt that accepts a topic and a set of relevant search results from Tavily. The prompt then generates a well-structured markdown file formatted as a blog post"
},
"typeVersion": 1
},
{
"id": "82fe6efb-29e8-4253-9e96-47ba5ae81e95",
"name": "스티커 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
16
],
"parameters": {
"width": 400,
"height": 368,
"content": "## Set the file for github upload\n#####This node retrieves data generated by the AI agent and formats it according to standardized conventions, preparing the content for seamless upload and integration into a GitHub repository."
},
"typeVersion": 1
},
{
"id": "43e7bf08-4d0e-413a-b3ac-17d7aabc64a0",
"name": "스티커 노트8",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
16
],
"parameters": {
"width": 336,
"height": 384,
"content": "## Github upload\n##### This will upload to a github repo."
},
"typeVersion": 1
},
{
"id": "d515051d-b03e-4329-9a11-a53996b9a9dd",
"name": "스티커 노트9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1008,
16
],
"parameters": {
"width": 416,
"height": 384,
"content": "## Change status\n##### Once the file is uploaded to GitHub, the status of the corresponding topic in the Google Spreadsheet will be updated to “Done.”"
},
"typeVersion": 1
},
{
"id": "5d623cb5-f839-4412-9e54-18de267dc2ee",
"name": "스티커 노트10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2656,
-128
],
"parameters": {
"width": 752,
"height": 832,
"content": "# n8n Integrations & GitHub Pages Jekyll Setup\n\n## Prerequisites\n- n8n account access\n- Tavily API key\n- Google Account for Sheets\n- LLM API key\n- GitHub account\n\n## Steps\n\n1. **Tavily API Key**\n - Sign up at [https://www.tavily.com/](https://www.tavily.com/)\n - Obtain your API key from the dashboard\n\n2. **Google Sheets Setup**\n - Add credentials in n8n and authenticate\n\n3. **LLM Connection**\n - Add LLM credentials in n8n and test\n\n4. **GitHub OAuth Setup**\n - Authorize and connect via OAuth in n8n\n\n5. **Jekyll Setup for GitHub Pages**\n - Create a repository (`<username>.github.io`)\n - Initialize a Jekyll site locally\n - Push site files to GitHub\n - Enable GitHub Pages for the repository\n - Configure `_config.yml` if needed\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"timezone": "Asia/Kolkata",
"callerPolicy": "workflowsFromSameOwner",
"executionOrder": "v1"
},
"versionId": "YOUR_VERSION_ID",
"connections": {
"Search": {
"main": [
[
{
"node": "summerise the resut",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "set files",
"type": "main",
"index": 0
}
]
]
},
"Wikipedia": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"get topic": {
"main": [
[
{
"node": "Extract Topic",
"type": "main",
"index": 0
}
]
]
},
"set files": {
"main": [
[
{
"node": "Create a file",
"type": "main",
"index": 0
}
]
]
},
"Create a file": {
"main": [
[
{
"node": "Update Status",
"type": "main",
"index": 0
}
]
]
},
"Extract Topic": {
"main": [
[
{
"node": "Search",
"type": "main",
"index": 0
}
]
]
},
"453f3a77-15c5-41a0-bb67-c5a50369079c": {
"main": [
[
{
"node": "get topic",
"type": "main",
"index": 0
}
]
]
},
"summerise the resut": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"e9a37489-7d3f-43d0-aca3-f449ff032b07": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
블로그 게시자 – 완전한 AI 기반 콘텐츠 연구, 제작, 최적화 및 게시 자동화
Gemini, Ideogram AI 및 WordPress를 사용한 블로그 생성 및 게시 자동화
If
Set
Code
+
If
Set
Code
35 노드Incrementors
콘텐츠 제작
콘텐츠 집계
Gemini AI로 웹사이트 글에서 소셜 미디어 게시물 자동 생성 및 LinkedIn 및 X/Twitter에 게시
If
Set
Xml
+
If
Set
Xml
34 노드Vadim
콘텐츠 제작
GPT-4o, RunwayML, ElevenLabs의 AI 여행 영상 생성기(소셜 미디어용)
GPT-4o, RunwayML, ElevenLabs 소셜 미디어 애플리케이션
Set
Code
Wait
+
Set
Code
Wait
36 노드Mohan Gopal
콘텐츠 제작
Gemini AI와 Elementor를 사용하여 여러 고객에게 SEO 블로그 기사 생성 및 계획
Gemini AI와 Elementor를 사용하여 여러 고객의 SEO 블로그 기사를 생성하고 계획합니다.
If
N8n
Set
+
If
N8n
Set
39 노드Zain Khan
콘텐츠 제작
Gemini AI와 Flux 이미지 생성을 통한 인기 게시물 분석 기반 LinkedIn 콘텐츠 자동 생성
Gemini AI 및 Flux 이미지 생성을 사용한 인기 게시물 분석으로 LinkedIn 콘텐츠 자동 생성
Code
Wait
Filter
+
Code
Wait
Filter
20 노드Roshan Ramani
콘텐츠 제작
Groq, Gemini, Slack 승인 시스템을 사용한 RSS에서 Medium 자동 게시
Groq, Gemini 및 Slack 승인 시스템을 통한 RSS에서 Medium 발행 자동화 워크플로
If
Set
Code
+
If
Set
Code
41 노드ObisDev
콘텐츠 제작