8
n8n 한국어amn8n.com

내 블로그

고급

이것은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
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 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 ![Alt Text](image-url)\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)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수22
카테고리2
노드 유형10
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34