GPT-4o와 Tavily를 사용하여 블로그 개요를 생성하고 풍부화합니다.
고급
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 17개의 노드를 포함합니다.주로 Set, Code, SplitOut, Aggregate, FormTrigger 등의 노드를 사용하며. 사용하여 GPT-4o와 Tavily로 데이터를 검색하여 사실에 기반한 블로그 개요를 생성합니다.
사전 요구사항
- •OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "5MtO3uahWJoQ7FAC",
"meta": {
"instanceId": "b597f3db206729fea79938d01afc341ae2811ad29d941b24c1597c0110c58f12",
"templateCredsSetupCompleted": true
},
"name": "Generate and enrich a blog outline using GPT-4o & Tavily",
"tags": [],
"nodes": [
{
"id": "a115791a-30b2-47a0-85fb-d27e9d22811d",
"name": "연구 질문 생성",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
224,
112
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"content": "=Create an outline and research questions for this keyword: {{ $json.Keyword }}\n"
},
{
"role": "system",
"content": "=You're acting as a research assistant. your job is to take the keyword and come up with 5 to 6 research questions that will be used later down thee line to find information. Output the questions in the following JSON format.\n\n+++JSON+++\n{\n \"outline\": [\n {\n \"section\": \"<section headline>\"\n \"question\": \"<question related to section topic>\"\n },\n {\n \"section\": \"<section headline>\"\n \"question\": \"<question related to section topic>\"\n },\n{\n \"section\": \"<section headline>\"\n \"question\": \"<question related to section topic>\"\n },\n ...continue for each section...\n ]\n}\n+++END JSON+++\n"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "R5mcnwXQyAqWYNFn",
"name": "OpenAi account - SOAX"
}
},
"typeVersion": 1.8
},
{
"id": "f58f5390-254a-4dac-840b-89f7670cf632",
"name": "질문 목록을 개별 항목으로 분리",
"type": "n8n-nodes-base.splitOut",
"position": [
640,
112
],
"parameters": {
"options": {},
"fieldToSplitOut": "message.content.outline"
},
"typeVersion": 1
},
{
"id": "9ac43406-ca6c-45fb-8c69-49607d996ff9",
"name": "연구 질문 답변",
"type": "@tavily/n8n-nodes-tavily.tavily",
"position": [
992,
112
],
"parameters": {
"query": "={{ $json.question }}",
"options": {
"topic": "general",
"search_depth": "advanced",
"include_answer": "advanced",
"include_domains": []
}
},
"credentials": {
"tavilyApi": {
"id": "qsfFofW0fRkxeCXW",
"name": "Tavily - Personal"
}
},
"typeVersion": 1
},
{
"id": "f3cfa3ff-0d94-4032-87d1-62c5142560f8",
"name": "답변을 섹션에 추가",
"type": "n8n-nodes-base.set",
"position": [
1344,
112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "f0d21628-de35-4fbb-aa23-4bbad7635d4a",
"name": "section_title",
"type": "string",
"value": "={{ $('Split out list of questions into separate items').item.json.section }}"
},
{
"id": "01691bba-98ef-4c60-b69b-a7004e0203f3",
"name": "section_question",
"type": "string",
"value": "={{ $('Split out list of questions into separate items').item.json.question }}"
},
{
"id": "40576892-a95c-4859-8913-3ae1f2a96c55",
"name": "answer",
"type": "string",
"value": "={{ $json.answer }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ed044b17-d4d5-485d-ba70-da2de93dbd05",
"name": "하나의 큰 항목으로 변환",
"type": "n8n-nodes-base.aggregate",
"position": [
1696,
112
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "outline"
},
"typeVersion": 1
},
{
"id": "dbcea747-de4e-4e34-bc70-ccc5d5c8b62f",
"name": "JSON를 마크다운으로 변환",
"type": "n8n-nodes-base.code",
"position": [
2064,
112
],
"parameters": {
"jsCode": "// n8n Code node (JavaScript)\n\n// Input: JSON array in items[0].json\n// Example: your provided JSON pasted into items[0].json.sections\n// Output: single Markdown string in items[0].json.markdown\n\nconst sections = $input.first().json.outline; \n\nfunction toMarkdown(data) {\n return data.map(section => {\n return `## ${section.section_title}\\n\\n**${section.section_question}**\\n\\n${section.answer}\\n`;\n }).join(\"\\n\");\n}\n\nreturn [\n {\n json: {\n markdown: toMarkdown(sections)\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "4ee2689e-c092-4e2e-8797-e566fff3dbb3",
"name": "워크플로우 계속",
"type": "n8n-nodes-base.noOp",
"position": [
2400,
112
],
"parameters": {},
"typeVersion": 1
},
{
"id": "968c5579-577a-4caa-a6f3-8eb1ca77cf41",
"name": "키워드 입력",
"type": "n8n-nodes-base.formTrigger",
"position": [
-64,
112
],
"webhookId": "85ff78f8-1b0c-4443-b0e0-a26f54ddb5e1",
"parameters": {
"options": {},
"formTitle": "Outline generator",
"formFields": {
"values": [
{
"fieldLabel": "Keyword",
"placeholder": "What's the keyword you're going for?",
"requiredField": true
}
]
},
"formDescription": "This workflows generates an outline and gets up to date information from Tavily"
},
"typeVersion": 2.3
},
{
"id": "c7ed6f1b-9f5f-41a8-91c2-4332bb43da92",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
-272
],
"parameters": {
"color": 7,
"width": 560,
"height": 1200,
"content": "## Overview\n\nTurn your keyword research into a clear, fact-based content outline with this workflow. It splits your keyword into 5-6 subtopics, makes research questions for those subtopics, and uses Tavily to pull answers from real search results. This way your outline is based on real data, not just AI training data, so you can create accurate and reliable content.\n\n## How it works\n\n- Enter a keyword in the form to start the workflow\n- The OpenAI node splits the keyword into 5-6 research subtopics and makes a research question for each one. These questions will be used to enrich the outline later on\n- We split the research questions into separate items so we can process them one by one\n- Each research question is sent to Tavily. Tavily searches the web for answers and returns a short summary\n- Next, we add the answers to our JSON sections\n- We take all the separate items and join them into one list again\n- The JSON outline is converted into Markdown using a code node. The code takes the JSON headers, turns them into Markdown headings (level 2), and puts the answers underneath\n\n## Setup steps\n\n1. Get an [OpenAI API](https://openai.com/api/) key and set up your credentials inside n8n\n2. Sign up for a [Tavily](https://www.tavily.com/) account and get an API key — you can use a free account for testing\n3. Install the Tavily community node. If you don’t want to use a community node, you can call Tavily directly using an HTTP node. Check their [API reference](https://docs.tavily.com/documentation/api-reference/endpoint/search) for what endpoints to call\n4. Run the workflow and enter the keyword you want to target in the form\n5. Adjust the workflow to decide what to do with the Markdown outline\n\n## Requirements\n\n- An [OpenAI API](https://openai.com/api/) key\n- A [Tavily](https://www.tavily.com/) account\n- The Tavily community node installed\n- *(Optional)* If you don’t want to use the Tavily community node, use a regular HTTP node and call the API directly. Check their [API reference](https://docs.tavily.com/documentation/api-reference/endpoint/search) for what endpoints to call\n\n## Workflow customizations\n\n- Instead of using a form to enter your keyword, you can keep all your research in a Google Doc and go through it row by row\n- You can add another AI node at the end to turn the outline into a full article\n- You can put the outline in a Google Doc and send it to a writer using the Google Docs node and the Gmail node"
},
"typeVersion": 1
},
{
"id": "6966d96b-038f-46a7-8fa9-72cf25741652",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
-272
],
"parameters": {
"color": 7,
"width": 320,
"height": 624,
"content": "## Enter keyword\nEnter your main topic into the form. The AI will split it up into 5-6 different subtopics"
},
"typeVersion": 1
},
{
"id": "6990c008-60ab-446f-882e-5fc3dc56139b",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
-272
],
"parameters": {
"color": 7,
"width": 320,
"height": 624,
"content": "## Create subtopics and generate research questions\nThis AI node takes the keyword and turns it into 5-6 subtopics. For each subtopic, it generates a research question. These questions will be used to enrich the outline later down the line"
},
"typeVersion": 1
},
{
"id": "afc0bc15-c62a-45ae-8f56-950bc57cc896",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
-272
],
"parameters": {
"color": 7,
"width": 320,
"height": 624,
"content": "## Split out questions\nIn this node we split all the research questions into separate items so we can research them\n"
},
"typeVersion": 1
},
{
"id": "066148b2-78dd-4266-bf3f-390ed88dfcc5",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
-272
],
"parameters": {
"color": 7,
"width": 320,
"height": 624,
"content": "## Get answers to research questions using Tavily API\nSearch for the research question using Tavily API. This will research our question using up to date search results and synthesize an answer for each research question\n\n:warning: Note :warning:\nThis workflow uses the Tavily community node. You can get the same results by using a HTTP node and calling the Tavily API that way. The community node just makes it slightly easier"
},
"typeVersion": 1
},
{
"id": "afcb6f03-8c62-459c-87b1-7e961178df97",
"name": "스티키 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1232,
-272
],
"parameters": {
"color": 7,
"width": 320,
"height": 624,
"content": "## Add answers to JSON\nAdd our answers to our JSON section outline. Now we have a section title, a main question, and an answer."
},
"typeVersion": 1
},
{
"id": "e3a36778-7206-411e-a80a-d0c5030df51d",
"name": "스티키 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1584,
-272
],
"parameters": {
"color": 7,
"width": 320,
"height": 624,
"content": "## Turn into one list\ncombine all the different sections into one big list again."
},
"typeVersion": 1
},
{
"id": "0b16e614-f068-474f-9ac3-d00fc5c77f8f",
"name": "스티키 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1936,
-272
],
"parameters": {
"color": 7,
"width": 320,
"height": 624,
"content": "## Convert JSON into markdown\nIn this node we take our JSON outline and turn it into a markdown outline. We convert the section titles into headings and add the answer we just researched. We don't really need the questions anymore since the LLMs will use the answers as a guide during writing"
},
"typeVersion": 1
},
{
"id": "ffd676c9-072e-4c67-bc87-7bf484031a2c",
"name": "스티키 노트8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2288,
-272
],
"parameters": {
"color": 7,
"width": 320,
"height": 624,
"content": "## Continue with the workflow\nAdd another AI node to turn the outline into an article or write it to a Google doc and give it to a writer. You now have an outline that is enriched with accurate data instead of relying on the LLMs own training data "
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "cdd1fb90-3e24-4da3-bf02-561833fc6ecb",
"connections": {
"968c5579-577a-4caa-a6f3-8eb1ca77cf41": {
"main": [
[
{
"node": "a115791a-30b2-47a0-85fb-d27e9d22811d",
"type": "main",
"index": 0
}
]
]
},
"ed044b17-d4d5-485d-ba70-da2de93dbd05": {
"main": [
[
{
"node": "dbcea747-de4e-4e34-bc70-ccc5d5c8b62f",
"type": "main",
"index": 0
}
]
]
},
"f3cfa3ff-0d94-4032-87d1-62c5142560f8": {
"main": [
[
{
"node": "ed044b17-d4d5-485d-ba70-da2de93dbd05",
"type": "main",
"index": 0
}
]
]
},
"dbcea747-de4e-4e34-bc70-ccc5d5c8b62f": {
"main": [
[
{
"node": "4ee2689e-c092-4e2e-8797-e566fff3dbb3",
"type": "main",
"index": 0
}
]
]
},
"9ac43406-ca6c-45fb-8c69-49607d996ff9": {
"main": [
[
{
"node": "f3cfa3ff-0d94-4032-87d1-62c5142560f8",
"type": "main",
"index": 0
}
]
]
},
"a115791a-30b2-47a0-85fb-d27e9d22811d": {
"main": [
[
{
"node": "f58f5390-254a-4dac-840b-89f7670cf632",
"type": "main",
"index": 0
}
]
]
},
"f58f5390-254a-4dac-840b-89f7670cf632": {
"main": [
[
{
"node": "9ac43406-ca6c-45fb-8c69-49607d996ff9",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
SerpAPI와 AI를 사용한 SEO 최적화 대纲 생성기
SerpAPI와 GPT-4o를 사용하여 Google 검색 결과에서 SEO 개요를 만들기
Set
Html
Limit
+
Set
Html
Limit
23 노드Robin Geuens
콘텐츠 제작
GPT-5와 fal.ai 이미지를 사용한 키워드에서 WordPress까지 자동화 SEO 블로그 프로세스
GPT-5 및 fal.ai 이미지를 사용한 키워드 to WordPress SEO 블로그 프로세스 자동화
Set
Code
Wait
+
Set
Code
Wait
96 노드Paul
콘텐츠 제작
Perplexity와 GPT를 사용하여 WordPress에 SEO 최적화 블로그 생성, 키워드와 미디어 포함
Perplexity와 GPT를 사용하여 WordPress에 SEO 최적화 블로그를 만들어 키워드와 미디어 포함
Set
Code
Limit
+
Set
Code
Limit
124 노드Paul
콘텐츠 제작
특정 도구를 사용하여 WordPress에 SEO 최적화 블로그 생성
특정 도구를 사용하여 WordPress에 SEO 최적화 블로그 생성
Set
Code
Limit
+
Set
Code
Limit
124 노드Paul
콘텐츠 제작
Google Analytics, AI 및 Gmail을 사용하여 매주 LLM 트래픽 보고서 생성
Google Analytics, GPT-5 및 Gmail을 사용하여 매주 LLM 트래픽 보고서를 만듭니다.
Code
Gmail
Aggregate
+
Code
Gmail
Aggregate
13 노드Robin Geuens
콘텐츠 제작
💥 NanoBanana, Seedream 4, ChatGPT Image 및 Veo 3를 사용한 동영상 광고 자동화 - VIDE
AI(NanoBanana, Seedream, GPT-4o, Veo 3)를 사용하여 비디오 광고 캠페인 자동화 및 게시
Set
Code
Wait
+
Set
Code
Wait
63 노드Dr. Firas
콘텐츠 제작
워크플로우 정보
난이도
고급
노드 수17
카테고리2
노드 유형9
저자
Robin Geuens
@robingeuensHi, I'm Robin. I'm a veteran marketer of 7 years and love automation. If you have any questions about automation feel free to reach out to me on LinkedIn: https://www.linkedin.com/in/rgeuens/
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유