<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>echo &amp;quot;코딩기록&amp;quot;;</title>
    <link>https://moon-devnote.tistory.com/</link>
    <description>코딩공부에 도움이 될 자료들을 정리합니다.</description>
    <language>ko</language>
    <pubDate>Sun, 24 May 2026 15:38:47 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>backend.log</managingEditor>
    <item>
      <title>  AI 기반 쇼츠, 영상 자동 생성 (n8n, OpenAI, Flux, Kling, ElevenLabs)</title>
      <link>https://moon-devnote.tistory.com/69</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; 이 작업은 OpenAI와 n8n을 활용하여 자동으로 영상을 생성하고,&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Instagram, TikTok, Youtube등 소셜 네트워크에 업로드하는 시스템입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;해당 로직은 n8n에서 제공한 템플릿을 참고하였습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;무료로 사용할 수 있어 직접 사용해보면서 공부할 수 있다는게 너무 좋은 거 같아요!!!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;쇼츠 매일 올리기 현실적으로 너무 힘들잖아요... ㅜㅜ (게으른 휴먼) &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그래서 주제도 정해주고, 영상도 만들어주고, 자막도 생성해주고, 비디오도 생성해주고, 배경음악도 넣어주고, 업로드도 해주는거 없을까...? (AI 너가 다해주라!!!!)&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;있더라구요 ?.? &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;지금은 퀄리티가 전문가들이 만든 것보다 떨어지지만&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1년 후 2년 후.. 생각해보면 얼마나 발전할지 Ai의 성장 속도 무시 못하겠더라구요. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;오늘 포스팅 참고하셔서 쇼츠 자동 생성하고 수익화해보는 시스템!! 만들어봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1545&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPxFpd/btsOzH4usS0/x2g3Tvcxk3v1aBPm9oKHd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPxFpd/btsOzH4usS0/x2g3Tvcxk3v1aBPm9oKHd0/img.png&quot; data-alt=&quot;영상 자동화 워크플로어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPxFpd/btsOzH4usS0/x2g3Tvcxk3v1aBPm9oKHd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPxFpd%2FbtsOzH4usS0%2Fx2g3Tvcxk3v1aBPm9oKHd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1545&quot; height=&quot;527&quot; data-origin-width=&quot;1545&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;영상 자동화 워크플로어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;  시작전에 필요한 것들&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;시작하기 전에 다음이 필요합니다. API를 사용하려면 Key가 필요해요.&lt;/span&gt;&lt;span&gt; Key 발급 방법은 GPT한테 물어보면 너무 잘 설명해주니까, chatGPT한테 물어봅시다!!&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-pm-slice=&quot;3 3 []&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a title=&quot;n8n 설치&quot; href=&quot;https://n8n.partnerlinks.io/n8nTTVideoGenTemplate&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;&lt;b&gt;n8n 설치&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;개발 필드와 DB에서 다른 n8n 버전과 다른 OS에서도 연동 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://platform.openai.com/api-keys&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;&lt;b&gt;OpenAI API Key&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; (무료 체험 크레딧 제공)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://piapi.ai/?via=n8n&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;&lt;b&gt;PiAPI&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; (무료 체험 크레딧 제공)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;&lt;a href=&quot;https://try.elevenlabs.io/n8n&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ElevenLabs&lt;/a&gt; &lt;/b&gt;(무료 계정)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://creatomate.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;Creatomate API Key &lt;/b&gt;&lt;/a&gt;(무료 체험 크레딧 제공)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Google API 설정:&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://console.cloud.google.com/apis/api/sheets.googleapis.com/overview&quot;&gt;&lt;span&gt;Google Sheets API 활성화&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://console.cloud.google.com/apis/api/drive.googleapis.com/overview&quot;&gt;&lt;span&gt;Google Drive API 활성화&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://console.cloud.google.com/apis/credentials&quot;&gt;&lt;span&gt;OAuth 2.0 Client ID 및 Client Secret 비밀번호&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Discord Webhook URL&lt;/b&gt;&lt;/span&gt;&lt;span&gt; (선택)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;upload-post.com&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 계정 및 API 토큰&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;  1단계. Google 시트에서 영상 주제 바탕으로 비디오 캡션 생성하기&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1. &lt;/span&gt; PiAPI, Eleven Labs, Creatomate의 API 키를 먼저 세팅합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Creatomate에 로그인한 후 새 템플릿을 만들고, 오른쪽 상단의 &amp;ldquo;source code&amp;rdquo;를 클릭한 뒤 &lt;a href=&quot;https://pastebin.com/c7aMTeLK&quot;&gt;&amp;nbsp;JSON 코드&lt;/a&gt;를 붙여넣으세요. (JSON&amp;nbsp; 코드 링크 참고)&lt;/li&gt;
&lt;li&gt;&quot;Use Template&quot; 클릭 &amp;rarr; &quot;API Integration&quot;을 눌러 template_id를 확인하고, n8n에서 해당 값을 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Google Sheet 템플릿을 복사합니다&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1cjd8p_yx-M-3gWLEd5TargtoB35cW-3y66AOTNMQrrM/edit?usp=sharing&quot;&gt;Google Sheet 복사하기&lt;/a&gt; &amp;rarr; 파일 &amp;gt; 사본 만들기 선택 이후 n8n에서 연결하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. OpenAI를 통해 영상 아이디어 기반으로 자막 5개를 생성합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1394&quot; data-start=&quot;1316&quot;&gt;이 노드의 프롬프트를 원하는 방식으로 수정할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 자바스크립트 노드 2개를 이용해 OpenAI 응답을 리스트로 변환하고, 실패 여부를 검증합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;   1단계 워크플로어 상세 설명&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;119&quot; data-start=&quot;104&quot; data-ke-size=&quot;size23&quot;&gt;✅ 전체 흐름 요약:&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;413&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqBeVB/btsOx4mAdLl/84NKjMyaHsFTO33LZcKkF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqBeVB/btsOx4mAdLl/84NKjMyaHsFTO33LZcKkF0/img.png&quot; data-alt=&quot;워크플로어 전체 흐름 이미지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqBeVB/btsOx4mAdLl/84NKjMyaHsFTO33LZcKkF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqBeVB%2FbtsOx4mAdLl%2F84NKjMyaHsFTO33LZcKkF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1286&quot; height=&quot;413&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;413&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;워크플로어 전체 흐름 이미지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1715&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcJCd6/btsOzCoHbrQ/P6JajIZlYWJFfmC9JNK011/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcJCd6/btsOzCoHbrQ/P6JajIZlYWJFfmC9JNK011/img.png&quot; data-alt=&quot;Google Sheet 내용 불러온 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcJCd6/btsOzCoHbrQ/P6JajIZlYWJFfmC9JNK011/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcJCd6%2FbtsOzCoHbrQ%2FP6JajIZlYWJFfmC9JNK011%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1715&quot; height=&quot;287&quot; data-origin-width=&quot;1715&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Google Sheet 내용 불러온 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 157px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;노드명&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Schedule Trigger node&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;매일 한 번 워크플로우 자동 실행 (스케줄 트리거)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Set API Keys&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;OpenAI, PiAPI, Creatomate, ElevenLabs 등의 API 키 및 템플릿 ID 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Load Google Sheet&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;사전에 작성된 Google Sheet에서 오늘 사용할 콘텐츠 아이디어 불러오기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Generate Video Captions&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;OpenAI GPT를 사용해 아이디어 기반 자막 5개 생성 (Message Model 노드)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Create List&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;OpenAI의 응답을 자바스크립트로 파싱해 리스트 배열로 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Validate list formatting&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;리스트가 정상적으로 형성되었는지 검증 (예: 자막이 5개인지 확인)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;256&quot; data-start=&quot;236&quot; data-ke-size=&quot;size26&quot;&gt; 1-1. Schedule Trigger node&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Schedule Trigger 노드를 사용하여 고정된 간격과 시간에 워크플로를 실행할 수 있습니다. &lt;span style=&quot;background-color: #ffffff; color: #58585f; text-align: start;&quot;&gt;이는 Unix 계열 시스템의 Cron 소프트웨어 유틸리티와 유사한 방식으로 작동합니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;369&quot; data-start=&quot;257&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;302&quot; data-start=&quot;257&quot;&gt;&lt;b&gt;기능&lt;/b&gt;: 이 워크플로우가 &lt;b&gt;매일 한 번 자동 실행&lt;/b&gt;되도록 예약합니다.&lt;/li&gt;
&lt;li data-end=&quot;323&quot; data-start=&quot;303&quot;&gt;&lt;b&gt;타입&lt;/b&gt;: Cron 트리거&lt;/li&gt;
&lt;li data-end=&quot;369&quot; data-start=&quot;324&quot;&gt;&lt;b&gt;예시 설정&lt;/b&gt;: 매일 오전 9시에 실행되도록 설정 (0 9 * * *)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;custom-cron-interval&quot; style=&quot;background-color: #ffffff; color: #58585f; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;사용자 지정(Cron) 간격&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #58585f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;트리거 일정을 설정하려면&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용자 정의 Cron&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;표현식을 입력하세요.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #58585f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Cron 표현식을 생성하려면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #1c9782;&quot; href=&quot;https://crontab.guru/&quot;&gt;crontab guru를&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용할 수 있습니다 . crontab guru를 사용하여 생성한 Cron 표현식을&lt;span&gt;&amp;nbsp;&lt;/span&gt;n8n의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;표현식 필드에 붙여넣습니다.&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #58585f; text-align: start; border-collapse: collapse; width: 100%; height: 207px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 20px;&quot;&gt;유형&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 20px;&quot;&gt;크론&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Every X Seconds&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;*/10 * * * * *&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;10초마다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Every X Minutes&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;*/5 * * * *&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;5분마다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Hourly&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;0 * * * *&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;매 시간 정각&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Daily&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;0 6 * * *&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;매일 오전 6시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Weekly&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;0 12 * * 1&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;매주 월요일 정오&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Monthly&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;0 0 1 * *&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;매월 1일 자정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Every X Days&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;0 0 */3 * *&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;3일마다 자정에&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Only Weekdays&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;0 9 * * 1-5&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;월요일부터 금요일까지 오전 9시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Custom Hourly Range&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;0 9-17 * * *&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;매일 오전 9시부터 오후 5시까지 매시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;Quarterly&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;0 0 1 1,4,7,10 *&lt;/td&gt;
&lt;td style=&quot;text-align: left; height: 17px;&quot;&gt;At midnight on the 1st of January, April, July, and October.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tEWel/btsOxgOwFWk/x3VuDxqJdaLF0DA4TqKBh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tEWel/btsOxgOwFWk/x3VuDxqJdaLF0DA4TqKBh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tEWel/btsOxgOwFWk/x3VuDxqJdaLF0DA4TqKBh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtEWel%2FbtsOxgOwFWk%2Fx3VuDxqJdaLF0DA4TqKBh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;353&quot; height=&quot;608&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;901&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;412&quot; data-start=&quot;376&quot; data-ke-size=&quot;size26&quot;&gt;  1-2. Edit Fields (Set)&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;779&quot; data-start=&quot;413&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;503&quot; data-start=&quot;413&quot;&gt;&lt;b&gt;기능&lt;/b&gt;: OpenAI, PiAPI(Flux &amp;amp; Kling), Creatomate, ElevenLabs 등 &lt;b&gt;모든 API 키를 환경변수로 설정&lt;/b&gt;합니다.&lt;/li&gt;
&lt;li data-end=&quot;578&quot; data-start=&quot;504&quot;&gt;&lt;b&gt;중요 이유&lt;/b&gt;: 이후 모든 API 호출에 필요한 Key들을 이 노드에서 세팅해야 하므로 *&quot;시작 전에 꼭 설정&quot;*해야 합니다.&lt;/li&gt;
&lt;li data-end=&quot;779&quot; data-start=&quot;579&quot;&gt;&lt;b&gt;설정 예시&lt;/b&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1749710529578&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;OPENAI_API_KEY&quot;: &quot;sk-...&quot;,
  &quot;PIAPI_KEY&quot;: &quot;your-piapi-key&quot;,
  &quot;CREATOMATE_API_KEY&quot;: &quot;your-creatomate-key&quot;,
  &quot;ELEVENLABS_API_KEY&quot;: &quot;your-elevenlabs-key&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;875&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCDPEs/btsOxvx1MjO/KskGjWJmTm3gdK5EwKJrk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCDPEs/btsOxvx1MjO/KskGjWJmTm3gdK5EwKJrk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCDPEs/btsOxvx1MjO/KskGjWJmTm3gdK5EwKJrk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCDPEs%2FbtsOxvx1MjO%2FKskGjWJmTm3gdK5EwKJrk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;446&quot; height=&quot;875&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;875&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;376&quot; data-end=&quot;412&quot; data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;  1-3. Google Sheets&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;856&quot; data-start=&quot;812&quot;&gt;&lt;b&gt;기능&lt;/b&gt;: Google Sheet에서 &lt;b&gt;영상 주제, 스크립트, 상태등 기본 정보를 불러옵니다.&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;944&quot; data-start=&quot;857&quot;&gt;&lt;b&gt;동작 방식&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;944&quot; data-start=&quot;872&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;906&quot; data-start=&quot;872&quot;&gt;사전에 공유된 Google Sheet 템플릿을 복사해 사용&lt;/li&gt;
&lt;li data-end=&quot;944&quot; data-start=&quot;909&quot;&gt;첫 번째 시트에서 &quot;처리되지 않은&quot; 아이디어 한 줄을 불러옴&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;881&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctaVuo/btsOyWaj0bY/q6qCSS5XMdQpeIqpkiSuDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctaVuo/btsOyWaj0bY/q6qCSS5XMdQpeIqpkiSuDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctaVuo/btsOyWaj0bY/q6qCSS5XMdQpeIqpkiSuDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctaVuo%2FbtsOyWaj0bY%2Fq6qCSS5XMdQpeIqpkiSuDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;438&quot; height=&quot;881&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;881&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;412&quot; data-start=&quot;376&quot; data-ke-size=&quot;size26&quot;&gt;  &amp;nbsp;1-4. &lt;span&gt;&lt;/span&gt;OpenAI node&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기능: OpenAI GPT 모델을 사용해 Google Sheet에서 불러온 아이디어를 바탕으로 쇼츠용 자막 5개 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;875&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YVy0D/btsOynzgjyJ/7FTNDwlAXCI99kSYtbNKTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YVy0D/btsOynzgjyJ/7FTNDwlAXCI99kSYtbNKTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YVy0D/btsOynzgjyJ/7FTNDwlAXCI99kSYtbNKTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYVy0D%2FbtsOynzgjyJ%2F7FTNDwlAXCI99kSYtbNKTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;435&quot; height=&quot;875&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;875&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;376&quot; data-end=&quot;412&quot; data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;1-5. &lt;span&gt;&lt;/span&gt;Code node&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기능: OpenAI로부터 받은 &quot;자막 텍스트(예: numbered list)&quot;를 n8n 내부에서 리스트 형태로 파싱합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;882&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGf3xs/btsOxNkTmGg/aznz5ukanzFxPicTAPrhT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGf3xs/btsOxNkTmGg/aznz5ukanzFxPicTAPrhT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGf3xs/btsOxNkTmGg/aznz5ukanzFxPicTAPrhT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGf3xs%2FbtsOxNkTmGg%2Faznz5ukanzFxPicTAPrhT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;671&quot; height=&quot;711&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;882&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;412&quot; data-start=&quot;376&quot; data-ke-size=&quot;size26&quot;&gt;✅ 1-6. &lt;span&gt;&lt;/span&gt;If&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1801&quot; data-start=&quot;1744&quot;&gt;&lt;b&gt;기능&lt;/b&gt;: 위 단계에서 생성된 &lt;b&gt;리스트가 정확히 5개인지, 파싱이 잘 되었는지&lt;/b&gt; 검증합니다.&lt;/li&gt;
&lt;li data-end=&quot;1859&quot; data-start=&quot;1802&quot;&gt;&lt;b&gt;실패 시&lt;/b&gt;: 이후 단계로 진행되지 않음 (에러 처리 또는 Slack/Discord 알림 가능)&lt;/li&gt;
&lt;li data-end=&quot;1890&quot; data-start=&quot;1860&quot;&gt;&lt;b&gt;성공 시&lt;/b&gt;: 다음 단계 (이미지 생성)로 진행&lt;/li&gt;
&lt;li data-end=&quot;1890&quot; data-start=&quot;1860&quot;&gt;  &lt;b&gt;Tip&lt;/b&gt;: 이 구조 덕분에 OpenAI 응답이 예상과 다를 경우에도 에러를 감지하고 중단할 수 있어, 전체 플로우가 망가지지 않도록 보장됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;881&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k9UXA/btsOzlAECnA/OKioJ2TzjuhgP7GNHTLrpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k9UXA/btsOzlAECnA/OKioJ2TzjuhgP7GNHTLrpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k9UXA/btsOzlAECnA/OKioJ2TzjuhgP7GNHTLrpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk9UXA%2FbtsOzlAECnA%2FOKioJ2TzjuhgP7GNHTLrpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;625&quot; height=&quot;663&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;881&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;2005&quot; data-start=&quot;1990&quot; data-ke-size=&quot;size23&quot;&gt;  다음 단계 예고&lt;/h3&gt;
&lt;p data-end=&quot;2031&quot; data-start=&quot;2006&quot; data-ke-size=&quot;size16&quot;&gt;내용이 너무 많아서 이후 플로우는 다음과 같은 순서로 블로그에 포스팅하겠습니다 :)&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2229&quot; data-start=&quot;2032&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2064&quot; data-start=&quot;2032&quot;&gt;자막을 기반으로 이미지 프롬프트 생성 (OpenAI)&lt;/li&gt;
&lt;li data-end=&quot;2090&quot; data-start=&quot;2065&quot;&gt;이미지 생성 (Flux by PiAPI)&lt;/li&gt;
&lt;li data-end=&quot;2123&quot; data-start=&quot;2091&quot;&gt;이미지 &amp;rarr; 비디오 생성 (Kling by PiAPI)&lt;/li&gt;
&lt;li data-end=&quot;2151&quot; data-start=&quot;2124&quot;&gt;자막 기반 음성 생성 (ElevenLabs)&lt;/li&gt;
&lt;li data-end=&quot;2191&quot; data-start=&quot;2152&quot;&gt;자막/음성/비디오 통합 &amp;rarr; 최종 영상 생성 (Creatomate)&lt;/li&gt;
&lt;li data-end=&quot;2229&quot; data-start=&quot;2192&quot;&gt;자동 업로드 (upload-post.com) 및 시트 업데이트&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt; 구독과 댓글, 좋아요는 포스팅에 힘이 됩니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>ai 쇼츠 생성</category>
      <category>AI 수익화</category>
      <category>ai 영상 생성</category>
      <category>ai로 돈벌기</category>
      <category>n8n 노코드 자동화</category>
      <category>n8n 자동화</category>
      <category>OpenAI</category>
      <category>sns 마케팅 자동화</category>
      <category>쇼츠 자동 생성</category>
      <category>콘텐츠 자동화</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/69</guid>
      <comments>https://moon-devnote.tistory.com/69#entry69comment</comments>
      <pubDate>Sun, 15 Jun 2025 16:54:25 +0900</pubDate>
    </item>
    <item>
      <title>n8n으로 자동화 시작하기 9편 - Google Drive에 파일 자동 저장하기</title>
      <link>https://moon-devnote.tistory.com/68</link>
      <description>&lt;h2&gt;n8n으로 자동화 시작하기 9편 - Google Drive에 파일 자동 저장하기&lt;/h2&gt;

&lt;p&gt;이번 편에서는 n8n을 통해 특정 데이터를 자동으로 &lt;strong&gt;Google Drive에 파일로 저장&lt;/strong&gt;하는 방법을 소개합니다. 크론 실행이나 이메일 첨부파일 저장, API 수집 데이터를 정기 백업하는 워크플로우에 활용할 수 있습니다.&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;  사전 준비: Google Drive 인증&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://console.cloud.google.com/&quot; target=&quot;_blank&quot;&gt;Google Cloud Console&lt;/a&gt;에 접속해 프로젝트를 생성합니다.&lt;/li&gt;
  &lt;li&gt;OAuth 동의 화면 설정 → 외부 사용자 허용&lt;/li&gt;
  &lt;li&gt;API 및 서비스 &gt; OAuth 2.0 클라이언트 ID 생성 → 리디렉션 URL은 &lt;code&gt;https://n8n.io/oauth2-redirect&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;n8n Credentials 메뉴에서 Google Drive 인증 추가&lt;/li&gt;
&lt;/ol&gt;

&lt;!-- 이미지 업로드 후 삽입 --&gt;
&lt;p&gt;&lt;strong&gt;[이미지1]&lt;/strong&gt; Google Cloud에서 OAuth 설정 화면&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;  Google Drive 노드 구성&lt;/h3&gt;

&lt;p&gt;Google Drive 노드에서는 파일 업로드 작업을 자동화할 수 있습니다. 다음과 같이 설정합니다:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Authentication:&lt;/strong&gt; 생성한 Google OAuth 자격&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Operation:&lt;/strong&gt; Upload&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;File Name:&lt;/strong&gt; 저장할 파일 이름 지정 (예: &lt;code&gt;exchange_{{ $now.format(&quot;YYYY-MM-DD&quot;) }}.json&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;File Content:&lt;/strong&gt; Set 노드 등에서 받아온 JSON 또는 텍스트 데이터&lt;/li&gt;
&lt;/ul&gt;

&lt;!-- 이미지 업로드 후 삽입 --&gt;
&lt;p&gt;&lt;strong&gt;[이미지2]&lt;/strong&gt; Google Drive 노드 구성 예시&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;  실습 예제: 환율 데이터를 매일 백업&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Cron:&lt;/strong&gt; 매일 오전 10시 실행&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;HTTP Request:&lt;/strong&gt; 환율 API 호출&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Set:&lt;/strong&gt; 파일로 저장할 JSON 구조 정의&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Google Drive:&lt;/strong&gt; 해당 데이터를 파일로 업로드&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Set 노드 예시:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &quot;currency&quot;: &quot;KRW&quot;,
  &quot;rates&quot;: {
    &quot;USD&quot;: {{$json[&quot;rates&quot;][&quot;USD&quot;]}},
    &quot;JPY&quot;: {{$json[&quot;rates&quot;][&quot;JPY&quot;]}}
  },
  &quot;date&quot;: &quot;{{$now.format('YYYY-MM-DD')}}&quot;
}&lt;/code&gt;&lt;/pre&gt;

&lt;!-- 이미지 업로드 후 삽입 --&gt;
&lt;p&gt;&lt;strong&gt;[이미지3]&lt;/strong&gt; 전체 워크플로우 구성도&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;  팁&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;파일 포맷은 &lt;code&gt;.txt&lt;/code&gt;, &lt;code&gt;.json&lt;/code&gt;, &lt;code&gt;.csv&lt;/code&gt; 등 다양하게 지정 가능&lt;/li&gt;
  &lt;li&gt;Google Drive 내 특정 폴더에 저장하려면 폴더 ID를 지정&lt;/li&gt;
  &lt;li&gt;동일 파일명을 매번 덮어쓰기하거나, 날짜 기반 파일명을 사용해 누적 저장할 수도 있음&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3&gt;✅ 마무리&lt;/h3&gt;

&lt;p&gt;Google Drive 연동은 데이터 백업, 리포트 자동화 등에 매우 유용합니다. 다음 편에서는 이메일 첨부파일 자동 다운로드 및 저장 방법을 다뤄보겠습니다.&lt;/p&gt;

&lt;p&gt;▶ 전체 시리즈 보기: &lt;a href=&quot;https://moon-devnote.tistory.com/category/%EC%9E%90%EB%8F%99%ED%99%94%20%ED%88%B4/n8n&quot;&gt;n8n 시리즈 전체보기&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>google api</category>
      <category>google drive 연동</category>
      <category>Google Oauth</category>
      <category>n8n</category>
      <category>n8n 자동화</category>
      <category>n8n 자동화 예제</category>
      <category>노코드 자동화</category>
      <category>데이터 백업 자동화</category>
      <category>워크플로우 자동화</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/68</guid>
      <comments>https://moon-devnote.tistory.com/68#entry68comment</comments>
      <pubDate>Sat, 14 Jun 2025 15:20:59 +0900</pubDate>
    </item>
    <item>
      <title>n8n으로 자동화 시작하기 8편 - Slack으로 알림 메시지 전송하기</title>
      <link>https://moon-devnote.tistory.com/67</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;n8n으로 자동화 시작하기 8편 - Slack으로 알림 메시지 전송하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 편에서는 n8n에서 수집한 정보를 &lt;b&gt;Slack&lt;/b&gt; 채널로 자동 전송하는 방법을 알아보겠습니다. 예를 들어 환율 정보, 에러 알림, 크론 기반 보고서 등 다양한 업무 자동화에 활용할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Slack API 사전 설정&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://api.slack.com/apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Slack API 페이지&lt;/a&gt;에서 새 앱을 생성합니다.&lt;/li&gt;
&lt;li&gt;OAuth &amp;amp; Permissions 메뉴에서 &lt;code&gt;chat:write&lt;/code&gt; 권한을 추가합니다.&lt;/li&gt;
&lt;li&gt;Install to Workspace &amp;rarr; &lt;b&gt;Bot User OAuth Token&lt;/b&gt;을 복사합니다.&lt;/li&gt;
&lt;li&gt;n8n 내 Credentials 메뉴에서 Slack 인증을 생성하고 토큰을 등록합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Slack 채널 ID&lt;/b&gt;도 확인이 필요합니다. 예: &lt;code&gt;C01XXXXXXX&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Yd9RL/btsOwCXNPBT/4LKUlK40NpNrK2DTxUYmnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Yd9RL/btsOwCXNPBT/4LKUlK40NpNrK2DTxUYmnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Yd9RL/btsOwCXNPBT/4LKUlK40NpNrK2DTxUYmnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYd9RL%2FbtsOwCXNPBT%2F4LKUlK40NpNrK2DTxUYmnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;642&quot; height=&quot;314&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[이미지1]&lt;/b&gt; Slack API 설정 화면&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;⚙️ Slack 노드 구성하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Slack 노드는 매우 간단하게 구성됩니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Authentication:&lt;/b&gt; 등록한 Slack Credential 선택&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Channel:&lt;/b&gt; 메시지를 보낼 채널 ID 입력&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Text:&lt;/b&gt; 전송할 메시지 내용을 템플릿 또는 변수로 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uPxq6/btsOx4MTqrs/jALve6eLYl06kwv6PXik6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uPxq6/btsOx4MTqrs/jALve6eLYl06kwv6PXik6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uPxq6/btsOx4MTqrs/jALve6eLYl06kwv6PXik6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuPxq6%2FbtsOx4MTqrs%2FjALve6eLYl06kwv6PXik6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1966&quot; height=&quot;1102&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[이미지2]&lt;/b&gt; Slack 노드 설정 예시&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  실습 예제: 환율 정보를 Slack으로 전송&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 7편에서 사용한 환율 API와 연동하여, 매일 오전 환율 정보를 Slack 채널에 자동 전송해보겠습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;워크플로우 구성&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Cron 노드:&lt;/b&gt; 매일 오전 9시 실행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HTTP Request 노드:&lt;/b&gt; 환율 정보 API 호출&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Slack 노드:&lt;/b&gt; 환율 정보를 채널로 전송&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ef50bc69-31a2-465e-a90e-8431972be263.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bANCVv/btsOwwRrnbm/HnUTc2LDwrfNzG30rKbiN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bANCVv/btsOwwRrnbm/HnUTc2LDwrfNzG30rKbiN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bANCVv/btsOwwRrnbm/HnUTc2LDwrfNzG30rKbiN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbANCVv%2FbtsOwwRrnbm%2FHnUTc2LDwrfNzG30rKbiN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1536&quot; data-filename=&quot;ef50bc69-31a2-465e-a90e-8431972be263.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[이미지3]&lt;/b&gt; 전체 워크플로우 구성 예시&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Slack 메시지 내용&lt;/h4&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;  오늘의 환율 정보 (KRW 기준)
- USD: {{$json[&quot;rates&quot;][&quot;USD&quot;]}}
- JPY: {{$json[&quot;rates&quot;][&quot;JPY&quot;]}}&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  활용 팁&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Slack 메시지에는 &lt;code&gt;`코드블럭`&lt;/code&gt;, &lt;b&gt;굵은 글씨&lt;/b&gt;, 이모지 등을 사용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;Slack 채널에 봇이 초대되어 있어야 메시지를 전송할 수 있습니다. &lt;code&gt;/invite @BotName&lt;/code&gt; 사용&lt;/li&gt;
&lt;li&gt;Slack 외에 Discord, Telegram도 유사한 방식으로 연동 가능합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Slack 연동은 정보 공유와 팀 커뮤니케이션 자동화에 큰 장점이 있습니다. 특히 알림, 경고, 보고서 자동화에 유용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 편에서는 외부에서 수집한 데이터를 &lt;b&gt;Google Drive 또는 Dropbox&lt;/b&gt;에 자동 저장하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;▶ 전체 시리즈 보기: &lt;a href=&quot;https://moon-devnote.tistory.com/category/%EC%9E%90%EB%8F%99%ED%99%94%20%ED%88%B4/n8n&quot;&gt;n8n 전체 시리즈&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>n8n</category>
      <category>n8n자동화</category>
      <category>slack api</category>
      <category>slack api 설정</category>
      <category>slack 노드</category>
      <category>slack 알림 자동화</category>
      <category>워크플로우 구성</category>
      <category>환율 api</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/67</guid>
      <comments>https://moon-devnote.tistory.com/67#entry67comment</comments>
      <pubDate>Sat, 14 Jun 2025 12:34:18 +0900</pubDate>
    </item>
    <item>
      <title>n8n으로 자동화 시작하기 7편 - HTTP Request 노드로 외부 API 호출하기</title>
      <link>https://moon-devnote.tistory.com/66</link>
      <description>&lt;h2&gt;n8n으로 자동화 시작하기 7편 - HTTP Request 노드로 외부 API 호출하기&lt;/h2&gt;

&lt;p&gt;n8n의 &lt;strong&gt;HTTP Request 노드&lt;/strong&gt;는 외부 API와 연동하여 데이터를 가져오고, 가공하고, 자동화하는 데 필수적인 노드입니다. 이 기능을 활용하면 REST API 기반의 서비스와 자유롭게 통신할 수 있습니다.&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;  HTTP Request 노드란?&lt;/h3&gt;

&lt;p&gt;HTTP Request 노드는 외부 API 서버에 &lt;strong&gt;GET / POST / PUT / DELETE&lt;/strong&gt; 등의 HTTP 요청을 보낼 수 있습니다. 예를 들어:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;환율 정보 API 호출&lt;/li&gt;
  &lt;li&gt;슬랙 메시지 보내기&lt;/li&gt;
  &lt;li&gt;공공데이터포털에서 날씨 정보 가져오기&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;아래는 예시 화면입니다:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sample_http_request.png&quot; alt=&quot;HTTP Request 노드 설정 예시&quot; width=&quot;600&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;  실습 예시: 무료 환율 API 호출&lt;/h3&gt;

&lt;p&gt;예제에서는 &lt;a href=&quot;https://exchangerate.host&quot;&gt;exchangerate.host&lt;/a&gt;에서 제공하는 무료 환율 API를 활용합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;목표:&lt;/strong&gt; 매일 원화(KRW)의 미국 달러(USD), 일본 엔화(JPY) 환율을 가져오기&lt;/p&gt;

&lt;h4&gt;1. Cron 노드로 매일 실행&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;0 9 * * *&lt;/code&gt; - 매일 오전 9시&lt;/pre&gt;

&lt;h4&gt;2. HTTP Request 노드 설정&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;HTTP Method:&lt;/strong&gt; GET&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;URL:&lt;/strong&gt; &lt;code&gt;https://api.exchangerate.host/latest?base=KRW&amp;symbols=USD,JPY&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;요청 결과는 다음과 같이 JSON 형태로 반환됩니다:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;base&quot;: &quot;KRW&quot;,
  &quot;rates&quot;: {
    &quot;USD&quot;: 0.00072,
    &quot;JPY&quot;: 0.11
  },
  &quot;date&quot;: &quot;2025-06-12&quot;
}&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;3. Set 노드로 가공&lt;/h4&gt;
&lt;p&gt;HTTP Request 노드의 데이터를 가져와 가독성 좋게 변환합니다:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;USD: {{$json[&quot;rates&quot;][&quot;USD&quot;]}}&lt;/li&gt;
  &lt;li&gt;JPY: {{$json[&quot;rates&quot;][&quot;JPY&quot;]}}&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;4. 결과 출력&lt;/h4&gt;
&lt;p&gt;Webhook Response 또는 Slack 등 원하는 곳에 출력할 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sample_http_workflow.png&quot; alt=&quot;HTTP Request 워크플로우 예시&quot; width=&quot;700&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h3&gt;  활용 팁&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Headers 설정:&lt;/strong&gt; 인증 토큰(Bearer Token) 등이 필요할 경우 Headers 탭에 추가 가능&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;POST 요청:&lt;/strong&gt; POST 방식으로 JSON 데이터를 전송할 수 있음&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;API Key:&lt;/strong&gt; 보안이 필요한 API는 API Key를 `.env` 또는 Credential에 등록하는 것이 안전&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3&gt;✅ 정리&lt;/h3&gt;

&lt;p&gt;n8n의 HTTP Request 노드를 통해 외부 API를 쉽게 연동할 수 있으며, 이를 다양한 자동화 시나리오에 연결하면 업무 효율을 크게 높일 수 있습니다.&lt;/p&gt;

&lt;p&gt;다음 편에서는 가져온 데이터를 &lt;strong&gt;Slack, Discord 등 알림 메시지&lt;/strong로 전송하는 방법을 소개하겠습니다.&lt;/p&gt;

&lt;p&gt;전체 시리즈 보기: &lt;a href=&quot;https://moon-devnote.tistory.com/category/%EC%9E%90%EB%8F%99%ED%99%94%20%ED%88%B4/n8n&quot;&gt;n8n시리즈&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>API 호출</category>
      <category>HTTP request</category>
      <category>json 파싱</category>
      <category>n8n</category>
      <category>REST API</category>
      <category>데이터 자동 수집</category>
      <category>백엔드 자동화</category>
      <category>자동화</category>
      <category>크론 스케줄링</category>
      <category>환율 api</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/66</guid>
      <comments>https://moon-devnote.tistory.com/66#entry66comment</comments>
      <pubDate>Fri, 13 Jun 2025 19:35:32 +0900</pubDate>
    </item>
    <item>
      <title>n8n으로 자동화 시작하기 6편 - Cron 트리거로 정해진 시간마다 워크플로우 실행하기</title>
      <link>https://moon-devnote.tistory.com/65</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;n8n&lt;/b&gt;의 강력한 기능 중 하나는 &lt;b&gt;Cron 트리거&lt;/b&gt;를 통해 특정 시간에 자동으로 워크플로우를 실행할 수 있다는 점입니다. 서버 관리, 리포트 전송, 데이터 백업 등 다양한 자동화를 시간 기반으로 수행할 수 있죠.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Cron 트리거란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cron은 유닉스/리눅스 기반의 작업 스케줄러로, 특정 시간이나 주기에 따라 명령어 또는 스크립트를 실행하는 데 사용됩니다. n8n에서는 이를 시각적으로 설정할 수 있어 훨씬 편리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매일 오전 9시에 메일 전송&lt;/li&gt;
&lt;li&gt;매주 월요일 데이터 백업&lt;/li&gt;
&lt;li&gt;매월 1일 매출 리포트 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;⚙️ Cron 노드 설정 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;b&gt;노드 추가 &amp;rarr; &quot;Cron&quot; 검색 &amp;rarr; 선택&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &quot;Trigger Times&quot; 섹션에서 다음과 같이 설정합니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Mode:&lt;/b&gt; Every Minute, Every Hour, Every Day 중 선택 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Custom:&lt;/b&gt; 필요시 Cron 표현식 직접 입력 가능 (예: &lt;code&gt;0 9 * * 1&lt;/code&gt; = 매주 월요일 9시)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/your_uploaded_cron_setting.png&quot; alt=&quot;Cron 노드 설정 화면&quot; width=&quot;600&quot; /&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  예시: 매일 오전 9시에 구글 시트에 데이터 적재&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 워크플로우는 매일 9시에 데이터를 Set 노드로 설정한 뒤, Google Sheets에 저장합니다.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sample_cron_workflow.png&quot; alt=&quot;Cron 워크플로우 예시&quot; width=&quot;700&quot; /&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Cron&lt;/b&gt; - 매일 9시 트리거&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Set&lt;/b&gt; - 수동 데이터 설정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Google Sheets&lt;/b&gt; - 시트에 데이터 추가&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ Cron 표현식 예시 정리&lt;/h3&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;5&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;목표&lt;/th&gt;
&lt;th&gt;Cron 표현식&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;매일 9시&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0 9 * * *&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;매주 월요일 10시&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0 10 * * 1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;매월 1일 자정&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0 0 1 * *&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;매 5분 간격&lt;/td&gt;
&lt;td&gt;&lt;code&gt;*/5 * * * *&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  주의사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n8n이 실행 중인 서버/호스팅이 꺼져 있으면 트리거가 동작하지 않습니다.&lt;/li&gt;
&lt;li&gt;실제 시간대(Timezone)는 서버 또는 n8n 설정에 따라 다를 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 Cron 트리거를 통해 반복적인 작업을 자동화할 수 있습니다. 다음 편에서는 외부 API를 호출해 데이터를 가져오는 &lt;b&gt;HTTP Request 노드&lt;/b&gt;를 소개하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 시리즈 보기: &lt;a href=&quot;https://moon-devnote.tistory.com/category/%EC%9E%90%EB%8F%99%ED%99%94%20%ED%88%B4/n8n&quot;&gt;n8n전체 시리즈&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>API 호출</category>
      <category>cron</category>
      <category>cron 트리거</category>
      <category>n8n</category>
      <category>n8n 자동화</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/65</guid>
      <comments>https://moon-devnote.tistory.com/65#entry65comment</comments>
      <pubDate>Thu, 12 Jun 2025 10:28:11 +0900</pubDate>
    </item>
    <item>
      <title>n8n 자동화 가이드 - 5편: Google Sheets &amp;amp; MySQL을 활용한 데이터 저장 자동화</title>
      <link>https://moon-devnote.tistory.com/64</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;n8n 자동화 가이드 - 5편: Google Sheets &amp;amp; MySQL을 활용한 데이터 저장 자동화&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 글에서는 외부에서 데이터를 수신하고 가공하는 기본 워크플로우를 구성해보았습니다. 이번 편에서는 수집한 데이터를 &lt;b&gt;Google Sheets&lt;/b&gt; 또는 &lt;b&gt;MySQL&lt;/b&gt;에 자동 저장하는 과정을 다루겠습니다. 이는 실제 업무에서 많이 활용되는 형태로, 고객 문의 기록, 주문 데이터 저장, 로그 수집 등 다양한 업무에 응용할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  워크플로우 구성도&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 예제에서는 다음과 같은 흐름으로 구성합니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Webhook: 외부에서 POST 요청으로 데이터 수신&lt;/li&gt;
&lt;li&gt;Set: 데이터 정제&lt;/li&gt;
&lt;li&gt;Google Sheets 또는 MySQL: 정제된 데이터를 저장&lt;/li&gt;
&lt;li&gt;Webhook Response: 응답 반환&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgCNFW/btsOx8g5TFG/QfR7kgz1slm3ALWK5MTCp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgCNFW/btsOx8g5TFG/QfR7kgz1slm3ALWK5MTCp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgCNFW/btsOx8g5TFG/QfR7kgz1slm3ALWK5MTCp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgCNFW%2FbtsOx8g5TFG%2FQfR7kgz1slm3ALWK5MTCp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;1024&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Webhook 노드 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 n8n에서 Webhook 노드를 생성합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;HTTP Method&lt;/b&gt;: POST&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;: save-to-db&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 요청 URL: &lt;code&gt;http://localhost:5678/webhook/test/save-to-db&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샘플 요청 데이터 (JSON):&lt;/p&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;name&quot;: &quot;홍길동&quot;,
  &quot;email&quot;: &quot;hong@example.com&quot;,
  &quot;message&quot;: &quot;자동화 테스트입니다.&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Set 노드로 필드 정제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Webhook 다음에는 Set 노드를 연결하여 필요한 필드만 추출합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Keep Only Set&lt;/b&gt;: 체크&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;: &lt;code&gt;{{$json[&quot;body&quot;][&quot;name&quot;]}}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;email&lt;/code&gt;: &lt;code&gt;{{$json[&quot;body&quot;][&quot;email&quot;]}}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;: &lt;code&gt;{{$json[&quot;body&quot;][&quot;message&quot;]}}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Google Sheets 또는 MySQL로 저장&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ A. Google Sheets 사용 시&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;lsquo;Google Sheets&amp;rsquo; 노드 추가&lt;/li&gt;
&lt;li&gt;Action: &lt;b&gt;Append Sheet&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Credential: OAuth2로 구글 계정 연동&lt;/li&gt;
&lt;li&gt;Spreadsheet ID, Sheet Name 입력&lt;/li&gt;
&lt;li&gt;&amp;lsquo;Auto Map Input Data&amp;rsquo; 체크&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠️ 참고&lt;/b&gt;: 사전에 Google 시트를 생성하고, 첫 행에 &lt;code&gt;name, email, message&lt;/code&gt;를 입력해두어야 자동 매핑이 가능합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ B. MySQL 사용 시&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;lsquo;MySQL&amp;rsquo; 노드 추가&lt;/li&gt;
&lt;li&gt;Action: &lt;b&gt;Insert&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Credential: DB 연결 정보 입력 (Host, User, Password, Database)&lt;/li&gt;
&lt;li&gt;Table: 예를 들어 &lt;code&gt;inquiries&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 테이블 스키마:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;CREATE TABLE inquiries (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(100),
  message TEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. Webhook Response 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장이 완료되면 응답을 반환하기 위해 Webhook Response 노드를 연결합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Response Mode: On Received&lt;/li&gt;
&lt;li&gt;Response Data: JSON 형태로 간단한 메시지 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;status&quot;: &quot;success&quot;,
  &quot;message&quot;: &quot;Data saved successfully.&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 테스트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에서 curl 명령으로 테스트할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot;&gt;&lt;code&gt;curl -X POST http://localhost:5678/webhook/test/save-to-db \
  -H &quot;Content-Type: application/json&quot; \
  -d '{&quot;name&quot;:&quot;홍길동&quot;, &quot;email&quot;:&quot;hong@example.com&quot;, &quot;message&quot;:&quot;자동화 테스트입니다.&quot;}'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요청이 정상적으로 처리되면 Google Sheet 혹은 DB에 값이 저장되고 응답도 확인할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 n8n을 이용해 외부에서 데이터를 수신한 후 Google Sheets 또는 MySQL에 자동 저장하는 전체 과정을 구성해보았습니다. 이 방식은 반복적인 수기 입력을 줄이고, 다양한 실무 자동화에 활용 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 편에서는 &lt;b&gt;조건 분기(IF), 반복 처리(Loop), 데이터 병합(Merge)&lt;/b&gt; 등의 고급 노드를 활용한 실전 자동화 예제를 다루겠습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;a href=&quot;https://moon-devnote.tistory.com/category/%EC%9E%90%EB%8F%99%ED%99%94%20%ED%88%B4/n8n&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;n8n 자동화 가이드 전체 시리즈 보러가기&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>api 자동화</category>
      <category>n8n</category>
      <category>n8n 활용</category>
      <category>n8n사용</category>
      <category>n8n설치</category>
      <category>구글시트 자동화</category>
      <category>노코드 자동화</category>
      <category>백엔드 자동화</category>
      <category>업무 자동화</category>
      <category>웹훅 연동</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/64</guid>
      <comments>https://moon-devnote.tistory.com/64#entry64comment</comments>
      <pubDate>Fri, 6 Jun 2025 19:09:39 +0900</pubDate>
    </item>
    <item>
      <title>n8n 자동화 가이드 - 4편: Webhook + 외부 API 자동화 실습</title>
      <link>https://moon-devnote.tistory.com/63</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;n8n 자동화 가이드 - 4편: Webhook + 외부 API 자동화 실습&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 글에서는 n8n의 UI 구성과 워크플로우 설계의 기본 개념을 알아보았습니다. 이제 본격적으로 n8n의 실전 예제를 통해 자동화 프로세스를 구성해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 편에서는 &lt;b&gt;Webhook 노드를 이용해 외부 요청을 수신&lt;/b&gt;하고, &lt;b&gt;API 요청 결과를 자동으로 응답&lt;/b&gt;하는 간단한 워크플로우를 만들어봅니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 예제 시나리오&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 프로세스를 구현할 것입니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Webhook 노드&lt;/b&gt;가 외부 HTTP 요청을 수신함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HTTP Request 노드&lt;/b&gt;가 외부 API(예: JSONPlaceholder) 호출&lt;/li&gt;
&lt;li&gt;결과 데이터를 &lt;b&gt;Set 노드&lt;/b&gt;를 통해 정제&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Webhook Response 노드&lt;/b&gt;를 통해 클라이언트에게 결과 반환&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 새 워크플로우 생성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n8n 대시보드에서 &lt;b&gt;&amp;ldquo;New Workflow&amp;rdquo;&lt;/b&gt;를 클릭하여 새로운 자동화 흐름을 시작합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. Webhook 노드 설정&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;노드 추가&lt;/b&gt;: &amp;lsquo;Webhook&amp;rsquo; 노드를 검색하여 추가합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HTTP Method&lt;/b&gt;: &lt;code&gt;GET&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;: &lt;code&gt;get-post&lt;/code&gt; (예: /webhook/get-post)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드를 저장하면 n8n이 자동으로 Webhook URL을 생성해줍니다. 예시:&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;http://localhost:5678/webhook/test/get-post&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의:&lt;/b&gt; 워크플로우를 테스트하려면 &lt;b&gt;&amp;lsquo;Execute Node&amp;rsquo;&lt;/b&gt;를 클릭한 상태에서 외부 요청을 보내야 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. HTTP Request 노드 추가&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;노드 추가&lt;/b&gt;: &amp;lsquo;HTTP Request&amp;rsquo; 노드를 검색하여 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Method&lt;/b&gt;: GET&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL&lt;/b&gt;: &lt;code&gt;https://jsonplaceholder.typicode.com/posts/1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Webhook 노드와 연결&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 예제는 JSONPlaceholder의 더미 데이터를 가져오는 API입니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. Set 노드로 데이터 가공&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;lsquo;Set&amp;rsquo; 노드를 추가한 후, HTTP Request 노드와 연결&lt;/li&gt;
&lt;li&gt;&amp;lsquo;Keep Only Set&amp;rsquo; 옵션 활성화&lt;/li&gt;
&lt;li&gt;다음 필드를 추가:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt; = &lt;code&gt;{{$json[&quot;title&quot;]}}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;body&lt;/code&gt; = &lt;code&gt;{{$json[&quot;body&quot;]}}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 노드를 통해 출력 데이터를 깔끔하게 정리할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. Webhook Response 노드 추가&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;lsquo;Webhook Response&amp;rsquo; 노드를 추가하고, Set 노드와 연결&lt;/li&gt;
&lt;li&gt;Response Mode는 &lt;code&gt;On Received&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Response Data From은 &lt;code&gt;Last Node&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 Webhook으로 들어온 요청에 대해 외부 API 결과를 응답으로 되돌려주게 됩니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 테스트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워크플로우 상단에서 &lt;b&gt;&amp;ldquo;▶ Execute Workflow&amp;rdquo;&lt;/b&gt;를 누른 뒤, 새 탭에서 다음 URL을 호출합니다:&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;curl http://localhost:5678/webhook/test/get-post&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 작동하면 다음과 같은 JSON 결과가 출력됩니다:&lt;/p&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;title&quot;: &quot;sunt aut facere repellat provident occaecati&quot;,
  &quot;body&quot;: &quot;quia et suscipit suscipit recusandae consequuntur expedita et cum&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. 워크플로우 활성화 및 배포&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트가 완료되면 상단의 &lt;b&gt;&amp;ldquo;Activate&amp;rdquo;&lt;/b&gt; 버튼을 눌러 워크플로우를 실제로 서비스할 수 있습니다. &lt;br /&gt;Webhook 노드가 &lt;code&gt;production URL&lt;/code&gt;을 제공하며, 이 주소로 외부 애플리케이션에서 요청을 보낼 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. 마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 편에서는 Webhook을 통해 외부 요청을 수신하고, 외부 API에서 데이터를 가져와 처리한 후 결과를 반환하는 &lt;b&gt;단순하지만 실용적인 자동화 흐름&lt;/b&gt;을 설계해보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n8n을 활용하면 반복적인 API 연동, 데이터 수집, 슬랙 메시지 전송, 엑셀 파일 가공 등 다양한 자동화를 구현할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 편에서는 &lt;b&gt;실시간 데이터 저장 및 DB 연동 (MySQL, Google Sheets)&lt;/b&gt;과 관련된 자동화 워크플로우를 다룰 예정입니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;■ &lt;a href=&quot;https://moon-devnote.tistory.com/category/%EC%9E%90%EB%8F%99%ED%99%94%20%ED%88%B4/n8n&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;n8n 자동화 가이드 시리즈 전체 보기&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>api 자동화</category>
      <category>HTTP request</category>
      <category>n8n</category>
      <category>n8n 설치</category>
      <category>n8n 예제</category>
      <category>n8n 활용</category>
      <category>webhook</category>
      <category>노코드 툴</category>
      <category>업무 자동화</category>
      <category>자동화 실습</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/63</guid>
      <comments>https://moon-devnote.tistory.com/63#entry63comment</comments>
      <pubDate>Thu, 5 Jun 2025 19:06:06 +0900</pubDate>
    </item>
    <item>
      <title>n8n 자동화 가이드 - 3편: n8n UI 구조와 워크플로우 설계의 기초</title>
      <link>https://moon-devnote.tistory.com/62</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;n8n 자동화 가이드 - 3편: n8n UI 구조와 워크플로우 설계의 기초&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 글에서는 Docker를 이용해 n8n을 직접 서버에 설치하고 실행하는 과정을 살펴봤습니다. 이번 편에서는 &lt;b&gt;n8n의 사용자 인터페이스(UI)&lt;/b&gt;를 이해하고, &lt;b&gt;워크플로우 설계를 시작하기 위한 기본 개념&lt;/b&gt;을 설명합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. n8n 대시보드 구조 이해하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n8n에 접속하면 가장 먼저 다음과 같은 구성의 대시보드가 나타납니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;워크플로우 목록 (Workflows)&lt;/b&gt;: 지금까지 저장한 모든 워크플로우를 확인할 수 있는 메인 화면입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;새 워크플로우 생성 (New Workflow)&lt;/b&gt;: 새로운 자동화 플로우를 설계할 때 사용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Settings / Credentials / Executions&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Credentials&lt;/b&gt;: API 연동 시 사용할 인증 정보를 저장하는 공간입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Executions&lt;/b&gt;: 실행된 워크플로우 로그 및 결과를 확인할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 UI는 단순하면서도 직관적이라, 비개발자도 쉽게 접근할 수 있다는 것이 큰 장점입니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 워크플로우란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;워크플로우(Workflow)&lt;/b&gt;는 n8n에서 하나의 자동화 로직을 구성하는 단위입니다. 각 워크플로우는 다음과 같은 요소로 구성됩니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;노드(Node)&lt;/b&gt;: 하나의 기능 또는 작업 단위입니다. (예: 이메일 전송, HTTP 요청, 구글 시트 업데이트 등)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;연결선(Edge)&lt;/b&gt;: 노드 간의 실행 흐름을 연결합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;트리거(Trigger)&lt;/b&gt;: 워크플로우를 시작하는 시점입니다. (예: 일정 시간마다, Webhook 수신 시 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드를 직관적으로 연결하면서 시각적으로 자동화 흐름을 설계할 수 있어, 코드 작성 없이도 복잡한 프로세스를 만들 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 첫 워크플로우 설계해 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 예제를 통해 워크플로우 설계 과정을 알아보겠습니다. 아래는 &lt;b&gt;Webhook &amp;rarr; 이메일 전송&lt;/b&gt; 자동화 예제입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Webhook 노드 추가&lt;/b&gt;: 트리거 역할. 외부에서 HTTP 요청이 들어오면 워크플로우를 실행합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Send Email 노드 추가&lt;/b&gt;: Webhook에서 받은 데이터를 기반으로 이메일을 전송합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노드를 연결하고 저장한 후, &lt;b&gt;&quot;Activate&quot;&lt;/b&gt; 버튼을 클릭하면 워크플로우가 활성화되어 외부 요청에 반응할 준비가 됩니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 주요 노드 살펴보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n8n은 200개 이상의 다양한 노드를 기본 제공하며, 대표적인 노드는 다음과 같습니다:&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; max-width: 750px;&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead style=&quot;background-color: #f2f2f2;&quot;&gt;
&lt;tr&gt;
&lt;th&gt;노드 이름&lt;/th&gt;
&lt;th&gt;기능 설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Webhook&lt;/td&gt;
&lt;td&gt;외부 요청을 받아 워크플로우 실행 시작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTP Request&lt;/td&gt;
&lt;td&gt;외부 API 호출 (GET/POST/PUT 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Set&lt;/td&gt;
&lt;td&gt;데이터 구조 수정 및 필드 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IF&lt;/td&gt;
&lt;td&gt;조건 분기 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Function&lt;/td&gt;
&lt;td&gt;JavaScript를 이용한 고급 로직 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Send Email&lt;/td&gt;
&lt;td&gt;이메일 전송 (SMTP 설정 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 실행 방식과 디버깅&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워크플로우를 설계하고 나면, 좌측 상단의 &lt;b&gt;&amp;ldquo;▶ Execute Workflow&amp;rdquo;&lt;/b&gt; 버튼으로 직접 테스트해볼 수 있습니다. 각 노드는 실행 시 &lt;b&gt;입력(input)&lt;/b&gt;과 &lt;b&gt;출력(output)&lt;/b&gt; 데이터를 확인할 수 있어 디버깅이 매우 용이합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 워크플로우 실행 이력은 &lt;b&gt;Executions&lt;/b&gt; 메뉴에서 확인 가능하며, 오류 발생 시 어떤 노드에서 어떤 값이 잘못되었는지 쉽게 추적할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 편에서는 n8n의 UI 구성과 워크플로우 설계의 기본 원리를 살펴봤습니다. 다음 글에서는 실제로 &lt;b&gt;Webhook과 외부 API를 연동하여 데이터를 자동 수집하고 가공하는 예제&lt;/b&gt;를 진행해볼 예정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동화는 더 이상 전문가들만의 영역이 아닙니다. 이제 누구나 시각적으로 손쉽게, 강력한 업무 자동화를 실현할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;■ &lt;a href=&quot;https://moon-devnote.tistory.com/category/%EC%9E%90%EB%8F%99%ED%99%94%20%ED%88%B4/n8n&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;n8n 자동화 가이드 시리즈 전체 보기&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>api자동화</category>
      <category>n8n</category>
      <category>n8n 노드</category>
      <category>n8n 사용법</category>
      <category>노코드</category>
      <category>시적적 자동화</category>
      <category>업무 자동화</category>
      <category>워크플로우 설계</category>
      <category>웹푹 자동화</category>
      <category>자동화 툴</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/62</guid>
      <comments>https://moon-devnote.tistory.com/62#entry62comment</comments>
      <pubDate>Wed, 4 Jun 2025 19:03:33 +0900</pubDate>
    </item>
    <item>
      <title>n8n 자동화 가이드 - 2편: Docker로 n8n 설치하기</title>
      <link>https://moon-devnote.tistory.com/61</link>
      <description>&lt;h2&gt;n8n 자동화 가이드 - 2편: Docker로 n8n 설치하기&lt;/h2&gt;

&lt;p&gt;이전 글에서 &lt;strong&gt;n8n이 무엇인지&lt;/strong&gt;와 &lt;strong&gt;왜 주목받고 있는지&lt;/strong&gt;에 대해 살펴봤습니다. 이번 글에서는 본격적으로 &lt;strong&gt;n8n을 서버에 설치하는 방법&lt;/strong&gt;을 알아보겠습니다. 가장 많이 사용되는 방식인 &lt;strong&gt;Docker + Docker Compose&lt;/strong&gt; 환경을 기준으로 설명합니다.&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;1. 설치 준비물&lt;/h3&gt;
&lt;p&gt;다음은 n8n 설치를 위해 필요한 사전 조건입니다:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Linux 기반 서버 (예: Ubuntu 20.04 이상)&lt;/li&gt;
  &lt;li&gt;Docker &amp; Docker Compose 설치&lt;/li&gt;
  &lt;li&gt;도메인 (선택, HTTPS 적용 시 필요)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;로컬에서 테스트하려면 Mac 또는 Windows 환경에서도 Docker만 설치되어 있으면 진행 가능합니다.&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;2. Docker 및 Docker Compose 설치&lt;/h3&gt;

&lt;p&gt;우분투 기준으로 Docker 설치는 아래 명령어를 차례대로 실행하면 됩니다:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable docker
sudo systemctl start docker
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;설치 후 아래 명령어로 정상 작동 여부를 확인합니다:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;docker --version
docker-compose --version
&lt;/code&gt;&lt;/pre&gt;

&lt;hr&gt;

&lt;h3&gt;3. n8n을 위한 디렉토리 구성&lt;/h3&gt;

&lt;p&gt;n8n을 설치할 디렉토리를 만들고, 설정 파일을 구성합니다.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mkdir ~/n8n
cd ~/n8n
touch docker-compose.yml
touch .env
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;.env&lt;/code&gt; 파일은 다음과 같이 작성합니다:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# .env
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=securepassword
N8N_HOST=localhost
N8N_PORT=5678
N8N_PROTOCOL=http
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;주의:&lt;/strong&gt; 비밀번호는 보안을 위해 반드시 복잡하게 설정하세요.&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;4. docker-compose.yml 작성&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt; 파일은 다음과 같이 구성합니다:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;version: &quot;3&quot;

services:
  n8n:
    image: n8nio/n8n
    ports:
      - &quot;5678:5678&quot;
    environment:
      - N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE}
      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}
      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}
      - N8N_HOST=${N8N_HOST}
      - N8N_PORT=${N8N_PORT}
      - N8N_PROTOCOL=${N8N_PROTOCOL}
    volumes:
      - ./n8n_data:/home/node/.n8n
    restart: always
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;이 구성은 n8n을 &lt;code&gt;http://localhost:5678&lt;/code&gt;에서 실행하며, 기본 인증을 활성화해 외부 접근을 제한합니다.&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;5. n8n 실행&lt;/h3&gt;

&lt;p&gt;이제 아래 명령어로 n8n을 실행합니다:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;docker-compose up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;정상적으로 실행되면, 브라우저에서 다음 주소로 접속해 확인할 수 있습니다:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://localhost:5678&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;설정한 &lt;strong&gt;아이디/비밀번호&lt;/strong&gt;로 로그인하면 n8n의 시각적 워크플로우 편집 화면을 확인할 수 있습니다.&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;6. HTTPS 적용 (선택)&lt;/h3&gt;

&lt;p&gt;도메인이 있다면, &lt;strong&gt;Nginx + Let's Encrypt&lt;/strong&gt;를 활용해 HTTPS를 적용할 수 있습니다. 이 부분은 별도의 글로 따로 다룰 예정입니다.&lt;/p&gt;

&lt;hr&gt;

&lt;h3&gt;7. 자주 발생하는 오류 및 해결 방법&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;포트 충돌:&lt;/strong&gt; 다른 프로세스가 5678 포트를 이미 사용 중인 경우 &lt;code&gt;N8N_PORT&lt;/code&gt;를 변경하거나 해당 프로세스를 종료하세요.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;접속 불가:&lt;/strong&gt; 서버 방화벽에서 5678 포트를 허용했는지 확인하세요.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;데이터 초기화:&lt;/strong&gt; &lt;code&gt;./n8n_data&lt;/code&gt; 폴더에 저장된 데이터가 n8n의 모든 설정과 워크플로우를 포함하므로, 삭제 시 주의하세요.&lt;/li&gt;
&lt;/ul&gt;

&lt;hr&gt;

&lt;h3&gt;8. 마무리&lt;/h3&gt;

&lt;p&gt;여기까지 n8n을 Docker 환경에 설치하고 실행하는 기본적인 과정을 살펴봤습니다. 이제 n8n의 UI에서 직접 워크플로우를 구성할 준비가 끝났습니다.&lt;/p&gt;

&lt;p&gt;다음 편에서는 n8n의 기본 인터페이스 구성과 노드(Node)의 개념, 워크플로우 설계 흐름을 이해하는 데 필요한 기초 지식을 다룰 예정입니다.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;■ &lt;a href=&quot;https://moon-devnote.tistory.com/category/n8n%20자동화%20가이드&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;n8n 자동화 가이드 시리즈 전체 보기&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>docker</category>
      <category>n8n</category>
      <category>n8n self-host</category>
      <category>n8n 설치</category>
      <category>노코드</category>
      <category>로우코드</category>
      <category>서버에 n8n 설치하기</category>
      <category>자동화 툴</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/61</guid>
      <comments>https://moon-devnote.tistory.com/61#entry61comment</comments>
      <pubDate>Tue, 3 Jun 2025 19:01:28 +0900</pubDate>
    </item>
    <item>
      <title>n8n 자동화 가이드 - 1편: n8n이란? 워크플로우 자동화의 새로운 기준</title>
      <link>https://moon-devnote.tistory.com/60</link>
      <description>&lt;h2&gt;n8n 자동화 가이드 - 1편: n8n이란? 워크플로우 자동화의 새로운 기준&lt;/h2&gt;

&lt;p&gt;최근 업무 자동화 도구에 대한 관심이 폭발적으로 증가하면서, 다양한 플랫폼들이 주목받고 있습니다. 그중에서도 &lt;strong&gt;n8n&lt;/strong&gt;은 오픈 소스 기반의 유연하고 강력한 워크플로우 자동화 도구로 빠르게 성장하고 있는데요. 이번 시리즈에서는 n8n의 개념부터 설치, 기본 사용법, 실전 활용까지 단계별로 꼼꼼히 살펴보겠습니다.&lt;/p&gt;

&lt;h3&gt;1. n8n이란 무엇인가?&lt;/h3&gt;
&lt;p&gt;n8n은 &lt;strong&gt;“노 코드(No Code)”&lt;/strong&gt;와 &lt;strong&gt;“로우 코드(Low Code)”&lt;/strong&gt; 방식을 결합한 워크플로우 자동화 툴입니다. 다양한 웹 서비스와 애플리케이션을 연결해 데이터를 자동으로 주고받으며, 반복 작업을 효율적으로 처리할 수 있도록 돕습니다.&lt;/p&gt;
&lt;p&gt;기존의 상용 자동화 서비스들이 대부분 클라우드 기반으로 제한된 커스터마이징을 제공하는 것과 달리, n8n은 &lt;strong&gt;완전한 오픈 소스&lt;/strong&gt;이며, 사용자가 직접 서버에 설치해 데이터 소유권을 100% 보장받을 수 있다는 점이 가장 큰 강점입니다.&lt;/p&gt;

&lt;h3&gt;2. n8n이 특별한 이유&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;오픈 소스 프로젝트&lt;/strong&gt;: GitHub에서 소스 코드를 자유롭게 열람하고 수정 가능하며, 커뮤니티가 활발하게 기능을 개선하고 있습니다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;자체 호스팅 지원&lt;/strong&gt;: 데이터 보안과 프라이버시가 중요한 기업 환경에서도 안전하게 운영할 수 있습니다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;유연한 확장성&lt;/strong&gt;: 기본 제공되는 200개 이상의 노드(Node) 외에도, 커스텀 노드를 만들어 복잡한 업무 로직도 구현할 수 있습니다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;시각적 워크플로우 설계&lt;/strong&gt;: 복잡한 코딩 없이도 끌어다 놓기 방식으로 자동화 프로세스를 설계할 수 있어, 비개발자도 쉽게 접근 가능합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;3. 경쟁 서비스와의 비교&lt;/h3&gt;
&lt;p&gt;대표적인 워크플로우 자동화 도구인 &lt;strong&gt;Zapier&lt;/strong&gt;, &lt;strong&gt;Make (구 Integromat)&lt;/strong&gt;과 비교하면 다음과 같은 특징이 있습니다.&lt;/p&gt;

&lt;table border=&quot;1&quot; cellpadding=&quot;7&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: collapse; width: 100%; max-width: 700px;&quot;&gt;
  &lt;thead style=&quot;background-color:#f2f2f2;&quot;&gt;
    &lt;tr&gt;
      &lt;th&gt;특징&lt;/th&gt;
      &lt;th&gt;n8n&lt;/th&gt;
      &lt;th&gt;Zapier&lt;/th&gt;
      &lt;th&gt;Make&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;오픈 소스 여부&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;❌&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;❌&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;자체 서버 설치 가능&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;불가&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;부분 지원&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;무료 플랜 제공&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️ (제한적)&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️ (제한적)&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️ (제한적)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;노 코드/로우 코드 설계&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;커스텀 노드 작성 가능&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;✔️&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;제한적&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;제한적&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;커뮤니티 지원&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;강력함&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;상업적&lt;/td&gt;
      &lt;td style=&quot;text-align:center;&quot;&gt;중간&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;4. n8n 설치 방식과 이번 시리즈 방향&lt;/h3&gt;
&lt;p&gt;n8n은 다양한 설치 방법을 제공합니다.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Docker 기반 설치&lt;/strong&gt;: 가장 많이 사용되는 방법이며, 서버 환경에 독립적이고 안정적입니다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;npm 직접 설치&lt;/strong&gt;: Node.js 환경에 익숙한 사용자에게 적합합니다.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;n8n 클라우드&lt;/strong&gt;: 관리형 서비스로 서버 관리 부담 없이 빠르게 시작 가능하지만, 비용이 발생합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이번 시리즈에서는 실제 업무 환경에서 가장 많이 활용되는 &lt;strong&gt;Docker 기반 설치&lt;/strong&gt;를 중심으로 다룹니다. 설치 후 기본 설정부터, 워크플로우 작성, 실전 자동화 사례까지 단계적으로 설명할 예정이니 차근차근 따라와 주세요.&lt;/p&gt;

&lt;h3&gt;5. 마치며&lt;/h3&gt;
&lt;p&gt;자동화는 단순 반복 업무를 줄여주고, 인간이 보다 창의적인 일에 집중할 수 있게 만드는 강력한 도구입니다. n8n은 이런 자동화에 대한 접근성을 크게 낮추면서도 높은 확장성을 제공하는 훌륭한 선택지입니다.&lt;/p&gt;
&lt;p&gt;다음 편에서는 실제 환경에 n8n을 설치하는 과정을 자세히 안내합니다. Docker 설치부터 기본 환경 설정, 자주 마주치는 문제 해결 팁까지 폭넓게 다룰 예정이니 기대해 주세요!&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;■ &lt;a href=&quot;https://moon-devnote.tistory.com/category/%EC%9E%90%EB%8F%99%ED%99%94%20%ED%88%B4/n8n&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;n8n 자동화 가이드 시리즈 전체 보기&lt;/a&gt;&lt;/p&gt;</description>
      <category>자동화 툴/n8n</category>
      <category>Ai</category>
      <category>n8n</category>
      <category>n8n기초</category>
      <category>n8n사용법</category>
      <category>n8n설치</category>
      <category>자동화툴</category>
      <author>backend.log</author>
      <guid isPermaLink="true">https://moon-devnote.tistory.com/60</guid>
      <comments>https://moon-devnote.tistory.com/60#entry60comment</comments>
      <pubDate>Mon, 2 Jun 2025 19:00:51 +0900</pubDate>
    </item>
  </channel>
</rss>