<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>노코드 &#8211; 투데이즈.kr</title>
	<atom:link href="https://2days.kr/tag/%eb%85%b8%ec%bd%94%eb%93%9c/feed/" rel="self" type="application/rss+xml" />
	<link>https://2days.kr</link>
	<description>투데이즈</description>
	<lastBuildDate>Sun, 16 Nov 2025 13:08:20 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8</generator>

<image>
	<url>https://2days.kr/wp-content/uploads/2025/10/cropped-simbol-1-32x32.png</url>
	<title>노코드 &#8211; 투데이즈.kr</title>
	<link>https://2days.kr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)</title>
		<link>https://2days.kr/24/06/17/64194/it/program/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Tue, 24 Jun 2025 08:30:07 +0000</pubDate>
				<category><![CDATA[program]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI블로그]]></category>
		<category><![CDATA[AI자동화]]></category>
		<category><![CDATA[API연동]]></category>
		<category><![CDATA[GeminiAPI]]></category>
		<category><![CDATA[GoogleGemini]]></category>
		<category><![CDATA[n8n]]></category>
		<category><![CDATA[SEO최적화]]></category>
		<category><![CDATA[UnsplashAPI]]></category>
		<category><![CDATA[개발자도구]]></category>
		<category><![CDATA[노코드]]></category>
		<category><![CDATA[디지털마케팅]]></category>
		<category><![CDATA[로우코드]]></category>
		<category><![CDATA[마케팅자동화]]></category>
		<category><![CDATA[무료이미지]]></category>
		<category><![CDATA[블로그이미지]]></category>
		<category><![CDATA[블로그자동화]]></category>
		<category><![CDATA[블로깅팁]]></category>
		<category><![CDATA[생산성향상]]></category>
		<category><![CDATA[생성형AI]]></category>
		<category><![CDATA[시간절약]]></category>
		<category><![CDATA[워크플로우]]></category>
		<category><![CDATA[웹자동화]]></category>
		<category><![CDATA[이미지생성]]></category>
		<category><![CDATA[이미지추출]]></category>
		<category><![CDATA[인공지능]]></category>
		<category><![CDATA[자동화]]></category>
		<category><![CDATA[콘텐츠마케팅]]></category>
		<category><![CDATA[콘텐츠전략]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=64194</guid>

					<description><![CDATA[완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n) 블로그 이미지 생성 및 삽입에 드는 시간을 획기적으로 줄이는 방법이 있을까? 그것도 무료로? 모두 사용할 수 있도록 최종 버전에는 무료로 배포할 생각이예요! N8N, Google Gemini, Unsplash API를 연동하여 AI 기반의 블로그 이미지 자동화 워크플로우를 구축하는 모든 과정을 단계별로 상세히 설명하는 완벽 가이드입니다. 초보자도 쉽게 따라 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="9:1-9:182">완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n) 블로그 이미지 생성 및 삽입에 드는 시간을 획기적으로 줄이는 방법이 있을까? 그것도 무료로? 모두 사용할 수 있도록 최종 버전에는 무료로 배포할 생각이예요!</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="9:1-9:182">N8N, Google Gemini, Unsplash API를 연동하여 AI 기반의 블로그 이미지 자동화 워크플로우를 구축하는 모든 과정을 단계별로 상세히 설명하는 완벽 가이드입니다. 초보자도 쉽게 따라 할 수 있도록 스크린샷과 설정 예시를 풍부하게 담았습니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="15:1-15:149">디지털 콘텐츠의 홍수 속에서 독자의 시선을 사로잡고 검색 엔진에서 상위 노출되기 위해서는 고품질의 콘텐츠뿐만 아니라, <b>매력적인 시각 자료</b>가 필수적입니다. 하지만 매번 블로그 글에 맞는 이미지를 찾고, 생성하고, 삽입하는 과정은 엄청난 시간과 노력을 요구합니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="17:1-17:213">이러한 반복적인 작업을 자동화할 수 있다면 어떨까요? 여기 그 해답이 있습니다. 이 상세 매뉴얼에서는 <b>N8N이라는 강력한 <a href="https://2days.kr/29/12/15/70922/aboda/">워크플로우</a> 자동화 도구와 Google의 최신 AI 모델인 Gemini, 그리고 방대한 무료 이미지 라이브러리인 Unsplash API를 연동하여 블로그 이미지를 자동으로 생성하고 게시물에 삽입하는 일련의 과정을 완벽하게 마스터</b>할 수 있도록 도와드립니다.</p>
<h2 data-sourcepos="17:1-17:213"><strong>완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)</strong></h2>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="alignCenter"><figcaption>
<figure id="attachment_64196" aria-describedby="caption-attachment-64196" style="width: 696px" class="wp-caption aligncenter"><img post-id="64194" fifu-featured="1" fetchpriority="high" decoding="async" class="wp-image-64196 size-large" src="https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1024x1024.jpg" alt="완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)" title="완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)" width="696" height="696" title="완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n) 1" srcset="https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1024x1024.jpg 1024w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-300x300.jpg 300w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-150x150.jpg 150w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-768x768.jpg 768w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1536x1536.jpg 1536w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-696x696.jpg 696w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1068x1068.jpg 1068w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-1920x1920.jpg 1920w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1-420x420.jpg 420w, https://2days.kr/wp-content/uploads/2025/06/제목을-입력해주세요_-001-4-1.jpg 2000w" sizes="(max-width: 696px) 100vw, 696px" /><figcaption id="caption-attachment-64196" class="wp-caption-text">완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n)</figcaption></figure>
</figcaption></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>

<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="19:1-19:168">이 가이드는 단순히 &#8216;어떻게&#8217; 하는지뿐만 아니라 &#8216;왜&#8217; 그렇게 하는지, 그리고 각 단계에서 발생할 수 있는 문제와 해결책까지 다루어, 여러분이 이 워크플로우를 성공적으로 구축하고 효율성을 극대화할 수 있도록 지원할 것입니다. 지금부터 AI 기반 블로그 이미지 자동화의 세계로 깊이 들어가 보겠습니다!</p>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="23:1-23:57" data-ke-size="size23"><b>1단계: Google Gemini 노드를 활용한 블로그 이미지 설명 생성 (AI의 상상력 활용) &#8211; </b><b>무료 자동화 블로그</b></h3>
<figure id="attachment_64198" aria-describedby="caption-attachment-64198" style="width: 696px" class="wp-caption aligncenter"><img decoding="async" class="wp-image-64198 size-large" src="https://2days.kr/wp-content/uploads/2025/06/20250624_165503-1024x439.png" alt="1단계: Google Gemini 노드를 활용한 블로그 이미지 설명 생성 (AI의 상상력 활용)" width="696" height="298" title="완전 무료 자동화 블로그 어떻게 만드는지 다 알려주는 시리즈 (1/n) 2" srcset="https://2days.kr/wp-content/uploads/2025/06/20250624_165503-1024x439.png 1024w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-300x129.png 300w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-768x329.png 768w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-1536x658.png 1536w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-150x64.png 150w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-696x298.png 696w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-1068x458.png 1068w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503-980x420.png 980w, https://2days.kr/wp-content/uploads/2025/06/20250624_165503.png 1725w" sizes="(max-width: 696px) 100vw, 696px" /><figcaption id="caption-attachment-64198" class="wp-caption-text">1단계: Google Gemini 노드를 활용한 블로그 이미지 설명 생성 (AI의 상상력 활용)</figcaption></figure>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="25:1-25:220">모든 자동화의 시작은 AI에게 어떤 이미지가 필요한지 정확히 알려주는 것입니다. 이 단계에서는 Google Gemini AI의 강력한 텍스트 생성 능력을 활용하여, 블로그 게시물의 특정 섹션에 맞는 상세한 이미지 설명을 얻습니다. 이 설명은 단순히 &#8220;사과&#8221;가 아니라, &#8220;빛이 잘 드는 주방 식탁 위에 놓인 신선하고 붉은 사과, 배경은 블러 처리되고 따뜻한 색감&#8221;과 같이 구체적인 지침이 됩니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="27:1-27:23"><b>1.1. 노드 추가 및 기본 설정:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="29:3-31:0" data-ke-list-type="disc">
<li data-sourcepos="29:3-29:56"><b>노드 유형:</b> N8N 워크플로우 캔버스에 Google Gemini 노드를 추가합니다.</li>
<li data-sourcepos="30:3-31:0"><b>노드 이름:</b> 가독성을 위해 Google Gemini (Generate Image Descriptions) 정도로 이름을 변경하는 것을 권장합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="32:1-32:29"><b>1.2. 인증 (Authentication):</b></p>

<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="34:3-37:0" data-ke-list-type="disc">
<li data-sourcepos="34:3-34:125">Authentication 드롭다운에서 Google OAuth2 <a href="https://2days.kr/30/11/12/70250/aboda/">API</a> 또는 Google Cloud Service Account를 선택합니다. 대부분의 경우 Google OAuth2 API가 간편합니다.</li>
<li data-sourcepos="35:3-37:0"><b>Google Credential:</b> 아직 설정하지 않았다면 Create New를 클릭하여 Google Cloud Console에서 발급받은 API Key (또는 OAuth 클라이언트 ID)를 설정합니다. Gemini API 사용을 위해서는 generativelanguage.googleapis.com에 대한 접근 권한이 필요합니다.
<ul style="list-style-type: disc;" data-sourcepos="36:7-37:0" data-ke-list-type="disc">
<li data-sourcepos="36:7-37:0"><b>Tip:</b> API Key를 사용하는 경우 x-goog-api-key 헤더를 통해 안전하게 전달됩니다. (사용자가 이전에 제시한 image_5c109c.png에서 이 설정이 보였습니다.)</li>
</ul>
</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="38:1-38:24"><b>1.3. 작업 (Operation):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="40:3-41:0" data-ke-list-type="disc">
<li data-sourcepos="40:3-41:0">Operation을 Generate Content로 설정합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="42:1-42:20"><b>1.4. 모델 (Model):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="44:3-45:0" data-ke-list-type="disc">
<li data-sourcepos="44:3-45:0">Model 드롭다운에서 gemini-pro (텍스트 생성)를 선택합니다. 이미지 생성은 아니므로 gemini-pro-vision은 적합하지 않습니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="46:1-46:26"><b>1.5. 프롬프트 (Prompt) 구성:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="48:3-65:0" data-ke-list-type="disc">
<li data-sourcepos="48:3-48:115">Prompt 필드에 Gemini가 이미지 설명을 생성할 수 있도록 명확하고 구체적인 지시를 내립니다. 이 프롬프트는 이전 노드 (예: 블로그 글을 생성한 노드)에서 받은 데이터를 참조해야 합니다.</li>
<li data-sourcepos="49:3-65:0"><b>예시 (텍스트 기반 블로그 글을 입력으로 받을 때):</b>
<div>
<div style="background-color: #f0f4f9;">
<div>
<pre class="hljs sql" contenteditable="false">You are an AI assistant specialized in generating visual image descriptions for blog posts.
For the following blog section content, provide a concise, vivid, and detailed image description that visually represents the key theme.
The description should be formatted as a numbered list, <span class="hljs-keyword">with</span> <span class="hljs-keyword">each</span> item <span class="hljs-keyword">starting</span> <span class="hljs-keyword">with</span> <span class="hljs-string">"숫자. **설명N: [이미지 설명]**"</span> format.
Focus <span class="hljs-keyword">on</span> elements suitable <span class="hljs-keyword">for</span> image <span class="hljs-keyword">search</span> (e.g., objects, <span class="hljs-keyword">settings</span>, mood, colors, composition).

<span class="hljs-keyword">Content</span>:
{{ $json.blog_section_content }} // 이전 노드의 출력 데이터 (블로그 섹션 내용)

Example <span class="hljs-keyword">Output</span> <span class="hljs-keyword">Format</span>:
<span class="hljs-number">1.</span> **설명<span class="hljs-number">1</span>: AI 편향성을 시각적으로 보여주는 이미지.** 다양한 인종과 성별의 얼굴 이미지가 여러 개의 박스 안에 배치되어 있고, 각 박스는 AI 얼굴 인식 정확도(예: <span class="hljs-number">95</span>%, <span class="hljs-number">70</span>%, <span class="hljs-number">80</span>%)를 나타내는 숫자와 함께, 정확도가 낮은 그룹의 박스는 어둡게 표현된다. 이미지 하단에는 <span class="hljs-string">"AI Bias: Unfair Outcomes"</span> 와 같은 문구를 추가하여 AI 편향성의 부정적 결과를 강조한다. 색상은 차갑고 어두운 색조를 사용하여 불안정함을 시각적으로 표현한다.
<span class="hljs-number">2.</span> **설명<span class="hljs-number">2</span>: 데이터 프라이버시 침해를 묘사하는 이미지.** 한 사람의 실루엣 주변으로 수많은 데이터 포인트(점, 선 등)가 뻗어나가는 모습을 묘사한다. 데이터 포인트들은 다양한 기기(스마트폰, 컴퓨터, CCTV 등)에서 방출되는 것처럼 표현하고, 실루엣의 얼굴은 모자이크 처리하여 익명성을 강조한다. 배경은 어둡고 신비로운 분위기를 연출하며, <span class="hljs-string">"Data Privacy at Risk"</span> 와 같은 문구를 추가하여 위험성을 부각한다.
</pre>
</div>
</div>
</div>
<ul style="list-style-type: disc;" data-sourcepos="63:7-65:0" data-ke-list-type="disc">
<li data-sourcepos="63:7-63:139"><b>{{ $json.blog_section_content }}:</b> 이 부분은 N8N의 표현식(Expression)으로, 이전 노드에서 전달받은 블로그 섹션 내용을 동적으로 가져옵니다. 실제 사용하는 변수명에 맞게 조정해야 합니다.</li>
<li data-sourcepos="64:7-65:0"><b>Gemini에게 출력 형식 가이드 제공:</b> Gemini가 정확히 우리가 원하는 &#8220;숫자. **설명N: [이미지 설명]**&#8221; 형식으로 응답하도록 명시적인 예시를 제공하는 것이 중요합니다. (이전 대화에서 이 형식을 통해 성공적으로 설명을 얻으셨습니다.)</li>
</ul>
</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="66:1-66:16"><b>1.6. 노드 테스트:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="68:3-70:0" data-ke-list-type="disc">
<li data-sourcepos="68:3-68:41">노드를 저장하고, Test Node 버튼을 클릭하여 실행합니다.</li>
<li data-sourcepos="69:3-70:0">Output 탭에서 Gemini가 생성한 이미지 설명이 예상한 JSON 형식으로 출력되는지 확인합니다. 이 출력은 보통 output 필드 내에 문자열로 포함됩니다.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="73:1-73:59"><b>2단계: Function 노드를 활용한 이미지 키워드 추출 및 정제 (Unsplash 검색 최적화) </b><b>무료 자동화 블로그</b></h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="75:1-75:160">Gemini가 생성한 상세 설명은 훌륭하지만, Unsplash와 같은 이미지 검색 엔진은 주로 간결하고 핵심적인 키워드에 최적화되어 있습니다. 이 단계에서는 N8N의 Function 노드를 사용하여 자바스크립트 코드로 이미지 설명 텍스트에서 검색 가능한 키워드를 추출하고 정제합니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="77:1-77:20"><b>2.1. 노드 추가 및 연결:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="79:3-81:0" data-ke-list-type="disc">
<li data-sourcepos="79:3-79:77">Google Gemini (Generate Image Descriptions) 노드 뒤에 Function 노드를 추가합니다.</li>
<li data-sourcepos="80:3-81:0"><b>노드 이름:</b> Function (Extract Image Descriptions &amp; Keywords)로 이름을 변경합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="82:1-82:37"><b>2.2. Function 노드 코드 (JavaScript):</b></p>
<div>
<div style="background-color: #f0f4f9;">
<div>
<pre class="hljs javascript" contenteditable="false"><span class="hljs-keyword">const</span> outputItems = [];

<span class="hljs-comment">// --- 입력 데이터 유효성 검사 및 텍스트 추출 ---</span>
<span class="hljs-keyword">let</span> rawInputText = <span class="hljs-string">''</span>;

<span class="hljs-comment">// 첫 번째 아이템이 유효한지 확인하고, 'output' 속성에서 텍스트를 가져옵니다.</span>
<span class="hljs-keyword">if</span> (items &amp;&amp; items.length &gt; <span class="hljs-number">0</span> &amp;&amp; items[<span class="hljs-number">0</span>].json &amp;&amp; items[<span class="hljs-number">0</span>].json.output) {
    rawInputText = items[<span class="hljs-number">0</span>].json.output;
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Function Node - Successfully extracted text from items[0].json.output.'</span>);
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Function Node - Raw Input Text (first 200 chars):'</span>, rawInputText.substring(<span class="hljs-number">0</span>, <span class="hljs-built_in">Math</span>.min(rawInputText.length, <span class="hljs-number">200</span>)) + <span class="hljs-string">'...'</span>);
}
<span class="hljs-comment">// 잘못된 입력 (이미 파싱된 데이터가 들어온 경우 등)</span>
<span class="hljs-keyword">else</span> {
    <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">'Function Node - No valid text found in expected input path (items[0].json.output).'</span>);
    <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">'Function Node - Input JSON:'</span>, <span class="hljs-built_in">JSON</span>.stringify(items, <span class="hljs-literal">null</span>, <span class="hljs-number">2</span>)); <span class="hljs-comment">// 입력 JSON 전체를 로그에 출력하여 확인</span>
    <span class="hljs-keyword">return</span> []; <span class="hljs-comment">// 잘못된 입력이므로 빈 배열 반환</span>
}

<span class="hljs-comment">// --- 이미지 설명 블록 분리 ---</span>
<span class="hljs-comment">// 정규식을 사용하여 '숫자. **제목: 내용**' 패턴으로 시작하는 각 설명 블록을 분리합니다.</span>
<span class="hljs-keyword">const</span> descriptionBlockRegex = <span class="hljs-regexp">/(\d+\.\s*\*\*[^*]+?\*\*:\s*.*?)((?=\d+\.\s*\*\*)|$)/g</span>s;
<span class="hljs-keyword">let</span> match;
<span class="hljs-keyword">let</span> imageIndex = <span class="hljs-number">0</span>;
<span class="hljs-keyword">const</span> processedItems = [];

<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Function Node - Starting description block parsing...'</span>);

<span class="hljs-keyword">while</span> ((match = descriptionBlockRegex.exec(rawInputText)) !== <span class="hljs-literal">null</span>) {
    <span class="hljs-keyword">const</span> fullDescription = match[<span class="hljs-number">1</span>].trim(); <span class="hljs-comment">// 예: "1. **설명1: AI 편향성...**"</span>
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`  Debug - Found fullDescription (Index <span class="hljs-subst">${imageIndex + <span class="hljs-number">1</span>}</span>):`</span>, fullDescription.substring(<span class="hljs-number">0</span>, <span class="hljs-built_in">Math</span>.min(fullDescription.length, <span class="hljs-number">150</span>)) + <span class="hljs-string">'...'</span>);

    <span class="hljs-keyword">if</span> (fullDescription) {
        imageIndex++;
        <span class="hljs-keyword">const</span> imagePrompt = fullDescription; <span class="hljs-comment">// 전체 설명을 image_prompt로 사용</span>

        <span class="hljs-comment">// --- 키워드 추출 및 정제 로직 ---</span>
        <span class="hljs-keyword">let</span> imageKeywords = <span class="hljs-string">''</span>;
        <span class="hljs-keyword">const</span> keywordCaptureRegex = <span class="hljs-regexp">/\*\*(.+?)\*\*:/</span>; <span class="hljs-comment">// ** 와 **: 사이의 텍스트를 추출</span>
        <span class="hljs-keyword">const</span> keywordMatch = fullDescription.match(keywordCaptureRegex);

        <span class="hljs-keyword">if</span> (keywordMatch &amp;&amp; keywordMatch[<span class="hljs-number">1</span>]) {
            imageKeywords = keywordMatch[<span class="hljs-number">1</span>].trim();
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - Raw extracted keywords from bold (Step 1):'</span>, imageKeywords);

            <span class="hljs-comment">// "설명N: " 패턴이 있다면 제거 (예: "설명1: AI 편향성 시각적 이미지" -&gt; "AI 편향성 시각적 이미지")</span>
            <span class="hljs-keyword">const</span> parts = imageKeywords.split(<span class="hljs-string">':'</span>);
            <span class="hljs-keyword">if</span> (parts.length &gt; <span class="hljs-number">1</span> &amp;&amp; parts[<span class="hljs-number">0</span>].startsWith(<span class="hljs-string">'설명'</span>)) {
                imageKeywords = parts.slice(<span class="hljs-number">1</span>).join(<span class="hljs-string">':'</span>).trim();
            }
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - After "설명N:" <a href="https://2days.kr/11/12/17/70398/english/">removal</a> (Step 2):'</span>, imageKeywords);

            <span class="hljs-comment">// 불필요한 구두점 및 추가 공백 제거</span>
            imageKeywords = imageKeywords
                .replace(<span class="hljs-regexp">/[.!?,"'()]/g</span>, <span class="hljs-string">''</span>) <span class="hljs-comment">// 마침표, 물음표, 느낌표, 쉼표, 따옴표, 괄호 제거</span>
                .replace(<span class="hljs-regexp">/\s+/g</span>, <span class="hljs-string">' '</span>) <span class="hljs-comment">// 여러 공백을 하나의 공백으로</span>
                .trim();
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - After punctuation/space cleanup (Step 3):'</span>, imageKeywords);

            <span class="hljs-comment">// 불필요한 한국어 조사, 어미, 불용어 제거 (정규식 사용)</span>
            <span class="hljs-comment">// '인한' 등 불필요한 단어 추가</span>
            imageKeywords = imageKeywords.replace(<span class="hljs-regexp">/을|를|이|가|은|는|도|만|에|에서|와|과|랑|하고|으로써|으로|에게|께|한테|부터|까지|마저|조차|처럼|만큼|듯이|하고는|거나|든지|다시|모두|같이|인한|시각적|보여주|묘사하|나타내/g</span>, <span class="hljs-string">''</span>).trim();
            imageKeywords = imageKeywords.replace(<span class="hljs-regexp">/\s+/g</span>, <span class="hljs-string">' '</span>).trim(); <span class="hljs-comment">// 조사 제거 후 남은 불필요 공백 제거</span>
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - After Korean suffix/particle removal (Step 4):'</span>, imageKeywords);

            <span class="hljs-comment">// Unsplash 검색에 불필요한 일반적인 단어 제거 (소문자로 비교)</span>
            <span class="hljs-keyword">const</span> commonWordsToRemove = [
                <span class="hljs-string">'시각적으로'</span>, <span class="hljs-string">'보여주는'</span>, <span class="hljs-string">'나타내는'</span>, <span class="hljs-string">'묘사하는'</span>, <span class="hljs-string">'상징적으로'</span>, <span class="hljs-string">'표현한'</span>, <span class="hljs-string">'이미지'</span>, <span class="hljs-string">'사진'</span>, <span class="hljs-string">'개념'</span>, <span class="hljs-string">'상징'</span>, <span class="hljs-string">'표현'</span>,
                <span class="hljs-string">'대한'</span>, <span class="hljs-string">'관련된'</span>, <span class="hljs-string">'모습'</span>, <span class="hljs-string">'그림'</span>, <span class="hljs-string">'일러스트'</span>, <span class="hljs-string">'상세'</span>, <span class="hljs-string">'설명'</span>, <span class="hljs-string">'주제'</span>, <span class="hljs-string">'내용'</span>, <span class="hljs-string">'위한'</span>
            ];
            imageKeywords = imageKeywords.split(<span class="hljs-string">' '</span>).filter(<span class="hljs-function"><span class="hljs-params">word</span> =&gt;</span> {
                <span class="hljs-keyword">const</span> lowerWord = word.toLowerCase();
                <span class="hljs-keyword">return</span> !commonWordsToRemove.includes(lowerWord) &amp;&amp; lowerWord.length &gt; <span class="hljs-number">1</span>; <span class="hljs-comment">// 1글자 키워드도 제거</span>
            }).join(<span class="hljs-string">' '</span>);
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - After common word removal (Step 5):'</span>, imageKeywords);

            <span class="hljs-comment">// 최종적으로 공백을 쉼표로 변환 (Unsplash 검색을 위해)</span>
            imageKeywords = imageKeywords.replace(<span class="hljs-regexp">/\s+/g</span>, <span class="hljs-string">', '</span>);
            <span class="hljs-built_in">console</span>.log(<span class="hljs-string">'    Debug - Final image_keywords for Unsplash (Step 6):'</span>, imageKeywords);

        } <span class="hljs-keyword">else</span> {
            <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">`    Debug - Could not find bold text (**...**:) for keywords in: <span class="hljs-subst">${fullDescription.substring(<span class="hljs-number">0</span>, <span class="hljs-built_in">Math</span>.min(fullDescription.length, <span class="hljs-number">50</span>))}</span>...`</span>);
            imageKeywords = <span class="hljs-string">''</span>; <span class="hljs-comment">// 추출 실패 시 빈 문자열</span>
        }
        <span class="hljs-comment">// --- 키워드 추출 및 정제 로직 끝 ---</span>

        processedItems.push({
            <span class="hljs-attr">json</span>: {
                <span class="hljs-attr">image_prompt</span>: imagePrompt,
                <span class="hljs-attr">image_keywords</span>: imageKeywords,
                <span class="hljs-attr">image_index</span>: imageIndex <span class="hljs-comment">// 이미지 순서 (선택 사항)</span>
            }
        });
        <span class="hljs-built_in">console</span>.log(<span class="hljs-string">`  Function Node - Added item (Index <span class="hljs-subst">${imageIndex}</span>): Prompt [<span class="hljs-subst">${imagePrompt.substring(<span class="hljs-number">0</span>, <span class="hljs-number">30</span>)}</span>...], Keywords [<span class="hljs-subst">${imageKeywords || 'EMPTY'}</span>]`</span>);
    } <span class="hljs-keyword">else</span> {
        <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">'  Debug - fullDescription was empty after match, skipping item.'</span>);
    }
}

<span class="hljs-keyword">if</span> (processedItems.length === <span class="hljs-number">0</span>) {
    <span class="hljs-built_in">console</span>.warn(<span class="hljs-string">'Function Node - No output items generated. Please review input text format and regex patterns.'</span>);
}

<span class="hljs-keyword">return</span> processedItems;
</pre>
</div>
</div>
</div>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="190:1-190:22"><b>2.3. 코드 상세 설명 및 팁:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="192:3-202:0" data-ke-list-type="disc">
<li data-sourcepos="192:3-192:124"><b>items 배열 처리:</b> N8N의 Function 노드는 이전 노드의 데이터를 items라는 전역 변수에 배열 형태로 전달받습니다. 각 아이템은 json 속성 내에 실제 데이터를 가지고 있습니다.</li>
<li data-sourcepos="193:3-195:101"><b>정규식 (Regex)의 중요성:</b>
<ul style="list-style-type: disc;" data-sourcepos="194:7-195:101" data-ke-list-type="disc">
<li data-sourcepos="194:7-194:226">descriptionBlockRegex: Gemini의 출력 형식에 맞춰 각 이미지 설명을 개별적인 블록으로 분리하는 데 사용됩니다. (\d+\.\s*\*\*[^*]+?\*\*:\s*.*?)((?=\d+\.\s*\*\*)|$) 패턴은 &#8220;숫자. **제목:** 내용&#8221;으로 시작하는 부분을 정확히 잡아내고, 다음 숫자 시작 지점까지 또는 문자열 끝까지를 하나의 블록으로 인식합니다.</li>
<li data-sourcepos="195:7-195:101">keywordCaptureRegex: /\*\*(.+?)\*\*:/ 이 정규식은 **와 **: 사이의 텍스트를 추출하여 이미지의 핵심 키워드를 얻습니다.</li>
</ul>
</li>
<li data-sourcepos="196:3-198:80"><b>한국어 조사/어미 제거 (Step 4):</b> 이 부분은 한국어 특성상 중요한 정제 과정입니다.
<ul style="list-style-type: disc;" data-sourcepos="197:7-198:80" data-ke-list-type="disc">
<li data-sourcepos="197:7-197:151">imageKeywords.replace(/을|를|이|가|은|는|도|만|에|에서|와|과|랑|하고|으로써|으로|에게|께|한테|부터|까지|마저|조차|처럼|만큼|듯이|하고는|거나|든지|다시|모두|같이|인한|시각적|보여주|묘사하|나타내/g, &#8221;).trim();</li>
<li data-sourcepos="198:7-198:80">여기에 <b>시각적|보여주|묘사하|나타내</b> 등 실제 추출 결과에서 나타났던 어미나 형태들을 추가하여 더욱 정교하게 제거합니다.</li>
</ul>
</li>
<li data-sourcepos="199:3-199:123"><b>불용어(Stop Words) 제거 (Step 5):</b> commonWordsToRemove 배열에 &#8220;이미지&#8221;, &#8220;사진&#8221;, &#8220;묘사하는&#8221; 등 검색에 불필요한 일반적인 단어들을 추가하여 검색 효율을 높입니다.</li>
<li data-sourcepos="200:3-200:169"><b>console.log 디버깅:</b> 코드에 포함된 수많은 console.log 문은 N8N의 Execution Log 탭에서 실행 과정을 단계별로 추적할 수 있게 해줍니다. 키워드 추출이 제대로 되지 않을 때 이 로그를 통해 어느 단계에서 문제가 발생하는지 쉽게 파악할 수 있습니다.</li>
<li data-sourcepos="201:3-202:0"><b>출력 형식:</b> 각 이미지 설명에 대해 { json: { image_prompt: &#8220;&#8230;&#8221;, image_keywords: &#8220;&#8230;&#8221;, image_index: N } } 형태의 개별 아이템을 생성하여 다음 노드로 전달합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="203:1-203:16"><b>2.4. 노드 테스트:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="205:3-208:0" data-ke-list-type="disc">
<li data-sourcepos="205:3-205:106">Google Gemini (Generate Image Descriptions) 노드를 먼저 Test Node로 실행하여 Function 노드에 올바른 입력이 오도록 합니다.</li>
<li data-sourcepos="206:3-206:88">그 다음, Function (Extract Image Descriptions &amp; Keywords) 노드를 Test Node로 실행합니다.</li>
<li data-sourcepos="207:3-208:0">Output 탭과 Execution Log 탭을 면밀히 확인하여, 각 아이템마다 image_prompt와 image_keywords가 의도대로 추출되었는지 검토합니다.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="211:1-211:59" data-ke-size="size23"><b>3단계: HTTP Request 노드를 통한 Unsplash 이미지 검색 (방대한 라이브러리 활용) 무료 자동화 블로그</b></h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="213:1-213:110">이제 잘 정제된 키워드를 사용하여 Unsplash의 방대한 이미지 라이브러리에서 블로그에 적합한 이미지를 검색할 차례입니다. HTTP <a href="https://2days.kr/12/12/08/70405/english/">Request</a> 노드는 외부 API와 통신하는 데 사용됩니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="215:1-215:20"><b>3.1. 노드 추가 및 연결:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="217:3-219:0" data-ke-list-type="disc">
<li data-sourcepos="217:3-217:90">Function (Extract Image Descriptions &amp; Keywords) 노드 뒤에 HTTP Request 노드를 추가합니다.</li>
<li data-sourcepos="218:3-219:0"><b>노드 이름:</b> HTTP Request (Unsplash Search)로 이름을 변경합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="220:1-220:29"><b>3.2. 인증 (Authentication):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="222:3-223:0" data-ke-list-type="disc">
<li data-sourcepos="222:3-223:0">Authentication: None으로 설정합니다. Unsplash API는 Client ID를 URL 파라미터로 받기 때문에 별도의 인증 헤더가 필요하지 않습니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="224:1-224:32"><b>3.3. 요청 방식 (Request Method):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="226:3-227:0" data-ke-list-type="disc">
<li data-sourcepos="226:3-227:0">Method: GET으로 설정합니다. 이미지를 검색하는 것은 데이터를 조회하는 것이므로 GET 요청이 적합합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="228:1-228:18"><b>3.4. URL (경로):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="230:3-231:0" data-ke-list-type="disc">
<li data-sourcepos="230:3-231:0">URL: <a href="https://api.unsplash.com/search/photos" target="_blank" rel="noopener">https://api.unsplash.com/search/photos</a> 를 입력합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="232:1-232:47"><b>3.5. 쿼리 파라미터 (Query Parameters) 설정 (매우 중요):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="234:3-257:0" data-ke-list-type="disc">
<li data-sourcepos="234:3-257:0">Query Parameters 섹션에서 Add Parameter 버튼을 클릭하여 필요한 파라미터들을 추가합니다.
<ul style="list-style-type: disc;" data-sourcepos="235:7-257:0" data-ke-list-type="disc">
<li data-sourcepos="235:7-238:167"><b>Parameter 1 (검색어):</b>
<ul style="list-style-type: disc;" data-sourcepos="236:11-238:167" data-ke-list-type="disc">
<li data-sourcepos="236:11-236:27">Name: query</li>
<li data-sourcepos="237:11-238:167">Value: {{ $json.image_keywords }}
<ul style="list-style-type: disc;" data-sourcepos="238:15-238:167" data-ke-list-type="disc">
<li data-sourcepos="238:15-238:167"><b>Explanation:</b> {{ $json.image_keywords }}는 이전 Function 노드에서 추출한 각 아이템의 image_keywords 값을 동적으로 가져와 query 파라미터로 사용합니다. 이 부분이 정확한 이미지 검색의 핵심입니다.</li>
</ul>
</li>
</ul>
</li>
<li data-sourcepos="239:7-248:76"><b>Parameter 2 (Client ID):</b>
<ul style="list-style-type: disc;" data-sourcepos="240:11-248:76" data-ke-list-type="disc">
<li data-sourcepos="240:11-240:31">Name: client_id</li>
<li data-sourcepos="241:11-248:76">Value: [당신의 Unsplash Access Key]
<ul style="list-style-type: disc;" data-sourcepos="242:15-248:76" data-ke-list-type="disc">
<li data-sourcepos="242:15-242:159"><b>Explanation:</b> Unsplash 개발자 계정에서 발급받은 고유한 Access Key를 여기에 직접 붙여넣습니다. 이 키는 Unsplash API를 호출할 수 있는 권한을 부여합니다. <b>이 키는 외부에 노출되지 않도록 주의해야 합니다.</b></li>
<li data-sourcepos="243:15-248:76"><b>Unsplash Access Key 얻는 방법 (재차 강조):</b>
<ol style="list-style-type: decimal;" data-sourcepos="244:17-248:76" data-ke-list-type="decimal">
<li data-sourcepos="244:17-244:117">Unsplash Developers 웹사이트 (<a href="https://unsplash.com/developers" target="_blank" rel="noopener">https://unsplash.com/developers</a>) 방문.</li>
<li data-sourcepos="245:17-245:32">로그인 또는 회원가입.</li>
<li data-sourcepos="246:17-246:70">&#8220;Your apps&#8221; 또는 &#8220;New Application&#8221; 클릭하여 새 애플리케이션 생성.</li>
<li data-sourcepos="247:17-247:69">약관 동의 및 앱 설명 작성 (예: &#8220;N8N Blog Image Automation&#8221;).</li>
<li data-sourcepos="248:17-248:76">생성된 앱 페이지에서 <b>&#8220;Access Key&#8221;</b> (또는 Client ID)를 확인하고 복사합니다.</li>
</ol>
</li>
</ul>
</li>
</ul>
</li>
<li data-sourcepos="249:7-252:216"><b>Parameter 3 (페이지당 결과 수 &#8211; 권장 1개):</b>
<ul style="list-style-type: disc;" data-sourcepos="250:11-252:216" data-ke-list-type="disc">
<li data-sourcepos="250:11-250:30">Name: per_page</li>
<li data-sourcepos="251:11-252:216">Value: 1
<ul style="list-style-type: disc;" data-sourcepos="252:15-252:216" data-ke-list-type="disc">
<li data-sourcepos="252:15-252:216"><b>Explanation:</b> 블로그 게시물 각 섹션에 대해 하나의 대표 이미지만 필요한 경우가 많으므로 1로 설정하는 것이 효율적입니다. Unsplash API는 per_page의 최대값을 30으로 제한합니다. 240을 입력하셨더라도 실제로는 30개까지만 반환됩니다. 한 번에 여러 이미지를 가져와 선택하고 싶다면 더 높은 값을 설정할 수 있습니다.</li>
</ul>
</li>
</ul>
</li>
<li data-sourcepos="253:7-257:0"><b>Parameter 4 (이미지 방향 &#8211; 선택 사항):</b>
<ul style="list-style-type: disc;" data-sourcepos="254:11-257:0" data-ke-list-type="disc">
<li data-sourcepos="254:11-254:33">Name: orientation</li>
<li data-sourcepos="255:11-257:0">Value: landscape (가로형 이미지를 선호하는 경우) 또는 portrait (세로형), squarish (정사각형) 등
<ul style="list-style-type: disc;" data-sourcepos="256:15-257:0" data-ke-list-type="disc">
<li data-sourcepos="256:15-257:0"><b>Explanation:</b> 블로그 레이아웃에 맞춰 이미지의 방향을 지정하여 검색 결과를 필터링할 수 있습니다.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="258:1-258:33"><b>3.6. 응답 형식 (Response Format):</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="260:3-261:0" data-ke-list-type="disc">
<li data-sourcepos="260:3-261:0">Response Format: JSON (기본값)으로 설정되어 있는지 확인합니다. Unsplash API는 JSON 형식으로 결과를 반환합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="262:1-262:16"><b>3.7. 노드 테스트:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="264:3-266:0" data-ke-list-type="disc">
<li data-sourcepos="264:3-264:73">HTTP Request (Unsplash Search) 노드를 클릭하고 Test Node 버튼을 클릭하여 실행합니다.</li>
<li data-sourcepos="265:3-266:0">Output 탭에서 Unsplash API로부터 받은 JSON 응답을 확인합니다. results 배열 안에 검색된 이미지들의 정보가 잘 들어있는지 확인하는 것이 중요합니다. total, total_pages, results 배열이 정상적으로 보이는지 확인하세요.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="269:1-269:46" data-ke-size="size23"><b>4단계: Set 노드를 활용한 최종 이미지 URL 추출 (게시물 삽입 준비) </b><b>무료 자동화 블로그</b></h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="271:1-271:152">Unsplash API 응답은 이미지의 ID, 설명, 사용자 정보, 다양한 크기의 URL 등 복잡한 정보를 담고 있습니다. 최종적으로 블로그에 사용할 특정 이미지 URL만을 추출하여 다음 단계에서 쉽게 사용할 수 있도록 image_url이라는 새로운 필드를 생성합니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="273:1-273:20"><b>4.1. 노드 추가 및 연결:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="275:3-277:0" data-ke-list-type="disc">
<li data-sourcepos="275:3-275:59">HTTP Request (Unsplash Search) 노드 뒤에 Set 노드를 추가합니다.</li>
<li data-sourcepos="276:3-277:0"><b>노드 이름:</b> Set (Extract Image URL)로 이름을 변경합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="278:1-278:23"><b>4.2. 값 (Values) 설정:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="280:3-296:0" data-ke-list-type="disc">
<li data-sourcepos="280:3-280:40">Values 섹션에서 Add Value 버튼을 클릭합니다.</li>
<li data-sourcepos="281:3-282:27"><b>새로운 필드 이름:</b>
<ul style="list-style-type: disc;" data-sourcepos="282:7-282:27" data-ke-list-type="disc">
<li data-sourcepos="282:7-282:27">Name: image_url</li>
</ul>
</li>
<li data-sourcepos="283:3-296:0"><b>추출할 URL 경로 설정:</b>
<ul style="list-style-type: disc;" data-sourcepos="284:7-296:0" data-ke-list-type="disc">
<li data-sourcepos="284:7-284:67">Value 필드 옆의 <b>톱니바퀴 아이콘</b> (Expression)을 클릭하여 표현식 편집기를 엽니다.</li>
<li data-sourcepos="285:7-294:81">다음과 같은 표현식을 입력합니다: {{ $json.results[0].urls.regular }}
<ul style="list-style-type: disc;" data-sourcepos="286:11-294:81" data-ke-list-type="disc">
<li data-sourcepos="286:11-286:49"><b>$json:</b> 현재 노드의 입력 데이터 전체를 나타냅니다.</li>
<li data-sourcepos="287:11-287:124"><b>results[0]:</b> Unsplash API 검색 결과는 results라는 배열 안에 이미지 객체들을 담고 있습니다. [0]은 그중 첫 번째(가장 관련성이 높은) 이미지를 의미합니다.</li>
<li data-sourcepos="288:11-294:81"><b>urls.regular:</b> 이미지 객체 안의 urls 필드는 다양한 크기의 이미지 URL을 제공합니다.
<ul style="list-style-type: disc;" data-sourcepos="289:15-294:81" data-ke-list-type="disc">
<li data-sourcepos="289:15-289:40">raw: 원본 이미지 URL (매우 큼)</li>
<li data-sourcepos="290:15-290:37">full: 원본에 가까운 큰 이미지</li>
<li data-sourcepos="291:15-291:47">regular: 블로그 게시물에 적합한 일반적인 크기</li>
<li data-sourcepos="292:15-292:30">small: 작은 크기</li>
<li data-sourcepos="293:15-293:31">thumb: 썸네일 크기</li>
<li data-sourcepos="294:15-294:81"><b>권장:</b> 대부분의 블로그 게시물에는 regular 또는 small이 적합합니다. 필요에 따라 선택하세요.</li>
</ul>
</li>
</ul>
</li>
<li data-sourcepos="295:7-296:0">Add 버튼을 클릭하여 표현식을 적용합니다.</li>
</ul>
</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="297:1-297:16"><b>4.3. 노드 테스트:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="299:3-301:0" data-ke-list-type="disc">
<li data-sourcepos="299:3-299:66">Set (Extract Image URL) 노드를 클릭하고 Test Node 버튼을 클릭하여 실행합니다.</li>
<li data-sourcepos="300:3-301:0">Output 탭을 확인합니다. 이제 각 블로그 섹션에 해당하는 아이템에 image_prompt, image_keywords와 더불어 <b>image_url 필드가 추가되고 Unsplash에서 가져온 이미지 URL이 포함</b>되어 있어야 합니다.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="304:1-304:39"><b>무료 자동화 블로그 이미지 워크플로우, 이제 시작입니다! </b></h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="306:1-306:125">이 상세 매뉴얼을 통해 N8N, Google Gemini, Unsplash API를 연동하여 블로그 이미지 자동화 워크플로우를 성공적으로 구축하셨기를 바랍니다. 여러분은 이제 다음과 같은 혁신적인 시스템을 갖추게 되었습니다:</p>
<ol style="list-style-type: decimal; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="308:1-311:0" data-ke-list-type="decimal">
<li data-sourcepos="308:1-308:63"><b>AI 기반 이미지 설명 생성:</b> 블로그 내용에 맞춰 AI가 자동으로 시각적인 이미지를 구상해 줍니다.</li>
<li data-sourcepos="309:1-309:60"><b>스마트 키워드 추출:</b> 복잡한 설명을 Unsplash 검색에 최적화된 핵심 키워드로 변환합니다.</li>
<li data-sourcepos="310:1-311:0"><b>자동 이미지 검색 및 연결:</b> 생성된 키워드를 바탕으로 방대한 Unsplash 라이브러리에서 적절한 이미지를 찾아 매칭합니다.</li>
</ol>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="312:1-312:161">이 워크플로우는 여러분의 콘텐츠 제작 시간을 획기적으로 단축시켜 줄 뿐만 아니라, 각 글에 맞는 고품질의 이미지를 일관성 있게 제공하여 블로그의 시각적 매력과 전문성을 높여줄 것입니다. 이는 궁극적으로 독자의 참여율을 높이고, Google SEO 측면에서도 긍정적인 영향을 미칠 것입니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="314:1-314:17"><b>다음 단계는 무엇인가요?</b></p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="316:1-316:41">이제 여러분은 image_url을 확보했습니다. 이 URL을 활용하여</p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="318:3-321:0" data-ke-list-type="disc">
<li data-sourcepos="318:3-318:160"><b>블로그 플랫폼 연동:</b> WordPress, Notion, Medium, Ghost 등 여러분이 사용하는 블로그 플랫폼의 API를 N8N의 HTTP Request 또는 특정 노드 (예: WordPress 노드)와 연동하여 자동으로 게시물에 이미지를 삽입할 수 있습니다.</li>
<li data-sourcepos="319:3-319:78"><b>HTML 생성:</b> 블로그 글의 최종 HTML을 만들 때 &lt;img&gt; 태그 안에 이 URL을 동적으로 넣어줄 수 있습니다.</li>
<li data-sourcepos="320:3-321:0"><b>이미지 다운로드 및 업로드:</b> 경우에 따라 이미지를 직접 다운로드하여 서버나 CDN에 업로드하는 워크플로우를 추가할 수도 있습니다.</li>
</ul>
<p>n8n을 아직 잘 모르신다면 이 글을 먼저 읽어보세요!</p>
<p><a href="https://aboda.kr/entry/n8n-%EC%8B%9C%EB%86%80%EB%A1%9C%EC%A7%80-%EB%A1%9C%EC%BB%AC-%EC%84%A4%EC%B9%98-%EC%89%BD%EA%B2%8C-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95" target="_blank" rel="noopener">2024.12.15 &#8211; [제품추천/소프트웨어] &#8211; n8n 시놀로지 로컬 설치 쉽게 하는 방법</a></p>
<p><a href="https://2days.kr/23/06/15/64144/industry/it/">Google Veo3 와 MusicGPT 콜라보로 만드는 AI 영상</a></p>
<!-- AI CONTENT END 2 -->
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>파이프드림 (Pipedream) 이용한 자동화 업무 설정하기</title>
		<link>https://2days.kr/15/06/16/63843/it/program/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Sun, 15 Jun 2025 07:49:59 +0000</pubDate>
				<category><![CDATA[program]]></category>
		<category><![CDATA[API연동]]></category>
		<category><![CDATA[Pipedream]]></category>
		<category><![CDATA[구글시트]]></category>
		<category><![CDATA[노코드]]></category>
		<category><![CDATA[생산성]]></category>
		<category><![CDATA[슬랙]]></category>
		<category><![CDATA[업무자동화]]></category>
		<category><![CDATA[워크플로우]]></category>
		<category><![CDATA[자동화]]></category>
		<category><![CDATA[코드자]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=63843</guid>

					<description><![CDATA[파이프드림 (Pipedream) 이용한 자동화 업무 설정하기 현대 업무 환경에서 반복적인 수작업은 시간과 에너지를 불필요하게 소모시키는 주범입니다. 보고서 작성, 이메일 응답, 일정 등록 등 매일 반복되는 루틴은 정작 중요한 창의적 업무에 집중할 시간을 빼앗아 가죠. 이러한 비효율을 해결하기 위한 핵심 도구가 바로 자동화 플랫폼입니다. 오늘 소개해 드릴 Pipedream은 Zapier나 Make와 유사하면서도 더 많은 자유도와 유연성을 제공하는 강력한 자동화 도구입니다. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="4:1-4:162" data-ke-size="size16">파이프드림 (Pipedream) 이용한 자동화 업무 설정하기 현대 업무 환경에서 <b>반복적인 수작업</b>은 시간과 에너지를 불필요하게 소모시키는 주범입니다. 보고서 작성, 이메일 응답, 일정 등록 등 매일 반복되는 루틴은 정작 중요한 창의적 업무에 집중할 시간을 빼앗아 가죠. 이러한 비효율을 해결하기 위한 핵심 도구가 바로 <b>자동화 플랫폼</b>입니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="6:1-6:214" data-ke-size="size16">오늘 소개해 드릴 <b>Pipedream</b>은 Zapier나 Make와 유사하면서도 더 많은 자유도와 유연성을 제공하는 강력한 자동화 도구입니다. 개발 지식이 부족한 사용자도 다양한 API와 앱을 손쉽게 연결해 나만의 스마트한 워크플로우를 구축할 수 있게 돕죠. 초보자도 이해할 수 있도록 Pipedream의 기본 개념부터 실제 자동화 흐름 만들기까지, 단계별로 자세히 알아보겠습니다.</p>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="6:1-6:214" data-ke-size="size23"><b>파이프드림 (Pipedream) 이용한 자동화 업무 설정하기</b></h3>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="alignCenter"><img post-id="63843" fifu-featured="1" decoding="async" src="https://blog.kakaocdn.net/dn/ddYhY3/btsOAw40m2f/jNUEafPWrkczAPcjMvzs7k/img.png" alt="파이프드림 (Pipedream) 이용한 자동화 업무 설정하기" title="파이프드림 (Pipedream) 이용한 자동화 업무 설정하기" data-is-animation="false" data-origin-width="2000" data-origin-height="2000" data-filename="제목을 입력해주세요_-001 (21).png" title="파이프드림 (Pipedream) 이용한 자동화 업무 설정하기 5"><figcaption>파이프드림 (Pipedream) 이용한 자동화 업무 설정하기</figcaption></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>

<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="10:1-10:25" data-ke-size="size23">Pipedream, 도대체 무엇일까요?</h3>

<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="12:1-12:122" data-ke-size="size16"><b>Pipedream</b>은 <b>이벤트 기반 자동화 플랫폼</b>입니다. 쉽게 말해, 특정 앱이나 서비스에서 어떤 &#8216;이벤트&#8217;가 발생했을 때 이를 감지하여 미리 설정해둔 &#8216;동작&#8217;을 자동으로 실행하도록 연결해주는 역할을 합니다.</p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="14:1-17:0" data-ke-list-type="disc">
<li data-sourcepos="14:1-14:91"><b>수백 가지 앱 지원:</b> Slack, Discord, Google Sheets, Airtable 등 업무에 자주 사용하는 거의 모든 앱과 연동이 가능합니다.</li>
<li data-sourcepos="15:1-15:134"><b>Node.js 기반 스크립트 작성:</b> 노코드(No-code) 환경을 제공하지만, 필요하다면 Node.js 코드를 직접 작성하여 더 복잡하고 섬세한 자동화 로직을 구현할 수 있습니다. 이는 Pipedream의 강력한 장점 중 하나죠.</li>
<li data-sourcepos="16:1-17:0"><b>넉넉한 무료 플랜:</b> 일일 333개의 <a href="https://2days.kr/29/12/15/70922/aboda/">워크플로우</a> 실행을 무료로 제공하여, 자동화를 처음 시작하는 사용자도 부담 없이 충분히 활용해볼 수 있습니다.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="20:1-20:34" data-ke-size="size23">Pipedream 시작하기: 회원가입부터 인터페이스까지</h3>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="alignCenter"><img decoding="async" src="https://blog.kakaocdn.net/dn/QODkR/btsOBAespLB/E8yqJVeMNmFk4MBcAbTgKk/img.png" alt="Pipedream 시작하기: 회원가입부터 인터페이스까지" data-is-animation="false" data-origin-width="2638" data-origin-height="1286" data-filename="스크린샷 2025-06-15 오후 4.44.17.png" title="파이프드림 (Pipedream) 이용한 자동화 업무 설정하기 6"><figcaption>Pipedream 시작하기: 회원가입부터 인터페이스까지</figcaption></figure>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="22:1-22:29" data-ke-size="size16">Pipedream을 시작하는 과정은 매우 간단합니다.</p>
<ol style="list-style-type: decimal; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="24:1-29:0" data-ke-list-type="decimal">
<li data-sourcepos="24:1-24:97"><b>회원가입:</b> <a href="https://pipedream.com" target="_blank" rel="noopener">https://pipedream.com</a>에 접속하여 이메일 또는 GitHub 계정으로 간편하게 가입합니다.</li>
<li data-sourcepos="25:1-25:79"><b>워크플로우 생성:</b> 로그인 후 대시보드에서 <b>[+ New Workflow]</b> 버튼을 클릭하여 새로운 자동화 흐름을 생성합니다.</li>
<li data-sourcepos="26:1-29:0"><b>트리거와 액션:</b> Pipedream의 모든 자동화는 &#8216;트리거(Trigger)&#8217;와 &#8216;액션(Action)&#8217;이라는 두 가지 핵심 요소로 구성됩니다.
<ul style="list-style-type: disc;" data-sourcepos="27:5-29:0" data-ke-list-type="disc">
<li data-sourcepos="27:5-27:88"><b>트리거(Trigger):</b> 자동화가 시작되는 &#8216;원인&#8217;입니다. (예: &#8220;새로운 이메일이 도착했을 때&#8221;, &#8220;구글 시트에 새 행이 추가되었을 때&#8221;)</li>
<li data-sourcepos="28:5-29:0"><b>액션(Action):</b> 트리거 발생 시 실행될 &#8216;결과&#8217;입니다. (예: &#8220;슬랙 메시지 보내기&#8221;, &#8220;노션에 데이터 추가하기&#8221;)</li>
</ul>
</li>
</ol>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="30:1-30:53" data-ke-size="size16">이러한 직관적인 구성 덕분에 코딩 지식이 없어도 쉽게 자동화 로직을 이해하고 만들 수 있습니다.</p>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="34:1-34:44" data-ke-size="size23">첫 번째 워크플로우 만들기: Google Sheets → Slack 알림</h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="36:1-36:127" data-ke-size="size16">실제 업무에 바로 적용할 수 있는 간단한 자동화 예시를 통해 Pipedream 워크플로우 생성 과정을 살펴보겠습니다. 목표는 &#8220;Google Sheets에 새로운 행이 추가될 때마다 Slack으로 알림을 보내는 것&#8221;입니다.</p>
<ol style="list-style-type: decimal; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="38:1-53:0" data-ke-list-type="decimal">
<li data-sourcepos="38:1-42:0"><b>1단계: 트리거 설정 (Google Sheets)</b>
<ul style="list-style-type: disc;" data-sourcepos="39:5-42:0" data-ke-list-type="disc">
<li data-sourcepos="39:5-39:56">워크플로우 편집 화면에서 트리거 검색창에 &#8220;Google Sheets&#8221;를 입력합니다.</li>
<li data-sourcepos="40:5-40:44">트리거 목록에서 &#8216;New Row (새로운 행)&#8217;를 선택합니다.</li>
<li data-sourcepos="41:5-42:0">Pipedream과 Google 계정을 연결하고, 알림을 받고 싶은 특정 Google Sheet를 지정합니다.</li>
</ul>
</li>
<li data-sourcepos="43:1-48:0"><b>2단계: 액션 설정 (Slack)</b>
<ul style="list-style-type: disc;" data-sourcepos="44:5-48:0" data-ke-list-type="disc">
<li data-sourcepos="44:5-44:41">트리거 아래의 &#8216;+&#8217; 버튼을 클릭하여 새로운 액션을 추가합니다.</li>
<li data-sourcepos="45:5-45:72">액션 검색창에 &#8220;Slack&#8221;을 입력하고, <b>&#8216;Send Message (메시지 보내기)&#8217;</b> 액션을 선택합니다.</li>
<li data-sourcepos="46:5-46:51">Slack 계정을 Pipedream에 연결하고, 메시지를 보낼 채널을 선택합니다.</li>
<li data-sourcepos="47:5-48:0">메시지 내용 칸에는 Google Sheets에서 넘어온 새로운 행의 데이터를 삽입할 수 있습니다. (예: 새로운 응답이 도착했습니다: {{steps.trigger.event.value}})</li>
</ul>
</li>
<li data-sourcepos="49:1-53:0"><b>3단계: 테스트 및 배포</b>
<ul style="list-style-type: disc;" data-sourcepos="50:5-53:0" data-ke-list-type="disc">
<li data-sourcepos="50:5-50:58">워크플로우를 저장한 후, 화면 상단의 <b>&#8216;Test&#8217;</b> 버튼을 클릭하여 테스트를 실행합니다.</li>
<li data-sourcepos="51:5-51:57">Google Sheets에 실제로 새 행을 추가하여 Slack으로 알림이 오는지 확인합니다.</li>
<li data-sourcepos="52:5-53:0">모든 것이 정상적으로 작동한다면, <b>&#8216;Deploy&#8217;</b> 버튼을 클릭하여 워크플로우를 활성화합니다. 이제 Google Sheets에 새 행이 추가될 때마다 Slack으로 알림이 자동으로 전송됩니다!</li>
</ul>
</li>
</ol>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="56:1-56:29" data-ke-size="size23">Pipedream의 강점: 코드 컴포넌트 활용</h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="58:1-58:116" data-ke-size="size16">Pipedream의 진정한 매력은 <b>노코드(No-code)와 코드(Code)의 조합</b>입니다. 단순한 앱 연결을 넘어, 필요에 따라 Node.js 코드 블록을 추가하여 더 복잡한 로직을 구현할 수 있습니다.</p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="60:1-74:0" data-ke-list-type="disc">
<li data-sourcepos="60:1-60:73"><b>코드 블록 추가:</b> 워크플로우 중간에 &#8216;+&#8217; 버튼을 눌러 <b>&#8216;Node.js Code&#8217;</b> 컴포넌트를 추가할 수 있습니다.</li>
<li data-sourcepos="61:1-74:0"><b>활용 예시:</b>
<div>
<div style="background-color: #f0f4f9;">
<div>
<pre class="arduino hljs" contenteditable="false"><span class="hljs-function"><span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-title">defineComponent</span><span class="hljs-params">({
  async <span class="hljs-built_in">run</span>({ steps, $ }) {
    console.<span class="hljs-built_in">log</span>(<span class="hljs-string">"워크플로가 실행되었습니다."</span>);
    <span class="hljs-comment">// 이전 스텝에서 전달받은 데이터를 가공하거나, 외부 API를 호출할 수 있습니다.</span>
    <span class="hljs-keyword">const</span> dataFromPreviousStep = steps.action_name.$return_value;
    <span class="hljs-keyword">const</span> processedData = dataFromPreviousStep + <span class="hljs-string">" - 처리 완료!"</span>;
    <span class="hljs-keyword">return</span> processedData; <span class="hljs-comment">// 다음 스텝으로 결과 전달</span>
  }
})</span></span>;
</pre>
</div>
</div>
</div>
<p>이처럼 코드를 활용하면 데이터 변환, 조건부 로직, 외부 <a href="https://2days.kr/30/11/12/70250/aboda/">API</a> 연동 등 무궁무진한 가능성을 열 수 있습니다.</li>
</ul>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="77:1-77:22" data-ke-size="size23">Pipedream 파이프드림 실무 적용 예시</h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="79:1-79:33" data-ke-size="size16">Pipedream은 다양한 업무 상황에 적용될 수 있습니다.</p>
<div style="background-color: #ffffff; color: #1b1c1d; text-align: start;">
<div>
<div>
<div>목적자동화 흐름</p>
<table style="background-color: #f0f4f9; border-collapse: collapse; width: 100%;" border="1" data-sourcepos="81:1-86:84" data-ke-align="alignLeft">
<tbody>
<tr data-sourcepos="83:1-83:86">
<td style="background-color: #f8fafd;" data-sourcepos="83:1-83:15"><b>고객 응대 자동화</b></td>
<td style="background-color: #f8fafd;" data-sourcepos="83:17-83:84">Gmail → Pipedream (특정 키워드 감지) → ChatGPT API로 응답 초안 생성 → Gmail 임시저장</td>
</tr>
<tr data-sourcepos="84:1-84:79">
<td style="background-color: #f8fafd;" data-sourcepos="84:1-84:18"><b>프로젝트 업데이트 알림</b></td>
<td style="background-color: #f8fafd;" data-sourcepos="84:20-84:77">Airtable 업데이트 → Pipedream (변경 감지) → Slack/Discord 메시지 전송</td>
</tr>
<tr data-sourcepos="85:1-85:100">
<td style="background-color: #f8fafd;" data-sourcepos="85:1-85:19"><b>설문 응답 수집 및 분류</b></td>
<td style="background-color: #f8fafd;" data-sourcepos="85:21-85:98">Google Forms → Google Sheets (응답 저장) → Pipedream (자동 분류) → Notion 데이터베이스에 등록</td>
</tr>
<tr data-sourcepos="86:1-86:84">
<td style="background-color: #f8fafd;" data-sourcepos="86:1-86:16"><b><a href="https://2days.kr/16/12/13/70501/aboda/">SNS</a> 콘텐츠 예약</b></td>
<td style="background-color: #f8fafd;" data-sourcepos="86:18-86:82">Google Sheets (콘텐츠 일정) → Pipedream → Buffer/Hootsuite로 자동 예약 발행</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<h3 style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="90:1-90:23" data-ke-size="size23">Pipedream 파이프드림의 장점과 고려사항</h3>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="92:1-92:10" data-ke-size="size16"><b>👍 장점:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="94:1-97:0" data-ke-list-type="disc">
<li data-sourcepos="94:1-94:67"><b>직관적인 UI와 강력한 코드 자유도:</b> 초보자도 쉽게 시작하고, 개발자는 더 복잡한 기능을 구현할 수 있습니다.</li>
<li data-sourcepos="95:1-95:51"><b>무료로 다양한 앱 연동 가능:</b> 소규모 팀이나 개인 사용자에게도 매우 경제적입니다.</li>
<li data-sourcepos="96:1-97:0"><b>이벤트 기반으로 빠른 반응 속도:</b> 실시간에 가까운 자동화 처리가 가능합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="98:1-98:12" data-ke-size="size16"><b>🤔 주의사항:</b></p>
<ul style="list-style-type: disc; background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="100:1-103:0" data-ke-list-type="disc">
<li data-sourcepos="100:1-100:63"><b>고급 설정 시 JavaScript 지식 필요:</b> 모든 기능을 활용하려면 기본적인 코딩 지식이 유용합니다.</li>
<li data-sourcepos="101:1-101:65"><b>API 연결 및 인증 토큰 관리:</b> 민감한 정보인 API 키나 인증 토큰은 보안에 유의하여 관리해야 합니다.</li>
<li data-sourcepos="102:1-103:0"><b>워크플로우 실행 제한:</b> 무료 플랜의 일일 실행 제한(333회)을 초과하지 않도록 워크플로우를 효율적으로 설계해야 합니다.</li>
</ul>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="108:1-108:212" data-ke-size="size16">Pipedream은 자동화의 유연성과 성능을 모두 갖춘 실용적인 도구입니다. 단순한 앱 간 연결은 물론, 복잡한 API 로직까지 구현할 수 있어 초보자부터 개발자까지 모두에게 유용합니다. 반복적인 작업을 줄이고 업무 효율을 획기적으로 높이고 싶다면, 지금 바로 Pipedream을 활용해 나만의 스마트한 워크플로우를 만들어보세요. 작은 변화가 업무의 큰 차이를 만들어낼 것입니다.</p>
<p style="background-color: #ffffff; color: #1b1c1d; text-align: start;" data-sourcepos="110:1-110:26" data-ke-size="size16">궁금한 점이 있다면 언제든지 댓글로 남겨주세요!</p>
<p><a href="https://aboda.kr/entry/%EC%B1%97GPT-%EB%89%B4%EC%8A%A4-%EC%9E%90%EB%8F%99%ED%99%94-%EA%B0%9C%EC%9D%B8%EB%B9%84%EC%84%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-%EC%89%BD%EA%B2%8C-%EA%B0%80%EB%A5%B4%EC%B3%90-%EB%93%9C%EB%A0%A4%EC%9A%94" target="_blank" rel="noopener">2025.05.19 &#8211; [컴퓨터/AI] &#8211; 챗GPT 뉴스 자동화 개인비서 만들기 튜토리얼 쉽게 가르쳐 드려요</a></p>
<p><span style="background-color: #ffffff; color: #1b1c1d; text-align: start;">Pipedream, 자동화, 노코드, 업무자동화, 워크플로우, 생산성, API연동, 구글시트, 슬랙, 코드자</span></p>
<p><a href="https://2days.kr/05/10/09/59448/coding/">제미나이 구글시트 무료 자동화 구축하기 Gemini Flash AI 강점</a></p>
<!-- AI CONTENT END 4 -->
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
